@vuu-ui/vuu-filters 0.8.50 → 0.8.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/filter-clause/operator-utils.js +1 -1
- package/cjs/filter-clause/operator-utils.js.map +1 -1
- package/cjs/filter-clause/value-editors/FilterClauseValueEditorText.js +1 -1
- package/cjs/filter-clause/value-editors/FilterClauseValueEditorText.js.map +1 -1
- package/esm/filter-clause/operator-utils.js +1 -1
- package/esm/filter-clause/operator-utils.js.map +1 -1
- package/esm/filter-clause/value-editors/FilterClauseValueEditorText.js +1 -1
- package/esm/filter-clause/value-editors/FilterClauseValueEditorText.js.map +1 -1
- package/package.json +11 -11
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
4
4
|
|
|
5
|
-
const textOperators = ["=", "in", "!=", "starts", "ends"];
|
|
5
|
+
const textOperators = ["=", "in", "!=", "starts", "ends", "contains"];
|
|
6
6
|
const numericperators = ["=", "!=", ">", ">=", "<", "<="];
|
|
7
7
|
const getOperators = (column) => {
|
|
8
8
|
if (vuuUtils.isTextColumn(column)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operator-utils.js","sources":["../../src/filter-clause/operator-utils.ts"],"sourcesContent":["import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { isNumericColumn, isTextColumn } from \"@vuu-ui/vuu-utils\";\n\nexport const textOperators = [\"=\", \"in\", \"!=\", \"starts\", \"ends\"];\nexport const numericperators = [\"=\", \"!=\", \">\", \">=\", \"<\", \"<=\"];\n\nexport const getOperators = (column: ColumnDescriptor): string[] => {\n if (isTextColumn(column)) {\n return textOperators;\n } else if (isNumericColumn(column)) {\n return numericperators;\n } else {\n throw Error(\"getOperators only supports text and numeric columns\");\n }\n};\n"],"names":["isTextColumn","isNumericColumn"],"mappings":";;;;AAGO,MAAM,gBAAgB,CAAC,GAAA,EAAK,IAAM,EAAA,
|
|
1
|
+
{"version":3,"file":"operator-utils.js","sources":["../../src/filter-clause/operator-utils.ts"],"sourcesContent":["import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { isNumericColumn, isTextColumn } from \"@vuu-ui/vuu-utils\";\n\nexport const textOperators = [\"=\", \"in\", \"!=\", \"starts\", \"ends\", \"contains\"];\nexport const numericperators = [\"=\", \"!=\", \">\", \">=\", \"<\", \"<=\"];\n\nexport const getOperators = (column: ColumnDescriptor): string[] => {\n if (isTextColumn(column)) {\n return textOperators;\n } else if (isNumericColumn(column)) {\n return numericperators;\n } else {\n throw Error(\"getOperators only supports text and numeric columns\");\n }\n};\n"],"names":["isTextColumn","isNumericColumn"],"mappings":";;;;AAGO,MAAM,gBAAgB,CAAC,GAAA,EAAK,MAAM,IAAM,EAAA,QAAA,EAAU,QAAQ,UAAU,EAAA;AACpE,MAAM,kBAAkB,CAAC,GAAA,EAAK,MAAM,GAAK,EAAA,IAAA,EAAM,KAAK,IAAI,EAAA;AAElD,MAAA,YAAA,GAAe,CAAC,MAAuC,KAAA;AAClE,EAAI,IAAAA,qBAAA,CAAa,MAAM,CAAG,EAAA;AACxB,IAAO,OAAA,aAAA,CAAA;AAAA,GACT,MAAA,IAAWC,wBAAgB,CAAA,MAAM,CAAG,EAAA;AAClC,IAAO,OAAA,eAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAA,MAAM,MAAM,qDAAqD,CAAA,CAAA;AAAA,GACnE;AACF;;;;;;"}
|
|
@@ -63,7 +63,7 @@ const FilterClauseValueEditorText = react.forwardRef(
|
|
|
63
63
|
const { value: value2 } = evt.target;
|
|
64
64
|
console.log(`handleInputChange "${value2}"`);
|
|
65
65
|
setValueInputValue(value2);
|
|
66
|
-
if (operator === "starts" || operator === "ends") {
|
|
66
|
+
if (operator === "starts" || operator === "ends" || operator === "contains") {
|
|
67
67
|
onChangeValue(value2, false);
|
|
68
68
|
}
|
|
69
69
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterClauseValueEditorText.js","sources":["../../../src/filter-clause/value-editors/FilterClauseValueEditorText.tsx"],"sourcesContent":["import {\n FormEvent,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { TypeaheadParams, VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { useTypeaheadSuggestions } from \"@vuu-ui/vuu-data-react\";\nimport {\n ExpandoInput,\n MultiSelectionHandler,\n SingleSelectionHandler,\n} from \"@vuu-ui/vuu-ui-controls\";\nimport { ExpandoCombobox } from \"../ExpandoCombobox\";\nimport { FilterClauseValueEditor } from \"../filterClauseTypes\";\nimport { SuggestionFetcher, TableSchemaTable } from \"@vuu-ui/vuu-data-types\";\n\nconst selectionKeys = [\"Enter\", \" \"];\n\nconst getVuuTable = (schemaTable: TableSchemaTable): VuuTable => {\n if (schemaTable.session) {\n const { module, session } = schemaTable;\n return { module, table: session };\n } else {\n return schemaTable;\n }\n};\n\nexport interface FilterClauseTextValueEditorProps\n extends FilterClauseValueEditor,\n HTMLAttributes<HTMLDivElement> {\n \"data-field\"?: string;\n ref: RefObject<HTMLDivElement>;\n operator: string;\n suggestionProvider?: () => SuggestionFetcher;\n value: string | string[];\n}\n\nconst NO_DATA_MATCH = [\"No matching data\"];\n\nexport const FilterClauseValueEditorText = forwardRef(\n function FilterClauseTextValueEditor(\n {\n InputProps: InputPropsProp = {},\n className,\n column,\n \"data-field\": dataField,\n onDeselect,\n onChangeValue,\n operator,\n suggestionProvider = useTypeaheadSuggestions,\n table,\n value,\n }: FilterClauseTextValueEditorProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n ) {\n const isMultiValue = operator === \"in\";\n\n // If we have a multiselect text value which we are editing, this will render\n // a comma delimited list of the selected values. That is not what we display\n // by default when using a multiselect combo. Its not a huge problem - as soon\n // as user focuses this component and we display dropdown, input text is cleared\n // (so user can type to filter list) until dropdown closes again. <ight need to\n // revisit.\n const [valueInputValue, setValueInputValue] = useState(\n value?.toString() ?? \"\"\n );\n const [typeaheadValues, setTypeaheadValues] = useState<string[]>([]);\n\n const getSuggestions = suggestionProvider();\n\n const handleSingleValueSelectionChange =\n useCallback<SingleSelectionHandler>(\n (_, value) => onChangeValue(value),\n [onChangeValue]\n );\n\n const handleMultiValueSelectionChange = useCallback<MultiSelectionHandler>(\n (_, values) => onChangeValue(values),\n [onChangeValue]\n );\n\n useEffect(() => {\n if (table) {\n const vuuTable = getVuuTable(table);\n const params: TypeaheadParams =\n valueInputValue && !isMultiValue\n ? [vuuTable, column.name, valueInputValue]\n : [vuuTable, column.name];\n getSuggestions(params)\n .then((suggestions) => {\n if (suggestions.length === 0 && valueInputValue) {\n setTypeaheadValues(NO_DATA_MATCH);\n } else {\n setTypeaheadValues(suggestions);\n }\n })\n .catch((err) => {\n console.error(\"Error getting suggestions\", err);\n });\n }\n }, [table, column, valueInputValue, getSuggestions, isMultiValue]);\n\n const handleInputChange = useCallback(\n (evt: FormEvent<HTMLInputElement>) => {\n const { value } = evt.target as HTMLInputElement;\n console.log(`handleInputChange \"${value}\"`);\n setValueInputValue(value);\n // we want to set the filterclause status to valid, but not trigger focus chanmge\n if (operator === \"starts\" || operator === \"ends\") {\n onChangeValue(value, false);\n }\n },\n [onChangeValue, operator]\n );\n\n const handleKeyDownFreeTextInput = useCallback<\n KeyboardEventHandler<HTMLInputElement>\n >(\n (evt) => {\n console.log(`handleKeyDownFreeTextInput ${valueInputValue}`);\n if (\n (evt.key === \"Enter\" || evt.key === \"Tab\") &&\n valueInputValue !== \"\"\n ) {\n evt.stopPropagation();\n evt.preventDefault();\n console.log(`call onInputComplete ${valueInputValue}`);\n onChangeValue(valueInputValue);\n } else {\n InputPropsProp?.inputProps?.onKeyDown?.(evt);\n }\n },\n [InputPropsProp, onChangeValue, valueInputValue]\n );\n\n const InputProps = useMemo(() => {\n if (operator === \"starts\" || operator === \"ends\") {\n const { inputProps, ...restInputProps } = InputPropsProp;\n return {\n ...restInputProps,\n inputProps: {\n ...inputProps,\n onKeyDown: handleKeyDownFreeTextInput,\n },\n };\n } else {\n return InputPropsProp;\n }\n }, [InputPropsProp, handleKeyDownFreeTextInput, operator]);\n\n const getValueInputField = useCallback(() => {\n switch (operator) {\n case \"in\":\n return (\n <ExpandoCombobox\n InputProps={InputProps}\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n source={typeaheadValues}\n onInputChange={handleInputChange}\n onSelectionChange={handleMultiValueSelectionChange}\n ref={forwardedRef}\n selectionStrategy=\"multiple\"\n selectionKeys={selectionKeys}\n value={value}\n />\n );\n case \"starts\": {\n return (\n <ExpandoCombobox<string>\n InputProps={InputProps}\n ListProps={{\n className: \"vuuIllustrationsOnly\",\n disabled: true,\n }}\n allowEnterCommitsText\n allowFreeText\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n disableFilter={\n typeaheadValues === NO_DATA_MATCH && valueInputValue?.length > 0\n }\n source={typeaheadValues}\n onInputChange={handleInputChange}\n onSelectionChange={handleSingleValueSelectionChange}\n ref={forwardedRef}\n value={value}\n />\n );\n }\n\n case \"ends\":\n return (\n <ExpandoInput\n {...InputProps}\n className={className}\n data-field={dataField}\n value={valueInputValue}\n ref={forwardedRef}\n onChange={handleInputChange}\n />\n );\n\n default:\n //TODO get a ref to input and listen to changes - connect these to typeahead\n return typeaheadValues.length > 0 ? (\n <ExpandoCombobox<string>\n InputProps={InputProps}\n allowBackspaceClearsSelection\n allowFreeText\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n source={typeaheadValues}\n title=\"value\"\n onInputChange={handleInputChange}\n onDeselect={onDeselect}\n onSelectionChange={handleSingleValueSelectionChange}\n ref={forwardedRef}\n value={value}\n />\n ) : null;\n }\n }, [\n InputProps,\n operator,\n className,\n dataField,\n typeaheadValues,\n handleInputChange,\n handleMultiValueSelectionChange,\n forwardedRef,\n value,\n valueInputValue,\n onDeselect,\n handleSingleValueSelectionChange,\n ]);\n\n return getValueInputField();\n }\n);\n"],"names":["forwardRef","useTypeaheadSuggestions","useState","useCallback","value","useEffect","useMemo","jsx","ExpandoCombobox","ExpandoInput"],"mappings":";;;;;;;;AAuBA,MAAM,aAAA,GAAgB,CAAC,OAAA,EAAS,GAAG,CAAA,CAAA;AAEnC,MAAM,WAAA,GAAc,CAAC,WAA4C,KAAA;AAC/D,EAAA,IAAI,YAAY,OAAS,EAAA;AACvB,IAAM,MAAA,EAAE,MAAQ,EAAA,OAAA,EAAY,GAAA,WAAA,CAAA;AAC5B,IAAO,OAAA,EAAE,MAAQ,EAAA,KAAA,EAAO,OAAQ,EAAA,CAAA;AAAA,GAC3B,MAAA;AACL,IAAO,OAAA,WAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAYA,MAAM,aAAA,GAAgB,CAAC,kBAAkB,CAAA,CAAA;AAElC,MAAM,2BAA8B,GAAAA,gBAAA;AAAA,EACzC,SAAS,2BACP,CAAA;AAAA,IACE,UAAA,EAAY,iBAAiB,EAAC;AAAA,IAC9B,SAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAc,EAAA,SAAA;AAAA,IACd,UAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,kBAAqB,GAAAC,oCAAA;AAAA,IACrB,KAAA;AAAA,IACA,KAAA;AAAA,KAEF,YACA,EAAA;AACA,IAAA,MAAM,eAAe,QAAa,KAAA,IAAA,CAAA;AAQlC,IAAM,MAAA,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAAC,cAAA;AAAA,MAC5C,KAAA,EAAO,UAAc,IAAA,EAAA;AAAA,KACvB,CAAA;AACA,IAAA,MAAM,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAAA,cAAA,CAAmB,EAAE,CAAA,CAAA;AAEnE,IAAA,MAAM,iBAAiB,kBAAmB,EAAA,CAAA;AAE1C,IAAA,MAAM,gCACJ,GAAAC,iBAAA;AAAA,MACE,CAAC,CAAA,EAAGC,MAAU,KAAA,aAAA,CAAcA,MAAK,CAAA;AAAA,MACjC,CAAC,aAAa,CAAA;AAAA,KAChB,CAAA;AAEF,IAAA,MAAM,+BAAkC,GAAAD,iBAAA;AAAA,MACtC,CAAC,CAAA,EAAG,MAAW,KAAA,aAAA,CAAc,MAAM,CAAA;AAAA,MACnC,CAAC,aAAa,CAAA;AAAA,KAChB,CAAA;AAEA,IAAAE,eAAA,CAAU,MAAM;AACd,MAAA,IAAI,KAAO,EAAA;AACT,QAAM,MAAA,QAAA,GAAW,YAAY,KAAK,CAAA,CAAA;AAClC,QAAA,MAAM,MACJ,GAAA,eAAA,IAAmB,CAAC,YAAA,GAChB,CAAC,QAAA,EAAU,MAAO,CAAA,IAAA,EAAM,eAAe,CAAA,GACvC,CAAC,QAAA,EAAU,OAAO,IAAI,CAAA,CAAA;AAC5B,QAAA,cAAA,CAAe,MAAM,CAAA,CAClB,IAAK,CAAA,CAAC,WAAgB,KAAA;AACrB,UAAI,IAAA,WAAA,CAAY,MAAW,KAAA,CAAA,IAAK,eAAiB,EAAA;AAC/C,YAAA,kBAAA,CAAmB,aAAa,CAAA,CAAA;AAAA,WAC3B,MAAA;AACL,YAAA,kBAAA,CAAmB,WAAW,CAAA,CAAA;AAAA,WAChC;AAAA,SACD,CAAA,CACA,KAAM,CAAA,CAAC,GAAQ,KAAA;AACd,UAAQ,OAAA,CAAA,KAAA,CAAM,6BAA6B,GAAG,CAAA,CAAA;AAAA,SAC/C,CAAA,CAAA;AAAA,OACL;AAAA,OACC,CAAC,KAAA,EAAO,QAAQ,eAAiB,EAAA,cAAA,EAAgB,YAAY,CAAC,CAAA,CAAA;AAEjE,IAAA,MAAM,iBAAoB,GAAAF,iBAAA;AAAA,MACxB,CAAC,GAAqC,KAAA;AACpC,QAAA,MAAM,EAAE,KAAA,EAAAC,MAAM,EAAA,GAAI,GAAI,CAAA,MAAA,CAAA;AACtB,QAAQ,OAAA,CAAA,GAAA,CAAI,CAAsBA,mBAAAA,EAAAA,MAAK,CAAG,CAAA,CAAA,CAAA,CAAA;AAC1C,QAAA,kBAAA,CAAmBA,MAAK,CAAA,CAAA;AAExB,QAAI,IAAA,QAAA,KAAa,QAAY,IAAA,QAAA,KAAa,MAAQ,EAAA;AAChD,UAAA,aAAA,CAAcA,QAAO,KAAK,CAAA,CAAA;AAAA,SAC5B;AAAA,OACF;AAAA,MACA,CAAC,eAAe,QAAQ,CAAA;AAAA,KAC1B,CAAA;AAEA,IAAA,MAAM,0BAA6B,GAAAD,iBAAA;AAAA,MAGjC,CAAC,GAAQ,KAAA;AACP,QAAQ,OAAA,CAAA,GAAA,CAAI,CAA8B,2BAAA,EAAA,eAAe,CAAE,CAAA,CAAA,CAAA;AAC3D,QAAA,IAAA,CACG,IAAI,GAAQ,KAAA,OAAA,IAAW,IAAI,GAAQ,KAAA,KAAA,KACpC,oBAAoB,EACpB,EAAA;AACA,UAAA,GAAA,CAAI,eAAgB,EAAA,CAAA;AACpB,UAAA,GAAA,CAAI,cAAe,EAAA,CAAA;AACnB,UAAQ,OAAA,CAAA,GAAA,CAAI,CAAwB,qBAAA,EAAA,eAAe,CAAE,CAAA,CAAA,CAAA;AACrD,UAAA,aAAA,CAAc,eAAe,CAAA,CAAA;AAAA,SACxB,MAAA;AACL,UAAgB,cAAA,EAAA,UAAA,EAAY,YAAY,GAAG,CAAA,CAAA;AAAA,SAC7C;AAAA,OACF;AAAA,MACA,CAAC,cAAgB,EAAA,aAAA,EAAe,eAAe,CAAA;AAAA,KACjD,CAAA;AAEA,IAAM,MAAA,UAAA,GAAaG,cAAQ,MAAM;AAC/B,MAAI,IAAA,QAAA,KAAa,QAAY,IAAA,QAAA,KAAa,MAAQ,EAAA;AAChD,QAAA,MAAM,EAAE,UAAA,EAAY,GAAG,cAAA,EAAmB,GAAA,cAAA,CAAA;AAC1C,QAAO,OAAA;AAAA,UACL,GAAG,cAAA;AAAA,UACH,UAAY,EAAA;AAAA,YACV,GAAG,UAAA;AAAA,YACH,SAAW,EAAA,0BAAA;AAAA,WACb;AAAA,SACF,CAAA;AAAA,OACK,MAAA;AACL,QAAO,OAAA,cAAA,CAAA;AAAA,OACT;AAAA,KACC,EAAA,CAAC,cAAgB,EAAA,0BAAA,EAA4B,QAAQ,CAAC,CAAA,CAAA;AAEzD,IAAM,MAAA,kBAAA,GAAqBH,kBAAY,MAAM;AAC3C,MAAA,QAAQ,QAAU;AAAA,QAChB,KAAK,IAAA;AACH,UACE,uBAAAI,cAAA;AAAA,YAACC,+BAAA;AAAA,YAAA;AAAA,cACC,UAAA;AAAA,cACA,SAAA;AAAA,cACA,YAAY,EAAA,SAAA;AAAA,cACZ,uBAAyB,EAAA,CAAA;AAAA,cACzB,MAAQ,EAAA,eAAA;AAAA,cACR,aAAe,EAAA,iBAAA;AAAA,cACf,iBAAmB,EAAA,+BAAA;AAAA,cACnB,GAAK,EAAA,YAAA;AAAA,cACL,iBAAkB,EAAA,UAAA;AAAA,cAClB,aAAA;AAAA,cACA,KAAA;AAAA,aAAA;AAAA,WACF,CAAA;AAAA,QAEJ,KAAK,QAAU,EAAA;AACb,UACE,uBAAAD,cAAA;AAAA,YAACC,+BAAA;AAAA,YAAA;AAAA,cACC,UAAA;AAAA,cACA,SAAW,EAAA;AAAA,gBACT,SAAW,EAAA,sBAAA;AAAA,gBACX,QAAU,EAAA,IAAA;AAAA,eACZ;AAAA,cACA,qBAAqB,EAAA,IAAA;AAAA,cACrB,aAAa,EAAA,IAAA;AAAA,cACb,SAAA;AAAA,cACA,YAAY,EAAA,SAAA;AAAA,cACZ,uBAAyB,EAAA,CAAA;AAAA,cACzB,aACE,EAAA,eAAA,KAAoB,aAAiB,IAAA,eAAA,EAAiB,MAAS,GAAA,CAAA;AAAA,cAEjE,MAAQ,EAAA,eAAA;AAAA,cACR,aAAe,EAAA,iBAAA;AAAA,cACf,iBAAmB,EAAA,gCAAA;AAAA,cACnB,GAAK,EAAA,YAAA;AAAA,cACL,KAAA;AAAA,aAAA;AAAA,WACF,CAAA;AAAA,SAEJ;AAAA,QAEA,KAAK,MAAA;AACH,UACE,uBAAAD,cAAA;AAAA,YAACE,0BAAA;AAAA,YAAA;AAAA,cACE,GAAG,UAAA;AAAA,cACJ,SAAA;AAAA,cACA,YAAY,EAAA,SAAA;AAAA,cACZ,KAAO,EAAA,eAAA;AAAA,cACP,GAAK,EAAA,YAAA;AAAA,cACL,QAAU,EAAA,iBAAA;AAAA,aAAA;AAAA,WACZ,CAAA;AAAA,QAGJ;AAEE,UAAO,OAAA,eAAA,CAAgB,SAAS,CAC9B,mBAAAF,cAAA;AAAA,YAACC,+BAAA;AAAA,YAAA;AAAA,cACC,UAAA;AAAA,cACA,6BAA6B,EAAA,IAAA;AAAA,cAC7B,aAAa,EAAA,IAAA;AAAA,cACb,SAAA;AAAA,cACA,YAAY,EAAA,SAAA;AAAA,cACZ,uBAAyB,EAAA,CAAA;AAAA,cACzB,MAAQ,EAAA,eAAA;AAAA,cACR,KAAM,EAAA,OAAA;AAAA,cACN,aAAe,EAAA,iBAAA;AAAA,cACf,UAAA;AAAA,cACA,iBAAmB,EAAA,gCAAA;AAAA,cACnB,GAAK,EAAA,YAAA;AAAA,cACL,KAAA;AAAA,aAAA;AAAA,WAEA,GAAA,IAAA,CAAA;AAAA,OACR;AAAA,KACC,EAAA;AAAA,MACD,UAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAA;AAAA,MACA,iBAAA;AAAA,MACA,+BAAA;AAAA,MACA,YAAA;AAAA,MACA,KAAA;AAAA,MACA,eAAA;AAAA,MACA,UAAA;AAAA,MACA,gCAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,OAAO,kBAAmB,EAAA,CAAA;AAAA,GAC5B;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"FilterClauseValueEditorText.js","sources":["../../../src/filter-clause/value-editors/FilterClauseValueEditorText.tsx"],"sourcesContent":["import {\n FormEvent,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { TypeaheadParams, VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { useTypeaheadSuggestions } from \"@vuu-ui/vuu-data-react\";\nimport {\n ExpandoInput,\n MultiSelectionHandler,\n SingleSelectionHandler,\n} from \"@vuu-ui/vuu-ui-controls\";\nimport { ExpandoCombobox } from \"../ExpandoCombobox\";\nimport { FilterClauseValueEditor } from \"../filterClauseTypes\";\nimport { SuggestionFetcher, TableSchemaTable } from \"@vuu-ui/vuu-data-types\";\n\nconst selectionKeys = [\"Enter\", \" \"];\n\nconst getVuuTable = (schemaTable: TableSchemaTable): VuuTable => {\n if (schemaTable.session) {\n const { module, session } = schemaTable;\n return { module, table: session };\n } else {\n return schemaTable;\n }\n};\n\nexport interface FilterClauseTextValueEditorProps\n extends FilterClauseValueEditor,\n HTMLAttributes<HTMLDivElement> {\n \"data-field\"?: string;\n ref: RefObject<HTMLDivElement>;\n operator: string;\n suggestionProvider?: () => SuggestionFetcher;\n value: string | string[];\n}\n\nconst NO_DATA_MATCH = [\"No matching data\"];\n\nexport const FilterClauseValueEditorText = forwardRef(\n function FilterClauseTextValueEditor(\n {\n InputProps: InputPropsProp = {},\n className,\n column,\n \"data-field\": dataField,\n onDeselect,\n onChangeValue,\n operator,\n suggestionProvider = useTypeaheadSuggestions,\n table,\n value,\n }: FilterClauseTextValueEditorProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n ) {\n const isMultiValue = operator === \"in\";\n\n // If we have a multiselect text value which we are editing, this will render\n // a comma delimited list of the selected values. That is not what we display\n // by default when using a multiselect combo. Its not a huge problem - as soon\n // as user focuses this component and we display dropdown, input text is cleared\n // (so user can type to filter list) until dropdown closes again. <ight need to\n // revisit.\n const [valueInputValue, setValueInputValue] = useState(\n value?.toString() ?? \"\"\n );\n const [typeaheadValues, setTypeaheadValues] = useState<string[]>([]);\n\n const getSuggestions = suggestionProvider();\n\n const handleSingleValueSelectionChange =\n useCallback<SingleSelectionHandler>(\n (_, value) => onChangeValue(value),\n [onChangeValue]\n );\n\n const handleMultiValueSelectionChange = useCallback<MultiSelectionHandler>(\n (_, values) => onChangeValue(values),\n [onChangeValue]\n );\n\n useEffect(() => {\n if (table) {\n const vuuTable = getVuuTable(table);\n const params: TypeaheadParams =\n valueInputValue && !isMultiValue\n ? [vuuTable, column.name, valueInputValue]\n : [vuuTable, column.name];\n getSuggestions(params)\n .then((suggestions) => {\n if (suggestions.length === 0 && valueInputValue) {\n setTypeaheadValues(NO_DATA_MATCH);\n } else {\n setTypeaheadValues(suggestions);\n }\n })\n .catch((err) => {\n console.error(\"Error getting suggestions\", err);\n });\n }\n }, [table, column, valueInputValue, getSuggestions, isMultiValue]);\n\n const handleInputChange = useCallback(\n (evt: FormEvent<HTMLInputElement>) => {\n const { value } = evt.target as HTMLInputElement;\n console.log(`handleInputChange \"${value}\"`);\n setValueInputValue(value);\n // we want to set the filterclause status to valid, but not trigger focus chanmge\n if (\n operator === \"starts\" ||\n operator === \"ends\" ||\n operator === \"contains\"\n ) {\n onChangeValue(value, false);\n }\n },\n [onChangeValue, operator]\n );\n\n const handleKeyDownFreeTextInput = useCallback<\n KeyboardEventHandler<HTMLInputElement>\n >(\n (evt) => {\n console.log(`handleKeyDownFreeTextInput ${valueInputValue}`);\n if (\n (evt.key === \"Enter\" || evt.key === \"Tab\") &&\n valueInputValue !== \"\"\n ) {\n evt.stopPropagation();\n evt.preventDefault();\n console.log(`call onInputComplete ${valueInputValue}`);\n onChangeValue(valueInputValue);\n } else {\n InputPropsProp?.inputProps?.onKeyDown?.(evt);\n }\n },\n [InputPropsProp, onChangeValue, valueInputValue]\n );\n\n const InputProps = useMemo(() => {\n if (operator === \"starts\" || operator === \"ends\") {\n const { inputProps, ...restInputProps } = InputPropsProp;\n return {\n ...restInputProps,\n inputProps: {\n ...inputProps,\n onKeyDown: handleKeyDownFreeTextInput,\n },\n };\n } else {\n return InputPropsProp;\n }\n }, [InputPropsProp, handleKeyDownFreeTextInput, operator]);\n\n const getValueInputField = useCallback(() => {\n switch (operator) {\n case \"in\":\n return (\n <ExpandoCombobox\n InputProps={InputProps}\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n source={typeaheadValues}\n onInputChange={handleInputChange}\n onSelectionChange={handleMultiValueSelectionChange}\n ref={forwardedRef}\n selectionStrategy=\"multiple\"\n selectionKeys={selectionKeys}\n value={value}\n />\n );\n case \"starts\": {\n return (\n <ExpandoCombobox<string>\n InputProps={InputProps}\n ListProps={{\n className: \"vuuIllustrationsOnly\",\n disabled: true,\n }}\n allowEnterCommitsText\n allowFreeText\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n disableFilter={\n typeaheadValues === NO_DATA_MATCH && valueInputValue?.length > 0\n }\n source={typeaheadValues}\n onInputChange={handleInputChange}\n onSelectionChange={handleSingleValueSelectionChange}\n ref={forwardedRef}\n value={value}\n />\n );\n }\n\n case \"ends\":\n return (\n <ExpandoInput\n {...InputProps}\n className={className}\n data-field={dataField}\n value={valueInputValue}\n ref={forwardedRef}\n onChange={handleInputChange}\n />\n );\n\n default:\n //TODO get a ref to input and listen to changes - connect these to typeahead\n return typeaheadValues.length > 0 ? (\n <ExpandoCombobox<string>\n InputProps={InputProps}\n allowBackspaceClearsSelection\n allowFreeText\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n source={typeaheadValues}\n title=\"value\"\n onInputChange={handleInputChange}\n onDeselect={onDeselect}\n onSelectionChange={handleSingleValueSelectionChange}\n ref={forwardedRef}\n value={value}\n />\n ) : null;\n }\n }, [\n InputProps,\n operator,\n className,\n dataField,\n typeaheadValues,\n handleInputChange,\n handleMultiValueSelectionChange,\n forwardedRef,\n value,\n valueInputValue,\n onDeselect,\n handleSingleValueSelectionChange,\n ]);\n\n return getValueInputField();\n }\n);\n"],"names":["forwardRef","useTypeaheadSuggestions","useState","useCallback","value","useEffect","useMemo","jsx","ExpandoCombobox","ExpandoInput"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isTextColumn, isNumericColumn } from '@vuu-ui/vuu-utils';
|
|
2
2
|
|
|
3
|
-
const textOperators = ["=", "in", "!=", "starts", "ends"];
|
|
3
|
+
const textOperators = ["=", "in", "!=", "starts", "ends", "contains"];
|
|
4
4
|
const numericperators = ["=", "!=", ">", ">=", "<", "<="];
|
|
5
5
|
const getOperators = (column) => {
|
|
6
6
|
if (isTextColumn(column)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operator-utils.js","sources":["../../src/filter-clause/operator-utils.ts"],"sourcesContent":["import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { isNumericColumn, isTextColumn } from \"@vuu-ui/vuu-utils\";\n\nexport const textOperators = [\"=\", \"in\", \"!=\", \"starts\", \"ends\"];\nexport const numericperators = [\"=\", \"!=\", \">\", \">=\", \"<\", \"<=\"];\n\nexport const getOperators = (column: ColumnDescriptor): string[] => {\n if (isTextColumn(column)) {\n return textOperators;\n } else if (isNumericColumn(column)) {\n return numericperators;\n } else {\n throw Error(\"getOperators only supports text and numeric columns\");\n }\n};\n"],"names":[],"mappings":";;AAGO,MAAM,gBAAgB,CAAC,GAAA,EAAK,IAAM,EAAA,
|
|
1
|
+
{"version":3,"file":"operator-utils.js","sources":["../../src/filter-clause/operator-utils.ts"],"sourcesContent":["import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { isNumericColumn, isTextColumn } from \"@vuu-ui/vuu-utils\";\n\nexport const textOperators = [\"=\", \"in\", \"!=\", \"starts\", \"ends\", \"contains\"];\nexport const numericperators = [\"=\", \"!=\", \">\", \">=\", \"<\", \"<=\"];\n\nexport const getOperators = (column: ColumnDescriptor): string[] => {\n if (isTextColumn(column)) {\n return textOperators;\n } else if (isNumericColumn(column)) {\n return numericperators;\n } else {\n throw Error(\"getOperators only supports text and numeric columns\");\n }\n};\n"],"names":[],"mappings":";;AAGO,MAAM,gBAAgB,CAAC,GAAA,EAAK,MAAM,IAAM,EAAA,QAAA,EAAU,QAAQ,UAAU,EAAA;AACpE,MAAM,kBAAkB,CAAC,GAAA,EAAK,MAAM,GAAK,EAAA,IAAA,EAAM,KAAK,IAAI,EAAA;AAElD,MAAA,YAAA,GAAe,CAAC,MAAuC,KAAA;AAClE,EAAI,IAAA,YAAA,CAAa,MAAM,CAAG,EAAA;AACxB,IAAO,OAAA,aAAA,CAAA;AAAA,GACT,MAAA,IAAW,eAAgB,CAAA,MAAM,CAAG,EAAA;AAClC,IAAO,OAAA,eAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAA,MAAM,MAAM,qDAAqD,CAAA,CAAA;AAAA,GACnE;AACF;;;;"}
|
|
@@ -61,7 +61,7 @@ const FilterClauseValueEditorText = forwardRef(
|
|
|
61
61
|
const { value: value2 } = evt.target;
|
|
62
62
|
console.log(`handleInputChange "${value2}"`);
|
|
63
63
|
setValueInputValue(value2);
|
|
64
|
-
if (operator === "starts" || operator === "ends") {
|
|
64
|
+
if (operator === "starts" || operator === "ends" || operator === "contains") {
|
|
65
65
|
onChangeValue(value2, false);
|
|
66
66
|
}
|
|
67
67
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterClauseValueEditorText.js","sources":["../../../src/filter-clause/value-editors/FilterClauseValueEditorText.tsx"],"sourcesContent":["import {\n FormEvent,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { TypeaheadParams, VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { useTypeaheadSuggestions } from \"@vuu-ui/vuu-data-react\";\nimport {\n ExpandoInput,\n MultiSelectionHandler,\n SingleSelectionHandler,\n} from \"@vuu-ui/vuu-ui-controls\";\nimport { ExpandoCombobox } from \"../ExpandoCombobox\";\nimport { FilterClauseValueEditor } from \"../filterClauseTypes\";\nimport { SuggestionFetcher, TableSchemaTable } from \"@vuu-ui/vuu-data-types\";\n\nconst selectionKeys = [\"Enter\", \" \"];\n\nconst getVuuTable = (schemaTable: TableSchemaTable): VuuTable => {\n if (schemaTable.session) {\n const { module, session } = schemaTable;\n return { module, table: session };\n } else {\n return schemaTable;\n }\n};\n\nexport interface FilterClauseTextValueEditorProps\n extends FilterClauseValueEditor,\n HTMLAttributes<HTMLDivElement> {\n \"data-field\"?: string;\n ref: RefObject<HTMLDivElement>;\n operator: string;\n suggestionProvider?: () => SuggestionFetcher;\n value: string | string[];\n}\n\nconst NO_DATA_MATCH = [\"No matching data\"];\n\nexport const FilterClauseValueEditorText = forwardRef(\n function FilterClauseTextValueEditor(\n {\n InputProps: InputPropsProp = {},\n className,\n column,\n \"data-field\": dataField,\n onDeselect,\n onChangeValue,\n operator,\n suggestionProvider = useTypeaheadSuggestions,\n table,\n value,\n }: FilterClauseTextValueEditorProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n ) {\n const isMultiValue = operator === \"in\";\n\n // If we have a multiselect text value which we are editing, this will render\n // a comma delimited list of the selected values. That is not what we display\n // by default when using a multiselect combo. Its not a huge problem - as soon\n // as user focuses this component and we display dropdown, input text is cleared\n // (so user can type to filter list) until dropdown closes again. <ight need to\n // revisit.\n const [valueInputValue, setValueInputValue] = useState(\n value?.toString() ?? \"\"\n );\n const [typeaheadValues, setTypeaheadValues] = useState<string[]>([]);\n\n const getSuggestions = suggestionProvider();\n\n const handleSingleValueSelectionChange =\n useCallback<SingleSelectionHandler>(\n (_, value) => onChangeValue(value),\n [onChangeValue]\n );\n\n const handleMultiValueSelectionChange = useCallback<MultiSelectionHandler>(\n (_, values) => onChangeValue(values),\n [onChangeValue]\n );\n\n useEffect(() => {\n if (table) {\n const vuuTable = getVuuTable(table);\n const params: TypeaheadParams =\n valueInputValue && !isMultiValue\n ? [vuuTable, column.name, valueInputValue]\n : [vuuTable, column.name];\n getSuggestions(params)\n .then((suggestions) => {\n if (suggestions.length === 0 && valueInputValue) {\n setTypeaheadValues(NO_DATA_MATCH);\n } else {\n setTypeaheadValues(suggestions);\n }\n })\n .catch((err) => {\n console.error(\"Error getting suggestions\", err);\n });\n }\n }, [table, column, valueInputValue, getSuggestions, isMultiValue]);\n\n const handleInputChange = useCallback(\n (evt: FormEvent<HTMLInputElement>) => {\n const { value } = evt.target as HTMLInputElement;\n console.log(`handleInputChange \"${value}\"`);\n setValueInputValue(value);\n // we want to set the filterclause status to valid, but not trigger focus chanmge\n if (operator === \"starts\" || operator === \"ends\") {\n onChangeValue(value, false);\n }\n },\n [onChangeValue, operator]\n );\n\n const handleKeyDownFreeTextInput = useCallback<\n KeyboardEventHandler<HTMLInputElement>\n >(\n (evt) => {\n console.log(`handleKeyDownFreeTextInput ${valueInputValue}`);\n if (\n (evt.key === \"Enter\" || evt.key === \"Tab\") &&\n valueInputValue !== \"\"\n ) {\n evt.stopPropagation();\n evt.preventDefault();\n console.log(`call onInputComplete ${valueInputValue}`);\n onChangeValue(valueInputValue);\n } else {\n InputPropsProp?.inputProps?.onKeyDown?.(evt);\n }\n },\n [InputPropsProp, onChangeValue, valueInputValue]\n );\n\n const InputProps = useMemo(() => {\n if (operator === \"starts\" || operator === \"ends\") {\n const { inputProps, ...restInputProps } = InputPropsProp;\n return {\n ...restInputProps,\n inputProps: {\n ...inputProps,\n onKeyDown: handleKeyDownFreeTextInput,\n },\n };\n } else {\n return InputPropsProp;\n }\n }, [InputPropsProp, handleKeyDownFreeTextInput, operator]);\n\n const getValueInputField = useCallback(() => {\n switch (operator) {\n case \"in\":\n return (\n <ExpandoCombobox\n InputProps={InputProps}\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n source={typeaheadValues}\n onInputChange={handleInputChange}\n onSelectionChange={handleMultiValueSelectionChange}\n ref={forwardedRef}\n selectionStrategy=\"multiple\"\n selectionKeys={selectionKeys}\n value={value}\n />\n );\n case \"starts\": {\n return (\n <ExpandoCombobox<string>\n InputProps={InputProps}\n ListProps={{\n className: \"vuuIllustrationsOnly\",\n disabled: true,\n }}\n allowEnterCommitsText\n allowFreeText\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n disableFilter={\n typeaheadValues === NO_DATA_MATCH && valueInputValue?.length > 0\n }\n source={typeaheadValues}\n onInputChange={handleInputChange}\n onSelectionChange={handleSingleValueSelectionChange}\n ref={forwardedRef}\n value={value}\n />\n );\n }\n\n case \"ends\":\n return (\n <ExpandoInput\n {...InputProps}\n className={className}\n data-field={dataField}\n value={valueInputValue}\n ref={forwardedRef}\n onChange={handleInputChange}\n />\n );\n\n default:\n //TODO get a ref to input and listen to changes - connect these to typeahead\n return typeaheadValues.length > 0 ? (\n <ExpandoCombobox<string>\n InputProps={InputProps}\n allowBackspaceClearsSelection\n allowFreeText\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n source={typeaheadValues}\n title=\"value\"\n onInputChange={handleInputChange}\n onDeselect={onDeselect}\n onSelectionChange={handleSingleValueSelectionChange}\n ref={forwardedRef}\n value={value}\n />\n ) : null;\n }\n }, [\n InputProps,\n operator,\n className,\n dataField,\n typeaheadValues,\n handleInputChange,\n handleMultiValueSelectionChange,\n forwardedRef,\n value,\n valueInputValue,\n onDeselect,\n handleSingleValueSelectionChange,\n ]);\n\n return getValueInputField();\n }\n);\n"],"names":["value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilterClauseValueEditorText.js","sources":["../../../src/filter-clause/value-editors/FilterClauseValueEditorText.tsx"],"sourcesContent":["import {\n FormEvent,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { TypeaheadParams, VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { useTypeaheadSuggestions } from \"@vuu-ui/vuu-data-react\";\nimport {\n ExpandoInput,\n MultiSelectionHandler,\n SingleSelectionHandler,\n} from \"@vuu-ui/vuu-ui-controls\";\nimport { ExpandoCombobox } from \"../ExpandoCombobox\";\nimport { FilterClauseValueEditor } from \"../filterClauseTypes\";\nimport { SuggestionFetcher, TableSchemaTable } from \"@vuu-ui/vuu-data-types\";\n\nconst selectionKeys = [\"Enter\", \" \"];\n\nconst getVuuTable = (schemaTable: TableSchemaTable): VuuTable => {\n if (schemaTable.session) {\n const { module, session } = schemaTable;\n return { module, table: session };\n } else {\n return schemaTable;\n }\n};\n\nexport interface FilterClauseTextValueEditorProps\n extends FilterClauseValueEditor,\n HTMLAttributes<HTMLDivElement> {\n \"data-field\"?: string;\n ref: RefObject<HTMLDivElement>;\n operator: string;\n suggestionProvider?: () => SuggestionFetcher;\n value: string | string[];\n}\n\nconst NO_DATA_MATCH = [\"No matching data\"];\n\nexport const FilterClauseValueEditorText = forwardRef(\n function FilterClauseTextValueEditor(\n {\n InputProps: InputPropsProp = {},\n className,\n column,\n \"data-field\": dataField,\n onDeselect,\n onChangeValue,\n operator,\n suggestionProvider = useTypeaheadSuggestions,\n table,\n value,\n }: FilterClauseTextValueEditorProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n ) {\n const isMultiValue = operator === \"in\";\n\n // If we have a multiselect text value which we are editing, this will render\n // a comma delimited list of the selected values. That is not what we display\n // by default when using a multiselect combo. Its not a huge problem - as soon\n // as user focuses this component and we display dropdown, input text is cleared\n // (so user can type to filter list) until dropdown closes again. <ight need to\n // revisit.\n const [valueInputValue, setValueInputValue] = useState(\n value?.toString() ?? \"\"\n );\n const [typeaheadValues, setTypeaheadValues] = useState<string[]>([]);\n\n const getSuggestions = suggestionProvider();\n\n const handleSingleValueSelectionChange =\n useCallback<SingleSelectionHandler>(\n (_, value) => onChangeValue(value),\n [onChangeValue]\n );\n\n const handleMultiValueSelectionChange = useCallback<MultiSelectionHandler>(\n (_, values) => onChangeValue(values),\n [onChangeValue]\n );\n\n useEffect(() => {\n if (table) {\n const vuuTable = getVuuTable(table);\n const params: TypeaheadParams =\n valueInputValue && !isMultiValue\n ? [vuuTable, column.name, valueInputValue]\n : [vuuTable, column.name];\n getSuggestions(params)\n .then((suggestions) => {\n if (suggestions.length === 0 && valueInputValue) {\n setTypeaheadValues(NO_DATA_MATCH);\n } else {\n setTypeaheadValues(suggestions);\n }\n })\n .catch((err) => {\n console.error(\"Error getting suggestions\", err);\n });\n }\n }, [table, column, valueInputValue, getSuggestions, isMultiValue]);\n\n const handleInputChange = useCallback(\n (evt: FormEvent<HTMLInputElement>) => {\n const { value } = evt.target as HTMLInputElement;\n console.log(`handleInputChange \"${value}\"`);\n setValueInputValue(value);\n // we want to set the filterclause status to valid, but not trigger focus chanmge\n if (\n operator === \"starts\" ||\n operator === \"ends\" ||\n operator === \"contains\"\n ) {\n onChangeValue(value, false);\n }\n },\n [onChangeValue, operator]\n );\n\n const handleKeyDownFreeTextInput = useCallback<\n KeyboardEventHandler<HTMLInputElement>\n >(\n (evt) => {\n console.log(`handleKeyDownFreeTextInput ${valueInputValue}`);\n if (\n (evt.key === \"Enter\" || evt.key === \"Tab\") &&\n valueInputValue !== \"\"\n ) {\n evt.stopPropagation();\n evt.preventDefault();\n console.log(`call onInputComplete ${valueInputValue}`);\n onChangeValue(valueInputValue);\n } else {\n InputPropsProp?.inputProps?.onKeyDown?.(evt);\n }\n },\n [InputPropsProp, onChangeValue, valueInputValue]\n );\n\n const InputProps = useMemo(() => {\n if (operator === \"starts\" || operator === \"ends\") {\n const { inputProps, ...restInputProps } = InputPropsProp;\n return {\n ...restInputProps,\n inputProps: {\n ...inputProps,\n onKeyDown: handleKeyDownFreeTextInput,\n },\n };\n } else {\n return InputPropsProp;\n }\n }, [InputPropsProp, handleKeyDownFreeTextInput, operator]);\n\n const getValueInputField = useCallback(() => {\n switch (operator) {\n case \"in\":\n return (\n <ExpandoCombobox\n InputProps={InputProps}\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n source={typeaheadValues}\n onInputChange={handleInputChange}\n onSelectionChange={handleMultiValueSelectionChange}\n ref={forwardedRef}\n selectionStrategy=\"multiple\"\n selectionKeys={selectionKeys}\n value={value}\n />\n );\n case \"starts\": {\n return (\n <ExpandoCombobox<string>\n InputProps={InputProps}\n ListProps={{\n className: \"vuuIllustrationsOnly\",\n disabled: true,\n }}\n allowEnterCommitsText\n allowFreeText\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n disableFilter={\n typeaheadValues === NO_DATA_MATCH && valueInputValue?.length > 0\n }\n source={typeaheadValues}\n onInputChange={handleInputChange}\n onSelectionChange={handleSingleValueSelectionChange}\n ref={forwardedRef}\n value={value}\n />\n );\n }\n\n case \"ends\":\n return (\n <ExpandoInput\n {...InputProps}\n className={className}\n data-field={dataField}\n value={valueInputValue}\n ref={forwardedRef}\n onChange={handleInputChange}\n />\n );\n\n default:\n //TODO get a ref to input and listen to changes - connect these to typeahead\n return typeaheadValues.length > 0 ? (\n <ExpandoCombobox<string>\n InputProps={InputProps}\n allowBackspaceClearsSelection\n allowFreeText\n className={className}\n data-field={dataField}\n initialHighlightedIndex={0}\n source={typeaheadValues}\n title=\"value\"\n onInputChange={handleInputChange}\n onDeselect={onDeselect}\n onSelectionChange={handleSingleValueSelectionChange}\n ref={forwardedRef}\n value={value}\n />\n ) : null;\n }\n }, [\n InputProps,\n operator,\n className,\n dataField,\n typeaheadValues,\n handleInputChange,\n handleMultiValueSelectionChange,\n forwardedRef,\n value,\n valueInputValue,\n onDeselect,\n handleSingleValueSelectionChange,\n ]);\n\n return getValueInputField();\n }\n);\n"],"names":["value"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.8.
|
|
2
|
+
"version": "0.8.52",
|
|
3
3
|
"author": "heswell",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"devDependencies": {
|
|
7
|
-
"@vuu-ui/vuu-data-types": "0.8.
|
|
8
|
-
"@vuu-ui/vuu-protocol-types": "0.8.
|
|
9
|
-
"@vuu-ui/vuu-table-types": "0.8.
|
|
10
|
-
"@vuu-ui/vuu-filter-types": "0.8.
|
|
7
|
+
"@vuu-ui/vuu-data-types": "0.8.52",
|
|
8
|
+
"@vuu-ui/vuu-protocol-types": "0.8.52",
|
|
9
|
+
"@vuu-ui/vuu-table-types": "0.8.52",
|
|
10
|
+
"@vuu-ui/vuu-filter-types": "0.8.52",
|
|
11
11
|
"@types/uuid": "^9.0.2"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@vuu-ui/vuu-codemirror": "0.8.
|
|
15
|
-
"@vuu-ui/vuu-data-react": "0.8.
|
|
16
|
-
"@vuu-ui/vuu-filter-parser": "0.8.
|
|
17
|
-
"@vuu-ui/vuu-popups": "0.8.
|
|
18
|
-
"@vuu-ui/vuu-ui-controls": "0.8.
|
|
19
|
-
"@vuu-ui/vuu-utils": "0.8.
|
|
14
|
+
"@vuu-ui/vuu-codemirror": "0.8.52",
|
|
15
|
+
"@vuu-ui/vuu-data-react": "0.8.52",
|
|
16
|
+
"@vuu-ui/vuu-filter-parser": "0.8.52",
|
|
17
|
+
"@vuu-ui/vuu-popups": "0.8.52",
|
|
18
|
+
"@vuu-ui/vuu-ui-controls": "0.8.52",
|
|
19
|
+
"@vuu-ui/vuu-utils": "0.8.52",
|
|
20
20
|
"@salt-ds/core": "1.17.0",
|
|
21
21
|
"@salt-ds/styles": "0.2.1",
|
|
22
22
|
"@salt-ds/window": "0.1.1",
|