@dnb/eufemia 10.58.0 → 10.60.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 +41 -0
- package/cjs/components/dialog/style/dnb-dialog.css +2 -1
- package/cjs/components/dialog/style/dnb-dialog.min.css +1 -1
- package/cjs/components/dialog/style/dnb-dialog.scss +2 -1
- package/cjs/components/form-label/FormLabel.js +13 -10
- package/cjs/components/form-label/FormLabel.js.map +1 -1
- package/cjs/components/height-animation/HeightAnimation.d.ts +1 -1
- package/cjs/components/height-animation/HeightAnimation.js.map +1 -1
- package/cjs/components/height-animation/HeightAnimationDocs.js +2 -2
- package/cjs/components/height-animation/HeightAnimationDocs.js.map +1 -1
- package/cjs/components/pagination/Pagination.d.ts +1 -1
- package/cjs/components/upload/Upload.js +2 -1
- package/cjs/components/upload/Upload.js.map +1 -1
- package/cjs/components/upload/UploadDocs.js +5 -0
- package/cjs/components/upload/UploadDocs.js.map +1 -1
- package/cjs/components/upload/UploadFileList.js +80 -12
- package/cjs/components/upload/UploadFileList.js.map +1 -1
- package/cjs/components/upload/UploadFileListCell.d.ts +5 -1
- package/cjs/components/upload/UploadFileListCell.js +9 -8
- package/cjs/components/upload/UploadFileListCell.js.map +1 -1
- package/cjs/components/upload/UploadFileListLink.d.ts +13 -0
- package/cjs/components/upload/UploadFileListLink.js +66 -0
- package/cjs/components/upload/UploadFileListLink.js.map +1 -0
- package/cjs/components/upload/types.d.ts +8 -2
- package/cjs/components/upload/types.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +17 -9
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/Field/Upload/Upload.d.ts +1 -1
- package/cjs/extensions/forms/Field/Upload/Upload.js +22 -8
- package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
- package/cjs/extensions/forms/Form/Element/Element.js +1 -1
- package/cjs/extensions/forms/Form/Element/Element.js.map +1 -1
- package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlay.d.ts +36 -0
- package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlay.js +132 -0
- package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlay.js.map +1 -0
- package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.d.ts +3 -0
- package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js +68 -0
- package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js.map +1 -0
- package/cjs/extensions/forms/Form/InfoOverlay/index.d.ts +2 -0
- package/cjs/extensions/forms/Form/InfoOverlay/index.js +27 -0
- package/cjs/extensions/forms/Form/InfoOverlay/index.js.map +1 -0
- package/cjs/extensions/forms/Form/InfoOverlay/setContent.d.ts +4 -0
- package/cjs/extensions/forms/Form/InfoOverlay/setContent.js +14 -0
- package/cjs/extensions/forms/Form/InfoOverlay/setContent.js.map +1 -0
- package/cjs/extensions/forms/Form/Section/Section.js.map +1 -1
- package/cjs/extensions/forms/Form/Section/style/themes/ui.js +1 -1
- package/cjs/extensions/forms/Form/Section/style/themes/ui.js.map +1 -1
- package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +8 -4
- package/cjs/extensions/forms/Form/Visibility/Visibility.js +18 -2
- package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.d.ts +1 -0
- package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js +11 -1
- package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/index.d.ts +1 -0
- package/cjs/extensions/forms/Form/index.js +7 -0
- package/cjs/extensions/forms/Form/index.js.map +1 -1
- package/cjs/extensions/forms/Value/Upload/Upload.d.ts +3 -2
- package/cjs/extensions/forms/Value/Upload/Upload.js +18 -10
- package/cjs/extensions/forms/Value/Upload/Upload.js.map +1 -1
- package/cjs/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -1
- package/cjs/extensions/forms/Value/Upload/UploadDocs.js +8 -3
- package/cjs/extensions/forms/Value/Upload/UploadDocs.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +2 -3
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.css +1 -1
- package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
- package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.scss +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +12 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js +12 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +12 -0
- package/cjs/extensions/forms/constants/locales/index.d.ts +24 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +12 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js +12 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/style/dnb-forms.css +1 -1
- package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
- package/cjs/fragments/drawer-list/DrawerListProvider.js +58 -21
- package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/helpers/useSharedState.d.ts +14 -6
- package/cjs/shared/helpers/useSharedState.js +52 -27
- package/cjs/shared/helpers/useSharedState.js.map +1 -1
- package/cjs/shared/locales/en-GB.js +1 -1
- package/cjs/shared/locales/en-GB.js.map +1 -1
- package/cjs/shared/locales/nb-NO.js +1 -1
- package/cjs/shared/locales/nb-NO.js.map +1 -1
- package/cjs/style/core/scopes.scss +1 -1
- package/cjs/style/dnb-ui-basis.css +1 -1
- package/cjs/style/dnb-ui-basis.min.css +1 -1
- package/cjs/style/dnb-ui-body.css +1 -1
- package/cjs/style/dnb-ui-body.min.css +1 -1
- package/cjs/style/dnb-ui-components.css +3 -2
- package/cjs/style/dnb-ui-components.min.css +2 -2
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/dnb-ui-extensions.css +1 -1
- package/cjs/style/dnb-ui-extensions.min.css +1 -1
- package/cjs/style/dnb-ui-forms.css +1 -1
- package/cjs/style/dnb-ui-forms.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +4 -3
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +4 -3
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +4 -3
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-ui/ui-theme-extensions.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-extensions.scss +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.scss +1 -1
- package/components/dialog/style/dnb-dialog.css +2 -1
- package/components/dialog/style/dnb-dialog.min.css +1 -1
- package/components/dialog/style/dnb-dialog.scss +2 -1
- package/components/form-label/FormLabel.js +13 -10
- package/components/form-label/FormLabel.js.map +1 -1
- package/components/height-animation/HeightAnimation.d.ts +1 -1
- package/components/height-animation/HeightAnimation.js.map +1 -1
- package/components/height-animation/HeightAnimationDocs.js +2 -2
- package/components/height-animation/HeightAnimationDocs.js.map +1 -1
- package/components/pagination/Pagination.d.ts +1 -1
- package/components/upload/Upload.js +2 -1
- package/components/upload/Upload.js.map +1 -1
- package/components/upload/UploadDocs.js +5 -0
- package/components/upload/UploadDocs.js.map +1 -1
- package/components/upload/UploadFileList.js +77 -12
- package/components/upload/UploadFileList.js.map +1 -1
- package/components/upload/UploadFileListCell.d.ts +5 -1
- package/components/upload/UploadFileListCell.js +9 -8
- package/components/upload/UploadFileListCell.js.map +1 -1
- package/components/upload/UploadFileListLink.d.ts +13 -0
- package/components/upload/UploadFileListLink.js +56 -0
- package/components/upload/UploadFileListLink.js.map +1 -0
- package/components/upload/types.d.ts +8 -2
- package/components/upload/types.js.map +1 -1
- package/es/components/dialog/style/dnb-dialog.css +2 -1
- package/es/components/dialog/style/dnb-dialog.min.css +1 -1
- package/es/components/dialog/style/dnb-dialog.scss +2 -1
- package/es/components/form-label/FormLabel.js +13 -10
- package/es/components/form-label/FormLabel.js.map +1 -1
- package/es/components/height-animation/HeightAnimation.d.ts +1 -1
- package/es/components/height-animation/HeightAnimation.js.map +1 -1
- package/es/components/height-animation/HeightAnimationDocs.js +2 -2
- package/es/components/height-animation/HeightAnimationDocs.js.map +1 -1
- package/es/components/pagination/Pagination.d.ts +1 -1
- package/es/components/upload/Upload.js +2 -1
- package/es/components/upload/Upload.js.map +1 -1
- package/es/components/upload/UploadDocs.js +5 -0
- package/es/components/upload/UploadDocs.js.map +1 -1
- package/es/components/upload/UploadFileList.js +77 -12
- package/es/components/upload/UploadFileList.js.map +1 -1
- package/es/components/upload/UploadFileListCell.d.ts +5 -1
- package/es/components/upload/UploadFileListCell.js +9 -8
- package/es/components/upload/UploadFileListCell.js.map +1 -1
- package/es/components/upload/UploadFileListLink.d.ts +13 -0
- package/es/components/upload/UploadFileListLink.js +56 -0
- package/es/components/upload/UploadFileListLink.js.map +1 -0
- package/es/components/upload/types.d.ts +8 -2
- package/es/components/upload/types.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.js +17 -9
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/Field/Upload/Upload.d.ts +1 -1
- package/es/extensions/forms/Field/Upload/Upload.js +18 -7
- package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
- package/es/extensions/forms/Form/Element/Element.js +1 -1
- package/es/extensions/forms/Form/Element/Element.js.map +1 -1
- package/es/extensions/forms/Form/InfoOverlay/InfoOverlay.d.ts +36 -0
- package/es/extensions/forms/Form/InfoOverlay/InfoOverlay.js +122 -0
- package/es/extensions/forms/Form/InfoOverlay/InfoOverlay.js.map +1 -0
- package/es/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.d.ts +3 -0
- package/es/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js +60 -0
- package/es/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js.map +1 -0
- package/es/extensions/forms/Form/InfoOverlay/index.d.ts +2 -0
- package/es/extensions/forms/Form/InfoOverlay/index.js +3 -0
- package/es/extensions/forms/Form/InfoOverlay/index.js.map +1 -0
- package/es/extensions/forms/Form/InfoOverlay/setContent.d.ts +4 -0
- package/es/extensions/forms/Form/InfoOverlay/setContent.js +8 -0
- package/es/extensions/forms/Form/InfoOverlay/setContent.js.map +1 -0
- package/es/extensions/forms/Form/Section/Section.js.map +1 -1
- package/es/extensions/forms/Form/Section/style/themes/ui.js +1 -1
- package/es/extensions/forms/Form/Section/style/themes/ui.js.map +1 -1
- package/es/extensions/forms/Form/Visibility/Visibility.d.ts +8 -4
- package/es/extensions/forms/Form/Visibility/Visibility.js +16 -2
- package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/es/extensions/forms/Form/Visibility/VisibilityDocs.d.ts +1 -0
- package/es/extensions/forms/Form/Visibility/VisibilityDocs.js +9 -0
- package/es/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/es/extensions/forms/Form/index.d.ts +1 -0
- package/es/extensions/forms/Form/index.js +1 -0
- package/es/extensions/forms/Form/index.js.map +1 -1
- package/es/extensions/forms/Value/Upload/Upload.d.ts +3 -2
- package/es/extensions/forms/Value/Upload/Upload.js +18 -10
- package/es/extensions/forms/Value/Upload/Upload.js.map +1 -1
- package/es/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -1
- package/es/extensions/forms/Value/Upload/UploadDocs.js +5 -1
- package/es/extensions/forms/Value/Upload/UploadDocs.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainer.js +2 -3
- package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/es/extensions/forms/Wizard/style/dnb-wizard-layout.css +1 -1
- package/es/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
- package/es/extensions/forms/Wizard/style/dnb-wizard-layout.scss +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +12 -0
- package/es/extensions/forms/constants/locales/en-GB.js +12 -0
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +12 -0
- package/es/extensions/forms/constants/locales/index.d.ts +24 -0
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +12 -0
- package/es/extensions/forms/constants/locales/nb-NO.js +12 -0
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/style/dnb-forms.css +1 -1
- package/es/extensions/forms/style/dnb-forms.min.css +1 -1
- package/es/fragments/drawer-list/DrawerListProvider.js +57 -21
- package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/helpers/useSharedState.d.ts +14 -6
- package/es/shared/helpers/useSharedState.js +51 -28
- package/es/shared/helpers/useSharedState.js.map +1 -1
- package/es/shared/locales/en-GB.js +1 -1
- package/es/shared/locales/en-GB.js.map +1 -1
- package/es/shared/locales/nb-NO.js +1 -1
- package/es/shared/locales/nb-NO.js.map +1 -1
- package/es/style/core/scopes.scss +1 -1
- package/es/style/dnb-ui-basis.css +1 -1
- package/es/style/dnb-ui-basis.min.css +1 -1
- package/es/style/dnb-ui-body.css +1 -1
- package/es/style/dnb-ui-body.min.css +1 -1
- package/es/style/dnb-ui-components.css +3 -2
- package/es/style/dnb-ui-components.min.css +2 -2
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/dnb-ui-extensions.css +1 -1
- package/es/style/dnb-ui-extensions.min.css +1 -1
- package/es/style/dnb-ui-forms.css +1 -1
- package/es/style/dnb-ui-forms.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +4 -3
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +4 -3
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +4 -3
- package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/es/style/themes/theme-ui/ui-theme-extensions.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-extensions.scss +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.scss +1 -1
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +3 -3
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Provider/Provider.js +17 -9
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/Field/Upload/Upload.d.ts +1 -1
- package/extensions/forms/Field/Upload/Upload.js +23 -9
- package/extensions/forms/Field/Upload/Upload.js.map +1 -1
- package/extensions/forms/Form/Element/Element.js +1 -1
- package/extensions/forms/Form/Element/Element.js.map +1 -1
- package/extensions/forms/Form/InfoOverlay/InfoOverlay.d.ts +36 -0
- package/extensions/forms/Form/InfoOverlay/InfoOverlay.js +122 -0
- package/extensions/forms/Form/InfoOverlay/InfoOverlay.js.map +1 -0
- package/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.d.ts +3 -0
- package/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js +60 -0
- package/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js.map +1 -0
- package/extensions/forms/Form/InfoOverlay/index.d.ts +2 -0
- package/extensions/forms/Form/InfoOverlay/index.js +3 -0
- package/extensions/forms/Form/InfoOverlay/index.js.map +1 -0
- package/extensions/forms/Form/InfoOverlay/setContent.d.ts +4 -0
- package/extensions/forms/Form/InfoOverlay/setContent.js +8 -0
- package/extensions/forms/Form/InfoOverlay/setContent.js.map +1 -0
- package/extensions/forms/Form/Section/Section.js.map +1 -1
- package/extensions/forms/Form/Section/style/themes/ui.js +1 -1
- package/extensions/forms/Form/Section/style/themes/ui.js.map +1 -1
- package/extensions/forms/Form/Visibility/Visibility.d.ts +8 -4
- package/extensions/forms/Form/Visibility/Visibility.js +16 -2
- package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/extensions/forms/Form/Visibility/VisibilityDocs.d.ts +1 -0
- package/extensions/forms/Form/Visibility/VisibilityDocs.js +9 -0
- package/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/extensions/forms/Form/index.d.ts +1 -0
- package/extensions/forms/Form/index.js +1 -0
- package/extensions/forms/Form/index.js.map +1 -1
- package/extensions/forms/Value/Upload/Upload.d.ts +3 -2
- package/extensions/forms/Value/Upload/Upload.js +18 -10
- package/extensions/forms/Value/Upload/Upload.js.map +1 -1
- package/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -1
- package/extensions/forms/Value/Upload/UploadDocs.js +5 -1
- package/extensions/forms/Value/Upload/UploadDocs.js.map +1 -1
- package/extensions/forms/Wizard/Container/WizardContainer.js +2 -3
- package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/extensions/forms/Wizard/style/dnb-wizard-layout.css +1 -1
- package/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
- package/extensions/forms/Wizard/style/dnb-wizard-layout.scss +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +12 -0
- package/extensions/forms/constants/locales/en-GB.js +12 -0
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +12 -0
- package/extensions/forms/constants/locales/index.d.ts +24 -0
- package/extensions/forms/constants/locales/nb-NO.d.ts +12 -0
- package/extensions/forms/constants/locales/nb-NO.js +12 -0
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/style/dnb-forms.css +1 -1
- package/extensions/forms/style/dnb-forms.min.css +1 -1
- package/fragments/drawer-list/DrawerListProvider.js +58 -21
- package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/helpers/useSharedState.d.ts +14 -6
- package/shared/helpers/useSharedState.js +52 -27
- package/shared/helpers/useSharedState.js.map +1 -1
- package/shared/locales/en-GB.js +1 -1
- package/shared/locales/en-GB.js.map +1 -1
- package/shared/locales/nb-NO.js +1 -1
- package/shared/locales/nb-NO.js.map +1 -1
- package/style/core/scopes.scss +1 -1
- package/style/dnb-ui-basis.css +1 -1
- package/style/dnb-ui-basis.min.css +1 -1
- package/style/dnb-ui-body.css +1 -1
- package/style/dnb-ui-body.min.css +1 -1
- package/style/dnb-ui-components.css +3 -2
- package/style/dnb-ui-components.min.css +2 -2
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/dnb-ui-extensions.css +1 -1
- package/style/dnb-ui-extensions.min.css +1 -1
- package/style/dnb-ui-forms.css +1 -1
- package/style/dnb-ui-forms.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +4 -3
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +4 -3
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +4 -3
- package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/style/themes/theme-ui/ui-theme-extensions.css +1 -1
- package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-extensions.scss +1 -1
- package/style/themes/theme-ui/ui-theme-forms.css +1 -1
- package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-forms.scss +1 -1
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +5 -5
- package/umd/dnb-ui-lib.min.js +1 -1
- /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.css → dnb-form-section-theme-sbanken.css} +0 -0
- /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.min.css → dnb-form-section-theme-sbanken.min.css} +0 -0
- /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.scss → dnb-form-section-theme-sbanken.scss} +0 -0
- /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.css → dnb-form-section-theme-ui.css} +0 -0
- /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.min.css → dnb-form-section-theme-ui.min.css} +0 -0
- /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.scss → dnb-form-section-theme-ui.scss} +0 -0
- /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.css → dnb-form-section-theme-sbanken.css} +0 -0
- /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.min.css → dnb-form-section-theme-sbanken.min.css} +0 -0
- /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.scss → dnb-form-section-theme-sbanken.scss} +0 -0
- /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.css → dnb-form-section-theme-ui.css} +0 -0
- /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.min.css → dnb-form-section-theme-ui.min.css} +0 -0
- /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.scss → dnb-form-section-theme-ui.scss} +0 -0
- /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.css → dnb-form-section-theme-sbanken.css} +0 -0
- /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.min.css → dnb-form-section-theme-sbanken.min.css} +0 -0
- /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.scss → dnb-form-section-theme-sbanken.scss} +0 -0
- /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.css → dnb-form-section-theme-ui.css} +0 -0
- /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.min.css → dnb-form-section-theme-ui.min.css} +0 -0
- /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.scss → dnb-form-section-theme-ui.scss} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","names":["_react","_interopRequireWildcard","require","_jsonPointer","_interopRequireDefault","_utils","_helpers","_Provider","_useUpdateEffect","_isAsync","_useSharedState","_Context","_useTranslation","_Context2","_structuredClone","_excluded","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","useLayoutEffect","window","React","useEffect","isArrayJsonPointer","Provider","props","_sharedAttachments$da","forceUpdate","useReducer","id","globalStatusId","defaultData","emptyData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete","onCommit","onClear","scrollTopOnSubmit","minimumAsyncBehaviorTime","asyncSubmitTimeout","sessionStorageId","ajvInstance","transformIn","transformOut","filterSubmitData","locale","translations","required","errorMessages","isolate","children","rest","Error","hasContext","useContext","DataContext","formElementRef","useRef","sharedLocale","SharedContext","translation","useTranslation","Field","ajvRef","makeAjvInstance","mountedFieldsRef","snapshotsRef","Map","existingFieldsRef","hasVisibleErrorRef","errorsRef","showAllErrorsRef","setShowAllErrors","useCallback","showAllErrors","current","setVisibleError","path","hasError","submitStateRef","setSubmitState","state","formStateRef","keepPending","setFormState","formState","options","fieldErrorRef","fieldStateRef","initialData","useMemo","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","isEmptyDataRef","ajvValidatorRef","executeAjvValidator","_ajvValidatorRef$curr","ajvErrorsToFormErrors","errors","validateData","checkFieldStateFor","_errorsRef$current","Boolean","hasFieldState","item","isMounted","hasFieldError","p","hasErrors","setFieldError","error","setFieldState","fieldState","mutateDataHandler","handler","remove","mutate","result","structuredClone","pointer","entries","fieldPropsRef","_ref","exists","_fieldErrorRef$curren","displayValue","fieldDisplayValueRef","internal","label","runFilter","_ref2","condition","_fieldErrorRef$curren2","wildcardPaths","_ref3","includes","parts","split","traverse","subData","subPath","idx","list","Array","isArray","_","visibleDataHandler","keepPaths","removePaths","visibleData","isVisible","isPreMounted","wasStepChange","filterDataHandler","filterData","fieldConnectionsRef","setFieldConnection","connections","setFieldProps","valuePropsRef","setValueProps","hasFieldWithAsyncValidator","_mountedFieldsRef$cur","isAsync","onChangeValidator","onBlurValidator","sharedData","useSharedState","sharedAttachments","createReferenceKey","sharedDataContext","setSharedData","extendSharedData","extend","extendAttachment","rerenderUseDataHook","cacheRef","shared","hasUsedInitialData","internalData","update","clearedData","clearData","_ref4","_requestAnimationFram","requestAnimationFrame","storeInSession","debounce","_window$sessionStorag2","setItem","stringify","process","env","NODE_ENV","setData","newData","preventUpdate","updateDataValue","_internalDataRef$curr","givenData","match","e","handlePathChangeUnvalidated","itm","fieldEventListenersRef","type","callback","handlePathChange","transformedData","cb","changeHandlerStackRef","addOnChangeHandler","some","setMountedFieldState","assign","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmitCall","args","enableAsyncBehavior","skipFieldValidation","skipErrorCheck","customStatus","asyncBehaviorIsEnabled","_mountedFieldsRef$cur2","_result2","_result4","_result5","_result6","_result7","submitResult","_result","_result3","warning","info","onSubmitContinueRef","handleSubmitListenersRef","setHandleSubmit","listeners","handleSubmitListeners","stop","preventSubmit","getSubmitData","mutatedData","filteredData","getSubmitParams","reduceToVisibleFields","transformData","formElement","params","resetForm","_formElement$reset","reset","removeItem","handleSubmit","completeResult","setFieldEventListener","_ref5","t","c","_onSubmitContinueRef$","_ajvRef$current","compile","useUpdateEffect","_ajvRef$current2","onTimeout","bufferedFormState","useFormStatusBuffer","waitFor","submitState","disabled","contextErrorMessages","contextValue","hasVisibleError","createElement","FormStatus","globalStatus","title","errorSummaryTitle","show","stateRef","nowRef","timeoutRef","setState","clear","clearTimeout","hadCompleteRef","activeElementRef","isTest","minimum","setTimeout","document","activeElement","Date","now","offset","Math","max","delay","complete","_activeElementRef$cur","_activeElementRef$cur2","focus","timeout","freeze","exports"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, {\n useRef,\n useMemo,\n useCallback,\n useReducer,\n useEffect,\n useContext,\n} from 'react'\nimport pointer, { JsonObject } from '../../utils/json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n FormError,\n} from '../../utils'\nimport {\n GlobalErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n SubmitState,\n Path,\n EventStateObject,\n OnSubmit,\n OnChange,\n EventReturnWithStateObject,\n ValueProps,\n OnSubmitParams,\n OnSubmitReturn,\n} from '../../types'\nimport type { IsolationProviderProps } from '../../Form/Isolation/Isolation'\nimport { debounce } from '../../../../shared/helpers'\nimport FieldPropsProvider from '../../Field/Provider'\nimport useUpdateEffect from '../../../../shared/helpers/useUpdateEffect'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport {\n SharedStateId,\n createReferenceKey,\n useSharedState,\n} from '../../../../shared/helpers/useSharedState'\nimport SharedContext, { ContextProps } from '../../../../shared/Context'\nimport useTranslation from '../../hooks/useTranslation'\nimport DataContext, {\n ContextState,\n EventListenerCall,\n FilterData,\n FilterDataHandler,\n HandleSubmitCallback,\n MountState,\n TransformData,\n VisibleDataHandler,\n} from '../Context'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type SharedAttachments<Data = unknown> = {\n visibleDataHandler?: VisibleDataHandler<Data>\n filterDataHandler?: FilterDataHandler<Data>\n hasErrors?: ContextState['hasErrors']\n hasFieldError?: ContextState['hasFieldError']\n setShowAllErrors?: ContextState['setShowAllErrors']\n setSubmitState?: ContextState['setSubmitState']\n rerenderUseDataHook?: () => void\n clearData?: () => void\n fieldConnectionsRef?: ContextState['fieldConnectionsRef']\n}\n\nexport type Props<Data extends JsonObject> =\n IsolationProviderProps<Data> & {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: SharedStateId\n /**\n * Unique ID to connect with a GlobalStatus\n */\n globalStatusId?: string\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Data\n /**\n * Default source data, only used if no other source is available, and not leading to updates if changed after mount\n */\n defaultData?: Data\n /**\n * Empty data, used to clear the data set.\n */\n emptyData?: unknown\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions<Data>\n /**\n * Custom Ajv instance, if you want to use your own\n */\n ajvInstance?: Ajv\n /**\n * Custom error messages for the whole data set\n */\n errorMessages?: GlobalErrorMessagesWithPaths\n /**\n * @deprecated Use the `filterData` in the second event parameter in the `onSubmit` or `onChange` events.\n */\n filterSubmitData?: FilterData\n /**\n * Transform the data context (internally as well) based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\n */\n transformIn?: TransformData\n /**\n * Mutate the data before it enters onSubmit or onChange based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\n */\n transformOut?: TransformData\n /**\n * Change handler for the whole data set.\n * You can provide an async function to show an indicator on the current label during a field change.\n */\n onChange?: OnChange<Data>\n /**\n * Change handler for each value\n */\n onPathChange?: (\n path: Path,\n value: unknown\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Will emit on a form submit – if validation has passed.\n * You can provide an async function to shows a submit indicator during submit. All form elements will be disabled during the submit.\n */\n onSubmit?: OnSubmit<Data>\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\n /**\n * Will be called when the onSubmit is finished and had not errors\n */\n onSubmitComplete?: (\n data: Data,\n /**\n * The result of the onSubmit function\n */\n result: unknown\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Minimum time to display the submit indicator.\n */\n minimumAsyncBehaviorTime?: number\n /**\n * The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission.\n */\n asyncSubmitTimeout?: number\n /**\n * Scroll to top on submit\n */\n scrollTopOnSubmit?: boolean\n /**\n * Key for caching the data in session storage\n */\n sessionStorageId?: string\n /**\n * Locale to use for all nested Eufemia components\n */\n locale?: ContextProps['locale']\n /**\n * Provide your own translations. Use the same format as defined in the translation files\n */\n translations?: ContextProps['translations']\n /**\n * Make all fields required\n */\n required?: boolean\n /**\n * The children of the context provider\n */\n children: React.ReactNode\n }\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>(\n props: Props<Data>\n) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n const {\n id,\n globalStatusId = 'main',\n defaultData,\n emptyData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n onCommit,\n onClear,\n scrollTopOnSubmit,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n sessionStorageId,\n ajvInstance,\n transformIn,\n transformOut,\n filterSubmitData,\n locale,\n translations,\n required,\n errorMessages,\n isolate,\n children,\n ...rest\n } = props\n\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n throw new Error(\n 'Use \"defaultData\" instead of \"data\" when using sessionStorageId'\n )\n }\n\n const { hasContext } = useContext(DataContext) || {}\n\n if (hasContext && !isolate) {\n throw new Error('DataContext (Form.Handler) can not be nested')\n }\n\n // - Element\n const formElementRef = useRef<HTMLFormElement>(null)\n\n // - Locale\n const { locale: sharedLocale } = useContext(SharedContext) || {}\n const translation = useTranslation().Field\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n\n // - Paths\n const mountedFieldsRef: ContextState['mountedFieldsRef'] = useRef({})\n\n // - Snapshots\n const snapshotsRef: ContextState['snapshotsRef'] = useRef(new Map())\n const existingFieldsRef: ContextState['existingFieldsRef'] = useRef(\n new Map()\n )\n\n // - Errors from provider validation (the whole data set)\n const hasVisibleErrorRef = useRef<Record<Path, boolean>>({})\n const errorsRef = useRef<Record<Path, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n const setVisibleError = useCallback((path: Path, hasError: boolean) => {\n if (hasError) {\n hasVisibleErrorRef.current[path] = hasError\n } else {\n delete hasVisibleErrorRef.current[path]\n }\n forceUpdate() // Will rerender the whole form initially\n }, [])\n const submitStateRef = useRef<Partial<EventStateObject>>({})\n const setSubmitState = useCallback((state: EventStateObject) => {\n submitStateRef.current = { ...submitStateRef.current, ...state }\n forceUpdate()\n }, [])\n\n // - Progress\n const formStateRef = useRef<SubmitState>()\n const keepPending = useRef(false)\n const setFormState = useCallback<ContextState['setFormState']>(\n (formState: SubmitState, options = {}) => {\n if (typeof options?.keepPending === 'boolean') {\n keepPending.current = options?.keepPending\n }\n formStateRef.current = formState\n forceUpdate()\n },\n []\n )\n\n // - States (e.g. error) reported by fields, based on their direct validation rules\n const fieldErrorRef = useRef<Record<Path, Error>>({})\n const fieldStateRef = useRef<Record<Path, SubmitState>>({})\n\n // - Data\n const initialData = useMemo<Data>(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n\n return data ?? defaultData\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Data>(initialData)\n const isEmptyDataRef = useRef(false)\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n const executeAjvValidator = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvValidatorRef.current?.(internalDataRef.current)) {\n // Errors found\n errorsRef.current = ajvErrorsToFormErrors(\n ajvValidatorRef.current.errors,\n internalDataRef.current\n )\n } else {\n errorsRef.current = undefined\n }\n }, [])\n const validateData = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n executeAjvValidator()\n forceUpdate()\n }, [executeAjvValidator])\n\n // - Error handling\n const checkFieldStateFor = useCallback(\n (path: Path, state: SubmitState) => {\n return Boolean(\n state === 'error'\n ? errorsRef.current?.[path] instanceof Error ||\n fieldErrorRef.current[path] instanceof Error\n : fieldStateRef.current[path] === state\n )\n },\n []\n )\n const hasFieldState = useCallback(\n (state: SubmitState) => {\n for (const path in mountedFieldsRef.current) {\n const item = mountedFieldsRef.current[path]\n if (item.isMounted && checkFieldStateFor(path, state)) {\n return true\n }\n }\n\n return false\n },\n [checkFieldStateFor]\n )\n const hasFieldError = useCallback(\n (path: Path) => {\n for (const p in mountedFieldsRef.current) {\n const item = mountedFieldsRef.current[path]\n if (\n item.isMounted &&\n p === path &&\n checkFieldStateFor(path, 'error')\n ) {\n return true\n }\n }\n\n return false\n },\n [checkFieldStateFor]\n )\n const hasErrors = useCallback(() => {\n return hasFieldState('error')\n }, [hasFieldState])\n\n /**\n * Sets the error state for a specific path\n */\n const setFieldError: ContextState['setFieldError'] = useCallback(\n (path, error) => {\n fieldErrorRef.current[path] = error\n },\n []\n )\n\n /**\n * Sets the field state for a specific path\n */\n const setFieldState: ContextState['setFieldState'] = useCallback(\n (path, fieldState) => {\n if (fieldState !== fieldStateRef.current[path]) {\n // The state for the target value was changed\n fieldStateRef.current[path] = fieldState\n forceUpdate()\n }\n },\n []\n )\n\n /**\n * Mutate the data set based on the filterData function\n */\n const mutateDataHandler = useCallback(\n (data: Data, handler: TransformData | FilterData, remove = false) => {\n const mutate = (path: Path, result: boolean | unknown) => {\n if (remove) {\n if (result === false) {\n data = structuredClone(data)\n pointer.remove(data, path)\n }\n } else {\n if (typeof result !== 'undefined') {\n data = structuredClone(data)\n pointer.set(data, path, result)\n }\n }\n }\n\n if (typeof handler === 'function') {\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n if (exists) {\n const value = pointer.get(data, path)\n const displayValue = fieldDisplayValueRef.current[path]\n const internal = {\n error: fieldErrorRef.current?.[path],\n }\n const result = handler({\n path,\n value,\n displayValue,\n label: props.label,\n data: internalDataRef.current,\n props,\n internal,\n })\n mutate(path, result)\n }\n })\n\n return data\n } else if (handler) {\n const runFilter = ({ path, condition }) => {\n const exists = pointer.has(data, path)\n if (exists) {\n const value = pointer.get(data, path)\n const props = fieldPropsRef.current[path]\n const internal = { error: fieldErrorRef.current?.[path] }\n const result =\n typeof condition === 'function'\n ? condition({\n value,\n data: internalDataRef.current,\n props,\n internal,\n })\n : condition\n mutate(path, result)\n }\n }\n\n const wildcardPaths = []\n\n Object.entries(handler).forEach(([path, condition]) => {\n if (path.includes('*')) {\n const parts = path.split(/\\/\\*/g)\n const exists = pointer.has(data, parts[0])\n if (exists) {\n const traverse = (\n subData: unknown,\n subPath: string,\n idx: number\n ) => {\n if (idx === parts.length - 1) {\n wildcardPaths.push({ path: subPath, condition })\n return\n }\n const list = pointer.get(subData, subPath)\n if (Array.isArray(list)) {\n list.forEach((_, i) => {\n traverse(\n list[i],\n `${subPath}/${i}${parts[idx + 1]}`,\n idx + 1\n )\n })\n }\n }\n traverse(data, parts[0], 0)\n }\n } else {\n runFilter({ path, condition })\n }\n })\n\n wildcardPaths.forEach(runFilter)\n\n return data\n }\n\n return data\n },\n []\n )\n\n /**\n * Ensure only visible data is returned\n */\n const visibleDataHandler: VisibleDataHandler<Data> = useCallback(\n (data = internalDataRef.current, { keepPaths, removePaths } = {}) => {\n const visibleData = {} as Partial<Data>\n\n for (const path in mountedFieldsRef.current) {\n const item = mountedFieldsRef.current[path]\n if (\n item &&\n item.isVisible !== false &&\n (item.isPreMounted !== false || item.wasStepChange === true) &&\n (removePaths ? !removePaths.includes(path) : true) &&\n pointer.has(data, path)\n ) {\n pointer.set(visibleData, path, pointer.get(data, path))\n }\n }\n\n if (keepPaths) {\n keepPaths.forEach((path) => {\n if (pointer.has(data, path)) {\n pointer.set(visibleData, path, pointer.get(data, path))\n }\n })\n }\n\n return visibleData\n },\n []\n )\n\n /**\n * Filter the data set based on the filterData function\n */\n const filterDataHandler = useCallback(\n (data: Data, filter: FilterData) => {\n if (filter) {\n return mutateDataHandler(data, filter, true)\n }\n\n return data\n },\n [mutateDataHandler]\n )\n\n const filterData = useCallback(\n (filter: FilterData, data = internalDataRef.current) => {\n return filterDataHandler(data, filter)\n },\n [filterDataHandler]\n )\n\n const fieldDisplayValueRef: ContextState['fieldDisplayValueRef'] =\n useRef({})\n\n const fieldConnectionsRef = useRef<\n Record<Path, Record<string, unknown>>\n >({})\n const setFieldConnection = useCallback(\n (path: Path, connections: Record<string, unknown>) => {\n fieldConnectionsRef.current[path] = connections\n },\n []\n )\n\n const fieldPropsRef = useRef<Record<Path, FieldProps>>({})\n const setFieldProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = props\n },\n []\n )\n\n const valuePropsRef = useRef<Record<Path, ValueProps>>({})\n const setValueProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n valuePropsRef.current[path] = props\n },\n []\n )\n\n const hasFieldWithAsyncValidator = useCallback(() => {\n for (const path in fieldPropsRef.current) {\n if (mountedFieldsRef.current[path]?.isMounted) {\n const props = fieldPropsRef.current[path]\n if (\n isAsync(props.onChangeValidator) ||\n isAsync(props.onBlurValidator)\n ) {\n return true\n }\n }\n }\n\n return false\n }, [])\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAttachments = useSharedState<SharedAttachments<Data>>(\n createReferenceKey(id, 'attachments')\n )\n const sharedDataContext = useSharedState<ContextState>(\n createReferenceKey(id, 'data-context')\n )\n\n const setSharedData = sharedData.set\n const extendSharedData = sharedData.extend\n const extendAttachment = sharedAttachments.extend\n const rerenderUseDataHook = sharedAttachments.data?.rerenderUseDataHook\n\n const cacheRef = useRef({\n data,\n schema,\n shared: sharedData.data,\n hasUsedInitialData: false,\n })\n\n const internalData = useMemo(() => {\n // NB: \"sharedData.data\" is only available on a rerender.\n // Update the shared state, if initialData is given and no shared state is available.\n // We do almost the same later in a useLayoutEffect, but we need to do it here as well, so we set the data as early as possible.\n if (id && initialData && !sharedData.data) {\n sharedData.update(initialData)\n }\n\n // Merge both internal data and the shared state, if it both where given\n if (\n id &&\n initialData &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data &&\n internalDataRef.current === initialData &&\n typeof internalDataRef.current === 'object'\n ) {\n return {\n ...internalDataRef.current,\n ...(sharedData.data || {}),\n }\n }\n\n // Use shared state if no initial and initial data, and the shared state exists\n if (\n id &&\n !initialData &&\n !internalDataRef.current &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data\n ) {\n return sharedData.data\n }\n\n // Merge the internal data with the shared state, if the shared was updated and not the same as internal data\n if (\n id &&\n sharedData.data &&\n cacheRef.current.shared !== sharedData.data &&\n sharedData.data !== internalDataRef.current &&\n typeof internalDataRef.current === 'object'\n ) {\n cacheRef.current.shared = sharedData.data\n\n if (isEmptyDataRef.current) {\n return (\n Array.isArray(internalDataRef.current) ? [] : clearedData\n ) as Data\n }\n\n return {\n ...internalDataRef.current,\n ...(sharedData.data || {}),\n }\n }\n\n // When external data has changed, update the internal data\n if (data !== cacheRef.current.data) {\n cacheRef.current.data = data\n return data\n }\n\n return internalDataRef.current\n }, [id, initialData, sharedData, data])\n\n internalDataRef.current =\n props.path && pointer.has(internalData, props.path)\n ? pointer.get(internalData, props.path)\n : internalData\n\n const clearData = useCallback(() => {\n isEmptyDataRef.current = true\n internalDataRef.current = ((typeof emptyData === 'function'\n ? emptyData(internalDataRef.current)\n : emptyData) ??\n (Array.isArray(internalDataRef.current) ? [] : clearedData)) as Data\n\n if (id) {\n setSharedData?.(internalDataRef.current)\n }\n\n forceUpdate()\n onClear?.()\n\n requestAnimationFrame?.(() => {\n isEmptyDataRef.current = false\n }) // Delay so the field validation error message are not shown\n }, [emptyData, id, onClear, setSharedData])\n\n useLayoutEffect(() => {\n // Set the shared state, if initialData was given\n if (id && initialData && !sharedData.data) {\n extendSharedData?.(initialData)\n }\n }, [id, initialData, extendSharedData, sharedData.data])\n\n useMemo(() => {\n executeAjvValidator()\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [internalDataRef.current]) // run validation when internal data has changed\n\n useLayoutEffect(() => {\n if (id) {\n extendAttachment?.({\n visibleDataHandler,\n filterDataHandler,\n hasErrors,\n hasFieldError,\n setShowAllErrors,\n setSubmitState,\n clearData,\n fieldConnectionsRef,\n })\n if (filterSubmitData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n extendAttachment,\n visibleDataHandler,\n filterDataHandler,\n filterSubmitData,\n hasErrors,\n hasFieldError,\n id,\n rerenderUseDataHook,\n setShowAllErrors,\n setSubmitState,\n clearData,\n ])\n\n const storeInSession = useMemo(() => {\n return debounce(\n () => {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(internalDataRef.current)\n )\n },\n process.env.NODE_ENV === 'test' ? 1 : 800\n )\n }, [sessionStorageId])\n\n const setData = useCallback(\n (newData: Data, preventUpdate = false) => {\n // - Mutate the data context\n if (transformIn) {\n newData = mutateDataHandler(newData, transformIn)\n }\n\n internalDataRef.current = newData\n\n if (id) {\n // Will ensure that Form.getData() gets the correct data\n extendSharedData?.(newData)\n if (filterSubmitData) {\n rerenderUseDataHook?.()\n }\n }\n\n if (sessionStorageId && typeof window !== 'undefined') {\n storeInSession()\n }\n\n if (!preventUpdate) {\n forceUpdate() // Will rerender the whole form initially\n }\n },\n [\n extendSharedData,\n filterSubmitData,\n id,\n mutateDataHandler,\n rerenderUseDataHook,\n sessionStorageId,\n storeInSession,\n transformIn,\n ]\n )\n\n /**\n * Update the data set\n */\n const updateDataValue: ContextState['updateDataValue'] = useCallback(\n (path, value, { preventUpdate } = {}) => {\n if (!path) {\n return\n }\n\n const givenData = (\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalDataRef.current ??\n (path.match(isArrayJsonPointer) ? [] : {})\n ) as Data\n\n let newData: Data = null\n try {\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n newData = structuredClone(givenData)\n } catch (e) {\n newData = givenData\n }\n\n if (path !== '/') {\n pointer.set(newData, path, value)\n }\n\n setData(newData, preventUpdate)\n },\n [setData]\n )\n\n /**\n * Update the data set on user interaction (unvalidated)\n */\n const handlePathChangeUnvalidated: ContextState['handlePathChange'] =\n useCallback(\n async (path, value) => {\n if (!path) {\n return null\n }\n\n updateDataValue(path, value)\n\n if (isAsync(onPathChange)) {\n await onPathChange?.(path, value)\n } else {\n onPathChange?.(path, value)\n }\n\n for (const itm of fieldEventListenersRef.current) {\n if (itm.type === 'onPathChange' && itm.path === path) {\n const { callback } = itm\n if (isAsync(callback)) {\n await callback({ value })\n } else {\n callback({ value })\n }\n }\n }\n },\n [onPathChange, updateDataValue]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: ContextState['handlePathChange'] = useCallback(\n async (path, value = '_undefined_') => {\n if (!path) {\n return null\n }\n\n if (value !== '_undefined_') {\n handlePathChangeUnvalidated(path, value)\n }\n\n showAllErrorsRef.current = false\n\n validateData()\n\n const data = internalDataRef.current as Data\n const options = { filterData }\n const transformedData = transformOut\n ? mutateDataHandler(data, transformOut)\n : data\n\n for (const cb of changeHandlerStackRef.current) {\n if (isAsync(onChange)) {\n await cb(transformedData, options)\n } else {\n cb(transformedData, options)\n }\n }\n\n if (isAsync(onChange)) {\n return await onChange(transformedData, options)\n }\n\n return onChange?.(transformedData, options)\n },\n [\n filterData,\n handlePathChangeUnvalidated,\n mutateDataHandler,\n onChange,\n transformOut,\n validateData,\n ]\n )\n\n const changeHandlerStackRef = useRef<Array<OnChange<Data>>>([])\n const addOnChangeHandler = useCallback((callback: OnChange<Data>) => {\n const exists = changeHandlerStackRef.current.some((cb) => {\n return callback === cb\n })\n if (!exists) {\n changeHandlerStackRef.current.push(callback)\n }\n }, [])\n\n // - Mounted fields\n const setMountedFieldState = useCallback(\n (path: Path, state: MountState) => {\n if (!mountedFieldsRef.current[path]) {\n mountedFieldsRef.current[path] = { ...state }\n } else {\n Object.assign(mountedFieldsRef.current[path], state)\n }\n\n for (const itm of fieldEventListenersRef.current) {\n if (itm.type === 'onMount' && itm.path === path) {\n const { callback } = itm\n callback()\n }\n }\n },\n []\n )\n\n // - Features\n const scrollToTop = useCallback(() => {\n if (typeof window !== 'undefined') {\n window?.scrollTo?.({ top: 0, behavior: 'smooth' })\n }\n }, [])\n\n /**\n * Shared logic dedicated to submit the whole form\n */\n const handleSubmitCall = useCallback<ContextState['handleSubmitCall']>(\n async (args) => {\n const {\n onSubmit,\n enableAsyncBehavior,\n skipFieldValidation,\n skipErrorCheck,\n } = args\n\n setSubmitState({ error: undefined, customStatus: undefined })\n\n const asyncBehaviorIsEnabled =\n (skipErrorCheck\n ? true\n : // Don't enable async behavior if we have errors, but when we have a pending state\n !hasErrors() || hasFieldState('pending')) &&\n (enableAsyncBehavior || hasFieldWithAsyncValidator())\n\n if (asyncBehaviorIsEnabled) {\n setFormState('pending')\n }\n\n // Just call the submit listeners \"once\", and not on the retry/recall\n if (!skipFieldValidation) {\n for (const item of fieldEventListenersRef.current) {\n const { path, type, callback } = item\n if (\n type === 'onSubmit' &&\n mountedFieldsRef.current[path]?.isMounted\n ) {\n // Call all submit listener callbacks (e.g. to validate fields)\n if (asyncBehaviorIsEnabled) {\n await callback()\n } else {\n callback()\n }\n }\n }\n }\n\n let result: EventStateObject\n\n if (\n !(skipErrorCheck ? false : hasErrors()) &&\n !hasFieldState('pending') &&\n (skipFieldValidation ? true : !hasFieldState('error'))\n ) {\n let submitResult: OnSubmitReturn\n try {\n if (isolate) {\n submitResult = await onCommit?.(internalDataRef.current, {\n clearData,\n })\n } else {\n submitResult = await onSubmit()\n }\n\n if (submitResult instanceof Error) {\n throw submitResult\n }\n } catch (error) {\n submitResult = { error }\n }\n\n result = submitResult as EventStateObject\n\n if (asyncBehaviorIsEnabled) {\n if (result?.error) {\n setFormState('abort')\n } else if (keepPending.current !== true) {\n setFormState('complete')\n }\n }\n\n // Force the state to be set by a custom status\n if (result?.['status']) {\n setFormState(result?.['status'])\n }\n\n if (\n result?.error ||\n result?.warning ||\n result?.info ||\n result?.customStatus\n ) {\n setSubmitState(result)\n }\n } else {\n if (asyncBehaviorIsEnabled) {\n window.requestAnimationFrame(() => {\n setFormState(undefined)\n })\n\n if (!skipFieldValidation) {\n // Add a event listener to continue the submit after the pending state is resolved\n onSubmitContinueRef.current = () => {\n window.requestAnimationFrame(() => {\n // Do not call the validators again,\n // because we already did it in the first call\n // If they are async, we wait for them to finish anyway\n handleSubmitCall({ ...args, skipFieldValidation: true })\n })\n }\n }\n }\n\n onSubmitRequest?.()\n\n setShowAllErrors(true)\n }\n\n return result\n },\n [\n clearData,\n hasErrors,\n hasFieldState,\n hasFieldWithAsyncValidator,\n isolate,\n onCommit,\n onSubmitRequest,\n setFormState,\n setShowAllErrors,\n setSubmitState,\n ]\n )\n\n const handleSubmitListenersRef = useRef<Array<HandleSubmitCallback>>([])\n const setHandleSubmit: ContextState['setHandleSubmit'] = useCallback(\n (callback, { remove = false } = {}) => {\n const listeners = handleSubmitListenersRef.current\n if (remove) {\n handleSubmitListenersRef.current = listeners.filter(\n (item) => item !== callback\n )\n } else if (!listeners.includes(callback)) {\n listeners.push(callback)\n }\n },\n []\n )\n const handleSubmitListeners = useCallback(() => {\n let stop = false\n const preventSubmit = () => (stop = true)\n handleSubmitListenersRef.current.forEach((cb) => {\n cb({ preventSubmit })\n })\n return stop\n }, [])\n\n const getSubmitData = useCallback(() => {\n // - Mutate the data context\n const data = internalDataRef.current\n const mutatedData = transformOut\n ? mutateDataHandler(data, transformOut)\n : data\n\n // @deprecated – can be removed in v11 (use only mutatedData instead)\n const filteredData = filterSubmitData\n ? filterDataHandler(mutatedData, filterSubmitData)\n : mutatedData\n\n return filteredData\n }, [\n filterDataHandler,\n filterSubmitData,\n mutateDataHandler,\n transformOut,\n ])\n\n const getSubmitParams = useCallback(() => {\n const reduceToVisibleFields: VisibleDataHandler<Data> = (\n data,\n options\n ) => {\n return visibleDataHandler(\n transformOut ? mutateDataHandler(data, transformOut) : data,\n options\n )\n }\n\n const transformData = (data: Data, handler: TransformData) => {\n return mutateDataHandler(data, handler)\n }\n\n const formElement = formElementRef.current\n const params: OnSubmitParams<Data> = {\n filterData,\n reduceToVisibleFields,\n transformData,\n resetForm: () => {\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n }\n\n forceUpdate() // in order to fill \"empty fields\" again with their internal states\n },\n clearData,\n }\n\n return params\n }, [\n clearData,\n filterData,\n mutateDataHandler,\n sessionStorageId,\n transformOut,\n visibleDataHandler,\n ])\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<\n ContextState['handleSubmit']\n >(async () => {\n return await handleSubmitCall({\n enableAsyncBehavior: isAsync(onSubmit),\n onSubmit: async () => {\n if (handleSubmitListeners()) {\n return // stop here\n }\n\n const data = getSubmitData()\n const options = getSubmitParams()\n let result = undefined\n\n if (isAsync(onSubmit)) {\n result = await onSubmit(data, options)\n } else {\n result = onSubmit?.(data, options)\n }\n\n const completeResult = await onSubmitComplete?.(data, result)\n if (completeResult) {\n result =\n Object.keys(result).length > 0\n ? { ...result, ...completeResult }\n : completeResult\n }\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n\n return result\n },\n })\n }, [\n getSubmitData,\n getSubmitParams,\n handleSubmitCall,\n handleSubmitListeners,\n onSubmit,\n onSubmitComplete,\n scrollToTop,\n scrollTopOnSubmit,\n ])\n\n // Collect listeners to be called during form submit\n const fieldEventListenersRef = useRef<Array<EventListenerCall>>([])\n const setFieldEventListener = useCallback(\n (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => {\n fieldEventListenersRef.current =\n fieldEventListenersRef.current.filter(\n ({ path: p, type: t, callback: c }) => {\n return !(p === path && t === type && c === callback)\n }\n )\n fieldEventListenersRef.current.push({ path, type, callback })\n },\n []\n )\n\n // Handle unresolved field states during async submit\n const onSubmitContinueRef = useRef<() => void>(null)\n if (!hasFieldState('pending')) {\n onSubmitContinueRef.current?.()\n onSubmitContinueRef.current = null\n }\n\n // - ajv validator routines\n useEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n }, [schema, validateData])\n useUpdateEffect(() => {\n if (schema && schema !== cacheRef.current.schema) {\n cacheRef.current.schema = schema\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n\n validateData()\n forceUpdate()\n }\n }, [schema, validateData, forceUpdate])\n\n const onTimeout = useCallback(() => {\n setFormState(undefined)\n setSubmitState({\n info: undefined,\n warning: undefined,\n error: undefined,\n customStatus: undefined,\n })\n }, [setFormState, setSubmitState])\n\n const { bufferedFormState: formState } = useFormStatusBuffer({\n formState: formStateRef.current,\n waitFor: hasFieldState('pending'),\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n })\n\n const submitState = submitStateRef.current\n const disabled =\n typeof rest?.['disabled'] === 'boolean'\n ? rest?.['disabled']\n : (formState === 'pending') === true\n ? true\n : undefined\n const contextErrorMessages =\n errorMessages?.[locale ?? sharedLocale] || errorMessages\n\n const contextValue: ContextState = {\n /** Method */\n handlePathChange,\n handlePathChangeUnvalidated,\n handleSubmit,\n setMountedFieldState,\n handleSubmitCall,\n setFormState,\n setSubmitState,\n setShowAllErrors,\n setVisibleError,\n setFieldEventListener,\n setFieldState,\n setFieldError,\n setFieldConnection,\n setFieldProps,\n setValueProps,\n hasErrors,\n hasFieldError,\n hasFieldState,\n validateData,\n updateDataValue,\n setData,\n clearData,\n visibleDataHandler,\n filterDataHandler,\n getSubmitData,\n getSubmitParams,\n addOnChangeHandler,\n setHandleSubmit,\n scrollToTop,\n\n /** State handling */\n schema,\n disabled,\n required,\n formState,\n submitState,\n contextErrorMessages,\n hasContext: true,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n hasVisibleError: Object.keys(hasVisibleErrorRef.current).length > 0,\n fieldConnectionsRef,\n fieldDisplayValueRef,\n fieldPropsRef,\n valuePropsRef,\n mountedFieldsRef,\n snapshotsRef,\n existingFieldsRef,\n formElementRef,\n isEmptyDataRef,\n fieldErrorRef,\n ajvInstance: ajvRef.current,\n\n /** Additional */\n id,\n data: internalDataRef.current,\n internalDataRef,\n props,\n ...rest,\n }\n\n if (id) {\n sharedDataContext.set(contextValue)\n }\n\n return (\n <DataContext.Provider value={contextValue}>\n <FieldPropsProvider\n FormStatus={\n globalStatusId\n ? {\n globalStatus: {\n id: globalStatusId,\n title: translation.errorSummaryTitle,\n show: showAllErrorsRef.current,\n },\n }\n : undefined\n }\n formElement={disabled ? { disabled: true } : undefined}\n locale={locale ? locale : undefined}\n translations={translations ? translations : undefined}\n >\n {children}\n </FieldPropsProvider>\n </DataContext.Provider>\n )\n}\n\ntype FormStatusBufferProps = {\n minimumAsyncBehaviorTime?: Props<JsonObject>['minimumAsyncBehaviorTime']\n asyncSubmitTimeout?: Props<JsonObject>['asyncSubmitTimeout']\n formState: ContextState['formState']\n waitFor: boolean\n onTimeout: () => void\n}\n\nfunction useFormStatusBuffer(props: FormStatusBufferProps) {\n const {\n formState,\n waitFor,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n } = props || {}\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const stateRef = useRef<SubmitState>()\n const nowRef = useRef<number | null>(null)\n const timeoutRef = useRef<{\n complete?: NodeJS.Timeout | null\n reset?: NodeJS.Timeout | null\n timeout?: NodeJS.Timeout | null\n }>({})\n\n const setState = useCallback(\n (state: SubmitState) => {\n stateRef.current = state\n forceUpdate()\n },\n [forceUpdate]\n )\n\n const clear = useCallback(() => {\n for (const key in timeoutRef.current) {\n clearTimeout(timeoutRef.current[key])\n }\n }, [])\n\n const hadCompleteRef = useRef(false)\n const activeElementRef = useRef<HTMLElement>(null)\n\n useEffect(() => {\n // This offset is used to calculate the delay,\n // which ensures that the form state is displayed for at least minimumAsyncBehaviorTime duration.\n // If the form was 'pending' for less than minimumAsyncBehaviorTime,\n // the delay will be the remaining time to reach minimumAsyncBehaviorTime.\n const isTest = process.env.NODE_ENV === 'test'\n const minimum =\n minimumAsyncBehaviorTime ??\n // make it testable\n (isTest ? 1 : 1000)\n\n if (stateRef.current && formState === 'error') {\n clear()\n setState(undefined)\n return\n }\n\n if (formState === 'abort') {\n clear()\n setState('abort')\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n }, minimum)\n return\n }\n\n if (formState === 'complete') {\n hadCompleteRef.current = true\n }\n\n if (formState === 'pending' && stateRef.current !== 'pending') {\n activeElementRef.current = document.activeElement as HTMLElement\n clear()\n nowRef.current = Date.now()\n hadCompleteRef.current = false\n setState('pending')\n } else if (stateRef.current === 'pending') {\n const offset = Math.max(Date.now() - nowRef.current)\n const delay = isTest ? minimum : Math.max(minimum - offset, 0)\n\n if (!waitFor) {\n timeoutRef.current.complete = setTimeout(() => {\n if (hadCompleteRef.current) {\n setState('complete')\n }\n window.requestAnimationFrame(() => {\n activeElementRef.current?.focus?.()\n })\n }, delay)\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n clear()\n }, delay + minimum)\n }\n }\n\n if (stateRef.current === 'pending') {\n timeoutRef.current.timeout = setTimeout(() => {\n clear()\n setState(undefined)\n onTimeout?.()\n }, asyncSubmitTimeout ?? 30000)\n }\n\n return clear\n }, [\n clear,\n minimumAsyncBehaviorTime,\n formState,\n setState,\n waitFor,\n asyncSubmitTimeout,\n onTimeout,\n ])\n\n return { bufferedFormState: stateRef.current }\n}\n\nexport const clearedData = Object.freeze({})\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Provider.js","names":["_react","_interopRequireWildcard","require","_jsonPointer","_interopRequireDefault","_utils","_helpers","_Provider","_useUpdateEffect","_isAsync","_useSharedState","_Context","_useTranslation","_Context2","_structuredClone","_excluded","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","useLayoutEffect","window","React","useEffect","isArrayJsonPointer","Provider","props","_sharedAttachments$da","forceUpdate","useReducer","id","globalStatusId","defaultData","emptyData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete","onCommit","onClear","scrollTopOnSubmit","minimumAsyncBehaviorTime","asyncSubmitTimeout","sessionStorageId","ajvInstance","transformIn","transformOut","filterSubmitData","locale","translations","required","errorMessages","isolate","children","rest","Error","hasContext","useContext","DataContext","formElementRef","useRef","sharedLocale","SharedContext","translation","useTranslation","Field","ajvRef","makeAjvInstance","mountedFieldsRef","snapshotsRef","Map","existingFieldsRef","hasVisibleErrorRef","errorsRef","showAllErrorsRef","setShowAllErrors","useCallback","showAllErrors","current","setVisibleError","path","hasError","submitStateRef","setSubmitState","state","formStateRef","keepPending","setFormState","formState","options","fieldErrorRef","fieldStateRef","initialData","useMemo","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","isEmptyDataRef","ajvValidatorRef","executeAjvValidator","_ajvValidatorRef$curr","ajvErrorsToFormErrors","errors","validateData","checkFieldStateFor","_errorsRef$current","Boolean","hasFieldState","item","isMounted","hasFieldError","p","hasErrors","setFieldError","error","setFieldState","fieldState","mutateDataHandler","handler","remove","mutate","result","structuredClone","pointer","entries","fieldPropsRef","_ref","exists","_fieldErrorRef$curren","displayValue","fieldDisplayValueRef","internal","label","runFilter","_ref2","condition","_fieldErrorRef$curren2","wildcardPaths","_ref3","includes","parts","split","traverse","subData","subPath","idx","list","Array","isArray","_","visibleDataHandler","keepPaths","removePaths","visibleData","isVisible","isPreMounted","wasStepChange","filterDataHandler","filterData","fieldConnectionsRef","setFieldConnection","connections","setFieldProps","valuePropsRef","setValueProps","hasFieldWithAsyncValidator","_mountedFieldsRef$cur","isAsync","onChangeValidator","onBlurValidator","sharedData","useSharedState","sharedAttachments","createReferenceKey","sharedDataContext","setSharedData","extendSharedData","extend","extendAttachment","rerenderUseDataHook","cacheRef","shared","hasUsedInitialData","internalData","update","clearedData","clearData","_ref4","_requestAnimationFram","requestAnimationFrame","preventSyncOfSameInstance","storeInSession","debounce","_window$sessionStorag2","setItem","stringify","process","env","NODE_ENV","setData","newData","preventUpdate","updateDataValue","_internalDataRef$curr","givenData","match","e","handlePathChangeUnvalidated","itm","fieldEventListenersRef","type","callback","handlePathChange","transformedData","cb","changeHandlerStackRef","addOnChangeHandler","some","setMountedFieldState","assign","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmitCall","args","enableAsyncBehavior","skipFieldValidation","skipErrorCheck","customStatus","asyncBehaviorIsEnabled","_mountedFieldsRef$cur2","_result2","_result4","_result5","_result6","_result7","submitResult","_result","_result3","warning","info","onSubmitContinueRef","handleSubmitListenersRef","setHandleSubmit","listeners","handleSubmitListeners","stop","preventSubmit","getSubmitData","mutatedData","filteredData","getSubmitParams","reduceToVisibleFields","transformData","formElement","params","resetForm","_formElement$reset","reset","removeItem","handleSubmit","completeResult","setFieldEventListener","_ref5","t","c","_onSubmitContinueRef$","_ajvRef$current","compile","useUpdateEffect","_ajvRef$current2","onTimeout","bufferedFormState","useFormStatusBuffer","waitFor","submitState","disabled","contextErrorMessages","contextValue","hasVisibleError","createElement","FormStatus","globalStatus","title","errorSummaryTitle","show","stateRef","nowRef","timeoutRef","setState","clear","clearTimeout","hadCompleteRef","activeElementRef","isTest","minimum","setTimeout","document","activeElement","Date","now","offset","Math","max","delay","complete","_activeElementRef$cur","_activeElementRef$cur2","focus","timeout","freeze","exports"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, {\n useRef,\n useMemo,\n useCallback,\n useReducer,\n useEffect,\n useContext,\n} from 'react'\nimport pointer, { JsonObject } from '../../utils/json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n FormError,\n} from '../../utils'\nimport {\n GlobalErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n SubmitState,\n Path,\n EventStateObject,\n OnSubmit,\n OnChange,\n EventReturnWithStateObject,\n ValueProps,\n OnSubmitParams,\n OnSubmitReturn,\n} from '../../types'\nimport type { IsolationProviderProps } from '../../Form/Isolation/Isolation'\nimport { debounce } from '../../../../shared/helpers'\nimport FieldPropsProvider from '../../Field/Provider'\nimport useUpdateEffect from '../../../../shared/helpers/useUpdateEffect'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport {\n SharedStateId,\n createReferenceKey,\n useSharedState,\n} from '../../../../shared/helpers/useSharedState'\nimport SharedContext, { ContextProps } from '../../../../shared/Context'\nimport useTranslation from '../../hooks/useTranslation'\nimport DataContext, {\n ContextState,\n EventListenerCall,\n FilterData,\n FilterDataHandler,\n HandleSubmitCallback,\n MountState,\n TransformData,\n VisibleDataHandler,\n} from '../Context'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type SharedAttachments<Data = unknown> = {\n visibleDataHandler?: VisibleDataHandler<Data>\n filterDataHandler?: FilterDataHandler<Data>\n hasErrors?: ContextState['hasErrors']\n hasFieldError?: ContextState['hasFieldError']\n setShowAllErrors?: ContextState['setShowAllErrors']\n setSubmitState?: ContextState['setSubmitState']\n rerenderUseDataHook?: () => void\n clearData?: () => void\n fieldConnectionsRef?: ContextState['fieldConnectionsRef']\n}\n\nexport type Props<Data extends JsonObject> =\n IsolationProviderProps<Data> & {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: SharedStateId\n /**\n * Unique ID to connect with a GlobalStatus\n */\n globalStatusId?: string\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Data\n /**\n * Default source data, only used if no other source is available, and not leading to updates if changed after mount\n */\n defaultData?: Data\n /**\n * Empty data, used to clear the data set.\n */\n emptyData?: unknown\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions<Data>\n /**\n * Custom Ajv instance, if you want to use your own\n */\n ajvInstance?: Ajv\n /**\n * Custom error messages for the whole data set\n */\n errorMessages?: GlobalErrorMessagesWithPaths\n /**\n * @deprecated Use the `filterData` in the second event parameter in the `onSubmit` or `onChange` events.\n */\n filterSubmitData?: FilterData\n /**\n * Transform the data context (internally as well) based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\n */\n transformIn?: TransformData\n /**\n * Mutate the data before it enters onSubmit or onChange based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\n */\n transformOut?: TransformData\n /**\n * Change handler for the whole data set.\n * You can provide an async function to show an indicator on the current label during a field change.\n */\n onChange?: OnChange<Data>\n /**\n * Change handler for each value\n */\n onPathChange?: (\n path: Path,\n value: unknown\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Will emit on a form submit – if validation has passed.\n * You can provide an async function to shows a submit indicator during submit. All form elements will be disabled during the submit.\n */\n onSubmit?: OnSubmit<Data>\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\n /**\n * Will be called when the onSubmit is finished and had not errors\n */\n onSubmitComplete?: (\n data: Data,\n /**\n * The result of the onSubmit function\n */\n result: unknown\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Minimum time to display the submit indicator.\n */\n minimumAsyncBehaviorTime?: number\n /**\n * The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission.\n */\n asyncSubmitTimeout?: number\n /**\n * Scroll to top on submit\n */\n scrollTopOnSubmit?: boolean\n /**\n * Key for caching the data in session storage\n */\n sessionStorageId?: string\n /**\n * Locale to use for all nested Eufemia components\n */\n locale?: ContextProps['locale']\n /**\n * Provide your own translations. Use the same format as defined in the translation files\n */\n translations?: ContextProps['translations']\n /**\n * Make all fields required\n */\n required?: boolean\n /**\n * The children of the context provider\n */\n children: React.ReactNode\n }\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>(\n props: Props<Data>\n) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n const {\n id,\n globalStatusId = 'main',\n defaultData,\n emptyData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n onCommit,\n onClear,\n scrollTopOnSubmit,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n sessionStorageId,\n ajvInstance,\n transformIn,\n transformOut,\n filterSubmitData,\n locale,\n translations,\n required,\n errorMessages,\n isolate,\n children,\n ...rest\n } = props\n\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n throw new Error(\n 'Use \"defaultData\" instead of \"data\" when using sessionStorageId'\n )\n }\n\n const { hasContext } = useContext(DataContext) || {}\n\n if (hasContext && !isolate) {\n throw new Error('DataContext (Form.Handler) can not be nested')\n }\n\n // - Element\n const formElementRef = useRef<HTMLFormElement>(null)\n\n // - Locale\n const { locale: sharedLocale } = useContext(SharedContext) || {}\n const translation = useTranslation().Field\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n\n // - Paths\n const mountedFieldsRef: ContextState['mountedFieldsRef'] = useRef({})\n\n // - Snapshots\n const snapshotsRef: ContextState['snapshotsRef'] = useRef(new Map())\n const existingFieldsRef: ContextState['existingFieldsRef'] = useRef(\n new Map()\n )\n\n // - Errors from provider validation (the whole data set)\n const hasVisibleErrorRef = useRef<Record<Path, boolean>>({})\n const errorsRef = useRef<Record<Path, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n const setVisibleError = useCallback((path: Path, hasError: boolean) => {\n if (hasError) {\n hasVisibleErrorRef.current[path] = hasError\n } else {\n delete hasVisibleErrorRef.current[path]\n }\n forceUpdate() // Will rerender the whole form initially\n }, [])\n const submitStateRef = useRef<Partial<EventStateObject>>({})\n const setSubmitState = useCallback((state: EventStateObject) => {\n submitStateRef.current = { ...submitStateRef.current, ...state }\n forceUpdate()\n }, [])\n\n // - Progress\n const formStateRef = useRef<SubmitState>()\n const keepPending = useRef(false)\n const setFormState = useCallback<ContextState['setFormState']>(\n (formState: SubmitState, options = {}) => {\n if (typeof options?.keepPending === 'boolean') {\n keepPending.current = options?.keepPending\n }\n formStateRef.current = formState\n forceUpdate()\n },\n []\n )\n\n // - States (e.g. error) reported by fields, based on their direct validation rules\n const fieldErrorRef = useRef<Record<Path, Error>>({})\n const fieldStateRef = useRef<Record<Path, SubmitState>>({})\n\n // - Data\n const initialData = useMemo<Data>(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n\n return data ?? defaultData\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Data>(initialData)\n const isEmptyDataRef = useRef(false)\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n const executeAjvValidator = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvValidatorRef.current?.(internalDataRef.current)) {\n // Errors found\n errorsRef.current = ajvErrorsToFormErrors(\n ajvValidatorRef.current.errors,\n internalDataRef.current\n )\n } else {\n errorsRef.current = undefined\n }\n }, [])\n const validateData = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n executeAjvValidator()\n forceUpdate()\n }, [executeAjvValidator])\n\n // - Error handling\n const checkFieldStateFor = useCallback(\n (path: Path, state: SubmitState) => {\n return Boolean(\n state === 'error'\n ? errorsRef.current?.[path] instanceof Error ||\n fieldErrorRef.current[path] instanceof Error\n : fieldStateRef.current[path] === state\n )\n },\n []\n )\n const hasFieldState = useCallback(\n (state: SubmitState) => {\n for (const path in mountedFieldsRef.current) {\n const item = mountedFieldsRef.current[path]\n if (item.isMounted && checkFieldStateFor(path, state)) {\n return true\n }\n }\n\n return false\n },\n [checkFieldStateFor]\n )\n const hasFieldError = useCallback(\n (path: Path) => {\n for (const p in mountedFieldsRef.current) {\n const item = mountedFieldsRef.current[path]\n if (\n item.isMounted &&\n p === path &&\n checkFieldStateFor(path, 'error')\n ) {\n return true\n }\n }\n\n return false\n },\n [checkFieldStateFor]\n )\n const hasErrors = useCallback(() => {\n return hasFieldState('error')\n }, [hasFieldState])\n\n /**\n * Sets the error state for a specific path\n */\n const setFieldError: ContextState['setFieldError'] = useCallback(\n (path, error) => {\n fieldErrorRef.current[path] = error\n },\n []\n )\n\n /**\n * Sets the field state for a specific path\n */\n const setFieldState: ContextState['setFieldState'] = useCallback(\n (path, fieldState) => {\n if (fieldState !== fieldStateRef.current[path]) {\n // The state for the target value was changed\n fieldStateRef.current[path] = fieldState\n forceUpdate()\n }\n },\n []\n )\n\n /**\n * Mutate the data set based on the filterData function\n */\n const mutateDataHandler = useCallback(\n (data: Data, handler: TransformData | FilterData, remove = false) => {\n const mutate = (path: Path, result: boolean | unknown) => {\n if (remove) {\n if (result === false) {\n data = structuredClone(data)\n pointer.remove(data, path)\n }\n } else {\n if (typeof result !== 'undefined') {\n data = structuredClone(data)\n pointer.set(data, path, result)\n }\n }\n }\n\n if (typeof handler === 'function') {\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n if (exists) {\n const value = pointer.get(data, path)\n const displayValue = fieldDisplayValueRef.current[path]\n const internal = {\n error: fieldErrorRef.current?.[path],\n }\n const result = handler({\n path,\n value,\n displayValue,\n label: props.label,\n data: internalDataRef.current,\n props,\n internal,\n })\n mutate(path, result)\n }\n })\n\n return data\n } else if (handler) {\n const runFilter = ({ path, condition }) => {\n const exists = pointer.has(data, path)\n if (exists) {\n const value = pointer.get(data, path)\n const props = fieldPropsRef.current[path]\n const internal = { error: fieldErrorRef.current?.[path] }\n const result =\n typeof condition === 'function'\n ? condition({\n value,\n data: internalDataRef.current,\n props,\n internal,\n })\n : condition\n mutate(path, result)\n }\n }\n\n const wildcardPaths = []\n\n Object.entries(handler).forEach(([path, condition]) => {\n if (path.includes('*')) {\n const parts = path.split(/\\/\\*/g)\n const exists = pointer.has(data, parts[0])\n if (exists) {\n const traverse = (\n subData: unknown,\n subPath: string,\n idx: number\n ) => {\n if (idx === parts.length - 1) {\n wildcardPaths.push({ path: subPath, condition })\n return\n }\n const list = pointer.get(subData, subPath)\n if (Array.isArray(list)) {\n list.forEach((_, i) => {\n traverse(\n list[i],\n `${subPath}/${i}${parts[idx + 1]}`,\n idx + 1\n )\n })\n }\n }\n traverse(data, parts[0], 0)\n }\n } else {\n runFilter({ path, condition })\n }\n })\n\n wildcardPaths.forEach(runFilter)\n\n return data\n }\n\n return data\n },\n []\n )\n\n /**\n * Ensure only visible data is returned\n */\n const visibleDataHandler: VisibleDataHandler<Data> = useCallback(\n (data = internalDataRef.current, { keepPaths, removePaths } = {}) => {\n const visibleData = {} as Partial<Data>\n\n for (const path in mountedFieldsRef.current) {\n const item = mountedFieldsRef.current[path]\n if (\n item &&\n item.isVisible !== false &&\n (item.isPreMounted !== false || item.wasStepChange === true) &&\n (removePaths ? !removePaths.includes(path) : true) &&\n pointer.has(data, path)\n ) {\n pointer.set(visibleData, path, pointer.get(data, path))\n }\n }\n\n if (keepPaths) {\n keepPaths.forEach((path) => {\n if (pointer.has(data, path)) {\n pointer.set(visibleData, path, pointer.get(data, path))\n }\n })\n }\n\n return visibleData\n },\n []\n )\n\n /**\n * Filter the data set based on the filterData function\n */\n const filterDataHandler = useCallback(\n (data: Data, filter: FilterData) => {\n if (filter) {\n return mutateDataHandler(data, filter, true)\n }\n\n return data\n },\n [mutateDataHandler]\n )\n\n const filterData = useCallback(\n (filter: FilterData, data = internalDataRef.current) => {\n return filterDataHandler(data, filter)\n },\n [filterDataHandler]\n )\n\n const fieldDisplayValueRef: ContextState['fieldDisplayValueRef'] =\n useRef({})\n\n const fieldConnectionsRef = useRef<\n Record<Path, Record<string, unknown>>\n >({})\n const setFieldConnection = useCallback(\n (path: Path, connections: Record<string, unknown>) => {\n fieldConnectionsRef.current[path] = connections\n },\n []\n )\n\n const fieldPropsRef = useRef<Record<Path, FieldProps>>({})\n const setFieldProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = props\n },\n []\n )\n\n const valuePropsRef = useRef<Record<Path, ValueProps>>({})\n const setValueProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n valuePropsRef.current[path] = props\n },\n []\n )\n\n const hasFieldWithAsyncValidator = useCallback(() => {\n for (const path in fieldPropsRef.current) {\n if (mountedFieldsRef.current[path]?.isMounted) {\n const props = fieldPropsRef.current[path]\n if (\n isAsync(props.onChangeValidator) ||\n isAsync(props.onBlurValidator)\n ) {\n return true\n }\n }\n }\n\n return false\n }, [])\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAttachments = useSharedState<SharedAttachments<Data>>(\n createReferenceKey(id, 'attachments')\n )\n const sharedDataContext = useSharedState<ContextState>(\n createReferenceKey(id, 'data-context')\n )\n\n const setSharedData = sharedData.set\n const extendSharedData = sharedData.extend\n const extendAttachment = sharedAttachments.extend\n const rerenderUseDataHook = sharedAttachments.data?.rerenderUseDataHook\n\n const cacheRef = useRef({\n data,\n schema,\n shared: sharedData.data,\n hasUsedInitialData: false,\n })\n\n const internalData = useMemo(() => {\n // NB: \"sharedData.data\" is only available on a rerender.\n // Update the shared state, if initialData is given and no shared state is available.\n // We do almost the same later in a useLayoutEffect, but we need to do it here as well, so we set the data as early as possible.\n if (id && initialData && !sharedData.data) {\n sharedData.update(initialData)\n }\n\n // Merge both internal data and the shared state, if it both where given\n if (\n id &&\n initialData &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data &&\n internalDataRef.current === initialData &&\n typeof internalDataRef.current === 'object'\n ) {\n return {\n ...internalDataRef.current,\n ...(sharedData.data || {}),\n }\n }\n\n // Use shared state if no initial and initial data, and the shared state exists\n if (\n id &&\n !initialData &&\n !internalDataRef.current &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data\n ) {\n return sharedData.data\n }\n\n // Merge the internal data with the shared state, if the shared was updated and not the same as internal data\n if (\n id &&\n sharedData.data &&\n cacheRef.current.shared !== sharedData.data &&\n sharedData.data !== internalDataRef.current &&\n typeof internalDataRef.current === 'object'\n ) {\n cacheRef.current.shared = sharedData.data\n\n if (isEmptyDataRef.current) {\n return (\n Array.isArray(internalDataRef.current) ? [] : clearedData\n ) as Data\n }\n\n return {\n ...internalDataRef.current,\n ...(sharedData.data || {}),\n }\n }\n\n // When external data has changed, update the internal data\n if (data !== cacheRef.current.data) {\n cacheRef.current.data = data\n return data\n }\n\n return internalDataRef.current\n }, [id, initialData, sharedData, data])\n\n internalDataRef.current =\n props.path && pointer.has(internalData, props.path)\n ? pointer.get(internalData, props.path)\n : internalData\n\n const clearData = useCallback(() => {\n isEmptyDataRef.current = true\n internalDataRef.current = ((typeof emptyData === 'function'\n ? emptyData(internalDataRef.current)\n : emptyData) ??\n (Array.isArray(internalDataRef.current) ? [] : clearedData)) as Data\n\n if (id) {\n setSharedData(internalDataRef.current)\n }\n\n forceUpdate()\n onClear?.()\n\n requestAnimationFrame?.(() => {\n isEmptyDataRef.current = false\n }) // Delay so the field validation error message are not shown\n }, [emptyData, id, onClear, setSharedData])\n\n useLayoutEffect(() => {\n // Set the shared state, if initialData was given\n if (id) {\n if (initialData && !sharedData.data) {\n extendSharedData(initialData, { preventSyncOfSameInstance: true })\n }\n }\n }, [id, initialData, extendSharedData, sharedData.data])\n\n useLayoutEffect(() => {\n if (id) {\n extendAttachment(\n {\n visibleDataHandler,\n filterDataHandler,\n hasErrors,\n hasFieldError,\n setShowAllErrors,\n setSubmitState,\n clearData,\n fieldConnectionsRef,\n },\n { preventSyncOfSameInstance: true }\n )\n if (filterSubmitData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n extendAttachment,\n visibleDataHandler,\n filterDataHandler,\n filterSubmitData,\n hasErrors,\n hasFieldError,\n id,\n rerenderUseDataHook,\n setShowAllErrors,\n setSubmitState,\n clearData,\n extendSharedData,\n ])\n\n useMemo(() => {\n executeAjvValidator()\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [internalDataRef.current]) // run validation when internal data has changed\n\n const storeInSession = useMemo(() => {\n return debounce(\n () => {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(internalDataRef.current)\n )\n },\n process.env.NODE_ENV === 'test' ? 1 : 800\n )\n }, [sessionStorageId])\n\n const setData = useCallback(\n (newData: Data, preventUpdate = false) => {\n // - Mutate the data context\n if (transformIn) {\n newData = mutateDataHandler(newData, transformIn)\n }\n\n internalDataRef.current = newData\n\n if (id) {\n // Will ensure that Form.getData() gets the correct data\n extendSharedData(newData, { preventSyncOfSameInstance: true })\n if (filterSubmitData) {\n rerenderUseDataHook?.()\n }\n }\n\n if (sessionStorageId && typeof window !== 'undefined') {\n storeInSession()\n }\n\n if (!preventUpdate) {\n forceUpdate() // Will rerender the whole form initially\n }\n },\n [\n extendSharedData,\n filterSubmitData,\n id,\n mutateDataHandler,\n rerenderUseDataHook,\n sessionStorageId,\n storeInSession,\n transformIn,\n ]\n )\n\n /**\n * Update the data set\n */\n const updateDataValue: ContextState['updateDataValue'] = useCallback(\n (path, value, { preventUpdate } = {}) => {\n if (!path) {\n return\n }\n\n const givenData = (\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalDataRef.current ??\n (path.match(isArrayJsonPointer) ? [] : {})\n ) as Data\n\n let newData: Data = null\n try {\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n newData = structuredClone(givenData)\n } catch (e) {\n newData = givenData\n }\n\n if (path !== '/') {\n pointer.set(newData, path, value)\n }\n\n setData(newData, preventUpdate)\n },\n [setData]\n )\n\n /**\n * Update the data set on user interaction (unvalidated)\n */\n const handlePathChangeUnvalidated: ContextState['handlePathChange'] =\n useCallback(\n async (path, value) => {\n if (!path) {\n return null\n }\n\n updateDataValue(path, value)\n\n if (isAsync(onPathChange)) {\n await onPathChange?.(path, value)\n } else {\n onPathChange?.(path, value)\n }\n\n for (const itm of fieldEventListenersRef.current) {\n if (itm.type === 'onPathChange' && itm.path === path) {\n const { callback } = itm\n if (isAsync(callback)) {\n await callback({ value })\n } else {\n callback({ value })\n }\n }\n }\n },\n [onPathChange, updateDataValue]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: ContextState['handlePathChange'] = useCallback(\n async (path, value = '_undefined_') => {\n if (!path) {\n return null\n }\n\n if (value !== '_undefined_') {\n handlePathChangeUnvalidated(path, value)\n }\n\n showAllErrorsRef.current = false\n\n validateData()\n\n const data = internalDataRef.current as Data\n const options = { filterData }\n const transformedData = transformOut\n ? mutateDataHandler(data, transformOut)\n : data\n\n for (const cb of changeHandlerStackRef.current) {\n if (isAsync(onChange)) {\n await cb(transformedData, options)\n } else {\n cb(transformedData, options)\n }\n }\n\n if (isAsync(onChange)) {\n return await onChange(transformedData, options)\n }\n\n return onChange?.(transformedData, options)\n },\n [\n filterData,\n handlePathChangeUnvalidated,\n mutateDataHandler,\n onChange,\n transformOut,\n validateData,\n ]\n )\n\n const changeHandlerStackRef = useRef<Array<OnChange<Data>>>([])\n const addOnChangeHandler = useCallback((callback: OnChange<Data>) => {\n const exists = changeHandlerStackRef.current.some((cb) => {\n return callback === cb\n })\n if (!exists) {\n changeHandlerStackRef.current.push(callback)\n }\n }, [])\n\n // - Mounted fields\n const setMountedFieldState = useCallback(\n (path: Path, state: MountState) => {\n if (!mountedFieldsRef.current[path]) {\n mountedFieldsRef.current[path] = { ...state }\n } else {\n Object.assign(mountedFieldsRef.current[path], state)\n }\n\n for (const itm of fieldEventListenersRef.current) {\n if (itm.type === 'onMount' && itm.path === path) {\n const { callback } = itm\n callback()\n }\n }\n },\n []\n )\n\n // - Features\n const scrollToTop = useCallback(() => {\n if (typeof window !== 'undefined') {\n window?.scrollTo?.({ top: 0, behavior: 'smooth' })\n }\n }, [])\n\n /**\n * Shared logic dedicated to submit the whole form\n */\n const handleSubmitCall = useCallback<ContextState['handleSubmitCall']>(\n async (args) => {\n const {\n onSubmit,\n enableAsyncBehavior,\n skipFieldValidation,\n skipErrorCheck,\n } = args\n\n setSubmitState({ error: undefined, customStatus: undefined })\n\n const asyncBehaviorIsEnabled =\n (skipErrorCheck\n ? true\n : // Don't enable async behavior if we have errors, but when we have a pending state\n !hasErrors() || hasFieldState('pending')) &&\n (enableAsyncBehavior || hasFieldWithAsyncValidator())\n\n if (asyncBehaviorIsEnabled) {\n setFormState('pending')\n }\n\n // Just call the submit listeners \"once\", and not on the retry/recall\n if (!skipFieldValidation) {\n for (const item of fieldEventListenersRef.current) {\n const { path, type, callback } = item\n if (\n type === 'onSubmit' &&\n mountedFieldsRef.current[path]?.isMounted\n ) {\n // Call all submit listener callbacks (e.g. to validate fields)\n if (asyncBehaviorIsEnabled) {\n await callback()\n } else {\n callback()\n }\n }\n }\n }\n\n let result: EventStateObject\n\n if (\n !(skipErrorCheck ? false : hasErrors()) &&\n !hasFieldState('pending') &&\n (skipFieldValidation ? true : !hasFieldState('error'))\n ) {\n let submitResult: OnSubmitReturn\n try {\n if (isolate) {\n submitResult = await onCommit?.(internalDataRef.current, {\n clearData,\n })\n } else {\n submitResult = await onSubmit()\n }\n\n if (submitResult instanceof Error) {\n throw submitResult\n }\n } catch (error) {\n submitResult = { error }\n }\n\n result = submitResult as EventStateObject\n\n if (asyncBehaviorIsEnabled) {\n if (result?.error) {\n setFormState('abort')\n } else if (keepPending.current !== true) {\n setFormState('complete')\n }\n }\n\n // Force the state to be set by a custom status\n if (result?.['status']) {\n setFormState(result?.['status'])\n }\n\n if (\n result?.error ||\n result?.warning ||\n result?.info ||\n result?.customStatus\n ) {\n setSubmitState(result)\n }\n } else {\n if (asyncBehaviorIsEnabled) {\n window.requestAnimationFrame(() => {\n setFormState(undefined)\n })\n\n if (!skipFieldValidation) {\n // Add a event listener to continue the submit after the pending state is resolved\n onSubmitContinueRef.current = () => {\n window.requestAnimationFrame(() => {\n // Do not call the validators again,\n // because we already did it in the first call\n // If they are async, we wait for them to finish anyway\n handleSubmitCall({ ...args, skipFieldValidation: true })\n })\n }\n }\n }\n\n onSubmitRequest?.()\n\n setShowAllErrors(true)\n }\n\n return result\n },\n [\n clearData,\n hasErrors,\n hasFieldState,\n hasFieldWithAsyncValidator,\n isolate,\n onCommit,\n onSubmitRequest,\n setFormState,\n setShowAllErrors,\n setSubmitState,\n ]\n )\n\n const handleSubmitListenersRef = useRef<Array<HandleSubmitCallback>>([])\n const setHandleSubmit: ContextState['setHandleSubmit'] = useCallback(\n (callback, { remove = false } = {}) => {\n const listeners = handleSubmitListenersRef.current\n if (remove) {\n handleSubmitListenersRef.current = listeners.filter(\n (item) => item !== callback\n )\n } else if (!listeners.includes(callback)) {\n listeners.push(callback)\n }\n },\n []\n )\n const handleSubmitListeners = useCallback(() => {\n let stop = false\n const preventSubmit = () => (stop = true)\n handleSubmitListenersRef.current.forEach((cb) => {\n cb({ preventSubmit })\n })\n return stop\n }, [])\n\n const getSubmitData = useCallback(() => {\n // - Mutate the data context\n const data = internalDataRef.current\n const mutatedData = transformOut\n ? mutateDataHandler(data, transformOut)\n : data\n\n // @deprecated – can be removed in v11 (use only mutatedData instead)\n const filteredData = filterSubmitData\n ? filterDataHandler(mutatedData, filterSubmitData)\n : mutatedData\n\n return filteredData\n }, [\n filterDataHandler,\n filterSubmitData,\n mutateDataHandler,\n transformOut,\n ])\n\n const getSubmitParams = useCallback(() => {\n const reduceToVisibleFields: VisibleDataHandler<Data> = (\n data,\n options\n ) => {\n return visibleDataHandler(\n transformOut ? mutateDataHandler(data, transformOut) : data,\n options\n )\n }\n\n const transformData = (data: Data, handler: TransformData) => {\n return mutateDataHandler(data, handler)\n }\n\n const formElement = formElementRef.current\n const params: OnSubmitParams<Data> = {\n filterData,\n reduceToVisibleFields,\n transformData,\n resetForm: () => {\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n }\n\n forceUpdate() // in order to fill \"empty fields\" again with their internal states\n },\n clearData,\n }\n\n return params\n }, [\n clearData,\n filterData,\n mutateDataHandler,\n sessionStorageId,\n transformOut,\n visibleDataHandler,\n ])\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<\n ContextState['handleSubmit']\n >(async () => {\n return await handleSubmitCall({\n enableAsyncBehavior: isAsync(onSubmit),\n onSubmit: async () => {\n if (handleSubmitListeners()) {\n return // stop here\n }\n\n const data = getSubmitData()\n const options = getSubmitParams()\n let result = undefined\n\n if (isAsync(onSubmit)) {\n result = await onSubmit(data, options)\n } else {\n result = onSubmit?.(data, options)\n }\n\n const completeResult = await onSubmitComplete?.(data, result)\n if (completeResult) {\n result =\n Object.keys(result).length > 0\n ? { ...result, ...completeResult }\n : completeResult\n }\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n\n return result\n },\n })\n }, [\n getSubmitData,\n getSubmitParams,\n handleSubmitCall,\n handleSubmitListeners,\n onSubmit,\n onSubmitComplete,\n scrollToTop,\n scrollTopOnSubmit,\n ])\n\n // Collect listeners to be called during form submit\n const fieldEventListenersRef = useRef<Array<EventListenerCall>>([])\n const setFieldEventListener = useCallback(\n (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => {\n fieldEventListenersRef.current =\n fieldEventListenersRef.current.filter(\n ({ path: p, type: t, callback: c }) => {\n return !(p === path && t === type && c === callback)\n }\n )\n fieldEventListenersRef.current.push({ path, type, callback })\n },\n []\n )\n\n // Handle unresolved field states during async submit\n const onSubmitContinueRef = useRef<() => void>(null)\n if (!hasFieldState('pending')) {\n onSubmitContinueRef.current?.()\n onSubmitContinueRef.current = null\n }\n\n // - ajv validator routines\n useEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n }, [schema, validateData])\n useUpdateEffect(() => {\n if (schema && schema !== cacheRef.current.schema) {\n cacheRef.current.schema = schema\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n\n validateData()\n forceUpdate()\n }\n }, [schema, validateData, forceUpdate])\n\n const onTimeout = useCallback(() => {\n setFormState(undefined)\n setSubmitState({\n info: undefined,\n warning: undefined,\n error: undefined,\n customStatus: undefined,\n })\n }, [setFormState, setSubmitState])\n\n const { bufferedFormState: formState } = useFormStatusBuffer({\n formState: formStateRef.current,\n waitFor: hasFieldState('pending'),\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n })\n\n const submitState = submitStateRef.current\n const disabled =\n typeof rest?.['disabled'] === 'boolean'\n ? rest?.['disabled']\n : (formState === 'pending') === true\n ? true\n : undefined\n const contextErrorMessages =\n errorMessages?.[locale ?? sharedLocale] || errorMessages\n\n const contextValue: ContextState = {\n /** Method */\n handlePathChange,\n handlePathChangeUnvalidated,\n handleSubmit,\n setMountedFieldState,\n handleSubmitCall,\n setFormState,\n setSubmitState,\n setShowAllErrors,\n setVisibleError,\n setFieldEventListener,\n setFieldState,\n setFieldError,\n setFieldConnection,\n setFieldProps,\n setValueProps,\n hasErrors,\n hasFieldError,\n hasFieldState,\n validateData,\n updateDataValue,\n setData,\n clearData,\n visibleDataHandler,\n filterDataHandler,\n getSubmitData,\n getSubmitParams,\n addOnChangeHandler,\n setHandleSubmit,\n scrollToTop,\n\n /** State handling */\n schema,\n disabled,\n required,\n formState,\n submitState,\n contextErrorMessages,\n hasContext: true,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n hasVisibleError: Object.keys(hasVisibleErrorRef.current).length > 0,\n fieldConnectionsRef,\n fieldDisplayValueRef,\n fieldPropsRef,\n valuePropsRef,\n mountedFieldsRef,\n snapshotsRef,\n existingFieldsRef,\n formElementRef,\n isEmptyDataRef,\n fieldErrorRef,\n ajvInstance: ajvRef.current,\n\n /** Additional */\n id,\n data: internalDataRef.current,\n internalDataRef,\n props,\n ...rest,\n }\n\n if (id) {\n sharedDataContext.set(contextValue)\n }\n\n return (\n <DataContext.Provider value={contextValue}>\n <FieldPropsProvider\n FormStatus={\n globalStatusId\n ? {\n globalStatus: {\n id: globalStatusId,\n title: translation.errorSummaryTitle,\n show: showAllErrorsRef.current,\n },\n }\n : undefined\n }\n formElement={disabled ? { disabled: true } : undefined}\n locale={locale ? locale : undefined}\n translations={translations ? translations : undefined}\n >\n {children}\n </FieldPropsProvider>\n </DataContext.Provider>\n )\n}\n\ntype FormStatusBufferProps = {\n minimumAsyncBehaviorTime?: Props<JsonObject>['minimumAsyncBehaviorTime']\n asyncSubmitTimeout?: Props<JsonObject>['asyncSubmitTimeout']\n formState: ContextState['formState']\n waitFor: boolean\n onTimeout: () => void\n}\n\nfunction useFormStatusBuffer(props: FormStatusBufferProps) {\n const {\n formState,\n waitFor,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n } = props || {}\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const stateRef = useRef<SubmitState>()\n const nowRef = useRef<number | null>(null)\n const timeoutRef = useRef<{\n complete?: NodeJS.Timeout | null\n reset?: NodeJS.Timeout | null\n timeout?: NodeJS.Timeout | null\n }>({})\n\n const setState = useCallback(\n (state: SubmitState) => {\n stateRef.current = state\n forceUpdate()\n },\n [forceUpdate]\n )\n\n const clear = useCallback(() => {\n for (const key in timeoutRef.current) {\n clearTimeout(timeoutRef.current[key])\n }\n }, [])\n\n const hadCompleteRef = useRef(false)\n const activeElementRef = useRef<HTMLElement>(null)\n\n useEffect(() => {\n // This offset is used to calculate the delay,\n // which ensures that the form state is displayed for at least minimumAsyncBehaviorTime duration.\n // If the form was 'pending' for less than minimumAsyncBehaviorTime,\n // the delay will be the remaining time to reach minimumAsyncBehaviorTime.\n const isTest = process.env.NODE_ENV === 'test'\n const minimum =\n minimumAsyncBehaviorTime ??\n // make it testable\n (isTest ? 1 : 1000)\n\n if (stateRef.current && formState === 'error') {\n clear()\n setState(undefined)\n return\n }\n\n if (formState === 'abort') {\n clear()\n setState('abort')\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n }, minimum)\n return\n }\n\n if (formState === 'complete') {\n hadCompleteRef.current = true\n }\n\n if (formState === 'pending' && stateRef.current !== 'pending') {\n activeElementRef.current = document.activeElement as HTMLElement\n clear()\n nowRef.current = Date.now()\n hadCompleteRef.current = false\n setState('pending')\n } else if (stateRef.current === 'pending') {\n const offset = Math.max(Date.now() - nowRef.current)\n const delay = isTest ? minimum : Math.max(minimum - offset, 0)\n\n if (!waitFor) {\n timeoutRef.current.complete = setTimeout(() => {\n if (hadCompleteRef.current) {\n setState('complete')\n }\n window.requestAnimationFrame(() => {\n activeElementRef.current?.focus?.()\n })\n }, delay)\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n clear()\n }, delay + minimum)\n }\n }\n\n if (stateRef.current === 'pending') {\n timeoutRef.current.timeout = setTimeout(() => {\n clear()\n setState(undefined)\n onTimeout?.()\n }, asyncSubmitTimeout ?? 30000)\n }\n\n return clear\n }, [\n clear,\n minimumAsyncBehaviorTime,\n formState,\n setState,\n waitFor,\n asyncSubmitTimeout,\n onTimeout,\n ])\n\n return { bufferedFormState: stateRef.current }\n}\n\nexport const clearedData = Object.freeze({})\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { SpacingProps } from '../../../../shared/types';
|
|
|
5
5
|
export type UploadValue = Array<UploadFile | UploadFileNative>;
|
|
6
6
|
export type Props = Omit<FieldProps<UploadValue, UploadValue | undefined>, 'name'> & SpacingProps & {
|
|
7
7
|
width?: Omit<FieldBlockWidth, 'medium' | 'small'>;
|
|
8
|
-
} & Pick<Partial<UploadProps>, 'title' | 'text' | 'acceptedFileTypes' | 'filesAmountLimit' | 'fileMaxSize' | 'onFileDelete' | 'skeleton'> & {
|
|
8
|
+
} & Pick<Partial<UploadProps>, 'title' | 'text' | 'acceptedFileTypes' | 'filesAmountLimit' | 'fileMaxSize' | 'onFileDelete' | 'onFileClick' | 'skeleton' | 'download'> & {
|
|
9
9
|
fileHandler?: (newFiles: UploadValue) => UploadValue | Promise<UploadValue>;
|
|
10
10
|
};
|
|
11
11
|
declare function UploadComponent(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
@@ -88,12 +88,17 @@ function UploadComponent(props) {
|
|
|
88
88
|
filesAmountLimit = 100,
|
|
89
89
|
fileMaxSize = 5,
|
|
90
90
|
skeleton,
|
|
91
|
-
onFileDelete
|
|
91
|
+
onFileDelete,
|
|
92
|
+
onFileClick
|
|
92
93
|
} = rest;
|
|
93
94
|
const {
|
|
94
95
|
files: fileContext,
|
|
95
96
|
setFiles
|
|
96
97
|
} = (0, _useUpload.default)(id);
|
|
98
|
+
const filesRef = (0, _react.useRef)();
|
|
99
|
+
(0, _react.useEffect)(() => {
|
|
100
|
+
filesRef.current = fileContext;
|
|
101
|
+
}, [fileContext]);
|
|
97
102
|
(0, _react.useEffect)(() => {
|
|
98
103
|
const hasInvalidFiles = value === null || value === void 0 ? void 0 : value.some(_ref2 => {
|
|
99
104
|
let {
|
|
@@ -105,25 +110,33 @@ function UploadComponent(props) {
|
|
|
105
110
|
setFiles(value);
|
|
106
111
|
}
|
|
107
112
|
}, [setFiles, value]);
|
|
108
|
-
const handleChangeAsync = (0, _react.useCallback)(async
|
|
113
|
+
const handleChangeAsync = (0, _react.useCallback)(async existingFiles => {
|
|
109
114
|
const existingFileIds = (fileContext === null || fileContext === void 0 ? void 0 : fileContext.map(file => file.id)) || [];
|
|
110
|
-
const newFiles =
|
|
115
|
+
const newFiles = existingFiles.filter(file => !existingFileIds.includes(file.id));
|
|
111
116
|
if (newFiles.length > 0) {
|
|
112
117
|
setFiles([...fileContext, ...updateFileLoadingState(newFiles, {
|
|
113
118
|
isLoading: true
|
|
114
119
|
})]);
|
|
115
|
-
const
|
|
120
|
+
const incomingFiles = await fileHandler(newFiles);
|
|
121
|
+
const uploadedFiles = updateFileLoadingState(incomingFiles, {
|
|
116
122
|
isLoading: false
|
|
117
123
|
});
|
|
118
|
-
|
|
124
|
+
const indexOfFirstNewFile = filesRef.current.findIndex(_ref3 => {
|
|
125
|
+
let {
|
|
126
|
+
id
|
|
127
|
+
} = _ref3;
|
|
128
|
+
return id === newFiles[0].id;
|
|
129
|
+
});
|
|
130
|
+
const updatedFiles = [...filesRef.current.slice(0, indexOfFirstNewFile), ...uploadedFiles, ...filesRef.current.slice(indexOfFirstNewFile + newFiles.length)];
|
|
131
|
+
handleChange(updatedFiles);
|
|
119
132
|
} else {
|
|
120
|
-
handleChange(
|
|
133
|
+
handleChange(existingFiles);
|
|
121
134
|
}
|
|
122
135
|
}, [fileContext, setFiles, fileHandler, handleChange]);
|
|
123
|
-
const changeHandler = (0, _react.useCallback)(
|
|
136
|
+
const changeHandler = (0, _react.useCallback)(_ref4 => {
|
|
124
137
|
let {
|
|
125
138
|
files
|
|
126
|
-
} =
|
|
139
|
+
} = _ref4;
|
|
127
140
|
handleBlur();
|
|
128
141
|
handleFocus();
|
|
129
142
|
if (fileHandler) {
|
|
@@ -149,6 +162,7 @@ function UploadComponent(props) {
|
|
|
149
162
|
skeleton: skeleton,
|
|
150
163
|
onChange: changeHandler,
|
|
151
164
|
onFileDelete: onFileDelete,
|
|
165
|
+
onFileClick: onFileClick,
|
|
152
166
|
title: label !== null && label !== void 0 ? label : title,
|
|
153
167
|
text: help ? _react.default.createElement(_react.default.Fragment, null, labelDescription !== null && labelDescription !== void 0 ? labelDescription : text, _react.default.createElement(_HelpButtonInline.default, {
|
|
154
168
|
contentId: `${id}-help`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Upload.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_FieldBlock","_hooks","_Upload","_useUpload","_utils","_HelpButtonInline","_shared","_utils2","_excluded","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","ownKeys","object","enumerableOnly","symbols","filter","sym","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","validateRequired","_ref","required","isChanged","error","hasError","some","file","errorMessage","FormError","hasFiles","updateFileLoadingState","files","isLoading","map","UploadComponent","props","sharedTr","useSharedTranslation","Upload","formsTr","useFormsTranslation","errorMessages","useMemo","errorRequired","preparedProps","_useFieldProps","useFieldProps","executeOnChangeRegardlessOfError","id","className","width","widthProp","label","labelDescription","help","htmlAttributes","handleChange","handleFocus","handleBlur","fileHandler","rest","title","text","acceptedFileTypes","filesAmountLimit","fileMaxSize","skeleton","onFileDelete","fileContext","setFiles","useUpload","useEffect","hasInvalidFiles","_ref2","name","handleChangeAsync","useCallback","existingFileIds","newFiles","includes","uploadedFiles","changeHandler","_ref3","fieldBlockProps","forId","labelSrOnly","classnames","pickSpacingProps","createElement","onChange","Fragment","contentId","left","HelpButtonInlineContent","_default","exports","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Upload/Upload.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo } from 'react'\nimport classnames from 'classnames'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport {\n useFieldProps,\n useTranslation as useFormsTranslation,\n} from '../../hooks'\nimport { FieldProps } from '../../types'\nimport Upload, {\n UploadFile,\n UploadFileNative,\n UploadProps,\n} from '../../../../components/Upload'\nimport useUpload from '../../../../components/upload/useUpload'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n} from '../../../../components/help-button/HelpButtonInline'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport { SpacingProps } from '../../../../shared/types'\nimport { FormError } from '../../utils'\n\nexport type UploadValue = Array<UploadFile | UploadFileNative>\nexport type Props = Omit<\n FieldProps<UploadValue, UploadValue | undefined>,\n 'name'\n> &\n SpacingProps & {\n width?: Omit<FieldBlockWidth, 'medium' | 'small'>\n } & Pick<\n Partial<UploadProps>,\n | 'title'\n | 'text'\n | 'acceptedFileTypes'\n | 'filesAmountLimit'\n | 'fileMaxSize'\n | 'onFileDelete'\n | 'skeleton'\n > & {\n fileHandler?: (\n newFiles: UploadValue\n ) => UploadValue | Promise<UploadValue>\n }\n\nconst validateRequired = (\n value: UploadValue,\n { required, isChanged, error }\n) => {\n const hasError = value?.some((file) => file.errorMessage)\n if (hasError) {\n return new FormError('Upload.errorInvalidFiles')\n }\n\n const hasFiles = value?.length > 0\n if (required && ((!isChanged && !hasFiles) || !hasFiles)) {\n return error\n }\n\n return undefined\n}\n\nconst updateFileLoadingState = (\n files: UploadValue,\n { isLoading } = { isLoading: false }\n) => {\n return files.map((file) => ({ ...file, isLoading }))\n}\n\nfunction UploadComponent(props: Props) {\n const sharedTr = useSharedTranslation().Upload\n const formsTr = useFormsTranslation().Upload\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': formsTr.errorRequired,\n }),\n [formsTr.errorRequired]\n )\n\n const preparedProps = {\n errorMessages,\n validateRequired,\n ...props,\n }\n\n const {\n id,\n className,\n width: widthProp = 'stretch',\n value,\n label,\n labelDescription,\n help,\n htmlAttributes,\n handleChange,\n handleFocus,\n handleBlur,\n fileHandler,\n ...rest\n } = useFieldProps(preparedProps, {\n executeOnChangeRegardlessOfError: true,\n })\n\n // Upload props\n const {\n title = sharedTr.title,\n text = sharedTr.text,\n acceptedFileTypes = ['pdf', 'png', 'jpg', 'jpeg'],\n filesAmountLimit = 100,\n fileMaxSize = 5,\n skeleton,\n onFileDelete,\n } = rest\n\n const { files: fileContext, setFiles } = useUpload(id)\n\n useEffect(() => {\n // Files stored in session storage will not have a property (due to serialization).\n const hasInvalidFiles = value?.some(({ file }) => !file?.name)\n if (!hasInvalidFiles) {\n setFiles(value)\n }\n }, [setFiles, value])\n\n const handleChangeAsync = useCallback(\n async (files: UploadValue) => {\n // Filter out existing files\n const existingFileIds = fileContext?.map((file) => file.id) || []\n const newFiles = files.filter(\n (file) => !existingFileIds.includes(file.id)\n )\n\n if (newFiles.length > 0) {\n // Set loading\n setFiles([\n ...fileContext,\n ...updateFileLoadingState(newFiles, { isLoading: true }),\n ])\n\n const uploadedFiles = updateFileLoadingState(\n await fileHandler(newFiles),\n { isLoading: false }\n )\n\n // Set error, if any\n handleChange([...fileContext, ...uploadedFiles])\n } else {\n handleChange(files)\n }\n },\n [fileContext, setFiles, fileHandler, handleChange]\n )\n\n const changeHandler = useCallback(\n ({ files }: { files: UploadValue }) => {\n // Prevents the form-status from showing up\n handleBlur()\n handleFocus()\n\n if (fileHandler) {\n handleChangeAsync(files)\n } else {\n handleChange(files)\n }\n },\n [handleBlur, handleFocus, fileHandler, handleChangeAsync, handleChange]\n )\n\n const width = widthProp as FieldBlockWidth\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input`,\n labelSrOnly: true,\n className: classnames('dnb-forms-field-upload', className),\n width,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Upload\n id={id}\n acceptedFileTypes={acceptedFileTypes}\n filesAmountLimit={filesAmountLimit}\n fileMaxSize={fileMaxSize}\n skeleton={skeleton}\n onChange={changeHandler}\n onFileDelete={onFileDelete}\n title={label ?? title}\n text={\n help ? (\n <>\n {labelDescription ?? text}\n <HelpButtonInline\n contentId={`${id}-help`}\n left={text ? 'x-small' : false}\n help={help}\n />\n </>\n ) : (\n labelDescription ?? text\n )\n }\n {...htmlAttributes}\n >\n {help && (\n <HelpButtonInlineContent contentId={`${id}-help`} help={help} />\n )}\n </Upload>\n </FieldBlock>\n )\n}\n\nexport default UploadComponent\n\nUploadComponent._supportsSpacingProps = true\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Upload.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_FieldBlock","_hooks","_Upload","_useUpload","_utils","_HelpButtonInline","_shared","_utils2","_excluded","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","ownKeys","object","enumerableOnly","symbols","filter","sym","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","validateRequired","_ref","required","isChanged","error","hasError","some","file","errorMessage","FormError","hasFiles","updateFileLoadingState","files","isLoading","map","UploadComponent","props","sharedTr","useSharedTranslation","Upload","formsTr","useFormsTranslation","errorMessages","useMemo","errorRequired","preparedProps","_useFieldProps","useFieldProps","executeOnChangeRegardlessOfError","id","className","width","widthProp","label","labelDescription","help","htmlAttributes","handleChange","handleFocus","handleBlur","fileHandler","rest","title","text","acceptedFileTypes","filesAmountLimit","fileMaxSize","skeleton","onFileDelete","onFileClick","fileContext","setFiles","useUpload","filesRef","useRef","useEffect","current","hasInvalidFiles","_ref2","name","handleChangeAsync","useCallback","existingFiles","existingFileIds","newFiles","includes","incomingFiles","uploadedFiles","indexOfFirstNewFile","findIndex","_ref3","updatedFiles","slice","changeHandler","_ref4","fieldBlockProps","forId","labelSrOnly","classnames","pickSpacingProps","createElement","onChange","Fragment","contentId","left","HelpButtonInlineContent","_default","exports","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Upload/Upload.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport {\n useFieldProps,\n useTranslation as useFormsTranslation,\n} from '../../hooks'\nimport { FieldProps } from '../../types'\nimport Upload, {\n UploadFile,\n UploadFileNative,\n UploadProps,\n} from '../../../../components/Upload'\nimport useUpload from '../../../../components/upload/useUpload'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n} from '../../../../components/help-button/HelpButtonInline'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport { SpacingProps } from '../../../../shared/types'\nimport { FormError } from '../../utils'\n\nexport type UploadValue = Array<UploadFile | UploadFileNative>\nexport type Props = Omit<\n FieldProps<UploadValue, UploadValue | undefined>,\n 'name'\n> &\n SpacingProps & {\n width?: Omit<FieldBlockWidth, 'medium' | 'small'>\n } & Pick<\n Partial<UploadProps>,\n | 'title'\n | 'text'\n | 'acceptedFileTypes'\n | 'filesAmountLimit'\n | 'fileMaxSize'\n | 'onFileDelete'\n | 'onFileClick'\n | 'skeleton'\n | 'download'\n > & {\n fileHandler?: (\n newFiles: UploadValue\n ) => UploadValue | Promise<UploadValue>\n }\n\nconst validateRequired = (\n value: UploadValue,\n { required, isChanged, error }\n) => {\n const hasError = value?.some((file) => file.errorMessage)\n if (hasError) {\n return new FormError('Upload.errorInvalidFiles')\n }\n\n const hasFiles = value?.length > 0\n if (required && ((!isChanged && !hasFiles) || !hasFiles)) {\n return error\n }\n\n return undefined\n}\n\nconst updateFileLoadingState = (\n files: UploadValue,\n { isLoading } = { isLoading: false }\n) => {\n return files.map((file) => ({ ...file, isLoading }))\n}\n\nfunction UploadComponent(props: Props) {\n const sharedTr = useSharedTranslation().Upload\n const formsTr = useFormsTranslation().Upload\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': formsTr.errorRequired,\n }),\n [formsTr.errorRequired]\n )\n\n const preparedProps = {\n errorMessages,\n validateRequired,\n ...props,\n }\n\n const {\n id,\n className,\n width: widthProp = 'stretch',\n value,\n label,\n labelDescription,\n help,\n htmlAttributes,\n handleChange,\n handleFocus,\n handleBlur,\n fileHandler,\n ...rest\n } = useFieldProps(preparedProps, {\n executeOnChangeRegardlessOfError: true,\n })\n\n // Upload props\n const {\n title = sharedTr.title,\n text = sharedTr.text,\n acceptedFileTypes = ['pdf', 'png', 'jpg', 'jpeg'],\n filesAmountLimit = 100,\n fileMaxSize = 5,\n skeleton,\n onFileDelete,\n onFileClick,\n } = rest\n\n const { files: fileContext, setFiles } = useUpload(id)\n\n const filesRef = useRef<Array<UploadFile>>()\n\n useEffect(() => {\n filesRef.current = fileContext\n }, [fileContext])\n\n useEffect(() => {\n // Files stored in session storage will not have a property (due to serialization).\n const hasInvalidFiles = value?.some(({ file }) => !file?.name)\n if (!hasInvalidFiles) {\n setFiles(value)\n }\n }, [setFiles, value])\n\n const handleChangeAsync = useCallback(\n async (existingFiles: UploadValue) => {\n // Filter out existing files\n const existingFileIds = fileContext?.map((file) => file.id) || []\n const newFiles = existingFiles.filter(\n (file) => !existingFileIds.includes(file.id)\n )\n\n if (newFiles.length > 0) {\n // Set loading\n setFiles([\n ...fileContext,\n ...updateFileLoadingState(newFiles, { isLoading: true }),\n ])\n\n const incomingFiles = await fileHandler(newFiles)\n\n const uploadedFiles = updateFileLoadingState(incomingFiles, {\n isLoading: false,\n })\n\n const indexOfFirstNewFile = filesRef.current.findIndex(\n ({ id }) => id === newFiles[0].id\n )\n\n const updatedFiles = [\n ...filesRef.current.slice(0, indexOfFirstNewFile),\n ...uploadedFiles,\n ...filesRef.current.slice(indexOfFirstNewFile + newFiles.length),\n ]\n\n // Set error, if any\n handleChange(updatedFiles)\n } else {\n handleChange(existingFiles)\n }\n },\n [fileContext, setFiles, fileHandler, handleChange]\n )\n\n const changeHandler = useCallback(\n ({ files }: { files: UploadValue }) => {\n // Prevents the form-status from showing up\n handleBlur()\n handleFocus()\n\n if (fileHandler) {\n handleChangeAsync(files)\n } else {\n handleChange(files)\n }\n },\n [handleBlur, handleFocus, fileHandler, handleChangeAsync, handleChange]\n )\n\n const width = widthProp as FieldBlockWidth\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input`,\n labelSrOnly: true,\n className: classnames('dnb-forms-field-upload', className),\n width,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Upload\n id={id}\n acceptedFileTypes={acceptedFileTypes}\n filesAmountLimit={filesAmountLimit}\n fileMaxSize={fileMaxSize}\n skeleton={skeleton}\n onChange={changeHandler}\n onFileDelete={onFileDelete}\n onFileClick={onFileClick}\n title={label ?? title}\n text={\n help ? (\n <>\n {labelDescription ?? text}\n <HelpButtonInline\n contentId={`${id}-help`}\n left={text ? 'x-small' : false}\n help={help}\n />\n </>\n ) : (\n labelDescription ?? text\n )\n }\n {...htmlAttributes}\n >\n {help && (\n <HelpButtonInlineContent contentId={`${id}-help`} help={help} />\n )}\n </Upload>\n </FieldBlock>\n )\n}\n\nexport default UploadComponent\n\nUploadComponent._supportsSpacingProps = true\n"],"mappings":"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"}
|