@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../../src/form/combobox/Input/Input.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAGZ,UAAU,EACV,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,mBAAmB,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AASjD,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,EAA2B,EAAE,GAAG,EAAE,EAAE;QAApC,EAAE,cAAc,OAAW,EAAN,IAAI,cAAzB,kBAA2B,CAAF;IACxB,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAAC;IAC5E,MAAM,EACJ,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,aAAa,GACd,GAAG,yBAAyB,EAAE,CAAC;IAChC,MAAM,EACJ,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,6BAA6B,EAC7B,kBAAkB,EAClB,YAAY,GACb,GAAG,yBAAyB,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,KAA0B,EAAE,EAAE;QAC7B,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../../src/form/combobox/Input/Input.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAGZ,UAAU,EACV,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,mBAAmB,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AASjD,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,EAA2B,EAAE,GAAG,EAAE,EAAE;QAApC,EAAE,cAAc,OAAW,EAAN,IAAI,cAAzB,kBAA2B,CAAF;IACxB,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAAC;IAC5E,MAAM,EACJ,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,aAAa,GACd,GAAG,yBAAyB,EAAE,CAAC;IAChC,MAAM,EACJ,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,6BAA6B,EAC7B,kBAAkB,EAClB,YAAY,GACb,GAAG,yBAAyB,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,KAA0B,EAAE,EAAE;QAC7B,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,EAAE,CAC/C,eAAe,CAAC,IAAI,CAClB,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAChE,CAAC;QAEJ,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,wDAAwD;YACxD,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,aAAa,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;aAAM,IAAI,kBAAkB,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,+EAA+E;YAC/E,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,CAAC,cAAc,IAAI,kBAAkB,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAClE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,uCAAuC;YACvC,MAAM,aAAa,GACjB,cAAc,IAAI,UAAU;gBAC1B,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;gBACzB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzB,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACnC,IACE,CAAC,aAAa;gBACd,CAAC,uBAAuB,CACtB,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAChD,EACD,CAAC;gBACD,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC,EACD;QACE,cAAc;QACd,UAAU;QACV,aAAa;QACb,eAAe;QACf,aAAa;QACb,UAAU;QACV,eAAe;QACf,kBAAkB;QAClB,gBAAgB;QAChB,YAAY;QACZ,KAAK;KACN,CACF,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,CAAwC,EAAE,EAAE;QAC/D,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,QAAQ;gBACX,UAAU,CAAC,CAAC,CAAC,CAAC;gBACd,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,CAAC,CAAC,CAAC,CAAC;gBACX,MAAM;YACR,KAAK,MAAM;gBACT,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACxB,YAAY,CAAC,cAAc,EAAE,CAAC;gBAC9B,MAAM;YACR,KAAK,KAAK;gBACR,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACvB,YAAY,CAAC,iBAAiB,EAAE,CAAC;gBACjC,MAAM;YACR;gBACE,MAAM;QACV,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,CAAC,EAAE,EAAE;QACJ,6BAA6B,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC1B,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACjB,MAAM,kBAAkB,GACtB,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC9C,IAAI,kBAAkB,EAAE,CAAC;oBACvB,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YACjC,+DAA+D;YAC/D,0CAA0C;YAC1C,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,MAAK,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA,EAAE,CAAC;gBAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,YAAY,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACvD,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;gBACD,YAAY,CAAC,aAAa,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC/B,qEAAqE;YACrE,yEAAyE;YACzE,IAAI,UAAU,IAAI,iBAAiB,EAAE,CAAC;gBACpC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC;oBACnC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;gBACD,YAAY,CAAC,WAAW,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC,EACD;QACE,KAAK;QACL,eAAe;QACf,oBAAoB;QACpB,UAAU;QACV,iBAAiB;QACjB,6BAA6B;QAC7B,gBAAgB;QAChB,YAAY;KACb,CACF,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,KAAoC,EAAE,EAAE;QACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACpC,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YAChC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,YAAY,CAAC,cAAc,EAAE,CAAC;QAC9B,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,EACD,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CACnE,CAAC;IAEF,OAAO,CACL,+CACM,IAAI,EACJ,IAAI,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,CAAC,IACtC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,mBACT,mBAAmB,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,mBACvD,CAAC,CAAC,UAAU,EAC3B,YAAY,EAAC,KAAK,uBACC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,2BAChC,iBAAiB,sBACtB,eAAe,kBACnB,UAAU,CAAC,cAAc,CAAC,EACxC,SAAS,EAAE,EAAE,CACX,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,IAAI,EAAE,CAC5B,IACD,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -11,14 +11,14 @@ const Option = ({ option }) => {
|
|
|
11
11
|
focusInput();
|
|
12
12
|
};
|
|
13
13
|
if (!isMultiSelect) {
|
|
14
|
-
return (React.createElement("div", { className: "navds-combobox__selected-options--no-bg" }, option));
|
|
14
|
+
return (React.createElement("div", { className: "navds-combobox__selected-options--no-bg" }, option.label));
|
|
15
15
|
}
|
|
16
|
-
return React.createElement(Chips.Removable, { onClick: onClick }, option);
|
|
16
|
+
return React.createElement(Chips.Removable, { onClick: onClick }, option.label);
|
|
17
17
|
};
|
|
18
18
|
const SelectedOptions = ({ selectedOptions = [], size, children, }) => {
|
|
19
19
|
return (React.createElement(Chips, { className: "navds-combobox__selected-options", size: size },
|
|
20
20
|
selectedOptions.length
|
|
21
|
-
? selectedOptions.map((option, i) => (React.createElement(Option, { key: option + i, option: option })))
|
|
21
|
+
? selectedOptions.map((option, i) => (React.createElement(Option, { key: option.label + i, option: option })))
|
|
22
22
|
: [],
|
|
23
23
|
children));
|
|
24
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedOptions.js","sourceRoot":"","sources":["../../../../src/form/combobox/SelectedOptions/SelectedOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"SelectedOptions.js","sourceRoot":"","sources":["../../../../src/form/combobox/SelectedOptions/SelectedOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAQrE,MAAM,MAAM,GAAG,CAAC,EAAE,MAAM,EAA8B,EAAE,EAAE;IACxD,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,GAAG,yBAAyB,EAAE,CAAC;IAC5E,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IAEzC,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE;QACpB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7B,UAAU,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CACL,6BAAK,SAAS,EAAC,yCAAyC,IACrD,MAAM,CAAC,KAAK,CACT,CACP,CAAC;IACJ,CAAC;IAED,OAAO,oBAAC,KAAK,CAAC,SAAS,IAAC,OAAO,EAAE,OAAO,IAAG,MAAM,CAAC,KAAK,CAAmB,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,eAAe,GAAmC,CAAC,EACvD,eAAe,GAAG,EAAE,EACpB,IAAI,EACJ,QAAQ,GACT,EAAE,EAAE;IACH,OAAO,CACL,oBAAC,KAAK,IAAC,SAAS,EAAC,kCAAkC,EAAC,IAAI,EAAE,IAAI;QAC3D,eAAe,CAAC,MAAM;YACrB,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CACjC,oBAAC,MAAM,IAAC,GAAG,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,GAAI,CAClD,CAAC;YACJ,CAAC,CAAC,EAAE;QACL,QAAQ,CACH,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { ComboboxProps, MaxSelected } from "../types.js";
|
|
2
|
+
import { ComboboxOption, ComboboxProps, MaxSelected } from "../types.js";
|
|
3
3
|
type SelectedOptionsContextType = {
|
|
4
|
-
addSelectedOption: (option:
|
|
4
|
+
addSelectedOption: (option: ComboboxOption) => void;
|
|
5
5
|
isMultiSelect?: boolean;
|
|
6
|
-
removeSelectedOption: (option:
|
|
7
|
-
prevSelectedOptions?:
|
|
8
|
-
selectedOptions:
|
|
6
|
+
removeSelectedOption: (option: ComboboxOption) => void;
|
|
7
|
+
prevSelectedOptions?: ComboboxOption[];
|
|
8
|
+
selectedOptions: ComboboxOption[];
|
|
9
9
|
maxSelected?: MaxSelected & {
|
|
10
10
|
isLimitReached: boolean;
|
|
11
11
|
};
|
|
12
12
|
setSelectedOptions: (any: any) => void;
|
|
13
|
-
toggleOption: (option:
|
|
13
|
+
toggleOption: (option: ComboboxOption, event: React.KeyboardEvent | React.PointerEvent) => void;
|
|
14
14
|
};
|
|
15
15
|
export declare const SelectedOptionsProvider: ({ children, value, }: {
|
|
16
16
|
children: any;
|
|
17
|
-
value: Pick<ComboboxProps, "allowNewValues" | "isMultiSelect" | "
|
|
17
|
+
value: Pick<ComboboxProps, "allowNewValues" | "isMultiSelect" | "onToggleSelected" | "maxSelected"> & {
|
|
18
|
+
options: ComboboxOption[];
|
|
19
|
+
selectedOptions?: ComboboxOption[];
|
|
20
|
+
};
|
|
18
21
|
}) => React.JSX.Element;
|
|
19
22
|
export declare const useSelectedOptionsContext: () => SelectedOptionsContextType;
|
|
20
23
|
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { createContext, useCallback, useContext, useMemo, useState, } from "react";
|
|
2
2
|
import { usePrevious } from "../../../util/hooks/index.js";
|
|
3
3
|
import { useInputContext } from "../Input/inputContext.js";
|
|
4
|
+
import { isInList } from "../combobox-utils.js";
|
|
4
5
|
import { useCustomOptionsContext } from "../customOptionsContext.js";
|
|
5
6
|
const SelectedOptionsContext = createContext({});
|
|
6
7
|
export const SelectedOptionsProvider = ({ children, value, }) => {
|
|
@@ -10,10 +11,7 @@ export const SelectedOptionsProvider = ({ children, value, }) => {
|
|
|
10
11
|
const [internalSelectedOptions, setSelectedOptions] = useState([]);
|
|
11
12
|
const selectedOptions = useMemo(() => externalSelectedOptions !== null && externalSelectedOptions !== void 0 ? externalSelectedOptions : [...customOptions, ...internalSelectedOptions], [customOptions, externalSelectedOptions, internalSelectedOptions]);
|
|
12
13
|
const addSelectedOption = useCallback((option) => {
|
|
13
|
-
|
|
14
|
-
const isCustomOption = !options
|
|
15
|
-
.map((opt) => opt.toLowerCase())
|
|
16
|
-
.includes((_a = option === null || option === void 0 ? void 0 : option.toLowerCase) === null || _a === void 0 ? void 0 : _a.call(option));
|
|
14
|
+
const isCustomOption = !isInList(option, options);
|
|
17
15
|
if (isCustomOption) {
|
|
18
16
|
allowNewValues && addCustomOption(option);
|
|
19
17
|
!isMultiSelect && setSelectedOptions([]);
|
|
@@ -28,7 +26,7 @@ export const SelectedOptionsProvider = ({ children, value, }) => {
|
|
|
28
26
|
setSelectedOptions([option]);
|
|
29
27
|
setCustomOptions([]);
|
|
30
28
|
}
|
|
31
|
-
onToggleSelected === null || onToggleSelected === void 0 ? void 0 : onToggleSelected(option, true, isCustomOption);
|
|
29
|
+
onToggleSelected === null || onToggleSelected === void 0 ? void 0 : onToggleSelected(option.value, true, isCustomOption);
|
|
32
30
|
}, [
|
|
33
31
|
addCustomOption,
|
|
34
32
|
allowNewValues,
|
|
@@ -38,17 +36,17 @@ export const SelectedOptionsProvider = ({ children, value, }) => {
|
|
|
38
36
|
setCustomOptions,
|
|
39
37
|
]);
|
|
40
38
|
const removeSelectedOption = useCallback((option) => {
|
|
41
|
-
const isCustomOption =
|
|
39
|
+
const isCustomOption = isInList(option, customOptions);
|
|
42
40
|
if (isCustomOption) {
|
|
43
41
|
removeCustomOption(option);
|
|
44
42
|
}
|
|
45
43
|
else {
|
|
46
44
|
setSelectedOptions((oldSelectedOptions) => oldSelectedOptions.filter((selectedOption) => selectedOption !== option));
|
|
47
45
|
}
|
|
48
|
-
onToggleSelected === null || onToggleSelected === void 0 ? void 0 : onToggleSelected(option, false, isCustomOption);
|
|
46
|
+
onToggleSelected === null || onToggleSelected === void 0 ? void 0 : onToggleSelected(option.value, false, isCustomOption);
|
|
49
47
|
}, [customOptions, onToggleSelected, removeCustomOption]);
|
|
50
48
|
const toggleOption = useCallback((option, event) => {
|
|
51
|
-
if (
|
|
49
|
+
if (isInList(option.value, selectedOptions)) {
|
|
52
50
|
removeSelectedOption(option);
|
|
53
51
|
}
|
|
54
52
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectedOptionsContext.js","sourceRoot":"","sources":["../../../../src/form/combobox/SelectedOptions/selectedOptionsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,OAAO,EACP,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAiBlE,MAAM,sBAAsB,GAAG,aAAa,CAC1C,EAAgC,CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACtC,QAAQ,EACR,KAAK,
|
|
1
|
+
{"version":3,"file":"selectedOptionsContext.js","sourceRoot":"","sources":["../../../../src/form/combobox/SelectedOptions/selectedOptionsContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComboboxOption } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @param option ComboboxOption will be compared by both label and value, while a string option is checked if it matches either the label or value in the list.
|
|
5
|
+
* @param list
|
|
6
|
+
*/
|
|
7
|
+
declare const isInList: (option: ComboboxOption | string, list: ComboboxOption[]) => boolean;
|
|
8
|
+
declare const toComboboxOption: (value: string) => ComboboxOption;
|
|
9
|
+
declare const mapToComboboxOptionArray: (options?: string[] | ComboboxOption[]) => ComboboxOption[] | undefined;
|
|
10
|
+
export { isInList, mapToComboboxOptionArray, toComboboxOption };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param option ComboboxOption will be compared by both label and value, while a string option is checked if it matches either the label or value in the list.
|
|
4
|
+
* @param list
|
|
5
|
+
*/
|
|
6
|
+
const isInList = (option, list) => {
|
|
7
|
+
if (typeof option === "string") {
|
|
8
|
+
return list.some((listItem) => listItem.label === option || listItem.value === option);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
return list.some((listItem) => listItem.label === option.label && listItem.value === option.value);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const toComboboxOption = (value) => ({
|
|
15
|
+
label: value,
|
|
16
|
+
value,
|
|
17
|
+
});
|
|
18
|
+
const mapToComboboxOptionArray = (options) => {
|
|
19
|
+
return options === null || options === void 0 ? void 0 : options.map((option) => typeof option === "string" ? toComboboxOption(option) : option);
|
|
20
|
+
};
|
|
21
|
+
export { isInList, mapToComboboxOptionArray, toComboboxOption };
|
|
22
|
+
//# sourceMappingURL=combobox-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox-utils.js","sourceRoot":"","sources":["../../../src/form/combobox/combobox-utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,QAAQ,GAAG,CAAC,MAA+B,EAAE,IAAsB,EAAE,EAAE;IAC3E,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,IAAI,CACd,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,MAAM,CACrE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,IAAI,CACd,CAAC,QAAQ,EAAE,EAAE,CACX,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CACrE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAkB,EAAE,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK;IACZ,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC,OAAqC,EAAE,EAAE;IACzE,OAAO,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAC,CAAC,MAA+B,EAAE,EAAE,CACtD,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAC/D,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { ComboboxOption } from "./types.js";
|
|
2
3
|
type CustomOptionsContextType = {
|
|
3
|
-
customOptions:
|
|
4
|
-
removeCustomOption: (option:
|
|
5
|
-
addCustomOption: (option:
|
|
6
|
-
setCustomOptions: React.Dispatch<React.SetStateAction<
|
|
4
|
+
customOptions: ComboboxOption[];
|
|
5
|
+
removeCustomOption: (option: ComboboxOption) => void;
|
|
6
|
+
addCustomOption: (option: ComboboxOption) => void;
|
|
7
|
+
setCustomOptions: React.Dispatch<React.SetStateAction<ComboboxOption[]>>;
|
|
7
8
|
};
|
|
8
9
|
export declare const CustomOptionsProvider: ({ children, value, }: {
|
|
9
10
|
children: any;
|
|
@@ -6,7 +6,7 @@ export const CustomOptionsProvider = ({ children, value, }) => {
|
|
|
6
6
|
const { focusInput } = useInputContext();
|
|
7
7
|
const { isMultiSelect } = value;
|
|
8
8
|
const removeCustomOption = useCallback((option) => {
|
|
9
|
-
setCustomOptions((prevCustomOptions) => prevCustomOptions.filter((o) => o !== option));
|
|
9
|
+
setCustomOptions((prevCustomOptions) => prevCustomOptions.filter((o) => o.label !== option.label));
|
|
10
10
|
focusInput();
|
|
11
11
|
}, [focusInput, setCustomOptions]);
|
|
12
12
|
const addCustomOption = useCallback((option) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customOptionsContext.js","sourceRoot":"","sources":["../../../src/form/combobox/customOptionsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"customOptionsContext.js","sourceRoot":"","sources":["../../../src/form/combobox/customOptionsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAUvD,MAAM,oBAAoB,GAAG,aAAa,CACxC,EAA8B,CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,QAAQ,EACR,KAAK,GAIN,EAAE,EAAE;IACH,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAC;IACzE,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IACzC,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAEhC,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,MAAsB,EAAE,EAAE;QACzB,gBAAgB,CAAC,CAAC,iBAAiB,EAAE,EAAE,CACrC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAC1D,CAAC;QACF,UAAU,EAAE,CAAC;IACf,CAAC,EACD,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAC/B,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,MAAsB,EAAE,EAAE;QACzB,IAAI,aAAa,EAAE,CAAC;YAClB,gBAAgB,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,UAAU,EAAE,CAAC;IACf,CAAC,EACD,CAAC,UAAU,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAC9C,CAAC;IAEF,MAAM,kBAAkB,GAAG;QACzB,aAAa;QACb,kBAAkB;QAClB,eAAe;QACf,gBAAgB;KACjB,CAAC;IAEF,OAAO,CACL,oBAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,kBAAkB,IACrD,QAAQ,CACqB,CACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,EAAE;IAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import React, { ChangeEvent, InputHTMLAttributes } from "react";
|
|
2
2
|
import { FormFieldProps } from "../useFormField.js";
|
|
3
|
+
/**
|
|
4
|
+
* A more complex version of options for the Combobox.
|
|
5
|
+
* Used for separating the label and the value of the option.
|
|
6
|
+
*/
|
|
7
|
+
export type ComboboxOption = {
|
|
8
|
+
/**
|
|
9
|
+
* The label to display in the dropdown list
|
|
10
|
+
*/
|
|
11
|
+
label: string;
|
|
12
|
+
/**
|
|
13
|
+
* The programmatic value of the option, for use internally. Will be returned from onToggleSelected.
|
|
14
|
+
*/
|
|
15
|
+
value: string;
|
|
16
|
+
};
|
|
3
17
|
export type MaxSelected = {
|
|
4
18
|
/**
|
|
5
19
|
* The limit for maximum selected options
|
|
@@ -16,9 +30,9 @@ export interface ComboboxProps extends FormFieldProps, Omit<InputHTMLAttributes<
|
|
|
16
30
|
*/
|
|
17
31
|
label: React.ReactNode;
|
|
18
32
|
/**
|
|
19
|
-
* List of options
|
|
33
|
+
* List of options
|
|
20
34
|
*/
|
|
21
|
-
options: string[];
|
|
35
|
+
options: string[] | ComboboxOption[];
|
|
22
36
|
/**
|
|
23
37
|
* If enabled, adds an option to add the value of the input as an option whenever there are no options matching the value.
|
|
24
38
|
*/
|
|
@@ -38,7 +52,7 @@ export interface ComboboxProps extends FormFieldProps, Omit<InputHTMLAttributes<
|
|
|
38
52
|
* If provided, this overrides the internal search logic in the component.
|
|
39
53
|
* Useful for e.g. searching on a server or when overriding the search algorithm to search for synonyms or similar.
|
|
40
54
|
*/
|
|
41
|
-
filteredOptions?: string[];
|
|
55
|
+
filteredOptions?: string[] | ComboboxOption[];
|
|
42
56
|
/**
|
|
43
57
|
* Optionally hide the label visually.
|
|
44
58
|
* Not recommended, but can be considered for e.g. search fields in the top menu.
|
|
@@ -71,32 +85,29 @@ export interface ComboboxProps extends FormFieldProps, Omit<InputHTMLAttributes<
|
|
|
71
85
|
* Callback function triggered whenever the value of the input field is triggered.
|
|
72
86
|
*
|
|
73
87
|
* @param event
|
|
74
|
-
* @returns
|
|
75
88
|
*/
|
|
76
89
|
onChange?: (event: ChangeEvent<HTMLInputElement> | null, value?: string) => void;
|
|
77
90
|
/**
|
|
78
91
|
* Callback function triggered whenever the input field is cleared.
|
|
79
92
|
*
|
|
80
93
|
* @param event
|
|
81
|
-
* @returns
|
|
82
94
|
*/
|
|
83
95
|
onClear?: (event: React.PointerEvent | React.KeyboardEvent) => void;
|
|
84
96
|
/**
|
|
85
97
|
* Callback function triggered whenever an option is selected or de-selected.
|
|
86
98
|
*
|
|
87
|
-
* @param option The
|
|
88
|
-
* @param isSelected Whether the option has been selected or unselected
|
|
89
|
-
* @param isCustomOption Whether the option comes from user input, instead of from the list
|
|
90
|
-
* @returns
|
|
99
|
+
* @param option The option value
|
|
100
|
+
* @param isSelected Whether the option has been selected or unselected
|
|
101
|
+
* @param isCustomOption Whether the option comes from user input, instead of from the list
|
|
91
102
|
*/
|
|
92
|
-
onToggleSelected?: (option:
|
|
103
|
+
onToggleSelected?: (option: ComboboxOption["value"], isSelected: boolean, isCustomOption: boolean) => void;
|
|
93
104
|
/**
|
|
94
105
|
* List of selected options.
|
|
95
106
|
*
|
|
96
107
|
* Use this prop when controlling the selected state outside for the component,
|
|
97
108
|
* e.g. for a filter, where options can be toggled elsewhere/programmatically.
|
|
98
109
|
*/
|
|
99
|
-
selectedOptions?: string[];
|
|
110
|
+
selectedOptions?: string[] | ComboboxOption[];
|
|
100
111
|
/**
|
|
101
112
|
* Options for the maximum number of selected options.
|
|
102
113
|
*/
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ComponentTranslation } from "./i18n/i18n.types.js";
|
|
3
|
+
export type FileUploadLocaleContextProps = {
|
|
4
|
+
translations?: ComponentTranslation<"FileUpload">;
|
|
5
|
+
};
|
|
6
|
+
export declare const FileUploadLocaleContextProvider: import("react").ForwardRefExoticComponent<FileUploadLocaleContextProps & {
|
|
7
|
+
children: import("react").ReactNode;
|
|
8
|
+
} & import("react").RefAttributes<unknown>>, useFileUploadTranslation: <S extends boolean = true>(strict?: S) => S extends true ? FileUploadLocaleContextProps : FileUploadLocaleContextProps | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUpload.context.js","sourceRoot":"","sources":["../../../src/form/file-upload/FileUpload.context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAO1D,MAAM,CAAC,MAAM,CAAC,+BAA+B,EAAE,wBAAwB,CAAC,GACtE,aAAa,EAAgC,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import React, { HTMLAttributes } from "react";
|
|
2
|
+
import { ComponentTranslation } from "./i18n/i18n.types.js";
|
|
3
|
+
import Trigger from "./parts/Trigger.js";
|
|
4
|
+
import Dropzone from "./parts/dropzone/Dropzone.js";
|
|
5
|
+
import Item from "./parts/item/Item.js";
|
|
6
|
+
interface FileUploadProps extends HTMLAttributes<HTMLDivElement> {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* i18n-API for customizing texts and labels
|
|
10
|
+
*/
|
|
11
|
+
translations?: ComponentTranslation<"FileUpload">;
|
|
12
|
+
}
|
|
13
|
+
interface FileUploadComponent extends React.ForwardRefExoticComponent<FileUploadProps & React.RefAttributes<HTMLDivElement>> {
|
|
14
|
+
/**
|
|
15
|
+
* Framed area to drag-n-drop files, upload files with button-click or copy-paste.
|
|
16
|
+
* @example
|
|
17
|
+
* Single file
|
|
18
|
+
* ```jsx
|
|
19
|
+
* <FileUpload.Dropzone
|
|
20
|
+
* label="Last opp fil"
|
|
21
|
+
* multiple={false}
|
|
22
|
+
* onSelect={onSelect}
|
|
23
|
+
* />
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* Multiple files
|
|
28
|
+
* ```jsx
|
|
29
|
+
* <FileUpload.Dropzone
|
|
30
|
+
* label="Last opp fil"
|
|
31
|
+
* multiple={true}
|
|
32
|
+
* onSelect={onSelect}
|
|
33
|
+
* />
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* Error
|
|
38
|
+
* ```jsx
|
|
39
|
+
* <FileUpload.Dropzone
|
|
40
|
+
* label="Last opp filer"
|
|
41
|
+
* onSelect={onSelect}
|
|
42
|
+
* error={error}
|
|
43
|
+
* />
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
Dropzone: typeof Dropzone;
|
|
47
|
+
/**
|
|
48
|
+
* Displays a file with status, file size, action and error message.
|
|
49
|
+
* @example
|
|
50
|
+
* Single
|
|
51
|
+
* ```jsx
|
|
52
|
+
* <FileUpload.Item file={file} status="uploading" />
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* Multiple items can be semantically grouped as a list.
|
|
57
|
+
* ```jsx
|
|
58
|
+
* <FileUpload>
|
|
59
|
+
* <VStack gap="4" as="ul">
|
|
60
|
+
* <FileUpload.Item as="li" file={file} />
|
|
61
|
+
* <FileUpload.Item as="li" file={file2} />
|
|
62
|
+
* <FileUpload.Item as="li" file={file3} status="uploading" />
|
|
63
|
+
* </VStack>
|
|
64
|
+
* </FileUpload>
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* Custom file object
|
|
69
|
+
* ```jsx
|
|
70
|
+
* <FileUpload.Item file={{ name: "fileName.pdf", size: 1_048_576 }} />
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* Error
|
|
75
|
+
* ```jsx
|
|
76
|
+
* <FileUpload.Item file={file} error="Something went wrong" />
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* Status & actions
|
|
81
|
+
* ```jsx
|
|
82
|
+
* <FileUpload.Item file={file} status="uploading" />
|
|
83
|
+
* <FileUpload.Item file={file} status="downloading" />
|
|
84
|
+
* <FileUpload.Item file={file} itemAction="retry" onRetry={...} />
|
|
85
|
+
* <FileUpload.Item file={file} itemAction="delete" onDelete={...} />
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
Item: typeof Item;
|
|
89
|
+
/**
|
|
90
|
+
* Wrapper for a button to trigger file select.
|
|
91
|
+
* @example
|
|
92
|
+
* ```jsx
|
|
93
|
+
* <FileUpload.Trigger onSelect={...}>
|
|
94
|
+
* <Button variant="secondary">Last opp filer</Button>
|
|
95
|
+
* </FileUpload.Trigger>
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
Trigger: typeof Trigger;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* A set of components used to upload and display files.
|
|
102
|
+
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/fileupload)
|
|
103
|
+
* @example Dropzone
|
|
104
|
+
* ```jsx
|
|
105
|
+
* <FileUpload.Dropzone />
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* Items
|
|
110
|
+
* ```jsx
|
|
111
|
+
* <VStack gap="4" as="ul">
|
|
112
|
+
* <FileUpload.Item as="li" file={myFile} />
|
|
113
|
+
* <FileUpload.Item as="li" file={mySecondFile} />
|
|
114
|
+
* </VStack>
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
export declare const FileUpload: FileUploadComponent;
|
|
118
|
+
export default FileUpload;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import cl from "clsx";
|
|
13
|
+
import React, { forwardRef } from "react";
|
|
14
|
+
import { FileUploadLocaleContextProvider } from "./FileUpload.context.js";
|
|
15
|
+
import Trigger from "./parts/Trigger.js";
|
|
16
|
+
import Dropzone from "./parts/dropzone/Dropzone.js";
|
|
17
|
+
import Item from "./parts/item/Item.js";
|
|
18
|
+
/**
|
|
19
|
+
* A set of components used to upload and display files.
|
|
20
|
+
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/fileupload)
|
|
21
|
+
* @example Dropzone
|
|
22
|
+
* ```jsx
|
|
23
|
+
* <FileUpload.Dropzone />
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* Items
|
|
28
|
+
* ```jsx
|
|
29
|
+
* <VStack gap="4" as="ul">
|
|
30
|
+
* <FileUpload.Item as="li" file={myFile} />
|
|
31
|
+
* <FileUpload.Item as="li" file={mySecondFile} />
|
|
32
|
+
* </VStack>
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export const FileUpload = forwardRef((_a, ref) => {
|
|
36
|
+
var { children, className, translations } = _a, rest = __rest(_a, ["children", "className", "translations"]);
|
|
37
|
+
return (React.createElement(FileUploadLocaleContextProvider, { translations: translations },
|
|
38
|
+
React.createElement("div", Object.assign({ ref: ref }, rest, { className: cl("navds-file-upload", className) }), children)));
|
|
39
|
+
});
|
|
40
|
+
FileUpload.Dropzone = Dropzone;
|
|
41
|
+
FileUpload.Item = Item;
|
|
42
|
+
FileUpload.Trigger = Trigger;
|
|
43
|
+
export default FileUpload;
|
|
44
|
+
//# sourceMappingURL=FileUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUpload.js","sourceRoot":"","sources":["../../../src/form/file-upload/FileUpload.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAkB,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,OAAO,MAAM,iBAAiB,CAAC;AACtC,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,IAAI,MAAM,mBAAmB,CAAC;AAsGrC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAClC,CAAC,EAA+D,EAAE,GAAG,EAAE,EAAE;QAAxE,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,OAA4B,EAAvB,IAAI,cAA5C,yCAA8C,CAAF;IAC3C,OAAO,CACL,oBAAC,+BAA+B,IAAC,YAAY,EAAE,YAAY;QACzD,2CAAK,GAAG,EAAE,GAAG,IAAM,IAAI,IAAE,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,KACnE,QAAQ,CACL,CAC0B,CACnC,CAAC;AACJ,CAAC,CACqB,CAAC;AAEzB,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;AAE7B,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export declare const fileRejectionReason: {
|
|
2
|
+
FileType: "fileType";
|
|
3
|
+
FileSize: "fileSize";
|
|
4
|
+
};
|
|
5
|
+
export type FileRejectionReason = (typeof fileRejectionReason)[keyof typeof fileRejectionReason];
|
|
6
|
+
export type FileRejected = {
|
|
7
|
+
file: File;
|
|
8
|
+
error: true;
|
|
9
|
+
reasons: string[];
|
|
10
|
+
};
|
|
11
|
+
export type FileAccepted = {
|
|
12
|
+
file: File;
|
|
13
|
+
error: false;
|
|
14
|
+
};
|
|
15
|
+
export type FileObject = FileRejected | FileAccepted;
|
|
16
|
+
export type FileRejectedPartitioned = {
|
|
17
|
+
file: File;
|
|
18
|
+
reasons: string[];
|
|
19
|
+
};
|
|
20
|
+
export type FilesPartitioned = {
|
|
21
|
+
accepted: File[];
|
|
22
|
+
rejected: FileRejectedPartitioned[];
|
|
23
|
+
};
|
|
24
|
+
export interface FileUploadBaseProps {
|
|
25
|
+
/**
|
|
26
|
+
* Indicates if it is possible to select multiple files at once.
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
multiple?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Indicates which file types to accept.
|
|
32
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept
|
|
33
|
+
*/
|
|
34
|
+
accept?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Maximum size of a file to accept
|
|
37
|
+
*/
|
|
38
|
+
maxSizeInBytes?: number;
|
|
39
|
+
/**
|
|
40
|
+
* Custom validator that is used to decide if a file is accepted or rejected.
|
|
41
|
+
* @return true if the file is accepted, otherwise a string with the reason for rejection
|
|
42
|
+
*/
|
|
43
|
+
validator?: (file: File) => true | string;
|
|
44
|
+
/**
|
|
45
|
+
* Callback triggered on file select
|
|
46
|
+
*/
|
|
47
|
+
onSelect: (files: FileObject[], partitionedFiles: FilesPartitioned) => void;
|
|
48
|
+
/**
|
|
49
|
+
* Disables the dropzone when current >= max, unless `disabled` prop is set to `false`.
|
|
50
|
+
*/
|
|
51
|
+
fileLimit?: {
|
|
52
|
+
max: number;
|
|
53
|
+
current: number;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUpload.types.js","sourceRoot":"","sources":["../../../src/form/file-upload/FileUpload.types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ,EAAE,UAAmB;IAC7B,QAAQ,EAAE,UAAmB;CAC9B,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* https://github.com/Shopify/polaris/blob/main/polaris-react/src/utilities/get.ts#L3
|
|
3
|
+
*/
|
|
4
|
+
const OBJECT_NOTATION_MATCHER = /(\w+)/g;
|
|
5
|
+
export function get(keypath, ...objs) {
|
|
6
|
+
const keys = Array.isArray(keypath) ? keypath : getKeypath(keypath);
|
|
7
|
+
for (const obj of objs) {
|
|
8
|
+
if (!obj) {
|
|
9
|
+
continue;
|
|
10
|
+
}
|
|
11
|
+
let acc = obj;
|
|
12
|
+
for (let i = 0; i < keys.length; i++) {
|
|
13
|
+
const val = acc[keys[i]];
|
|
14
|
+
if (val === undefined) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
acc = val;
|
|
18
|
+
}
|
|
19
|
+
if (typeof acc === "string") {
|
|
20
|
+
return acc;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
throw new Error("Error translating key. The keypath does not resolve to a string.");
|
|
24
|
+
}
|
|
25
|
+
function getKeypath(str) {
|
|
26
|
+
const path = [];
|
|
27
|
+
let result;
|
|
28
|
+
while ((result = OBJECT_NOTATION_MATCHER.exec(str))) {
|
|
29
|
+
const [, first, second] = result;
|
|
30
|
+
path.push(first || second);
|
|
31
|
+
}
|
|
32
|
+
return path;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/form/file-upload/i18n/get.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAEzC,MAAM,UAAU,GAAG,CACjB,OAA0B,EAC1B,GAAG,IAAuC;IAE1C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QAED,IAAI,GAAG,GAA+B,GAAG,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,GAAG,GAAG,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAA8B,CAAC;IACnC,OAAO,CAAC,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Component, ComponentTranslation, TranslationDictionary } from "./i18n.types.js";
|
|
3
|
+
import nb from "./locales/nb.json";
|
|
4
|
+
export declare const I18nContext: import("react").Context<TranslationDictionary | TranslationDictionary[]>;
|
|
5
|
+
type NestedKeyOf<ObjectType extends object> = {
|
|
6
|
+
[Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object ? `${Key}.${NestedKeyOf<ObjectType[Key]>}` : `${Key}`;
|
|
7
|
+
}[keyof ObjectType & (string | number)];
|
|
8
|
+
export declare function useI18n<T extends Component>(componentName: T, ...local: (ComponentTranslation<T> | undefined)[]): (keypath: NestedKeyOf<(typeof nb)[T]>, options?: {
|
|
9
|
+
replacements: Record<string, string | number>;
|
|
10
|
+
}) => string;
|
|
11
|
+
export {};
|