@navikt/ds-react 6.2.0 → 6.3.0
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/form/combobox/ComboboxProvider.js +5 -1
- package/cjs/form/combobox/ComboboxProvider.js.map +1 -1
- package/cjs/form/combobox/FilteredOptions/FilteredOptions.js +14 -12
- package/cjs/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
- package/cjs/form/combobox/FilteredOptions/filtered-options-util.d.ts +3 -3
- package/cjs/form/combobox/FilteredOptions/filtered-options-util.js +1 -3
- package/cjs/form/combobox/FilteredOptions/filtered-options-util.js.map +1 -1
- package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.d.ts +8 -5
- package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +8 -13
- package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
- package/cjs/form/combobox/Input/Input.js +9 -7
- package/cjs/form/combobox/Input/Input.js.map +1 -1
- package/cjs/form/combobox/SelectedOptions/SelectedOptions.d.ts +2 -1
- package/cjs/form/combobox/SelectedOptions/SelectedOptions.js +3 -3
- package/cjs/form/combobox/SelectedOptions/SelectedOptions.js.map +1 -1
- package/cjs/form/combobox/SelectedOptions/selectedOptionsContext.d.ts +10 -7
- package/cjs/form/combobox/SelectedOptions/selectedOptionsContext.js +6 -8
- package/cjs/form/combobox/SelectedOptions/selectedOptionsContext.js.map +1 -1
- package/cjs/form/combobox/combobox-utils.d.ts +10 -0
- package/cjs/form/combobox/combobox-utils.js +27 -0
- package/cjs/form/combobox/combobox-utils.js.map +1 -0
- package/cjs/form/combobox/customOptionsContext.d.ts +5 -4
- package/cjs/form/combobox/customOptionsContext.js +1 -1
- package/cjs/form/combobox/customOptionsContext.js.map +1 -1
- package/cjs/form/combobox/types.d.ts +22 -11
- package/cjs/form/file-upload/FileUpload.context.d.ts +8 -0
- package/cjs/form/file-upload/FileUpload.context.js +7 -0
- package/cjs/form/file-upload/FileUpload.context.js.map +1 -0
- package/cjs/form/file-upload/FileUpload.d.ts +118 -0
- package/cjs/form/file-upload/FileUpload.js +73 -0
- package/cjs/form/file-upload/FileUpload.js.map +1 -0
- package/cjs/form/file-upload/FileUpload.types.d.ts +55 -0
- package/cjs/form/file-upload/FileUpload.types.js +8 -0
- package/cjs/form/file-upload/FileUpload.types.js.map +1 -0
- package/cjs/form/file-upload/i18n/get.d.ts +2 -0
- package/cjs/form/file-upload/i18n/get.js +38 -0
- package/cjs/form/file-upload/i18n/get.js.map +1 -0
- package/cjs/form/file-upload/i18n/i18n.context.d.ts +11 -0
- package/cjs/form/file-upload/i18n/i18n.context.js +39 -0
- package/cjs/form/file-upload/i18n/i18n.context.js.map +1 -0
- package/cjs/form/file-upload/i18n/i18n.types.d.ts +13 -0
- package/cjs/form/file-upload/i18n/i18n.types.js +3 -0
- package/cjs/form/file-upload/i18n/i18n.types.js.map +1 -0
- package/cjs/form/file-upload/i18n/locales/nb.json +20 -0
- package/cjs/form/file-upload/i18n/merge.d.ts +2 -0
- package/cjs/form/file-upload/i18n/merge.js +29 -0
- package/cjs/form/file-upload/i18n/merge.js.map +1 -0
- package/cjs/form/file-upload/index.d.ts +7 -0
- package/cjs/form/file-upload/index.js +16 -0
- package/cjs/form/file-upload/index.js.map +1 -0
- package/cjs/form/file-upload/parts/Trigger.d.ts +7 -0
- package/cjs/form/file-upload/parts/Trigger.js +43 -0
- package/cjs/form/file-upload/parts/Trigger.js.map +1 -0
- package/cjs/form/file-upload/parts/dropzone/Dropzone.d.ts +4 -0
- package/cjs/form/file-upload/parts/dropzone/Dropzone.js +106 -0
- package/cjs/form/file-upload/parts/dropzone/Dropzone.js.map +1 -0
- package/cjs/form/file-upload/parts/dropzone/dropzone.types.d.ts +18 -0
- package/cjs/form/file-upload/parts/dropzone/dropzone.types.js +3 -0
- package/cjs/form/file-upload/parts/dropzone/dropzone.types.js.map +1 -0
- package/cjs/form/file-upload/parts/dropzone/useDropzone.d.ts +13 -0
- package/cjs/form/file-upload/parts/dropzone/useDropzone.js +34 -0
- package/cjs/form/file-upload/parts/dropzone/useDropzone.js.map +1 -0
- package/cjs/form/file-upload/parts/item/Item.d.ts +55 -0
- package/cjs/form/file-upload/parts/item/Item.js +79 -0
- package/cjs/form/file-upload/parts/item/Item.js.map +1 -0
- package/cjs/form/file-upload/parts/item/Item.types.d.ts +5 -0
- package/cjs/form/file-upload/parts/item/Item.types.js +3 -0
- package/cjs/form/file-upload/parts/item/Item.types.js.map +1 -0
- package/cjs/form/file-upload/parts/item/ItemButton.d.ts +12 -0
- package/cjs/form/file-upload/parts/item/ItemButton.js +22 -0
- package/cjs/form/file-upload/parts/item/ItemButton.js.map +1 -0
- package/cjs/form/file-upload/parts/item/ItemIcon.d.ts +9 -0
- package/cjs/form/file-upload/parts/item/ItemIcon.js +51 -0
- package/cjs/form/file-upload/parts/item/ItemIcon.js.map +1 -0
- package/cjs/form/file-upload/parts/item/ItemName.d.ts +9 -0
- package/cjs/form/file-upload/parts/item/ItemName.js +32 -0
- package/cjs/form/file-upload/parts/item/ItemName.js.map +1 -0
- package/cjs/form/file-upload/parts/item/utils/download-file.d.ts +1 -0
- package/cjs/form/file-upload/parts/item/utils/download-file.js +13 -0
- package/cjs/form/file-upload/parts/item/utils/download-file.js.map +1 -0
- package/cjs/form/file-upload/parts/item/utils/file-type-checker.d.ts +2 -0
- package/cjs/form/file-upload/parts/item/utils/file-type-checker.js +6 -0
- package/cjs/form/file-upload/parts/item/utils/file-type-checker.js.map +1 -0
- package/cjs/form/file-upload/parts/item/utils/format-file-size.d.ts +2 -0
- package/cjs/form/file-upload/parts/item/utils/format-file-size.js +24 -0
- package/cjs/form/file-upload/parts/item/utils/format-file-size.js.map +1 -0
- package/cjs/form/file-upload/useFileUpload.d.ts +12 -0
- package/cjs/form/file-upload/useFileUpload.js +33 -0
- package/cjs/form/file-upload/useFileUpload.js.map +1 -0
- package/cjs/form/file-upload/utils/is-accepted-file-type.d.ts +1 -0
- package/cjs/form/file-upload/utils/is-accepted-file-type.js +26 -0
- package/cjs/form/file-upload/utils/is-accepted-file-type.js.map +1 -0
- package/cjs/form/file-upload/utils/is-accepted-size.d.ts +1 -0
- package/cjs/form/file-upload/utils/is-accepted-size.js +11 -0
- package/cjs/form/file-upload/utils/is-accepted-size.js.map +1 -0
- package/cjs/form/file-upload/utils/validate-files.d.ts +8 -0
- package/cjs/form/file-upload/utils/validate-files.js +48 -0
- package/cjs/form/file-upload/utils/validate-files.js.map +1 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +3 -1
- package/cjs/index.js.map +1 -1
- package/cjs/loader/Loader.d.ts +0 -7
- package/cjs/loader/Loader.js.map +1 -1
- package/cjs/table/DataCell.d.ts +1 -3
- package/cjs/table/DataCell.js.map +1 -1
- package/cjs/util/create-context.d.ts +1 -0
- package/cjs/util/create-context.js.map +1 -1
- package/cjs/util/hooks/useEventListener.d.ts +1 -1
- package/cjs/util/hooks/useMergeRefs.d.ts +1 -1
- package/esm/form/combobox/ComboboxProvider.js +5 -1
- package/esm/form/combobox/ComboboxProvider.js.map +1 -1
- package/esm/form/combobox/FilteredOptions/FilteredOptions.js +14 -12
- package/esm/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
- package/esm/form/combobox/FilteredOptions/filtered-options-util.d.ts +3 -3
- package/esm/form/combobox/FilteredOptions/filtered-options-util.js +1 -3
- package/esm/form/combobox/FilteredOptions/filtered-options-util.js.map +1 -1
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.d.ts +8 -5
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +8 -13
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
- package/esm/form/combobox/Input/Input.js +9 -7
- package/esm/form/combobox/Input/Input.js.map +1 -1
- package/esm/form/combobox/SelectedOptions/SelectedOptions.d.ts +2 -1
- package/esm/form/combobox/SelectedOptions/SelectedOptions.js +3 -3
- package/esm/form/combobox/SelectedOptions/SelectedOptions.js.map +1 -1
- package/esm/form/combobox/SelectedOptions/selectedOptionsContext.d.ts +10 -7
- package/esm/form/combobox/SelectedOptions/selectedOptionsContext.js +6 -8
- package/esm/form/combobox/SelectedOptions/selectedOptionsContext.js.map +1 -1
- package/esm/form/combobox/combobox-utils.d.ts +10 -0
- package/esm/form/combobox/combobox-utils.js +22 -0
- package/esm/form/combobox/combobox-utils.js.map +1 -0
- package/esm/form/combobox/customOptionsContext.d.ts +5 -4
- package/esm/form/combobox/customOptionsContext.js +1 -1
- package/esm/form/combobox/customOptionsContext.js.map +1 -1
- package/esm/form/combobox/types.d.ts +22 -11
- package/esm/form/file-upload/FileUpload.context.d.ts +8 -0
- package/esm/form/file-upload/FileUpload.context.js +3 -0
- package/esm/form/file-upload/FileUpload.context.js.map +1 -0
- package/esm/form/file-upload/FileUpload.d.ts +118 -0
- package/esm/form/file-upload/FileUpload.js +44 -0
- package/esm/form/file-upload/FileUpload.js.map +1 -0
- package/esm/form/file-upload/FileUpload.types.d.ts +55 -0
- package/esm/form/file-upload/FileUpload.types.js +5 -0
- package/esm/form/file-upload/FileUpload.types.js.map +1 -0
- package/esm/form/file-upload/i18n/get.d.ts +2 -0
- package/esm/form/file-upload/i18n/get.js +34 -0
- package/esm/form/file-upload/i18n/get.js.map +1 -0
- package/esm/form/file-upload/i18n/i18n.context.d.ts +11 -0
- package/esm/form/file-upload/i18n/i18n.context.js +32 -0
- package/esm/form/file-upload/i18n/i18n.context.js.map +1 -0
- package/esm/form/file-upload/i18n/i18n.types.d.ts +13 -0
- package/esm/form/file-upload/i18n/i18n.types.js +2 -0
- package/esm/form/file-upload/i18n/i18n.types.js.map +1 -0
- package/esm/form/file-upload/i18n/locales/nb.json +20 -0
- package/esm/form/file-upload/i18n/merge.d.ts +2 -0
- package/esm/form/file-upload/i18n/merge.js +25 -0
- package/esm/form/file-upload/i18n/merge.js.map +1 -0
- package/esm/form/file-upload/index.d.ts +7 -0
- package/esm/form/file-upload/index.js +6 -0
- package/esm/form/file-upload/index.js.map +1 -0
- package/esm/form/file-upload/parts/Trigger.d.ts +7 -0
- package/esm/form/file-upload/parts/Trigger.js +18 -0
- package/esm/form/file-upload/parts/Trigger.js.map +1 -0
- package/esm/form/file-upload/parts/dropzone/Dropzone.d.ts +4 -0
- package/esm/form/file-upload/parts/dropzone/Dropzone.js +78 -0
- package/esm/form/file-upload/parts/dropzone/Dropzone.js.map +1 -0
- package/esm/form/file-upload/parts/dropzone/dropzone.types.d.ts +18 -0
- package/esm/form/file-upload/parts/dropzone/dropzone.types.js +2 -0
- package/esm/form/file-upload/parts/dropzone/dropzone.types.js.map +1 -0
- package/esm/form/file-upload/parts/dropzone/useDropzone.d.ts +13 -0
- package/esm/form/file-upload/parts/dropzone/useDropzone.js +30 -0
- package/esm/form/file-upload/parts/dropzone/useDropzone.js.map +1 -0
- package/esm/form/file-upload/parts/item/Item.d.ts +55 -0
- package/esm/form/file-upload/parts/item/Item.js +50 -0
- package/esm/form/file-upload/parts/item/Item.js.map +1 -0
- package/esm/form/file-upload/parts/item/Item.types.d.ts +5 -0
- package/esm/form/file-upload/parts/item/Item.types.js +2 -0
- package/esm/form/file-upload/parts/item/Item.types.js.map +1 -0
- package/esm/form/file-upload/parts/item/ItemButton.d.ts +12 -0
- package/esm/form/file-upload/parts/item/ItemButton.js +17 -0
- package/esm/form/file-upload/parts/item/ItemButton.js.map +1 -0
- package/esm/form/file-upload/parts/item/ItemIcon.d.ts +9 -0
- package/esm/form/file-upload/parts/item/ItemIcon.js +46 -0
- package/esm/form/file-upload/parts/item/ItemIcon.js.map +1 -0
- package/esm/form/file-upload/parts/item/ItemName.d.ts +9 -0
- package/esm/form/file-upload/parts/item/ItemName.js +27 -0
- package/esm/form/file-upload/parts/item/ItemName.js.map +1 -0
- package/esm/form/file-upload/parts/item/utils/download-file.d.ts +1 -0
- package/esm/form/file-upload/parts/item/utils/download-file.js +9 -0
- package/esm/form/file-upload/parts/item/utils/download-file.js.map +1 -0
- package/esm/form/file-upload/parts/item/utils/file-type-checker.d.ts +2 -0
- package/esm/form/file-upload/parts/item/utils/file-type-checker.js +2 -0
- package/esm/form/file-upload/parts/item/utils/file-type-checker.js.map +1 -0
- package/esm/form/file-upload/parts/item/utils/format-file-size.d.ts +2 -0
- package/esm/form/file-upload/parts/item/utils/format-file-size.js +20 -0
- package/esm/form/file-upload/parts/item/utils/format-file-size.js.map +1 -0
- package/esm/form/file-upload/useFileUpload.d.ts +12 -0
- package/esm/form/file-upload/useFileUpload.js +29 -0
- package/esm/form/file-upload/useFileUpload.js.map +1 -0
- package/esm/form/file-upload/utils/is-accepted-file-type.d.ts +1 -0
- package/esm/form/file-upload/utils/is-accepted-file-type.js +22 -0
- package/esm/form/file-upload/utils/is-accepted-file-type.js.map +1 -0
- package/esm/form/file-upload/utils/is-accepted-size.d.ts +1 -0
- package/esm/form/file-upload/utils/is-accepted-size.js +7 -0
- package/esm/form/file-upload/utils/is-accepted-size.js.map +1 -0
- package/esm/form/file-upload/utils/validate-files.d.ts +8 -0
- package/esm/form/file-upload/utils/validate-files.js +44 -0
- package/esm/form/file-upload/utils/validate-files.js.map +1 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/loader/Loader.d.ts +0 -7
- package/esm/loader/Loader.js.map +1 -1
- package/esm/table/DataCell.d.ts +1 -3
- package/esm/table/DataCell.js.map +1 -1
- package/esm/util/create-context.d.ts +1 -0
- package/esm/util/create-context.js.map +1 -1
- package/esm/util/hooks/useEventListener.d.ts +1 -1
- package/esm/util/hooks/useMergeRefs.d.ts +1 -1
- package/package.json +13 -3
- package/src/form/combobox/ComboboxProvider.tsx +7 -3
- package/src/form/combobox/FilteredOptions/FilteredOptions.tsx +22 -15
- package/src/form/combobox/FilteredOptions/filtered-options-util.ts +5 -10
- package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +19 -29
- package/src/form/combobox/Input/Input.tsx +14 -8
- package/src/form/combobox/SelectedOptions/SelectedOptions.tsx +8 -5
- package/src/form/combobox/SelectedOptions/selectedOptionsContext.tsx +24 -25
- package/src/form/combobox/combobox-utils.test.ts +67 -0
- package/src/form/combobox/combobox-utils.ts +32 -0
- package/src/form/combobox/combobox.stories.tsx +67 -32
- package/src/form/combobox/combobox.test.tsx +32 -1
- package/src/form/combobox/customOptionsContext.tsx +9 -8
- package/src/form/combobox/types.ts +23 -11
- package/src/form/file-upload/FileUpload.context.tsx +9 -0
- package/src/form/file-upload/FileUpload.tsx +142 -0
- package/src/form/file-upload/FileUpload.types.ts +57 -0
- package/src/form/file-upload/file-upload-dropzone.stories.tsx +123 -0
- package/src/form/file-upload/file-upload-item.stories.tsx +136 -0
- package/src/form/file-upload/file-upload.stories.tsx +236 -0
- package/src/form/file-upload/i18n/get.ts +48 -0
- package/src/form/file-upload/i18n/i18n.context.test.tsx +92 -0
- package/src/form/file-upload/i18n/i18n.context.ts +67 -0
- package/src/form/file-upload/i18n/i18n.types.ts +20 -0
- package/src/form/file-upload/i18n/locales/nb.json +20 -0
- package/src/form/file-upload/i18n/merge.ts +35 -0
- package/src/form/file-upload/index.ts +21 -0
- package/src/form/file-upload/parts/Trigger.tsx +48 -0
- package/src/form/file-upload/parts/dropzone/Dropzone.tsx +180 -0
- package/src/form/file-upload/parts/dropzone/dropzone.types.ts +22 -0
- package/src/form/file-upload/parts/dropzone/useDropzone.ts +43 -0
- package/src/form/file-upload/parts/item/Item.tsx +165 -0
- package/src/form/file-upload/parts/item/Item.types.ts +6 -0
- package/src/form/file-upload/parts/item/ItemButton.tsx +52 -0
- package/src/form/file-upload/parts/item/ItemIcon.tsx +74 -0
- package/src/form/file-upload/parts/item/ItemName.tsx +58 -0
- package/src/form/file-upload/parts/item/utils/download-file.ts +9 -0
- package/src/form/file-upload/parts/item/utils/file-type-checker.ts +4 -0
- package/src/form/file-upload/parts/item/utils/format-file-size.test.ts +76 -0
- package/src/form/file-upload/parts/item/utils/format-file-size.ts +25 -0
- package/src/form/file-upload/useFileUpload.ts +54 -0
- package/src/form/file-upload/utils/is-accepted-file-type.test.ts +69 -0
- package/src/form/file-upload/utils/is-accepted-file-type.ts +25 -0
- package/src/form/file-upload/utils/is-accepted-size.test.ts +26 -0
- package/src/form/file-upload/utils/is-accepted-size.ts +7 -0
- package/src/form/file-upload/utils/validate-files.test.ts +132 -0
- package/src/form/file-upload/utils/validate-files.ts +62 -0
- package/src/index.ts +14 -0
- package/src/internal-header/header.stories.tsx +8 -5
- package/src/loader/Loader.tsx +0 -7
- package/src/table/DataCell.tsx +1 -6
- package/src/util/create-context.tsx +1 -0
- package/src/util/hooks/useMergeRefs.ts +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useFileUpload = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const hooks_1 = require("../../util/hooks");
|
|
6
|
+
const validate_files_1 = require("./utils/validate-files");
|
|
7
|
+
const useFileUpload = ({ ref, accept, onSelect, validator, maxSizeInBytes, disabled, }) => {
|
|
8
|
+
const inputRef = (0, react_1.useRef)(null);
|
|
9
|
+
const mergedRef = (0, hooks_1.useMergeRefs)(inputRef, ref);
|
|
10
|
+
const upload = (fileList) => {
|
|
11
|
+
const { files, partitionedFiles } = (0, validate_files_1.validateFiles)(Array.from(fileList), accept, validator, maxSizeInBytes);
|
|
12
|
+
onSelect(files, partitionedFiles);
|
|
13
|
+
};
|
|
14
|
+
const onChange = (event) => {
|
|
15
|
+
const fileList = event.target.files;
|
|
16
|
+
if (!fileList) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (!disabled) {
|
|
20
|
+
upload(fileList);
|
|
21
|
+
}
|
|
22
|
+
// Resets the value to make it is possible to upload the same file several consecutive times
|
|
23
|
+
event.target.value = "";
|
|
24
|
+
};
|
|
25
|
+
return {
|
|
26
|
+
upload,
|
|
27
|
+
onChange,
|
|
28
|
+
inputRef,
|
|
29
|
+
mergedRef,
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
exports.useFileUpload = useFileUpload;
|
|
33
|
+
//# sourceMappingURL=useFileUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFileUpload.js","sourceRoot":"","sources":["../../../src/form/file-upload/useFileUpload.ts"],"names":[],"mappings":";;;AAAA,iCAA+B;AAC/B,4CAAgD;AAEhD,2DAAuD;AAQhD,MAAM,aAAa,GAAG,CAAC,EAC5B,GAAG,EACH,MAAM,EACN,QAAQ,EACR,SAAS,EACT,cAAc,EACd,QAAQ,GACW,EAAE,EAAE;IACvB,MAAM,QAAQ,GAAG,IAAA,cAAM,EAA0B,IAAI,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,CAAC,QAAkB,EAAE,EAAE;QACpC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,IAAA,8BAAa,EAC/C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpB,MAAM,EACN,SAAS,EACT,cAAc,CACf,CAAC;QAEF,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,KAA0C,EAAE,EAAE;QAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnB,CAAC;QAED,4FAA4F;QAC5F,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO;QACL,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,SAAS;KACV,CAAC;AACJ,CAAC,CAAC;AA1CW,QAAA,aAAa,iBA0CxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isAcceptedFileType(file: File, accept: string | undefined): boolean;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isAcceptedFileType = void 0;
|
|
4
|
+
function isAcceptedFileType(file, accept) {
|
|
5
|
+
if (!accept) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
const mimeType = file.type;
|
|
9
|
+
const acceptedTypes = accept.split(",");
|
|
10
|
+
return acceptedTypes.some((type) => {
|
|
11
|
+
const validType = type.trim();
|
|
12
|
+
const isExtensionType = validType.startsWith(".");
|
|
13
|
+
const isWildcardMimeType = validType.endsWith("/*");
|
|
14
|
+
if (isExtensionType) {
|
|
15
|
+
return file.name.toLowerCase().endsWith(validType.toLowerCase());
|
|
16
|
+
}
|
|
17
|
+
else if (isWildcardMimeType) {
|
|
18
|
+
const baseMimeType = mimeType.replace(/\/.*$/, "");
|
|
19
|
+
const baseValidType = validType.replace(/\/.*$/, "");
|
|
20
|
+
return baseMimeType === baseValidType;
|
|
21
|
+
}
|
|
22
|
+
return mimeType === validType;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
exports.isAcceptedFileType = isAcceptedFileType;
|
|
26
|
+
//# sourceMappingURL=is-accepted-file-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-accepted-file-type.js","sourceRoot":"","sources":["../../../../src/form/file-upload/utils/is-accepted-file-type.ts"],"names":[],"mappings":";;;AAAA,SAAgB,kBAAkB,CAChC,IAAU,EACV,MAA0B;IAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QACnE,CAAC;aAAM,IAAI,kBAAkB,EAAE,CAAC;YAC9B,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACnD,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrD,OAAO,YAAY,KAAK,aAAa,CAAC;QACxC,CAAC;QACD,OAAO,QAAQ,KAAK,SAAS,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAxBD,gDAwBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isAcceptedSize(file: File, maxSize?: number): boolean;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isAcceptedSize = void 0;
|
|
4
|
+
function isAcceptedSize(file, maxSize = -1) {
|
|
5
|
+
if (maxSize <= 0 || file.size <= maxSize) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
exports.isAcceptedSize = isAcceptedSize;
|
|
11
|
+
//# sourceMappingURL=is-accepted-size.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-accepted-size.js","sourceRoot":"","sources":["../../../../src/form/file-upload/utils/is-accepted-size.ts"],"names":[],"mappings":";;;AAAA,SAAgB,cAAc,CAAC,IAAU,EAAE,UAAkB,CAAC,CAAC;IAC7D,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAND,wCAMC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FileObject, FileUploadBaseProps } from "../FileUpload.types";
|
|
2
|
+
export declare const validateFiles: (files: File[], accept?: string, validator?: FileUploadBaseProps["validator"], maxSizeInBytes?: number) => {
|
|
3
|
+
files: FileObject[];
|
|
4
|
+
partitionedFiles: {
|
|
5
|
+
accepted: File[];
|
|
6
|
+
rejected: import("../FileUpload.types").FileRejectedPartitioned[];
|
|
7
|
+
};
|
|
8
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateFiles = void 0;
|
|
4
|
+
const FileUpload_types_1 = require("../FileUpload.types");
|
|
5
|
+
const is_accepted_file_type_1 = require("./is-accepted-file-type");
|
|
6
|
+
const is_accepted_size_1 = require("./is-accepted-size");
|
|
7
|
+
const validateFiles = (files, accept, validator, maxSizeInBytes = -1) => {
|
|
8
|
+
const allFiles = [];
|
|
9
|
+
const accepted = [];
|
|
10
|
+
const rejected = [];
|
|
11
|
+
files.forEach((file) => {
|
|
12
|
+
const acceptedFileType = (0, is_accepted_file_type_1.isAcceptedFileType)(file, accept);
|
|
13
|
+
const acceptedFileSize = (0, is_accepted_size_1.isAcceptedSize)(file, maxSizeInBytes);
|
|
14
|
+
const customValidation = validator ? validator(file) : true;
|
|
15
|
+
const reasons = [];
|
|
16
|
+
if (customValidation !== true) {
|
|
17
|
+
reasons.push(customValidation);
|
|
18
|
+
}
|
|
19
|
+
if (!acceptedFileType) {
|
|
20
|
+
reasons.push(FileUpload_types_1.fileRejectionReason.FileType);
|
|
21
|
+
}
|
|
22
|
+
if (!acceptedFileSize) {
|
|
23
|
+
reasons.push(FileUpload_types_1.fileRejectionReason.FileSize);
|
|
24
|
+
}
|
|
25
|
+
allFiles.push({
|
|
26
|
+
file,
|
|
27
|
+
error: reasons.length > 0,
|
|
28
|
+
reasons,
|
|
29
|
+
});
|
|
30
|
+
if (reasons.length === 0) {
|
|
31
|
+
accepted.push(file);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
rejected.push({
|
|
35
|
+
file,
|
|
36
|
+
reasons,
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
files: allFiles,
|
|
41
|
+
partitionedFiles: {
|
|
42
|
+
accepted,
|
|
43
|
+
rejected,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
exports.validateFiles = validateFiles;
|
|
48
|
+
//# sourceMappingURL=validate-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-files.js","sourceRoot":"","sources":["../../../../src/form/file-upload/utils/validate-files.ts"],"names":[],"mappings":";;;AAAA,0DAK6B;AAC7B,mEAA6D;AAC7D,yDAAoD;AAE7C,MAAM,aAAa,GAAG,CAC3B,KAAa,EACb,MAAe,EACf,SAA4C,EAC5C,iBAAyB,CAAC,CAAC,EAC3B,EAAE;IACF,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAW,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAElD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,gBAAgB,GAAG,IAAA,0CAAkB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GAAG,IAAA,iCAAc,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE5D,MAAM,OAAO,GAA+C,EAAE,CAAC;QAC/D,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,sCAAmB,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,sCAAmB,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI;YACJ,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC;YACzB,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI;YACJ,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,gBAAgB,EAAE;YAChB,QAAQ;YACR,QAAQ;SACT;KACF,CAAC;AACJ,CAAC,CAAC;AApDW,QAAA,aAAa,iBAoDxB"}
|
package/cjs/index.d.ts
CHANGED
|
@@ -47,6 +47,7 @@ export { Select, type SelectProps } from "./form/select";
|
|
|
47
47
|
export { Switch, type SwitchProps } from "./form/switch";
|
|
48
48
|
export { Textarea, type TextareaProps } from "./form/textarea";
|
|
49
49
|
export { TextField, type TextFieldProps } from "./form/textfield";
|
|
50
|
+
export { UNSAFE_FileUpload, type FileUploadDropzoneProps, type FileUploadTriggerProps, type FileObject, type FileRejected, type FileAccepted, type FileRejectedPartitioned, type FilesPartitioned, type FileRejectionReason, type FileUploadItemProps, type FileItem, type FileMetadata, } from "./form/file-upload";
|
|
50
51
|
/**
|
|
51
52
|
* @deprecated
|
|
52
53
|
*/
|
package/cjs/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.Ingress = exports.Heading = exports.ErrorMessage = exports.Detail = exports.BodyShort = exports.BodyLong = exports.Tooltip = exports.ToggleGroup = exports.Timeline = exports.Tag = exports.Tabs = exports.Table = exports.Stepper = exports.Skeleton = exports.ReadMore = exports.Provider = exports.Portal = exports.Popover = exports.Pagination = exports.Modal = exports.Loader = exports.List = exports.Link = exports.VStack = exports.Stack = exports.Spacer = exports.HStack = exports.Show = exports.Hide = exports.Page = exports.HGrid = exports.Box = exports.Bleed = exports.InternalHeader = exports.HelpText = exports.GuidePanelDefaultIllustration = exports.GuidePanel = exports.ExpansionCard = exports.Dropdown = exports.useMonthpicker = exports.MonthPicker = exports.useRangeDatepicker = exports.useDatepicker = exports.DatePicker = exports.CopyButton = exports.Chips = exports.Chat = exports.Button = exports.Alert = exports.Accordion = void 0;
|
|
5
|
-
exports.Panel = exports.LinkPanel = exports.TextField = exports.Textarea = exports.Switch = exports.Select = exports.Search = exports.RadioGroup = exports.Radio = exports.Fieldset = exports.ErrorSummary = exports.ConfirmationPanel = exports.UNSAFE_Combobox = exports.CheckboxGroup = exports.Checkbox = exports.useId = exports.useEventListener = exports.useClientLayoutEffect = exports.omit = exports.debounce = exports.Label = void 0;
|
|
5
|
+
exports.Panel = exports.LinkPanel = exports.UNSAFE_FileUpload = exports.TextField = exports.Textarea = exports.Switch = exports.Select = exports.Search = exports.RadioGroup = exports.Radio = exports.Fieldset = exports.ErrorSummary = exports.ConfirmationPanel = exports.UNSAFE_Combobox = exports.CheckboxGroup = exports.Checkbox = exports.useId = exports.useEventListener = exports.useClientLayoutEffect = exports.omit = exports.debounce = exports.Label = void 0;
|
|
6
6
|
var accordion_1 = require("./accordion");
|
|
7
7
|
Object.defineProperty(exports, "Accordion", { enumerable: true, get: function () { return accordion_1.Accordion; } });
|
|
8
8
|
var alert_1 = require("./alert");
|
|
@@ -121,6 +121,8 @@ var textarea_1 = require("./form/textarea");
|
|
|
121
121
|
Object.defineProperty(exports, "Textarea", { enumerable: true, get: function () { return textarea_1.Textarea; } });
|
|
122
122
|
var textfield_1 = require("./form/textfield");
|
|
123
123
|
Object.defineProperty(exports, "TextField", { enumerable: true, get: function () { return textfield_1.TextField; } });
|
|
124
|
+
var file_upload_1 = require("./form/file-upload");
|
|
125
|
+
Object.defineProperty(exports, "UNSAFE_FileUpload", { enumerable: true, get: function () { return file_upload_1.UNSAFE_FileUpload; } });
|
|
124
126
|
/**
|
|
125
127
|
* @deprecated
|
|
126
128
|
*/
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/cjs/loader/Loader.d.ts
CHANGED
|
@@ -21,13 +21,6 @@ export interface LoaderProps extends Omit<SVGProps<SVGSVGElement>, "ref"> {
|
|
|
21
21
|
* @default "neutral"
|
|
22
22
|
*/
|
|
23
23
|
variant?: "neutral" | "interaction" | "inverted";
|
|
24
|
-
/**
|
|
25
|
-
* Allows getting a ref to the component instance.
|
|
26
|
-
* Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref).
|
|
27
|
-
*
|
|
28
|
-
* @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
|
|
29
|
-
*/
|
|
30
|
-
ref?: React.Ref<SVGSVGElement>;
|
|
31
24
|
}
|
|
32
25
|
export type LoaderType = React.ForwardRefExoticComponent<LoaderProps & React.RefAttributes<SVGSVGElement>>;
|
|
33
26
|
/**
|
package/cjs/loader/Loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../src/loader/Loader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAsB;AACtB,+CAAoD;AACpD,kCAA+B;AAC/B,yCAAsC;
|
|
1
|
+
{"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../src/loader/Loader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAsB;AACtB,+CAAoD;AACpD,kCAA+B;AAC/B,yCAAsC;AAsCtC;;;;;;;;;;GAUG;AACU,QAAA,MAAM,GAAe,IAAA,kBAAU,EAC1C,CACE,EAQC,EACD,GAAG,EACH,EAAE;QAVF,EACE,SAAS,EACT,IAAI,GAAG,QAAQ,EACf,KAAK,GAAG,WAAW,EACnB,WAAW,GAAG,KAAK,EACnB,OAAO,GAAG,SAAS,EACnB,EAAE,OAEH,EADI,IAAI,cAPT,8DAQC,CADQ;IAIT,MAAM,UAAU,GAAG,IAAA,aAAK,GAAE,CAAC;IAE3B,OAAO,CACL,wEACmB,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,UAAU,UAAU,EAAE,EAC7C,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,IAAA,cAAE,EACX,cAAc,EACd,SAAS,EACT,iBAAiB,IAAI,EAAE,EACvB,iBAAiB,OAAO,EAAE,EAC1B;YACE,2BAA2B,EAAE,WAAW;SACzC,CACF,EACD,SAAS,EAAC,OAAO,EACjB,OAAO,EAAC,WAAW,EACnB,mBAAmB,EAAC,UAAU,IAC1B,IAAA,WAAI,EAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;QAE5B,yCAAO,EAAE,EAAE,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,UAAU,UAAU,EAAE,IAAG,KAAK,CAAS;QACxD,0CACE,SAAS,EAAC,0BAA0B,EACpC,KAAK,EAAC,4BAA4B,EAClC,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,EACP,CAAC,EAAC,IAAI,EACN,IAAI,EAAC,MAAM,GACX;QACF,0CACE,SAAS,EAAC,0BAA0B,EACpC,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,EACP,CAAC,EAAC,IAAI,EACN,IAAI,EAAC,MAAM,EACX,eAAe,EAAC,QAAQ,GACxB,CACE,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,kBAAe,cAAM,CAAC"}
|
package/cjs/table/DataCell.d.ts
CHANGED
|
@@ -10,7 +10,5 @@ export interface DataCellProps extends React.TdHTMLAttributes<HTMLTableCellEleme
|
|
|
10
10
|
*/
|
|
11
11
|
textSize?: "medium" | "small";
|
|
12
12
|
}
|
|
13
|
-
export
|
|
14
|
-
}
|
|
15
|
-
export declare const DataCell: DataCellType;
|
|
13
|
+
export declare const DataCell: React.ForwardRefExoticComponent<DataCellProps & React.RefAttributes<HTMLTableCellElement>>;
|
|
16
14
|
export default DataCell;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCell.js","sourceRoot":"","sources":["../../src/table/DataCell.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAsB;AACtB,+CAA0C;AAC1C,8CAA0C;
|
|
1
|
+
{"version":3,"file":"DataCell.js","sourceRoot":"","sources":["../../src/table/DataCell.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAsB;AACtB,+CAA0C;AAC1C,8CAA0C;AAe7B,QAAA,QAAQ,GAAG,IAAA,kBAAU,EAChC,CAAC,EAAsD,EAAE,GAAG,EAAE,EAAE;QAA/D,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,OAAW,EAAN,IAAI,cAApD,8CAAsD,CAAF;IACnD,OAAO,CACL,8BAAC,sBAAS,kBACR,EAAE,EAAC,IAAI,EACP,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,IAAA,cAAE,EAAC,wBAAwB,EAAE,SAAS,EAAE;YACjD,CAAC,iCAAiC,KAAK,EAAE,CAAC,EAAE,KAAK;SAClD,CAAC,EACF,IAAI,EAAE,QAAQ,IACV,IAAI,GAEP,QAAQ,CACC,CACb,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,kBAAe,gBAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-context.js","sourceRoot":"","sources":["../../src/util/create-context.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,+CAIe;
|
|
1
|
+
{"version":3,"file":"create-context.js","sourceRoot":"","sources":["../../src/util/create-context.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,+CAIe;AAaf,SAAS,eAAe,CAAC,IAAY,EAAE,QAAgB;IACrD,OAAO,GAAG,IAAI,sEAAsE,QAAQ,EAAE,CAAC;AACjG,CAAC;AAED,SAAgB,aAAa,CAAI,UAAmC,EAAE;IACpE,MAAM,EACJ,IAAI,EACJ,QAAQ,GAAG,YAAY,EACvB,YAAY,GAAG,UAAU,EACzB,YAAY,EACZ,YAAY,GACb,GAAG,OAAO,CAAC;IAEZ,MAAM,OAAO,GAAG,IAAA,qBAAkB,EAAgB,YAAY,CAAC,CAAC;IAEhE;;;OAGG;IACH,MAAM,QAAQ,GAAG,IAAA,kBAAU,EACzB,CAAC,EAA0C,EAAE,GAAG,EAAE,EAAE;YAAnD,EAAE,QAAQ,OAAgC,EAA3B,OAAO,cAAtB,YAAwB,CAAF;QACrB,0CAA0C;QAC1C,uDAAuD;QACvD,MAAM,KAAK,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAM,CAAC;QAExE,OAAO,CACL,8BAAC,OAAO,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,CAAC,CAAC,iCAAM,KAAK,KAAE,GAAG,IAAG,CAAC,CAAC,KAAK,IACrD,QAAQ,CACQ,CACpB,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,SAAS,UAAU,CACjB,SAAY,IAAS;;QAErB,MAAM,OAAO,GAAG,IAAA,kBAAe,EAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CACxD,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC;YAC5B,MAAA,KAAK,CAAC,iBAAiB,sDAAG,KAAK,EAAE,UAAU,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,OAAwB,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAE3B,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAU,CAAC;AACzC,CAAC;AAjDD,sCAiDC"}
|
|
@@ -2,4 +2,4 @@ export interface ListenerT {
|
|
|
2
2
|
addEventListener(name: string, handler: (event?: any) => void, ...args: any[]): any;
|
|
3
3
|
removeEventListener(name: string, handler: (event?: any) => void, ...args: any[]): any;
|
|
4
4
|
}
|
|
5
|
-
export declare const useEventListener: <T extends ListenerT>(name: Parameters<ListenerT["addEventListener"]>[0], handler: Parameters<ListenerT["addEventListener"]>[1], target?:
|
|
5
|
+
export declare const useEventListener: <T extends ListenerT>(name: Parameters<ListenerT["addEventListener"]>[0], handler: Parameters<ListenerT["addEventListener"]>[1], target?: null | T | Window) => void;
|
|
@@ -14,6 +14,7 @@ import Combobox from "./Combobox.js";
|
|
|
14
14
|
import { FilteredOptionsProvider } from "./FilteredOptions/filteredOptionsContext.js";
|
|
15
15
|
import { InputContextProvider } from "./Input/inputContext.js";
|
|
16
16
|
import { SelectedOptionsProvider } from "./SelectedOptions/selectedOptionsContext.js";
|
|
17
|
+
import { mapToComboboxOptionArray } from "./combobox-utils.js";
|
|
17
18
|
import { CustomOptionsProvider } from "./customOptionsContext.js";
|
|
18
19
|
/**
|
|
19
20
|
* A component that allows the user to search in a list of options
|
|
@@ -38,7 +39,10 @@ import { CustomOptionsProvider } from "./customOptionsContext.js";
|
|
|
38
39
|
* ```
|
|
39
40
|
*/
|
|
40
41
|
const ComboboxProvider = forwardRef((props, ref) => {
|
|
41
|
-
const { allowNewValues = false, children, defaultValue, error, errorId, filteredOptions, id, isListOpen, isLoading = false, isMultiSelect, onToggleSelected, selectedOptions, maxSelected, options, value, onChange, onClear, shouldAutocomplete, size } = props, rest = __rest(props, ["allowNewValues", "children", "defaultValue", "error", "errorId", "filteredOptions", "id", "isListOpen", "isLoading", "isMultiSelect", "onToggleSelected", "selectedOptions", "maxSelected", "options", "value", "onChange", "onClear", "shouldAutocomplete", "size"]);
|
|
42
|
+
const { allowNewValues = false, children, defaultValue, error, errorId, filteredOptions: externalFilteredOptions, id, isListOpen, isLoading = false, isMultiSelect, onToggleSelected, selectedOptions: externalSelectedOptions, maxSelected, options: externalOptions, value, onChange, onClear, shouldAutocomplete, size } = props, rest = __rest(props, ["allowNewValues", "children", "defaultValue", "error", "errorId", "filteredOptions", "id", "isListOpen", "isLoading", "isMultiSelect", "onToggleSelected", "selectedOptions", "maxSelected", "options", "value", "onChange", "onClear", "shouldAutocomplete", "size"]);
|
|
43
|
+
const options = mapToComboboxOptionArray(externalOptions) || [];
|
|
44
|
+
const filteredOptions = mapToComboboxOptionArray(externalFilteredOptions);
|
|
45
|
+
const selectedOptions = mapToComboboxOptionArray(externalSelectedOptions);
|
|
42
46
|
return (React.createElement(InputContextProvider, { value: {
|
|
43
47
|
defaultValue,
|
|
44
48
|
error,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxProvider.js","sourceRoot":"","sources":["../../../src/form/combobox/ComboboxProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,gBAAgB,GAAG,UAAU,CACjC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,MAAM,EACJ,cAAc,GAAG,KAAK,EACtB,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,OAAO,EACP,eAAe,
|
|
1
|
+
{"version":3,"file":"ComboboxProvider.js","sourceRoot":"","sources":["../../../src/form/combobox/ComboboxProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,gBAAgB,GAAG,UAAU,CACjC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,MAAM,EACJ,cAAc,GAAG,KAAK,EACtB,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,OAAO,EACP,eAAe,EAAE,uBAAuB,EACxC,EAAE,EACF,UAAU,EACV,SAAS,GAAG,KAAK,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EAAE,uBAAuB,EACxC,WAAW,EACX,OAAO,EAAE,eAAe,EACxB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,kBAAkB,EAClB,IAAI,KAEF,KAAK,EADJ,IAAI,UACL,KAAK,EArBH,sQAqBL,CAAQ,CAAC;IACV,MAAM,OAAO,GAAG,wBAAwB,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAChE,MAAM,eAAe,GAAG,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;IAC1E,MAAM,eAAe,GAAG,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;IAC1E,OAAO,CACL,oBAAC,oBAAoB,IACnB,KAAK,EAAE;YACL,YAAY;YACZ,KAAK;YACL,OAAO;YACP,EAAE;YACF,KAAK;YACL,QAAQ;YACR,OAAO;YACP,kBAAkB;YAClB,IAAI;SACL;QAED,oBAAC,qBAAqB,IAAC,KAAK,EAAE,EAAE,aAAa,EAAE;YAC7C,oBAAC,uBAAuB,IACtB,KAAK,EAAE;oBACL,cAAc;oBACd,aAAa;oBACb,eAAe;oBACf,WAAW;oBACX,gBAAgB;oBAChB,OAAO;iBACR;gBAED,oBAAC,uBAAuB,IACtB,KAAK,EAAE;wBACL,cAAc;wBACd,eAAe;wBACf,UAAU;wBACV,SAAS;wBACT,OAAO;qBACR;oBAED,oBAAC,QAAQ,kBAAC,GAAG,EAAE,GAAG,IAAM,IAAI,GACzB,QAAQ,CACA,CACa,CACF,CACJ,CACH,CACxB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { Loader } from "../../../loader/index.js";
|
|
|
5
5
|
import { BodyShort, Label } from "../../../typography/index.js";
|
|
6
6
|
import { useInputContext } from "../Input/inputContext.js";
|
|
7
7
|
import { useSelectedOptionsContext } from "../SelectedOptions/selectedOptionsContext.js";
|
|
8
|
+
import { isInList, toComboboxOption } from "../combobox-utils.js";
|
|
8
9
|
import filteredOptionsUtil from "./filtered-options-util.js";
|
|
9
10
|
import { useFilteredOptionsContext } from "./filteredOptionsContext.js";
|
|
10
11
|
const FilteredOptions = () => {
|
|
@@ -12,7 +13,7 @@ const FilteredOptions = () => {
|
|
|
12
13
|
const { inputProps: { id }, size, value, } = useInputContext();
|
|
13
14
|
const { allowNewValues, isLoading, isListOpen, filteredOptions, setFilteredOptionsRef, isMouseLastUsedInputDevice, setIsMouseLastUsedInputDevice, isValueNew, toggleIsListOpen, activeDecendantId, virtualFocus, } = useFilteredOptionsContext();
|
|
14
15
|
const { isMultiSelect, selectedOptions, toggleOption, maxSelected } = useSelectedOptionsContext();
|
|
15
|
-
const isDisabled = (option) => (maxSelected === null || maxSelected === void 0 ? void 0 : maxSelected.isLimitReached) && !
|
|
16
|
+
const isDisabled = (option) => (maxSelected === null || maxSelected === void 0 ? void 0 : maxSelected.isLimitReached) && !isInList(option.value, selectedOptions);
|
|
16
17
|
const shouldRenderNonSelectables = (maxSelected === null || maxSelected === void 0 ? void 0 : maxSelected.isLimitReached) || // Render maxSelected message
|
|
17
18
|
isLoading || // Render loading message
|
|
18
19
|
(!isLoading && filteredOptions.length === 0); // Render no hits message
|
|
@@ -35,8 +36,8 @@ const FilteredOptions = () => {
|
|
|
35
36
|
setIsMouseLastUsedInputDevice(true);
|
|
36
37
|
}
|
|
37
38
|
}, onPointerUp: (event) => {
|
|
38
|
-
toggleOption(value, event);
|
|
39
|
-
if (!isMultiSelect && !
|
|
39
|
+
toggleOption(toComboboxOption(value), event);
|
|
40
|
+
if (!isMultiSelect && !isInList(value, selectedOptions))
|
|
40
41
|
toggleIsListOpen(false);
|
|
41
42
|
}, id: filteredOptionsUtil.getAddNewOptionId(id), className: cl("navds-combobox__list-item navds-combobox__list-item--new-option", {
|
|
42
43
|
"navds-combobox__list-item--new-option--focus": activeDecendantId ===
|
|
@@ -52,12 +53,12 @@ const FilteredOptions = () => {
|
|
|
52
53
|
"\u201D")))),
|
|
53
54
|
filteredOptions.map((option) => (React.createElement("li", { className: cl("navds-combobox__list-item", {
|
|
54
55
|
"navds-combobox__list-item--focus": activeDecendantId ===
|
|
55
|
-
filteredOptionsUtil.getOptionId(id, option),
|
|
56
|
-
"navds-combobox__list-item--selected":
|
|
57
|
-
}), "data-no-focus": isDisabled(option) || undefined, id: filteredOptionsUtil.getOptionId(id, option), key: option, tabIndex: -1, onMouseMove: () => {
|
|
56
|
+
filteredOptionsUtil.getOptionId(id, option.label),
|
|
57
|
+
"navds-combobox__list-item--selected": isInList(option.value, selectedOptions),
|
|
58
|
+
}), "data-no-focus": isDisabled(option) || undefined, id: filteredOptionsUtil.getOptionId(id, option.label), key: option.label, tabIndex: -1, onMouseMove: () => {
|
|
58
59
|
if (activeDecendantId !==
|
|
59
|
-
filteredOptionsUtil.getOptionId(id, option)) {
|
|
60
|
-
virtualFocus.moveFocusToElement(filteredOptionsUtil.getOptionId(id, option));
|
|
60
|
+
filteredOptionsUtil.getOptionId(id, option.label)) {
|
|
61
|
+
virtualFocus.moveFocusToElement(filteredOptionsUtil.getOptionId(id, option.label));
|
|
61
62
|
setIsMouseLastUsedInputDevice(true);
|
|
62
63
|
}
|
|
63
64
|
}, onPointerUp: (event) => {
|
|
@@ -65,12 +66,13 @@ const FilteredOptions = () => {
|
|
|
65
66
|
return;
|
|
66
67
|
}
|
|
67
68
|
toggleOption(option, event);
|
|
68
|
-
if (!isMultiSelect &&
|
|
69
|
+
if (!isMultiSelect &&
|
|
70
|
+
!isInList(option.value, selectedOptions)) {
|
|
69
71
|
toggleIsListOpen(false);
|
|
70
72
|
}
|
|
71
|
-
}, role: "option", "aria-selected":
|
|
72
|
-
React.createElement(BodyShort, { size: size }, option),
|
|
73
|
-
|
|
73
|
+
}, role: "option", "aria-selected": isInList(option.value, selectedOptions), "aria-disabled": isDisabled(option) || undefined },
|
|
74
|
+
React.createElement(BodyShort, { size: size }, option.label),
|
|
75
|
+
isInList(option.value, selectedOptions) && React.createElement(CheckmarkIcon, null))))))));
|
|
74
76
|
};
|
|
75
77
|
export default FilteredOptions;
|
|
76
78
|
//# sourceMappingURL=FilteredOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilteredOptions.js","sourceRoot":"","sources":["../../../../src/form/combobox/FilteredOptions/FilteredOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,mBAAmB,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,eAAe,GAAG,GAAG,EAAE;;IAC3B,MAAM,EACJ,UAAU,EAAE,EAAE,EAAE,EAAE,EAClB,IAAI,EACJ,KAAK,GACN,GAAG,eAAe,EAAE,CAAC;IACtB,MAAM,EACJ,cAAc,EACd,SAAS,EACT,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,6BAA6B,EAC7B,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,GACb,GAAG,yBAAyB,EAAE,CAAC;IAChC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,GACjE,yBAAyB,EAAE,CAAC;IAE9B,MAAM,UAAU,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"FilteredOptions.js","sourceRoot":"","sources":["../../../../src/form/combobox/FilteredOptions/FilteredOptions.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { ComboboxOption } from "../types.js";
|
|
1
2
|
declare const _default: {
|
|
2
3
|
normalizeText: (text: string) => string;
|
|
3
|
-
isPartOfText: (value:
|
|
4
|
-
|
|
5
|
-
getMatchingValuesFromList: (value: any, list: any, alwaysIncluded: any) => any;
|
|
4
|
+
isPartOfText: (value: string, text: string) => boolean;
|
|
5
|
+
getMatchingValuesFromList: (value: string, list: ComboboxOption[]) => ComboboxOption[];
|
|
6
6
|
getFilteredOptionsId: (comboboxId: string) => string;
|
|
7
7
|
getAddNewOptionId: (comboboxId: string) => string;
|
|
8
8
|
getOptionId: (comboboxId: string, option: string) => string;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const normalizeText = (text) => typeof text === "string" ? text.toLocaleLowerCase().trim() : "";
|
|
2
2
|
const isPartOfText = (value, text) => normalizeText(text).startsWith(normalizeText(value !== null && value !== void 0 ? value : ""));
|
|
3
|
-
const
|
|
4
|
-
const getMatchingValuesFromList = (value, list, alwaysIncluded) => list === null || list === void 0 ? void 0 : list.filter((listItem) => isPartOfText(value, listItem) || alwaysIncluded.includes(listItem));
|
|
3
|
+
const getMatchingValuesFromList = (value, list) => list.filter((listItem) => isPartOfText(value, listItem.label));
|
|
5
4
|
const getFilteredOptionsId = (comboboxId) => `${comboboxId}-filtered-options`;
|
|
6
5
|
const getOptionId = (comboboxId, option) => `${comboboxId.toLocaleLowerCase()}-option-${option
|
|
7
6
|
.replace(" ", "-")
|
|
@@ -13,7 +12,6 @@ const getMaxSelectedOptionsId = (comboboxId) => `${comboboxId}-max-selected-opti
|
|
|
13
12
|
export default {
|
|
14
13
|
normalizeText,
|
|
15
14
|
isPartOfText,
|
|
16
|
-
isValueInList,
|
|
17
15
|
getMatchingValuesFromList,
|
|
18
16
|
getFilteredOptionsId,
|
|
19
17
|
getAddNewOptionId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtered-options-util.js","sourceRoot":"","sources":["../../../../src/form/combobox/FilteredOptions/filtered-options-util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filtered-options-util.js","sourceRoot":"","sources":["../../../../src/form/combobox/FilteredOptions/filtered-options-util.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE,CAC7C,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAElE,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE,CACnD,aAAa,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAC,CAAC,CAAC;AAE7D,MAAM,yBAAyB,GAAG,CAAC,KAAa,EAAE,IAAsB,EAAE,EAAE,CAC1E,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAEjE,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAE,EAAE,CAClD,GAAG,UAAU,mBAAmB,CAAC;AAEnC,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAE,MAAc,EAAE,EAAE,CACzD,GAAG,UAAU,CAAC,iBAAiB,EAAE,WAAW,MAAM;KAC/C,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;KACjB,iBAAiB,EAAE,EAAE,CAAC;AAE3B,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAE,EAAE,CAC/C,GAAG,UAAU,sBAAsB,CAAC;AAEtC,MAAM,cAAc,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,GAAG,UAAU,aAAa,CAAC;AAE1E,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,GAAG,UAAU,UAAU,CAAC;AAEpE,MAAM,uBAAuB,GAAG,CAAC,UAAkB,EAAE,EAAE,CACrD,GAAG,UAAU,uBAAuB,CAAC;AAEvC,eAAe;IACb,aAAa;IACb,YAAY;IACZ,yBAAyB;IACzB,oBAAoB;IACpB,iBAAiB;IACjB,WAAW;IACX,cAAc;IACd,WAAW;IACX,uBAAuB;CACxB,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import React, { SetStateAction } from "react";
|
|
2
|
-
import { ComboboxProps } from "../types.js";
|
|
2
|
+
import { ComboboxOption, ComboboxProps } from "../types.js";
|
|
3
3
|
import { VirtualFocusType } from "./useVirtualFocus.js";
|
|
4
4
|
type FilteredOptionsProps = {
|
|
5
|
-
children:
|
|
6
|
-
value: Pick<ComboboxProps, "allowNewValues" | "
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
value: Pick<ComboboxProps, "allowNewValues" | "isListOpen" | "isLoading"> & {
|
|
7
|
+
filteredOptions?: ComboboxOption[];
|
|
8
|
+
options: ComboboxOption[];
|
|
9
|
+
};
|
|
7
10
|
};
|
|
8
11
|
type FilteredOptionsContextType = {
|
|
9
12
|
activeDecendantId?: string;
|
|
@@ -12,12 +15,12 @@ type FilteredOptionsContextType = {
|
|
|
12
15
|
setFilteredOptionsRef: React.Dispatch<React.SetStateAction<HTMLUListElement | null>>;
|
|
13
16
|
isListOpen: boolean;
|
|
14
17
|
isLoading?: boolean;
|
|
15
|
-
filteredOptions:
|
|
18
|
+
filteredOptions: ComboboxOption[];
|
|
16
19
|
isMouseLastUsedInputDevice: boolean;
|
|
17
20
|
setIsMouseLastUsedInputDevice: React.Dispatch<SetStateAction<boolean>>;
|
|
18
21
|
isValueNew: boolean;
|
|
19
22
|
toggleIsListOpen: (newState?: boolean) => void;
|
|
20
|
-
currentOption?:
|
|
23
|
+
currentOption?: ComboboxOption;
|
|
21
24
|
shouldAutocomplete?: boolean;
|
|
22
25
|
virtualFocus: VirtualFocusType;
|
|
23
26
|
};
|
|
@@ -3,6 +3,7 @@ import React, { createContext, useCallback, useContext, useMemo, useState, } fro
|
|
|
3
3
|
import { useClientLayoutEffect, usePrevious } from "../../../util/hooks/index.js";
|
|
4
4
|
import { useInputContext } from "../Input/inputContext.js";
|
|
5
5
|
import { useSelectedOptionsContext } from "../SelectedOptions/selectedOptionsContext.js";
|
|
6
|
+
import { toComboboxOption } from "../combobox-utils.js";
|
|
6
7
|
import { useCustomOptionsContext } from "../customOptionsContext.js";
|
|
7
8
|
import filteredOptionsUtils from "./filtered-options-util.js";
|
|
8
9
|
import useVirtualFocus from "./useVirtualFocus.js";
|
|
@@ -12,7 +13,7 @@ export const FilteredOptionsProvider = ({ children, value: props, }) => {
|
|
|
12
13
|
const [filteredOptionsRef, setFilteredOptionsRef] = useState(null);
|
|
13
14
|
const virtualFocus = useVirtualFocus(filteredOptionsRef);
|
|
14
15
|
const { inputProps: { "aria-describedby": partialAriaDescribedBy, id }, value, searchTerm, setValue, setSearchTerm, shouldAutocomplete, } = useInputContext();
|
|
15
|
-
const {
|
|
16
|
+
const { maxSelected } = useSelectedOptionsContext();
|
|
16
17
|
const [isInternalListOpen, setInternalListOpen] = useState(false);
|
|
17
18
|
const { customOptions } = useCustomOptionsContext();
|
|
18
19
|
const filteredOptions = useMemo(() => {
|
|
@@ -20,19 +21,13 @@ export const FilteredOptionsProvider = ({ children, value: props, }) => {
|
|
|
20
21
|
return externalFilteredOptions;
|
|
21
22
|
}
|
|
22
23
|
const opts = [...customOptions, ...options];
|
|
23
|
-
return filteredOptionsUtils.getMatchingValuesFromList(searchTerm, opts
|
|
24
|
-
}, [
|
|
25
|
-
customOptions,
|
|
26
|
-
externalFilteredOptions,
|
|
27
|
-
options,
|
|
28
|
-
searchTerm,
|
|
29
|
-
selectedOptions,
|
|
30
|
-
]);
|
|
24
|
+
return filteredOptionsUtils.getMatchingValuesFromList(searchTerm, opts);
|
|
25
|
+
}, [customOptions, externalFilteredOptions, options, searchTerm]);
|
|
31
26
|
const previousSearchTerm = usePrevious(searchTerm);
|
|
32
27
|
const [isMouseLastUsedInputDevice, setIsMouseLastUsedInputDevice] = useState(false);
|
|
33
|
-
const filteredOptionsMap = useMemo(() => options.reduce((map, _option) => (Object.assign(Object.assign({}, map), { [filteredOptionsUtils.getOptionId(id, _option)]: _option })), {
|
|
28
|
+
const filteredOptionsMap = useMemo(() => options.reduce((map, _option) => (Object.assign(Object.assign({}, map), { [filteredOptionsUtils.getOptionId(id, _option.label)]: _option })), {
|
|
34
29
|
[filteredOptionsUtils.getAddNewOptionId(id)]: allowNewValues
|
|
35
|
-
? value
|
|
30
|
+
? toComboboxOption(value)
|
|
36
31
|
: undefined,
|
|
37
32
|
}), [allowNewValues, id, options, value]);
|
|
38
33
|
useClientLayoutEffect(() => {
|
|
@@ -40,7 +35,7 @@ export const FilteredOptionsProvider = ({ children, value: props, }) => {
|
|
|
40
35
|
filteredOptionsUtils.normalizeText(searchTerm) !== "" &&
|
|
41
36
|
((previousSearchTerm === null || previousSearchTerm === void 0 ? void 0 : previousSearchTerm.length) || 0) < searchTerm.length &&
|
|
42
37
|
filteredOptions.length > 0) {
|
|
43
|
-
setValue(`${searchTerm}${filteredOptions[0].substring(searchTerm.length)}`);
|
|
38
|
+
setValue(`${searchTerm}${filteredOptions[0].label.substring(searchTerm.length)}`);
|
|
44
39
|
setSearchTerm(searchTerm);
|
|
45
40
|
}
|
|
46
41
|
}, [
|
|
@@ -67,7 +62,7 @@ export const FilteredOptionsProvider = ({ children, value: props, }) => {
|
|
|
67
62
|
}
|
|
68
63
|
else if ((value && value !== "") || isLoading) {
|
|
69
64
|
if (shouldAutocomplete && filteredOptions[0]) {
|
|
70
|
-
activeOption = filteredOptionsUtils.getOptionId(id, filteredOptions[0]);
|
|
65
|
+
activeOption = filteredOptionsUtils.getOptionId(id, filteredOptions[0].label);
|
|
71
66
|
}
|
|
72
67
|
else if (isListOpen && isLoading) {
|
|
73
68
|
activeOption = filteredOptionsUtils.getIsLoadingId(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filteredOptionsContext.js","sourceRoot":"","sources":["../../../../src/form/combobox/FilteredOptions/filteredOptionsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAEZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,OAAO,EACP,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,eAAqC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"filteredOptionsContext.js","sourceRoot":"","sources":["../../../../src/form/combobox/FilteredOptions/filteredOptionsContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -22,14 +22,12 @@ const Input = forwardRef((_a, ref) => {
|
|
|
22
22
|
const { selectedOptions, removeSelectedOption, toggleOption, isMultiSelect, } = useSelectedOptionsContext();
|
|
23
23
|
const { activeDecendantId, allowNewValues, currentOption, filteredOptions, isValueNew, toggleIsListOpen, isListOpen, ariaDescribedBy, setIsMouseLastUsedInputDevice, shouldAutocomplete, virtualFocus, } = useFilteredOptionsContext();
|
|
24
24
|
const onEnter = useCallback((event) => {
|
|
25
|
-
const isTextInSelectedOptions = (text) =>
|
|
26
|
-
return selectedOptions.find((item) => item.toLocaleLowerCase() === text.toLocaleLowerCase());
|
|
27
|
-
};
|
|
25
|
+
const isTextInSelectedOptions = (text) => selectedOptions.some((option) => option.label.toLocaleLowerCase() === text.toLocaleLowerCase());
|
|
28
26
|
if (currentOption) {
|
|
29
27
|
event.preventDefault();
|
|
30
28
|
// Selecting a value from the dropdown / FilteredOptions
|
|
31
29
|
toggleOption(currentOption, event);
|
|
32
|
-
if (!isMultiSelect && !isTextInSelectedOptions(currentOption)) {
|
|
30
|
+
if (!isMultiSelect && !isTextInSelectedOptions(currentOption.label)) {
|
|
33
31
|
toggleIsListOpen(false);
|
|
34
32
|
}
|
|
35
33
|
}
|
|
@@ -41,10 +39,12 @@ const Input = forwardRef((_a, ref) => {
|
|
|
41
39
|
else if ((allowNewValues || shouldAutocomplete) && value !== "") {
|
|
42
40
|
event.preventDefault();
|
|
43
41
|
// Autocompleting or adding a new value
|
|
44
|
-
const selectedValue = allowNewValues && isValueNew
|
|
42
|
+
const selectedValue = allowNewValues && isValueNew
|
|
43
|
+
? { label: value, value }
|
|
44
|
+
: filteredOptions[0];
|
|
45
45
|
toggleOption(selectedValue, event);
|
|
46
46
|
if (!isMultiSelect &&
|
|
47
|
-
!isTextInSelectedOptions(filteredOptions[0] || selectedValue)) {
|
|
47
|
+
!isTextInSelectedOptions(filteredOptions[0].label || selectedValue.label)) {
|
|
48
48
|
toggleIsListOpen(false);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -89,7 +89,9 @@ const Input = forwardRef((_a, ref) => {
|
|
|
89
89
|
if (e.key === "Backspace") {
|
|
90
90
|
if (value === "") {
|
|
91
91
|
const lastSelectedOption = selectedOptions[selectedOptions.length - 1];
|
|
92
|
-
|
|
92
|
+
if (lastSelectedOption) {
|
|
93
|
+
removeSelectedOption(lastSelectedOption);
|
|
94
|
+
}
|
|
93
95
|
}
|
|
94
96
|
}
|
|
95
97
|
else if (e.key === "ArrowDown") {
|