Feat: filler list by user change input (#7389)

### What problem does this PR solve?

filler list by user change input

![Recording2025-04-28163440-ezgif
com-video-to-gif-converter](https://github.com/user-attachments/assets/6ff2cfea-dea9-4293-b9a6-b4c61ab9a549)

### Type of change

- [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
so95 2025-04-30 13:48:41 +07:00 committed by GitHub
parent 713c055e04
commit e2b0bceb1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -20,7 +20,7 @@ import {
$isRangeSelection, $isRangeSelection,
TextNode, TextNode,
} from 'lexical'; } from 'lexical';
import { import React, {
ReactElement, ReactElement,
useCallback, useCallback,
useContext, useContext,
@ -114,11 +114,26 @@ export default function VariablePickerMenuPlugin({
minLength: 0, minLength: 0,
}); });
const setQueryString = useCallback(() => {}, []); const [queryString, setQueryString] = React.useState<string| null>('');
const options = useBuildComponentIdSelectOptions(node?.id, node?.parentId); const options = useBuildComponentIdSelectOptions(node?.id, node?.parentId);
const nextOptions: VariableOption[] = options.map( const filteredOptions = React.useMemo(() => {
if (!queryString) return options;
const lowerQuery = queryString.toLowerCase();
return options
.map((x) => ({
...x,
options: x.options.filter(
(y) =>
y.label.toLowerCase().includes(lowerQuery) ||
y.value.toLowerCase().includes(lowerQuery),
),
}))
.filter((x) => x.options.length > 0);
}, [options, queryString]);
const nextOptions: VariableOption[] = filteredOptions.map(
(x) => (x) =>
new VariableOption( new VariableOption(
x.label, x.label,