core&ui: add contest language limit (#1014)

Co-authored-by: panda <panda_dtdyy@outlook.com>
This commit is contained in:
undefinedandpanda authored and GitHub committed 2025-07-15 23:54:42 +01:00
1 parent 0699e17ce6
commit 4165e9b153
23 files changed
+175 -232

No files matched your search

@@ -1,42 +1,20 @@
import React from 'react';
import AutoComplete from '.';
import AutoComplete, { AutoCompleteOptions } from '.';
import DomainSelectAutoCompleteFC from './components/DomainSelectAutoComplete';
const Component = React.forwardRef((props: { value: string, multi: boolean, onChange: (v: string) => void }, ref) => {
const [value, setValue] = React.useState(props.value ?? '');
return (
<DomainSelectAutoCompleteFC
ref={ref as any}
height="34px"
selectedKeys={value.split(',').map((i) => i.trim()).filter((i) => i)}
onChange={(v) => {
setValue(v);
props.onChange(v);
}}
multi={props.multi}
/>
);
});
export default class DomainSelectAutoComplete extends AutoComplete {
export default class DomainSelectAutoComplete<Multi extends boolean> extends AutoComplete {
static DOMAttachKey = 'ucwDomainSelectAutoCompleteInstance';
constructor($dom, options) {
constructor($dom, options: AutoCompleteOptions<Multi> = {}) {
super($dom, {
classes: 'domain-select',
component: DomainSelectAutoCompleteFC,
props: {
multi: options.multi,
height: '34px',
},
...options,
});
}
attach() {
const value = this.$dom.val();
this.component.render(<Component
ref={(ref) => { this.ref = ref; }}
value={value}
onChange={this.onChange}
multi={this.options.multi}
/>);
}
}
window.Hydro.components.DomainSelectAutoComplete = DomainSelectAutoComplete;