@k-int/stripes-kint-components 5.35.0 → 5.36.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/CHANGELOG.md +7 -0
- package/es/index.js +12 -0
- package/es/lib/Files/FileUploader/FileUploader.js +119 -0
- package/es/lib/Files/FileUploader/index.js +13 -0
- package/es/lib/Files/FileView/FileView.js +116 -0
- package/es/lib/Files/FileView/index.js +13 -0
- package/es/lib/Files/index.js +27 -0
- package/es/lib/Files/useFileHandlers.js +133 -0
- package/es/lib/utils/downloadBlob.js +42 -0
- package/es/lib/utils/index.js +9 -1
- package/package.json +2 -1
- package/src/artifacts/coverage-jest/ActionList/ActionList.js.html +1 -1
- package/src/artifacts/coverage-jest/ActionList/ActionListFieldArray.js.html +1 -1
- package/src/artifacts/coverage-jest/ActionList/index.html +1 -1
- package/src/artifacts/coverage-jest/ActionList/index.js.html +1 -1
- package/src/artifacts/coverage-jest/ButtonTypedown/ButtonTypedown.js.html +1 -1
- package/src/artifacts/coverage-jest/ButtonTypedown/index.html +1 -1
- package/src/artifacts/coverage-jest/ButtonTypedown/index.js.html +1 -1
- package/src/artifacts/coverage-jest/ComboButton/ComboButton.js.html +1 -1
- package/src/artifacts/coverage-jest/ComboButton/index.html +1 -1
- package/src/artifacts/coverage-jest/ComboButton/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertiesLookup.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertiesSettings.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertyForm.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertyView.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/index.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Config/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesEdit.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesEditCtx.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesListField.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertyField.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertyFormCard.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/index.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Edit/testResources.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilter.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterField.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterFieldArray.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterForm.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesRule.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/index.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/testResources.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/useOperators.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/useParseActiveFilterStrings.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/Filter/useValueProps.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertiesView.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertiesViewCtx.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertyCard.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/index.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/View/testResources.js.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/index.html +1 -1
- package/src/artifacts/coverage-jest/CustomProperties/index.js.html +1 -1
- package/src/artifacts/coverage-jest/CycleButton/CycleButton.js.html +1 -1
- package/src/artifacts/coverage-jest/CycleButton/index.html +1 -1
- package/src/artifacts/coverage-jest/CycleButton/index.js.html +1 -1
- package/src/artifacts/coverage-jest/FieldLabel/FieldLabel.js.html +1 -1
- package/src/artifacts/coverage-jest/FieldLabel/index.html +1 -1
- package/src/artifacts/coverage-jest/FieldLabel/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Files/FileUploader/FileUploader.js.html +487 -0
- package/src/artifacts/coverage-jest/Files/FileUploader/index.html +131 -0
- package/src/artifacts/coverage-jest/Files/FileUploader/index.js.html +88 -0
- package/src/artifacts/coverage-jest/Files/FileView/FileView.js.html +430 -0
- package/src/artifacts/coverage-jest/Files/FileView/index.html +131 -0
- package/src/artifacts/coverage-jest/Files/FileView/index.js.html +88 -0
- package/src/artifacts/coverage-jest/Files/index.html +131 -0
- package/src/artifacts/coverage-jest/Files/index.js.html +94 -0
- package/src/artifacts/coverage-jest/Files/useFileHandlers.js.html +469 -0
- package/src/artifacts/coverage-jest/FormModal/FormModal.js.html +1 -1
- package/src/artifacts/coverage-jest/FormModal/index.html +1 -1
- package/src/artifacts/coverage-jest/FormModal/index.js.html +1 -1
- package/src/artifacts/coverage-jest/FormattedKintMessage/FormattedKintMessage.js.html +1 -1
- package/src/artifacts/coverage-jest/FormattedKintMessage/index.html +1 -1
- package/src/artifacts/coverage-jest/FormattedKintMessage/index.js.html +1 -1
- package/src/artifacts/coverage-jest/IconSelect/IconSelect.js.html +1 -1
- package/src/artifacts/coverage-jest/IconSelect/index.html +1 -1
- package/src/artifacts/coverage-jest/IconSelect/index.js.html +1 -1
- package/src/artifacts/coverage-jest/NoResultsMessage/NoResultsMessage.js.html +1 -1
- package/src/artifacts/coverage-jest/NoResultsMessage/index.html +1 -1
- package/src/artifacts/coverage-jest/NoResultsMessage/index.js.html +1 -1
- package/src/artifacts/coverage-jest/NumberField/NumberField.js.html +1 -1
- package/src/artifacts/coverage-jest/NumberField/index.html +1 -1
- package/src/artifacts/coverage-jest/NumberField/index.js.html +1 -1
- package/src/artifacts/coverage-jest/QueryTypedown/QueryTypedown.js.html +1 -1
- package/src/artifacts/coverage-jest/QueryTypedown/index.html +1 -1
- package/src/artifacts/coverage-jest/QueryTypedown/index.js.html +1 -1
- package/src/artifacts/coverage-jest/RefdataButtons/RefdataButtons.js.html +1 -1
- package/src/artifacts/coverage-jest/RefdataButtons/index.html +1 -1
- package/src/artifacts/coverage-jest/RefdataButtons/index.js.html +1 -1
- package/src/artifacts/coverage-jest/ResponsiveButtonGroup/ResponsiveButtonGroup.js.html +1 -1
- package/src/artifacts/coverage-jest/ResponsiveButtonGroup/index.html +1 -1
- package/src/artifacts/coverage-jest/ResponsiveButtonGroup/index.js.html +1 -1
- package/src/artifacts/coverage-jest/ResponsiveButtonGroup/useResponsiveButtonGroupSizing.js.html +1 -1
- package/src/artifacts/coverage-jest/RichSelect/RichSelect.js.html +1 -1
- package/src/artifacts/coverage-jest/RichSelect/index.html +1 -1
- package/src/artifacts/coverage-jest/RichSelect/index.js.html +1 -1
- package/src/artifacts/coverage-jest/RichSelect/useSelectedOption.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQLookupComponent/SASQLookupComponent.js.html +51 -51
- package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/TableBody.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/index.html +1 -1
- package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/index.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQLookupComponent/index.html +1 -1
- package/src/artifacts/coverage-jest/SASQLookupComponent/index.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQRoute/SASQRoute.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQRoute/index.html +1 -1
- package/src/artifacts/coverage-jest/SASQRoute/index.js.html +1 -1
- package/src/artifacts/coverage-jest/SASQViewComponent/SASQViewComponent.js.html +12 -12
- package/src/artifacts/coverage-jest/SASQViewComponent/index.html +15 -15
- package/src/artifacts/coverage-jest/SASQViewComponent/index.js.html +1 -1
- package/src/artifacts/coverage-jest/SearchField/SearchField.js.html +1 -1
- package/src/artifacts/coverage-jest/SearchField/index.html +1 -1
- package/src/artifacts/coverage-jest/SearchField/index.js.html +1 -1
- package/src/artifacts/coverage-jest/SearchKeyControl/SearchKeyControl.js.html +1 -1
- package/src/artifacts/coverage-jest/SearchKeyControl/index.html +1 -1
- package/src/artifacts/coverage-jest/SearchKeyControl/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/EditableRefdataCategoryList.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataList/EditableRefdataList.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataList/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableRefdataList/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsList.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/EditableSettingsListFieldArray.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/EditSettingValue.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/RenderSettingValue.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/SettingField.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/EditableSettingsList/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/RefdataCategoriesSettings.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPage.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/SettingPagePane.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingPage/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/Settings/Settings.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/Settings/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/Settings/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/SettingsFormContainer.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsField.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/StaticSettingsFieldComponent.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/StaticSettingsField/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/constants/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/constants/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/constants/queryKeys.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/contexts/SettingsContext.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/contexts/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/contexts/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/useSettingCallout.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/useSettingsSectionInitalValues.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useStaticSettingsSection.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/useAppSettings.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/useSettingSection.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettings/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettings/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/hooks/useSettings/useSettings.js.html +1 -1
- package/src/artifacts/coverage-jest/Settings/index.html +1 -1
- package/src/artifacts/coverage-jest/Settings/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Tags/Tags.js.html +9 -9
- package/src/artifacts/coverage-jest/Tags/hooks/index.html +16 -16
- package/src/artifacts/coverage-jest/Tags/hooks/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Tags/hooks/useTags.js.html +9 -9
- package/src/artifacts/coverage-jest/Tags/hooks/useTagsEnabled.js.html +1 -1
- package/src/artifacts/coverage-jest/Tags/index.html +15 -15
- package/src/artifacts/coverage-jest/Tags/index.js.html +1 -1
- package/src/artifacts/coverage-jest/Tags/tagsConfig.js.html +1 -1
- package/src/artifacts/coverage-jest/Typedown/Typedown.js.html +1 -1
- package/src/artifacts/coverage-jest/Typedown/index.html +1 -1
- package/src/artifacts/coverage-jest/Typedown/index.js.html +1 -1
- package/src/artifacts/coverage-jest/cobertura-coverage.xml +457 -257
- package/src/artifacts/coverage-jest/constants/comparators.js.html +1 -1
- package/src/artifacts/coverage-jest/constants/customProperties.js.html +1 -1
- package/src/artifacts/coverage-jest/constants/endpoints.js.html +1 -1
- package/src/artifacts/coverage-jest/constants/eventCodes.js.html +1 -1
- package/src/artifacts/coverage-jest/constants/index.html +1 -1
- package/src/artifacts/coverage-jest/constants/pagination.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/index.html +15 -15
- package/src/artifacts/coverage-jest/hooks/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/useIntlKey.js.html +7 -7
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/useIntlKeyStore.js.html +6 -6
- package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/useKintIntl.js.html +9 -9
- package/src/artifacts/coverage-jest/hooks/typedownHooks/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/typedownHooks/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedown.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedownData.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedownToggle.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useActionListRef.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useActiveElement.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useCustProps.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useCustomProperties.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useHelperApp.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/useInvalidateRefdata.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useKiwtFieldArray.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useKiwtSASQuery.js.html +17 -17
- package/src/artifacts/coverage-jest/hooks/useLocalPageStore.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useLocalStorageState.js.html +5 -5
- package/src/artifacts/coverage-jest/hooks/useModConfigEntries.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/useMutateCustomProperties.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateGeneric/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateGeneric/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateGeneric/useMutateGeneric.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateModConfigEntry.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/useMutateRefdataCategory.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/useMutateRefdataValue.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateTemplates/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateTemplates/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useMutateTemplates/useMutateTemplates.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useParallelBatchFetch.js.html +9 -9
- package/src/artifacts/coverage-jest/hooks/usePrevNextPagination.js.html +31 -31
- package/src/artifacts/coverage-jest/hooks/useQIndex.js.html +9 -9
- package/src/artifacts/coverage-jest/hooks/useRefdata.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useSASQQueryMeta.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/index.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/index.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/useStandaloneSASQQueryParameter.js.html +1 -1
- package/src/artifacts/coverage-jest/hooks/useTemplates.js.html +1 -1
- package/src/artifacts/coverage-jest/index.html +95 -50
- package/src/artifacts/coverage-jest/utils/buildUrl.js.html +12 -12
- package/src/artifacts/coverage-jest/utils/downloadBlob.js.html +211 -0
- package/src/artifacts/coverage-jest/utils/filterParsers/deparseKiwtQueryFilters.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/filterParsers/index.html +1 -1
- package/src/artifacts/coverage-jest/utils/filterParsers/index.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryFilters.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryGroups.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryString.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/generateKiwtQuery.js.html +3 -3
- package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/generateKiwtQueryParams.js.html +17 -17
- package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/index.html +1 -1
- package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/index.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/groupCustomPropertiesByCtx.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/index.html +24 -9
- package/src/artifacts/coverage-jest/utils/index.js.html +5 -2
- package/src/artifacts/coverage-jest/utils/matchString/index.html +1 -1
- package/src/artifacts/coverage-jest/utils/matchString/index.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/matchString/matchString.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/modConfigEntriesQueryKey.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/parseErrorResponse.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/parseModConfigEntry.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/refdataOptions.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/refdataQueryKey/index.html +1 -1
- package/src/artifacts/coverage-jest/utils/refdataQueryKey/index.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/refdataQueryKey/refdataQueryKey.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/selectorSafe.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/sortByLabel.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/stringStyling/boldString.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/stringStyling/highlightString.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/stringStyling/index.html +1 -1
- package/src/artifacts/coverage-jest/utils/stringStyling/index.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/toCamelCase.js.html +1 -1
- package/src/artifacts/coverage-jest/utils/typedownQueryKey.js.html +1 -1
- package/src/artifacts/coverage-jest/validators/index.html +1 -1
- package/src/artifacts/coverage-jest/validators/index.js.html +1 -1
- package/src/artifacts/coverage-jest/validators/validators.js.html +1 -1
- package/src/index.js +2 -0
- package/src/lib/Files/FileUploader/FileUploader.js +134 -0
- package/src/lib/Files/FileUploader/index.js +1 -0
- package/src/lib/Files/FileView/FileView.js +115 -0
- package/src/lib/Files/FileView/index.js +1 -0
- package/src/lib/Files/index.js +3 -0
- package/src/lib/Files/useFileHandlers.js +128 -0
- package/src/lib/utils/downloadBlob.js +42 -0
- package/src/lib/utils/index.js +1 -0
- package/styles/FileUploader.css +34 -0
- package/styles/FileView.css +8 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
2
|
+
|
|
3
|
+
import { Col, Icon, IconButton, KeyValue, Row, Tooltip } from '@folio/stripes/components';
|
|
4
|
+
|
|
5
|
+
import { useKintIntl } from '../../hooks';
|
|
6
|
+
|
|
7
|
+
import css from '../../../../styles/FileView.css';
|
|
8
|
+
|
|
9
|
+
const FileView = ({
|
|
10
|
+
canDownload,
|
|
11
|
+
file,
|
|
12
|
+
onDownload,
|
|
13
|
+
intlKey: passedIntlKey,
|
|
14
|
+
intlNS: passedIntlNS,
|
|
15
|
+
labelOverrides = {},
|
|
16
|
+
onDelete,
|
|
17
|
+
}) => {
|
|
18
|
+
const kintIntl = useKintIntl(passedIntlKey, passedIntlNS);
|
|
19
|
+
|
|
20
|
+
if (!file) return null;
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<div className={css.fileViewContainer}>
|
|
24
|
+
<Row>
|
|
25
|
+
<Col xs={6}>
|
|
26
|
+
<KeyValue
|
|
27
|
+
label={
|
|
28
|
+
kintIntl.formatKintMessage({
|
|
29
|
+
id: 'files.filename',
|
|
30
|
+
overrideValue: labelOverrides.filename,
|
|
31
|
+
})
|
|
32
|
+
}
|
|
33
|
+
>
|
|
34
|
+
{canDownload ?
|
|
35
|
+
/* eslint-disable-next-line jsx-a11y/anchor-is-valid */
|
|
36
|
+
<a
|
|
37
|
+
data-test-fileview-name
|
|
38
|
+
href="#"
|
|
39
|
+
onClick={(e) => {
|
|
40
|
+
onDownload(file);
|
|
41
|
+
e.preventDefault();
|
|
42
|
+
e.stopPropagation();
|
|
43
|
+
}}
|
|
44
|
+
rel="noopener noreferrer"
|
|
45
|
+
style={{ wordBreak: 'break-all' }}
|
|
46
|
+
target="_blank"
|
|
47
|
+
>
|
|
48
|
+
{file.name}
|
|
49
|
+
<Icon icon="external-link" />
|
|
50
|
+
</a> :
|
|
51
|
+
<div data-test-fileview-name>
|
|
52
|
+
{file.name}
|
|
53
|
+
</div>
|
|
54
|
+
}
|
|
55
|
+
</KeyValue>
|
|
56
|
+
</Col>
|
|
57
|
+
<Col xs={4}>
|
|
58
|
+
<KeyValue
|
|
59
|
+
label={
|
|
60
|
+
kintIntl.formatKintMessage({
|
|
61
|
+
id: 'files.uploaded',
|
|
62
|
+
overrideValue: labelOverrides.uploaded,
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
value={(
|
|
66
|
+
<span data-test-fileview-uploaded>
|
|
67
|
+
<div>{kintIntl.formatDate(file.modified)}</div>
|
|
68
|
+
<div>{kintIntl.formatTime(file.modified)}</div>
|
|
69
|
+
</span>
|
|
70
|
+
)}
|
|
71
|
+
/>
|
|
72
|
+
</Col>
|
|
73
|
+
<Col xs={2}>
|
|
74
|
+
<Tooltip
|
|
75
|
+
id={`file-${file?.id}-delete-button`}
|
|
76
|
+
text={
|
|
77
|
+
kintIntl.formatKintMessage({
|
|
78
|
+
id: 'files.remove',
|
|
79
|
+
overrideValue: labelOverrides.remove,
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
>
|
|
83
|
+
{({ ariaIds, ref }) => (
|
|
84
|
+
<IconButton
|
|
85
|
+
ref={ref}
|
|
86
|
+
aria-labelledby={ariaIds.text}
|
|
87
|
+
data-test-fileview-delete
|
|
88
|
+
icon="trash"
|
|
89
|
+
onClick={e => {
|
|
90
|
+
e.stopPropagation();
|
|
91
|
+
onDelete(file);
|
|
92
|
+
}}
|
|
93
|
+
/>
|
|
94
|
+
)}
|
|
95
|
+
</Tooltip>
|
|
96
|
+
</Col>
|
|
97
|
+
</Row>
|
|
98
|
+
</div>
|
|
99
|
+
);
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
FileView.propTypes = {
|
|
103
|
+
file: PropTypes.shape({
|
|
104
|
+
name: PropTypes.string,
|
|
105
|
+
}),
|
|
106
|
+
intlKey: PropTypes.string,
|
|
107
|
+
intlNS: PropTypes.string,
|
|
108
|
+
labelOverrides: PropTypes.shape({
|
|
109
|
+
filename: PropTypes.string,
|
|
110
|
+
remove: PropTypes.string,
|
|
111
|
+
uploaded: PropTypes.string,
|
|
112
|
+
})
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
export default FileView;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './FileView';
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import { useMutation, useQuery } from 'react-query';
|
|
3
|
+
|
|
4
|
+
import { useOkapiKy } from '@folio/stripes/core';
|
|
5
|
+
import { downloadBlob } from '../utils';
|
|
6
|
+
|
|
7
|
+
// This is copied and adapted from stripes-erm-components
|
|
8
|
+
|
|
9
|
+
const useFileHandlers = ({
|
|
10
|
+
// When fetchFile is true, will AUTOMATICALLY fetch not only
|
|
11
|
+
// fileMetadata but ALSO file itself
|
|
12
|
+
fetchFile = false,
|
|
13
|
+
/* fileEndpoint can be a string or
|
|
14
|
+
* {
|
|
15
|
+
* download: string | function,
|
|
16
|
+
* metadata: string | function
|
|
17
|
+
* upload: string | function,
|
|
18
|
+
* }
|
|
19
|
+
*/
|
|
20
|
+
fileEndpoint,
|
|
21
|
+
fileField = 'upload',
|
|
22
|
+
fileMappings = {}, // A mapping from file -> formData field,
|
|
23
|
+
fileId // An OPTIONAL id for a file which results in fetching and returning file metadata
|
|
24
|
+
}) => {
|
|
25
|
+
const ky = useOkapiKy();
|
|
26
|
+
|
|
27
|
+
// A method which resolves the endpoint to hit based on fileEndpoint
|
|
28
|
+
const resolveEndpoint = useCallback((type, file) => {
|
|
29
|
+
if (typeof fileEndpoint === 'string') {
|
|
30
|
+
// We have a base endpoint, configure default behaviour
|
|
31
|
+
switch (type) {
|
|
32
|
+
case 'upload':
|
|
33
|
+
return fileEndpoint;
|
|
34
|
+
case 'download':
|
|
35
|
+
return `${fileEndpoint}/${file?.id}/raw`;
|
|
36
|
+
case 'metadata':
|
|
37
|
+
return `${fileEndpoint}/${file.id}`;
|
|
38
|
+
default:
|
|
39
|
+
throw new TypeError(`Unsupported endpoint type ${type}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (typeof fileEndpoint !== 'object') {
|
|
44
|
+
throw new TypeError(`Unsupported fileEndpoint type ${typeof fileEndpoint}`);
|
|
45
|
+
}
|
|
46
|
+
const config = fileEndpoint[type];
|
|
47
|
+
|
|
48
|
+
if (config === null) {
|
|
49
|
+
throw new TypeError(`Unsupported fileEndpoint[${type}] is not configured`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Finally we have configured behaviour
|
|
53
|
+
switch (typeof config) {
|
|
54
|
+
case 'function':
|
|
55
|
+
return config(file);
|
|
56
|
+
case 'string':
|
|
57
|
+
return config;
|
|
58
|
+
default:
|
|
59
|
+
// If we have hit the end then we've done something wrong
|
|
60
|
+
throw new TypeError(`Unsupported configuration for fileEndpoint[${type}]: ${typeof config}`);
|
|
61
|
+
}
|
|
62
|
+
}, [fileEndpoint]);
|
|
63
|
+
|
|
64
|
+
const { mutateAsync: handleUploadFile } = useMutation(
|
|
65
|
+
[fileEndpoint, 'handleUpload'],
|
|
66
|
+
(file) => {
|
|
67
|
+
const formData = new FormData();
|
|
68
|
+
formData.append(fileField, file);
|
|
69
|
+
|
|
70
|
+
Object.entries(fileMappings).forEach(([key, value]) => {
|
|
71
|
+
if (typeof value === 'string') {
|
|
72
|
+
formData.append(key, value);
|
|
73
|
+
} else if (typeof value === 'function') {
|
|
74
|
+
formData.append(key, value(file));
|
|
75
|
+
} else {
|
|
76
|
+
throw new TypeError('Invalid fileMapping: ' + key);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
return ky.post(resolveEndpoint('upload', file), { body: formData }).json();
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
const {
|
|
85
|
+
data: fileBlob,
|
|
86
|
+
isLoading: isFileLoading,
|
|
87
|
+
refetch: refetchFile
|
|
88
|
+
} = useQuery({
|
|
89
|
+
queryKey: [fileEndpoint, 'content', fileId],
|
|
90
|
+
queryFn: () => ky.get(resolveEndpoint('download', { id: fileId })).blob(),
|
|
91
|
+
enabled: !!fileId && typeof fileId === 'string' && fetchFile,
|
|
92
|
+
staleTime: Infinity, // Assume the file won't change underneath us.
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
// We are declaratively fetching a file via a function, useMutation is more convenient here
|
|
97
|
+
// NOTE even if fileBlob already exists this will refetch it for download
|
|
98
|
+
const { mutate: getFile, mutateAsync: getFileAsync } = useMutation(
|
|
99
|
+
[fileEndpoint, 'getFile'],
|
|
100
|
+
(file) => ky.get(resolveEndpoint('download', file)).blob()
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
const handleDownloadFile = useCallback((fileMetadata) => {
|
|
104
|
+
return getFileAsync(fileMetadata)
|
|
105
|
+
/* In this instance we want the file name back as it was handed in, whitespace and all */
|
|
106
|
+
.then(downloadBlob(fileMetadata.name, { processWhitespace: false }));
|
|
107
|
+
}, [getFileAsync]);
|
|
108
|
+
|
|
109
|
+
const { data: fileMetadata, isLoading: isFileMetadataLoading } = useQuery({
|
|
110
|
+
queryKey: [fileEndpoint, 'metadata', fileId],
|
|
111
|
+
queryFn: () => ky.get(resolveEndpoint('metadata', { id: fileId })).json(),
|
|
112
|
+
enabled: !!fileId && typeof fileId === 'string',
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
file: fileBlob,
|
|
117
|
+
fileMetadata,
|
|
118
|
+
getFile,
|
|
119
|
+
getFileAsync,
|
|
120
|
+
handleDownloadFile,
|
|
121
|
+
handleUploadFile,
|
|
122
|
+
isFileLoading,
|
|
123
|
+
isFileMetadataLoading,
|
|
124
|
+
refetchFile
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
export default useFileHandlers;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The options block allows for a very customisable approach to naming files
|
|
3
|
+
* and applying extensions. The default options are chosen in order to keep default
|
|
4
|
+
* behaviour found in other apps, but this can now be changed use case by use case.
|
|
5
|
+
*
|
|
6
|
+
* This is copied from stripes-erm-components
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const downloadBlob = (
|
|
10
|
+
name,
|
|
11
|
+
{
|
|
12
|
+
fileExt = '',
|
|
13
|
+
spaceDelimiter = '_',
|
|
14
|
+
dotDelimiter = '',
|
|
15
|
+
processWhitespace = true,
|
|
16
|
+
processDots = false
|
|
17
|
+
} = {}
|
|
18
|
+
) => {
|
|
19
|
+
let downloadName = name;
|
|
20
|
+
if (processWhitespace) {
|
|
21
|
+
downloadName = downloadName.replaceAll(/\s/g, spaceDelimiter);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (processDots) {
|
|
25
|
+
downloadName = downloadName.replaceAll(/\./g, dotDelimiter);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (fileExt.length) {
|
|
29
|
+
downloadName = `${downloadName}.${fileExt}`;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return blob => {
|
|
33
|
+
const url = URL.createObjectURL(blob);
|
|
34
|
+
const a = document.createElement('a');
|
|
35
|
+
a.href = url;
|
|
36
|
+
a.download = downloadName;
|
|
37
|
+
a.click();
|
|
38
|
+
URL.revokeObjectURL(url);
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export default downloadBlob;
|
package/src/lib/utils/index.js
CHANGED
|
@@ -33,3 +33,4 @@ export { default as parseErrorResponse } from './parseErrorResponse';
|
|
|
33
33
|
|
|
34
34
|
export { default as modConfigEntriesQueryKey } from './modConfigEntriesQueryKey';
|
|
35
35
|
export { default as parseModConfigEntry } from './parseModConfigEntry';
|
|
36
|
+
export { default as downloadBlob } from './downloadBlob';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
@import "@folio/stripes-components/lib/variables.css";
|
|
2
|
+
|
|
3
|
+
.upload {
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
min-height: 150px;
|
|
9
|
+
padding: var(--gutter);
|
|
10
|
+
border: 1px dashed var(--color-border);
|
|
11
|
+
border-radius: var(--radius);
|
|
12
|
+
background-color: var(--color-fill);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.uploadTitle {
|
|
16
|
+
margin-bottom: 0.5rem;
|
|
17
|
+
font-weight: 600;
|
|
18
|
+
text-align: center;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.activeUpload {
|
|
22
|
+
background-color: var(--color-fill-current);
|
|
23
|
+
color: var(--bg);
|
|
24
|
+
border-style: dashed;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.activeUploadTitle {
|
|
28
|
+
font-size: var(--font-size-large);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.children {
|
|
32
|
+
width: 100%;
|
|
33
|
+
display: flex;
|
|
34
|
+
}
|