@dnb/eufemia 10.21.0 → 10.22.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 +27 -0
- package/cjs/components/aria-live/useAriaLive.d.ts +1 -1
- package/cjs/components/breadcrumb/Breadcrumb.d.ts +2 -2
- package/cjs/components/breadcrumb/Breadcrumb.js +3 -3
- package/cjs/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +7 -2
- package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
- package/cjs/components/breadcrumb/style/dnb-breadcrumb.scss +10 -2
- package/cjs/components/button/Button.js +2 -2
- package/cjs/components/button/Button.js.map +1 -1
- package/cjs/components/button/style/themes/dnb-button-theme-sbanken.css +23 -11
- package/cjs/components/button/style/themes/dnb-button-theme-sbanken.min.css +3 -3
- package/cjs/components/button/style/themes/dnb-button-theme-sbanken.scss +30 -14
- package/cjs/components/card/style/dnb-card.css +11 -2
- package/cjs/components/card/style/dnb-card.min.css +1 -1
- package/cjs/components/card/style/dnb-card.scss +12 -2
- package/cjs/components/form-label/style/dnb-form-label.css +4 -1
- package/cjs/components/form-label/style/dnb-form-label.min.css +1 -1
- package/cjs/components/form-label/style/dnb-form-label.scss +5 -2
- package/cjs/components/global-status/GlobalStatus.d.ts +1 -1
- package/cjs/components/global-status/GlobalStatusProvider.d.ts +1 -1
- package/cjs/components/height-animation/HeightAnimationInstance.d.ts +5 -6
- package/cjs/components/height-animation/HeightAnimationInstance.js +12 -12
- package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
- package/cjs/components/height-animation/useHeightAnimation.js +11 -10
- package/cjs/components/height-animation/useHeightAnimation.js.map +1 -1
- package/cjs/components/input/Input.d.ts +1 -1
- package/cjs/components/pagination/InfinityScroller.d.ts +1 -1
- package/cjs/components/progress-indicator/ProgressIndicator.js +5 -7
- package/cjs/components/progress-indicator/ProgressIndicator.js.map +1 -1
- package/cjs/components/progress-indicator/ProgressIndicatorCircular.js +1 -1
- package/cjs/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
- package/cjs/components/progress-indicator/ProgressIndicatorLinear.js +4 -4
- package/cjs/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
- package/cjs/components/progress-indicator/style/dnb-progress-indicator.css +5 -2
- package/cjs/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
- package/cjs/components/progress-indicator/style/dnb-progress-indicator.scss +5 -2
- package/cjs/components/space/SpacingHelper.d.ts +5 -5
- package/cjs/components/table/Table.js +2 -2
- package/cjs/components/table/Table.js.map +1 -1
- package/cjs/components/table/TableAccordion.js +40 -57
- package/cjs/components/table/TableAccordion.js.map +1 -1
- package/cjs/components/table/TableAccordionTd.d.ts +9 -0
- package/cjs/components/table/{TableAccordionContent.js → TableAccordionTd.js} +16 -54
- package/cjs/components/table/TableAccordionTd.js.map +1 -0
- package/cjs/components/table/TableAccordionTr.d.ts +13 -0
- package/cjs/components/table/TableAccordionTr.js +61 -0
- package/cjs/components/table/TableAccordionTr.js.map +1 -0
- package/cjs/components/table/TableContext.d.ts +2 -2
- package/cjs/components/table/TableContext.js +4 -3
- package/cjs/components/table/TableContext.js.map +1 -1
- package/cjs/components/table/TableTd.d.ts +2 -2
- package/cjs/components/table/TableTd.js +2 -2
- package/cjs/components/table/TableTd.js.map +1 -1
- package/cjs/components/table/TableTr.d.ts +6 -1
- package/cjs/components/table/TableTr.js +10 -5
- package/cjs/components/table/TableTr.js.map +1 -1
- package/cjs/components/table/style/dnb-table.css +84 -64
- package/cjs/components/table/style/dnb-table.min.css +1 -1
- package/cjs/components/table/style/dnb-table.scss +1 -1
- package/cjs/components/table/style/table-accordion.scss +62 -44
- package/cjs/components/table/style/table-td.scss +1 -1
- package/cjs/components/table/style/themes/dnb-table-theme-sbanken.css +10 -0
- package/cjs/components/table/style/themes/dnb-table-theme-sbanken.min.css +3 -1
- package/cjs/components/table/style/themes/dnb-table-theme-sbanken.scss +14 -0
- package/cjs/components/table/useTableAnimationHandler.d.ts +20 -0
- package/cjs/components/table/useTableAnimationHandler.js +73 -0
- package/cjs/components/table/useTableAnimationHandler.js.map +1 -0
- package/cjs/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +1 -0
- package/cjs/extensions/forms/DataContext/Context.d.ts +1 -3
- package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +1 -2
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +1 -5
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -2
- package/cjs/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +2 -2
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -0
- package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +6 -0
- package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
- package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -2
- package/cjs/extensions/forms/Form/data-context/useData.d.ts +1 -1
- package/cjs/extensions/forms/Form/data-context/useData.js +1 -17
- package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
- package/cjs/extensions/forms/Form/data-context/useError.d.ts +2 -1
- package/cjs/extensions/forms/Form/data-context/useError.js +4 -2
- package/cjs/extensions/forms/Form/data-context/useError.js.map +1 -1
- package/cjs/extensions/forms/Value/Number/Number.d.ts +2 -2
- package/cjs/extensions/forms/Value/Number/Number.js +1 -1
- package/cjs/extensions/forms/Value/Number/Number.js.map +1 -1
- package/cjs/extensions/forms/hooks/useDataValue.d.ts +4 -12
- package/cjs/extensions/forms/hooks/useDataValue.js +3 -3
- package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/cjs/extensions/forms/hooks/useMounted.d.ts +2 -0
- package/cjs/extensions/forms/hooks/useMounted.js +19 -0
- package/cjs/extensions/forms/hooks/useMounted.js.map +1 -0
- package/cjs/extensions/forms/style/dnb-forms.css +8 -2
- package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
- package/cjs/extensions/forms/types.d.ts +2 -0
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/extensions/payment-card/utils/CardDesigns.d.ts +96 -96
- package/cjs/fragments/drawer-list/DrawerListHelpers.d.ts +52 -52
- 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/Theme.d.ts +7 -1
- package/cjs/shared/Theme.js +20 -7
- package/cjs/shared/Theme.js.map +1 -1
- package/cjs/shared/helpers/debounce.d.ts +37 -0
- package/cjs/shared/helpers/debounce.js +92 -0
- package/cjs/shared/helpers/debounce.js.map +1 -0
- package/cjs/shared/helpers/useSharedState.d.ts +1 -0
- package/cjs/shared/helpers/useSharedState.js +52 -20
- package/cjs/shared/helpers/useSharedState.js.map +1 -1
- package/cjs/shared/helpers/withCamelCaseProps.d.ts +7 -0
- package/cjs/shared/helpers/withCamelCaseProps.js.map +1 -1
- package/cjs/shared/helpers.d.ts +1 -25
- package/cjs/shared/helpers.js +15 -37
- package/cjs/shared/helpers.js.map +1 -1
- package/cjs/shared/useTheme.d.ts +1 -0
- package/cjs/style/dnb-ui-components.css +119 -73
- package/cjs/style/dnb-ui-components.min.css +3 -3
- package/cjs/style/dnb-ui-extensions.css +8 -2
- package/cjs/style/dnb-ui-extensions.min.css +1 -1
- package/cjs/style/dnb-ui-forms.css +8 -2
- package/cjs/style/dnb-ui-forms.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +127 -75
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +8 -2
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +8 -2
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -0
- package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +160 -86
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
- package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -0
- package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +8 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +8 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-ui/prism/dnb-prism-theme.d.ts +3 -3
- package/cjs/style/themes/theme-ui/ui-theme-components.css +127 -75
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +3 -3
- package/cjs/style/themes/theme-ui/ui-theme-extensions.css +8 -2
- package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.css +8 -2
- package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/components/aria-live/useAriaLive.d.ts +1 -1
- package/components/breadcrumb/Breadcrumb.d.ts +2 -2
- package/components/breadcrumb/Breadcrumb.js +3 -3
- package/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/components/breadcrumb/style/dnb-breadcrumb.css +7 -2
- package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
- package/components/breadcrumb/style/dnb-breadcrumb.scss +10 -2
- package/components/button/Button.js +2 -2
- package/components/button/Button.js.map +1 -1
- package/components/button/style/themes/dnb-button-theme-sbanken.css +23 -11
- package/components/button/style/themes/dnb-button-theme-sbanken.min.css +3 -3
- package/components/button/style/themes/dnb-button-theme-sbanken.scss +30 -14
- package/components/card/style/dnb-card.css +11 -2
- package/components/card/style/dnb-card.min.css +1 -1
- package/components/card/style/dnb-card.scss +12 -2
- package/components/form-label/style/dnb-form-label.css +4 -1
- package/components/form-label/style/dnb-form-label.min.css +1 -1
- package/components/form-label/style/dnb-form-label.scss +5 -2
- package/components/global-status/GlobalStatus.d.ts +1 -1
- package/components/global-status/GlobalStatusProvider.d.ts +1 -1
- package/components/height-animation/HeightAnimationInstance.d.ts +5 -6
- package/components/height-animation/HeightAnimationInstance.js +12 -12
- package/components/height-animation/HeightAnimationInstance.js.map +1 -1
- package/components/height-animation/useHeightAnimation.js +11 -10
- package/components/height-animation/useHeightAnimation.js.map +1 -1
- package/components/input/Input.d.ts +1 -1
- package/components/pagination/InfinityScroller.d.ts +1 -1
- package/components/progress-indicator/ProgressIndicator.js +5 -7
- package/components/progress-indicator/ProgressIndicator.js.map +1 -1
- package/components/progress-indicator/ProgressIndicatorCircular.js +1 -1
- package/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
- package/components/progress-indicator/ProgressIndicatorLinear.js +4 -4
- package/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
- package/components/progress-indicator/style/dnb-progress-indicator.css +5 -2
- package/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
- package/components/progress-indicator/style/dnb-progress-indicator.scss +5 -2
- package/components/space/SpacingHelper.d.ts +5 -5
- package/components/table/Table.js +1 -1
- package/components/table/Table.js.map +1 -1
- package/components/table/TableAccordion.js +38 -53
- package/components/table/TableAccordion.js.map +1 -1
- package/components/table/TableAccordionTd.d.ts +9 -0
- package/{es/components/table/TableAccordionContent.js → components/table/TableAccordionTd.js} +14 -48
- package/components/table/TableAccordionTd.js.map +1 -0
- package/components/table/TableAccordionTr.d.ts +13 -0
- package/components/table/TableAccordionTr.js +51 -0
- package/components/table/TableAccordionTr.js.map +1 -0
- package/components/table/TableContext.d.ts +2 -2
- package/components/table/TableContext.js +2 -2
- package/components/table/TableContext.js.map +1 -1
- package/components/table/TableTd.d.ts +2 -2
- package/components/table/TableTd.js +2 -2
- package/components/table/TableTd.js.map +1 -1
- package/components/table/TableTr.d.ts +6 -1
- package/components/table/TableTr.js +9 -4
- package/components/table/TableTr.js.map +1 -1
- package/components/table/style/dnb-table.css +84 -64
- package/components/table/style/dnb-table.min.css +1 -1
- package/components/table/style/dnb-table.scss +1 -1
- package/components/table/style/table-accordion.scss +62 -44
- package/components/table/style/table-td.scss +1 -1
- package/components/table/style/themes/dnb-table-theme-sbanken.css +10 -0
- package/components/table/style/themes/dnb-table-theme-sbanken.min.css +3 -1
- package/components/table/style/themes/dnb-table-theme-sbanken.scss +14 -0
- package/components/table/useTableAnimationHandler.d.ts +20 -0
- package/components/table/useTableAnimationHandler.js +63 -0
- package/components/table/useTableAnimationHandler.js.map +1 -0
- package/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +1 -0
- package/es/components/aria-live/useAriaLive.d.ts +1 -1
- package/es/components/breadcrumb/Breadcrumb.d.ts +2 -2
- package/es/components/breadcrumb/Breadcrumb.js +3 -3
- package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/es/components/breadcrumb/style/dnb-breadcrumb.css +7 -2
- package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
- package/es/components/breadcrumb/style/dnb-breadcrumb.scss +10 -2
- package/es/components/button/Button.js +2 -2
- package/es/components/button/Button.js.map +1 -1
- package/es/components/button/style/themes/dnb-button-theme-sbanken.css +23 -11
- package/es/components/button/style/themes/dnb-button-theme-sbanken.min.css +3 -3
- package/es/components/button/style/themes/dnb-button-theme-sbanken.scss +30 -14
- package/es/components/card/style/dnb-card.css +11 -2
- package/es/components/card/style/dnb-card.min.css +1 -1
- package/es/components/card/style/dnb-card.scss +12 -2
- package/es/components/form-label/style/dnb-form-label.css +4 -1
- package/es/components/form-label/style/dnb-form-label.min.css +1 -1
- package/es/components/form-label/style/dnb-form-label.scss +5 -2
- package/es/components/global-status/GlobalStatus.d.ts +1 -1
- package/es/components/global-status/GlobalStatusProvider.d.ts +1 -1
- package/es/components/height-animation/HeightAnimationInstance.d.ts +5 -6
- package/es/components/height-animation/HeightAnimationInstance.js +12 -12
- package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
- package/es/components/height-animation/useHeightAnimation.js +11 -10
- package/es/components/height-animation/useHeightAnimation.js.map +1 -1
- package/es/components/input/Input.d.ts +1 -1
- package/es/components/pagination/InfinityScroller.d.ts +1 -1
- package/es/components/progress-indicator/ProgressIndicator.js +5 -7
- package/es/components/progress-indicator/ProgressIndicator.js.map +1 -1
- package/es/components/progress-indicator/ProgressIndicatorCircular.js +1 -1
- package/es/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
- package/es/components/progress-indicator/ProgressIndicatorLinear.js +4 -4
- package/es/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
- package/es/components/progress-indicator/style/dnb-progress-indicator.css +5 -2
- package/es/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
- package/es/components/progress-indicator/style/dnb-progress-indicator.scss +5 -2
- package/es/components/space/SpacingHelper.d.ts +5 -5
- package/es/components/table/Table.js +1 -1
- package/es/components/table/Table.js.map +1 -1
- package/es/components/table/TableAccordion.js +38 -53
- package/es/components/table/TableAccordion.js.map +1 -1
- package/es/components/table/TableAccordionTd.d.ts +9 -0
- package/{components/table/TableAccordionContent.js → es/components/table/TableAccordionTd.js} +14 -49
- package/es/components/table/TableAccordionTd.js.map +1 -0
- package/es/components/table/TableAccordionTr.d.ts +13 -0
- package/es/components/table/TableAccordionTr.js +51 -0
- package/es/components/table/TableAccordionTr.js.map +1 -0
- package/es/components/table/TableContext.d.ts +2 -2
- package/es/components/table/TableContext.js +2 -2
- package/es/components/table/TableContext.js.map +1 -1
- package/es/components/table/TableTd.d.ts +2 -2
- package/es/components/table/TableTd.js +2 -2
- package/es/components/table/TableTd.js.map +1 -1
- package/es/components/table/TableTr.d.ts +6 -1
- package/es/components/table/TableTr.js +9 -4
- package/es/components/table/TableTr.js.map +1 -1
- package/es/components/table/style/dnb-table.css +84 -64
- package/es/components/table/style/dnb-table.min.css +1 -1
- package/es/components/table/style/dnb-table.scss +1 -1
- package/es/components/table/style/table-accordion.scss +62 -44
- package/es/components/table/style/table-td.scss +1 -1
- package/es/components/table/style/themes/dnb-table-theme-sbanken.css +10 -0
- package/es/components/table/style/themes/dnb-table-theme-sbanken.min.css +3 -1
- package/es/components/table/style/themes/dnb-table-theme-sbanken.scss +14 -0
- package/es/components/table/useTableAnimationHandler.d.ts +20 -0
- package/es/components/table/useTableAnimationHandler.js +62 -0
- package/es/components/table/useTableAnimationHandler.js.map +1 -0
- package/es/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +1 -0
- package/es/extensions/forms/DataContext/Context.d.ts +1 -3
- package/es/extensions/forms/DataContext/Context.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.d.ts +1 -2
- package/es/extensions/forms/DataContext/Provider/Provider.js +1 -5
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/es/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -2
- package/es/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +2 -2
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -0
- package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +6 -0
- package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
- package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -2
- package/es/extensions/forms/Form/data-context/useData.d.ts +1 -1
- package/es/extensions/forms/Form/data-context/useData.js +2 -18
- package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
- package/es/extensions/forms/Form/data-context/useError.d.ts +2 -1
- package/es/extensions/forms/Form/data-context/useError.js +4 -2
- package/es/extensions/forms/Form/data-context/useError.js.map +1 -1
- package/es/extensions/forms/Value/Number/Number.d.ts +2 -2
- package/es/extensions/forms/Value/Number/Number.js +1 -1
- package/es/extensions/forms/Value/Number/Number.js.map +1 -1
- package/es/extensions/forms/hooks/useDataValue.d.ts +4 -12
- package/es/extensions/forms/hooks/useDataValue.js +5 -5
- package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/es/extensions/forms/hooks/useMounted.d.ts +2 -0
- package/es/extensions/forms/hooks/useMounted.js +14 -0
- package/es/extensions/forms/hooks/useMounted.js.map +1 -0
- package/es/extensions/forms/style/dnb-forms.css +8 -2
- package/es/extensions/forms/style/dnb-forms.min.css +1 -1
- package/es/extensions/forms/types.d.ts +2 -0
- package/es/extensions/forms/types.js.map +1 -1
- package/es/extensions/payment-card/utils/CardDesigns.d.ts +96 -96
- package/es/fragments/drawer-list/DrawerListHelpers.d.ts +52 -52
- 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/Theme.d.ts +7 -1
- package/es/shared/Theme.js +20 -7
- package/es/shared/Theme.js.map +1 -1
- package/es/shared/helpers/debounce.d.ts +37 -0
- package/es/shared/helpers/debounce.js +76 -0
- package/es/shared/helpers/debounce.js.map +1 -0
- package/es/shared/helpers/useSharedState.d.ts +1 -0
- package/es/shared/helpers/useSharedState.js +49 -20
- package/es/shared/helpers/useSharedState.js.map +1 -1
- package/es/shared/helpers/withCamelCaseProps.d.ts +7 -0
- package/es/shared/helpers/withCamelCaseProps.js.map +1 -1
- package/es/shared/helpers.d.ts +1 -25
- package/es/shared/helpers.js +1 -29
- package/es/shared/helpers.js.map +1 -1
- package/es/shared/useTheme.d.ts +1 -0
- package/es/style/dnb-ui-components.css +119 -73
- package/es/style/dnb-ui-components.min.css +3 -3
- package/es/style/dnb-ui-extensions.css +8 -2
- package/es/style/dnb-ui-extensions.min.css +1 -1
- package/es/style/dnb-ui-forms.css +8 -2
- package/es/style/dnb-ui-forms.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +127 -75
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +8 -2
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +8 -2
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -0
- package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +160 -86
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
- package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -0
- package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +8 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +8 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/es/style/themes/theme-ui/prism/dnb-prism-theme.d.ts +3 -3
- package/es/style/themes/theme-ui/ui-theme-components.css +127 -75
- package/es/style/themes/theme-ui/ui-theme-components.min.css +3 -3
- package/es/style/themes/theme-ui/ui-theme-extensions.css +8 -2
- package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.css +8 -2
- package/es/style/themes/theme-ui/ui-theme-forms.min.css +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/Context.d.ts +1 -3
- package/extensions/forms/DataContext/Context.js.map +1 -1
- package/extensions/forms/DataContext/Provider/Provider.d.ts +1 -2
- package/extensions/forms/DataContext/Provider/Provider.js +1 -5
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -2
- package/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
- package/extensions/forms/FieldBlock/style/dnb-field-block.css +2 -2
- package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -0
- package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +6 -0
- package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
- package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -2
- package/extensions/forms/Form/data-context/useData.d.ts +1 -1
- package/extensions/forms/Form/data-context/useData.js +2 -18
- package/extensions/forms/Form/data-context/useData.js.map +1 -1
- package/extensions/forms/Form/data-context/useError.d.ts +2 -1
- package/extensions/forms/Form/data-context/useError.js +4 -2
- package/extensions/forms/Form/data-context/useError.js.map +1 -1
- package/extensions/forms/Value/Number/Number.d.ts +2 -2
- package/extensions/forms/Value/Number/Number.js +1 -1
- package/extensions/forms/Value/Number/Number.js.map +1 -1
- package/extensions/forms/hooks/useDataValue.d.ts +4 -12
- package/extensions/forms/hooks/useDataValue.js +5 -5
- package/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/extensions/forms/hooks/useMounted.d.ts +2 -0
- package/extensions/forms/hooks/useMounted.js +14 -0
- package/extensions/forms/hooks/useMounted.js.map +1 -0
- package/extensions/forms/style/dnb-forms.css +8 -2
- package/extensions/forms/style/dnb-forms.min.css +1 -1
- package/extensions/forms/types.d.ts +2 -0
- package/extensions/forms/types.js.map +1 -1
- package/extensions/payment-card/utils/CardDesigns.d.ts +96 -96
- package/fragments/drawer-list/DrawerListHelpers.d.ts +52 -52
- 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/Theme.d.ts +7 -1
- package/shared/Theme.js +20 -7
- package/shared/Theme.js.map +1 -1
- package/shared/helpers/debounce.d.ts +37 -0
- package/shared/helpers/debounce.js +83 -0
- package/shared/helpers/debounce.js.map +1 -0
- package/shared/helpers/useSharedState.d.ts +1 -0
- package/shared/helpers/useSharedState.js +49 -20
- package/shared/helpers/useSharedState.js.map +1 -1
- package/shared/helpers/withCamelCaseProps.d.ts +7 -0
- package/shared/helpers/withCamelCaseProps.js.map +1 -1
- package/shared/helpers.d.ts +1 -25
- package/shared/helpers.js +3 -36
- package/shared/helpers.js.map +1 -1
- package/shared/useTheme.d.ts +1 -0
- package/style/dnb-ui-components.css +119 -73
- package/style/dnb-ui-components.min.css +3 -3
- package/style/dnb-ui-extensions.css +8 -2
- package/style/dnb-ui-extensions.min.css +1 -1
- package/style/dnb-ui-forms.css +8 -2
- package/style/dnb-ui-forms.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +127 -75
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
- package/style/themes/theme-eiendom/eiendom-theme-extensions.css +8 -2
- package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.css +8 -2
- package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -0
- package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +160 -86
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
- package/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -0
- package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-extensions.css +8 -2
- package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.css +8 -2
- package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/style/themes/theme-ui/prism/dnb-prism-theme.d.ts +3 -3
- package/style/themes/theme-ui/ui-theme-components.css +127 -75
- package/style/themes/theme-ui/ui-theme-components.min.css +3 -3
- package/style/themes/theme-ui/ui-theme-extensions.css +8 -2
- package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-forms.css +8 -2
- package/style/themes/theme-ui/ui-theme-forms.min.css +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 +3 -3
- package/umd/dnb-ui-lib.min.js +1 -1
- package/cjs/components/table/TableAccordionContent.d.ts +0 -18
- package/cjs/components/table/TableAccordionContent.js.map +0 -1
- package/components/table/TableAccordionContent.d.ts +0 -18
- package/components/table/TableAccordionContent.js.map +0 -1
- package/es/components/table/TableAccordionContent.d.ts +0 -18
- package/es/components/table/TableAccordionContent.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","names":["_react","_interopRequireWildcard","require","_jsonPointer","_interopRequireDefault","_ajv","_useMountEffect","_useUpdateEffect","_useSharedState","_Context","_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","_ref","_sharedAttachments$da","id","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","scrollTopOnSubmit","sessionStorageId","ajvInstance","filterData","errorMessages","contextErrorMessages","children","rest","forceUpdate","useReducer","console","error","ajvRef","useRef","makeAjvInstance","mountedFieldPathsRef","errorsRef","showAllErrorsRef","setShowAllErrors","useCallback","showAllErrors","current","valuesWithErrorRef","initialData","useMemo","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","ajvValidatorRef","validateDataNow","_ajvValidatorRef$curr","ajvErrorsToFormErrors","errors","validateData","hasFieldError","path","_errorsRef$current","Boolean","includes","hasErrors","find","setValueWithError","withError","addListPath","removeListPath","filterDataHandler","filtered","entries","fieldPropsRef","_ref2","props","exists","pointer","result","remove","setProps","sharedData","useSharedState","sharedAttachments","updateSharedData","update","extendSharedData","extend","extendAttachment","rerenderUseDataHook","cacheRef","shared","hasUsedInitialData","countRef","Error","updateDataValue","_internalDataRef$curr","givenData","match","newData","structuredClone","e","_window$sessionStorag2","setItem","stringify","handlePathChange","handleMountField","handleUnMountField","_fieldPropsRef$curren","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmit","formElement","resetForm","_formElement$reset","reset","removeItem","clearData","useMountEffect","_ajvRef$current","compile","useUpdateEffect","_ajvRef$current2","createElement","hasContext","mountedFieldPaths","paths","concat","thisPath"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, { useRef, useMemo, useCallback, useReducer } from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n} from '../../utils/ajv'\nimport {\n FormError,\n CustomErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n} from '../../types'\nimport useMountEffect from '../../hooks/useMountEffect'\nimport useUpdateEffect from '../../hooks/useUpdateEffect'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport Context, { ContextState, Path } 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 UpdateDataValue = (path: Path, data: unknown) => void\n\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterData = (\n path: Path,\n value: any,\n props: FieldProps\n) => boolean | undefined\n\nexport type OnSubmitReturn = {\n /** Will remove browser-side stored autocomplete data */\n resetForm: () => void\n /** Will empty the whole internal data set of the form */\n clearData: () => void\n}\n\nexport type OnSubmit<Data = JsonObject> = (\n data: Partial<Data>,\n { resetForm, clearData }: OnSubmitReturn\n) => void\n\nexport interface Props<Data extends JsonObject> {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: string\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?: Partial<Data>\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Partial<Data>\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions\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?: CustomErrorMessagesWithPaths\n /**\n * Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.\n */\n filterData?: FilterData\n /**\n * Change handler for the whole data set\n */\n onChange?: (data: Data) => void\n /**\n * Change handler for each value\n */\n onPathChange?: (path: Path, value: any) => void\n /**\n * Submit called, data was valid (if validation available)\n */\n onSubmit?: OnSubmit\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\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 children: React.ReactNode\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>({\n id,\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n ajvInstance,\n filterData,\n errorMessages: contextErrorMessages,\n children,\n ...rest\n}: Props<Data>) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n console.error(\n 'Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.'\n )\n }\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n // - Paths\n const mountedFieldPathsRef = useRef<Path[]>([])\n // - Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<string, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n\n // - Errors reported by fields, based on their direct validation rules\n const valuesWithErrorRef = useRef<Path[]>([])\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 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<Partial<Data>>(initialData)\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n const validateDataNow = 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 )\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 validateDataNow()\n forceUpdate()\n }, [validateDataNow])\n\n // - Error handling\n const hasFieldError = useCallback((path: Path) => {\n return Boolean(\n errorsRef.current?.[path] !== undefined ||\n valuesWithErrorRef.current.includes(path)\n )\n }, [])\n const hasErrors = useCallback(() => {\n return Boolean(\n mountedFieldPathsRef.current.find((path) => hasFieldError(path))\n )\n }, [hasFieldError])\n\n /**\n * Sets the error state for a specific path\n */\n const setValueWithError = useCallback(\n (path: Path, withError: boolean) => {\n if (withError !== valuesWithErrorRef.current.includes(path)) {\n // The boolean error state for the target value was changed\n valuesWithErrorRef.current = withError\n ? addListPath(valuesWithErrorRef.current, path)\n : removeListPath(valuesWithErrorRef.current, path)\n forceUpdate()\n }\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 const filtered = { ...data }\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n const result = filter(\n path,\n exists ? pointer.get(data, path) : undefined,\n props\n )\n if (result === false && exists) {\n pointer.remove(filtered, path)\n }\n })\n\n return filtered\n }\n\n return data\n },\n [filterData]\n )\n const fieldPropsRef = useRef<Record<string, FieldProps>>({})\n const setProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = props\n },\n []\n )\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAttachments = useSharedState<{\n filterDataHandler?: Props<Data>['filterData']\n hasErrors?: () => boolean\n rerenderUseDataHook?: () => void\n }>(id + '-attachments')\n\n const updateSharedData = sharedData.update\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 countRef = useRef(0)\n if (countRef.current++ > 100) {\n throw new Error('countRef.current: ' + countRef.current)\n }\n\n internalDataRef.current = useMemo(() => {\n // Update the shared state, if initialData is given and no shared state is available\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 ) {\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 ) {\n cacheRef.current.shared = sharedData.data\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, data, initialData, sharedData])\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 validateDataNow()\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?.({ filterDataHandler, hasErrors })\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n filterData,\n filterDataHandler,\n rerenderUseDataHook,\n hasErrors,\n id,\n extendAttachment,\n ])\n\n /**\n * Update the data set\n */\n const updateDataValue: UpdateDataValue = useCallback(\n (path, value) => {\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 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 if (id) {\n updateSharedData?.(newData)\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n\n internalDataRef.current = newData\n\n if (sessionStorageId && typeof window !== 'undefined') {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(newData)\n )\n }\n\n forceUpdate()\n\n return newData\n },\n [\n filterData,\n id,\n sessionStorageId,\n rerenderUseDataHook,\n updateSharedData,\n ]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: UpdateDataValue = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n onPathChange?.(path, value)\n\n const newData = updateDataValue(path, value)\n\n onChange?.(newData as Data)\n\n showAllErrorsRef.current = false\n\n validateData()\n },\n [onPathChange, updateDataValue, onChange, validateData]\n )\n\n // - Mounted fields\n const handleMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n if (fieldPropsRef.current?.[path]) {\n delete fieldPropsRef.current[path]\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 * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n ({ formElement = null } = {}) => {\n if (!hasErrors()) {\n const 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 const clearData = () => {\n internalDataRef.current = {}\n forceUpdate()\n }\n\n onSubmit?.(filterDataHandler(internalDataRef.current as Data), {\n resetForm,\n clearData,\n })\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n } else {\n setShowAllErrors(true)\n onSubmitRequest?.()\n }\n\n return internalDataRef.current\n },\n [\n hasErrors,\n onSubmit,\n filterDataHandler,\n scrollTopOnSubmit,\n sessionStorageId,\n scrollToTop,\n setShowAllErrors,\n onSubmitRequest,\n ]\n )\n\n // - ajv validator routines\n\n useMountEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n })\n\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 return (\n <Context.Provider\n value={{\n hasContext: true,\n data: internalDataRef.current,\n ...rest,\n handlePathChange,\n updateDataValue,\n validateData,\n handleSubmit,\n scrollToTop,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n setShowAllErrors,\n mountedFieldPaths: mountedFieldPathsRef.current,\n handleMountField,\n handleUnMountField,\n hasErrors,\n hasFieldError,\n setValueWithError,\n setProps,\n ajvInstance: ajvRef.current,\n schema,\n contextErrorMessages,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\ntype PathList = string[]\n\nfunction addListPath(paths: PathList, path: Path): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nfunction removeListPath(paths: PathList, path: Path): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Provider.js","names":["_react","_interopRequireWildcard","require","_jsonPointer","_interopRequireDefault","_ajv","_useMountEffect","_useUpdateEffect","_useSharedState","_Context","_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","_ref","_sharedAttachments$da","id","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","scrollTopOnSubmit","sessionStorageId","ajvInstance","filterData","errorMessages","contextErrorMessages","children","rest","forceUpdate","useReducer","console","error","ajvRef","useRef","makeAjvInstance","mountedFieldPathsRef","errorsRef","showAllErrorsRef","setShowAllErrors","useCallback","showAllErrors","current","valuesWithErrorRef","initialData","useMemo","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","ajvValidatorRef","validateDataNow","_ajvValidatorRef$curr","ajvErrorsToFormErrors","errors","validateData","hasFieldError","path","_errorsRef$current","Boolean","includes","hasErrors","find","setValueWithError","withError","addListPath","removeListPath","filterDataHandler","filtered","entries","fieldPropsRef","_ref2","props","exists","pointer","result","remove","setProps","sharedData","useSharedState","sharedAttachments","updateSharedData","update","extendSharedData","extend","extendAttachment","rerenderUseDataHook","cacheRef","shared","hasUsedInitialData","updateDataValue","_internalDataRef$curr","givenData","match","newData","structuredClone","e","_window$sessionStorag2","setItem","stringify","handlePathChange","handleMountField","handleUnMountField","_fieldPropsRef$curren","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmit","formElement","resetForm","_formElement$reset","reset","removeItem","clearData","useMountEffect","_ajvRef$current","compile","useUpdateEffect","_ajvRef$current2","createElement","hasContext","mountedFieldPaths","paths","concat","thisPath"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, { useRef, useMemo, useCallback, useReducer } from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n} from '../../utils/ajv'\nimport {\n FormError,\n CustomErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n Path,\n} from '../../types'\nimport useMountEffect from '../../hooks/useMountEffect'\nimport useUpdateEffect from '../../hooks/useUpdateEffect'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport Context, { ContextState } 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 UpdateDataValue = (path: Path, data: unknown) => void\n\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterData = (\n path: Path,\n value: any,\n props: FieldProps\n) => boolean | undefined\n\nexport type OnSubmitReturn = {\n /** Will remove browser-side stored autocomplete data */\n resetForm: () => void\n /** Will empty the whole internal data set of the form */\n clearData: () => void\n}\n\nexport type OnSubmit<Data = JsonObject> = (\n data: Partial<Data>,\n { resetForm, clearData }: OnSubmitReturn\n) => void\n\nexport interface Props<Data extends JsonObject> {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: string\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?: Partial<Data>\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Partial<Data>\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions\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?: CustomErrorMessagesWithPaths\n /**\n * Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.\n */\n filterData?: FilterData\n /**\n * Change handler for the whole data set\n */\n onChange?: (data: Data) => void\n /**\n * Change handler for each value\n */\n onPathChange?: (path: Path, value: any) => void\n /**\n * Submit called, data was valid (if validation available)\n */\n onSubmit?: OnSubmit\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\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 children: React.ReactNode\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>({\n id,\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n ajvInstance,\n filterData,\n errorMessages: contextErrorMessages,\n children,\n ...rest\n}: Props<Data>) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n console.error(\n 'Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.'\n )\n }\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n // - Paths\n const mountedFieldPathsRef = useRef<Path[]>([])\n // - Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<string, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n\n // - Errors reported by fields, based on their direct validation rules\n const valuesWithErrorRef = useRef<Path[]>([])\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 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<Partial<Data>>(initialData)\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n const validateDataNow = 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 )\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 validateDataNow()\n forceUpdate()\n }, [validateDataNow])\n\n // - Error handling\n const hasFieldError = useCallback((path: Path) => {\n return Boolean(\n errorsRef.current?.[path] !== undefined ||\n valuesWithErrorRef.current.includes(path)\n )\n }, [])\n const hasErrors = useCallback(() => {\n return Boolean(\n mountedFieldPathsRef.current.find((path) => hasFieldError(path))\n )\n }, [hasFieldError])\n\n /**\n * Sets the error state for a specific path\n */\n const setValueWithError = useCallback(\n (path: Path, withError: boolean) => {\n if (withError !== valuesWithErrorRef.current.includes(path)) {\n // The boolean error state for the target value was changed\n valuesWithErrorRef.current = withError\n ? addListPath(valuesWithErrorRef.current, path)\n : removeListPath(valuesWithErrorRef.current, path)\n forceUpdate()\n }\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 const filtered = { ...data }\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n const result = filter(\n path,\n exists ? pointer.get(data, path) : undefined,\n props\n )\n if (result === false && exists) {\n pointer.remove(filtered, path)\n }\n })\n\n return filtered\n }\n\n return data\n },\n [filterData]\n )\n const fieldPropsRef = useRef<Record<string, FieldProps>>({})\n const setProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = props\n },\n []\n )\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAttachments = useSharedState<{\n filterDataHandler?: Props<Data>['filterData']\n hasErrors?: () => boolean\n rerenderUseDataHook?: () => void\n }>(id + '-attachments')\n\n const updateSharedData = sharedData.update\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 internalDataRef.current = 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 ) {\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 ) {\n cacheRef.current.shared = sharedData.data\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 }, [data, id, initialData, sharedData])\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 validateDataNow()\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?.({ filterDataHandler, hasErrors })\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n filterData,\n filterDataHandler,\n rerenderUseDataHook,\n hasErrors,\n id,\n extendAttachment,\n ])\n\n /**\n * Update the data set\n */\n const updateDataValue: UpdateDataValue = useCallback(\n (path, value) => {\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 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 if (id) {\n updateSharedData?.(newData)\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n\n internalDataRef.current = newData\n\n if (sessionStorageId && typeof window !== 'undefined') {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(newData)\n )\n }\n\n forceUpdate()\n\n return newData\n },\n [\n filterData,\n id,\n sessionStorageId,\n rerenderUseDataHook,\n updateSharedData,\n ]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: UpdateDataValue = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n onPathChange?.(path, value)\n\n const newData = updateDataValue(path, value)\n\n onChange?.(newData as Data)\n\n showAllErrorsRef.current = false\n\n validateData()\n },\n [onPathChange, updateDataValue, onChange, validateData]\n )\n\n // - Mounted fields\n const handleMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n if (fieldPropsRef.current?.[path]) {\n delete fieldPropsRef.current[path]\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 * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n ({ formElement = null } = {}) => {\n if (!hasErrors()) {\n const 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 const clearData = () => {\n internalDataRef.current = {}\n forceUpdate()\n }\n\n onSubmit?.(filterDataHandler(internalDataRef.current as Data), {\n resetForm,\n clearData,\n })\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n } else {\n setShowAllErrors(true)\n onSubmitRequest?.()\n }\n\n return internalDataRef.current\n },\n [\n hasErrors,\n onSubmit,\n filterDataHandler,\n scrollTopOnSubmit,\n sessionStorageId,\n scrollToTop,\n setShowAllErrors,\n onSubmitRequest,\n ]\n )\n\n // - ajv validator routines\n\n useMountEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n })\n\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 return (\n <Context.Provider\n value={{\n hasContext: true,\n data: internalDataRef.current,\n ...rest,\n handlePathChange,\n updateDataValue,\n validateData,\n handleSubmit,\n scrollToTop,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n setShowAllErrors,\n mountedFieldPaths: mountedFieldPathsRef.current,\n handleMountField,\n handleUnMountField,\n hasErrors,\n hasFieldError,\n setValueWithError,\n setProps,\n ajvInstance: ajvRef.current,\n schema,\n contextErrorMessages,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\ntype PathList = string[]\n\nfunction addListPath(paths: PathList, path: Path): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nfunction removeListPath(paths: PathList, path: Path): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldBlock.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_Context","_FieldBlockContext","_components","_elements","_componentHelper","_useId","_types","_useUnmountEffect","_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","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","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","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","states","exports","FieldBlock","props","nestedFieldBlockContext","useContext","FieldBlockContext","className","forId","layout","composition","label","labelDescription","asFieldset","info","warning","error","errorProp","disabled","width","contentWidth","labelSize","contentClassName","children","rest","blockId","useId","id","wasUpdated","forceUpdate","useReducer","mountedFieldsRef","useRef","stateRecordRef","fieldStateIdsRef","contentsRef","hasInitiallyErrorProp","useMemo","Boolean","setInternalRecord","useCallback","stateId","identifier","type","current","existingIndex","findIndex","item","setFieldState","showFieldError","show","map","showInitially","statusContent","state","statesWithMessages","entries","flatMap","_ref","reduce","acc","cur","existing","find","message","getMessage","messages","width_element","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","found","msg","_ref2","arr","convertJsxToString","text","createElement","CombineMessages","useEffect","useUnmountEffect","mainClasses","classnames","gridClasses","enableFieldset","useEnableFieldset","labelProps","element","space","top","bottom","size","Provider","hasErrorProp","Space","FormLabel","Fragment","FormStatus","ref","_ref3","result","count","findElementInChildren","child","_child$props","_child$type","_ref4","sharedContext","SharedContext","tr","translation","Forms","fieldErrorSummary","fieldStateSummary","Ul","_ref5","Li","Error","FormError","toString","_supportsSpacingProps","_default"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlock.tsx"],"sourcesContent":["import React, {\n useMemo,\n useContext,\n useCallback,\n useRef,\n useReducer,\n useEffect,\n} from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../shared/Context'\nimport FieldBlockContext, {\n StateWithMessage,\n StatesWithMessages,\n FieldErrorIdsRef,\n MountedFieldsRef,\n StateRecord,\n StateMessage,\n StateTypes,\n StatusContent,\n FieldBlockContextProps,\n} from './FieldBlockContext'\nimport { Identifier } from '../DataContext/Context'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { Ul, Li } from '../../../elements'\nimport {\n convertJsxToString,\n findElementInChildren,\n} from '../../../shared/component-helper'\nimport useId from '../hooks/useId'\nimport { ComponentProps, FieldProps, FormError } from '../types'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\nimport useUnmountEffect from '../hooks/useUnmountEffect'\n\nexport const states: Array<StateTypes> = ['error', 'info', 'warning']\n\nexport type Props = Pick<\n FieldProps,\n | keyof ComponentProps\n | 'layout'\n | 'label'\n | 'labelDescription'\n | 'info'\n | 'warning'\n | 'error'\n | 'disabled'\n> & {\n /** The id to link a element with */\n forId?: string\n /** Use true if you have more than one form element */\n asFieldset?: boolean\n /** Defines the layout of nested fields */\n composition?: FieldBlockContextProps['composition']\n /** Width of outer block element */\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n /** Width of contents block, while label etc can be wider if space is available */\n contentWidth?: 'small' | 'medium' | 'large' | 'stretch'\n contentClassName?: string\n /** Typography size */\n labelSize?: 'medium' | 'large'\n children: React.ReactNode\n} & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const {\n className,\n forId,\n layout = 'vertical',\n composition,\n label,\n labelDescription,\n asFieldset,\n info,\n warning,\n error: errorProp,\n disabled,\n width,\n contentWidth,\n labelSize,\n contentClassName,\n children,\n ...rest\n } = props\n\n const blockId = useId(props.id)\n const [wasUpdated, forceUpdate] = useReducer(() => ({}), {})\n const mountedFieldsRef = useRef<MountedFieldsRef>({})\n const stateRecordRef = useRef<StateRecord>({})\n const fieldStateIdsRef = useRef<FieldErrorIdsRef>(null)\n const contentsRef = useRef<HTMLDivElement>(null)\n const hasInitiallyErrorProp = useMemo(() => {\n return Boolean(errorProp)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const setInternalRecord = useCallback((props) => {\n const { stateId, identifier, type } = props\n\n if (!stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = []\n }\n\n fieldStateIdsRef.current = { error: null, warning: null, info: null }\n\n const existingIndex = stateRecordRef.current[identifier].findIndex(\n (item) => {\n return item.stateId === stateId && item.type === type\n }\n )\n\n if (existingIndex > -1) {\n stateRecordRef.current[identifier][existingIndex] = {\n ...stateRecordRef.current[identifier][existingIndex],\n ...props,\n }\n } else {\n stateRecordRef.current[identifier].push(props)\n }\n }, [])\n\n const setFieldState = useCallback(\n (props) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setFieldState(props)\n return\n }\n\n setInternalRecord(props)\n\n forceUpdate()\n },\n [nestedFieldBlockContext, setInternalRecord]\n )\n\n const showFieldError = useCallback(\n (identifier: Identifier, show: boolean) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.showFieldError(identifier, show)\n return\n }\n\n if (stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = stateRecordRef.current[\n identifier\n ].map((item) => {\n if (item.showInitially) {\n return item\n }\n\n return {\n ...item,\n show,\n }\n })\n\n forceUpdate()\n }\n },\n [nestedFieldBlockContext]\n )\n\n const statusContent = useMemo(() => {\n if (errorProp) {\n setInternalRecord({\n identifier: blockId,\n showInitially: hasInitiallyErrorProp,\n type: 'error',\n state: errorProp,\n })\n }\n\n if (warning) {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'warning',\n state: warning,\n })\n }\n\n if (info) {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'info',\n state: info,\n })\n }\n\n const statesWithMessages: Array<StatesWithMessages> =\n // 1. Prepare the states for later use\n Object.entries(stateRecordRef.current)\n .flatMap(([identifier, states]) =>\n states.map((props) => {\n return {\n identifier,\n ...props,\n }\n })\n )\n\n // 2. Take states and group the same type together\n .reduce((acc, cur) => {\n const existing = acc.find((item) => {\n return item.type === cur.type\n })\n\n const message = getMessage(cur)\n\n if (existing) {\n existing.messages.push({\n ...cur,\n message,\n })\n } else {\n acc.push({\n ...cur,\n state: undefined,\n messages: [\n {\n ...cur,\n message,\n },\n ],\n })\n }\n\n return acc\n }, [] as Array<StatesWithMessages>)\n\n // 3. Return the grouped states/messages\n return states.reduce((acc, type) => {\n const id = `${props.id || forId || blockId}-form-status--${type}`\n acc[type] = {\n id,\n label,\n state: type === 'warning' ? 'warn' : type,\n width_element: contentsRef,\n\n // Enable animation only in the browser and not in tests\n no_animation:\n process.env.NODE_ENV === 'test'\n ? true\n : typeof globalThis !== 'undefined'\n ? globalThis.IS_TEST === true\n : false,\n }\n\n const found = statesWithMessages.find((item) => {\n return item.type === type\n })\n\n if (found?.messages) {\n // Hide/remove messages that should be hidden and are not marked as to be shown initially\n const messages = found.messages\n .map((msg) => {\n if (msg.type === 'error') {\n if (!msg.showInitially && !msg.show) {\n msg.message = null\n }\n }\n\n return msg\n })\n .filter(({ message }) => message)\n .reduce((acc, msg, i, arr) => {\n const existingIndex = arr.findIndex((item) => {\n return (\n convertJsxToString(item.message) ===\n convertJsxToString(msg.message)\n )\n })\n\n // Remove duplicates, use the first found message\n if (existingIndex === i) {\n acc.push(msg)\n }\n\n return acc\n }, [])\n\n // Combine the messages and put them in an ul/li list\n if (messages.length > 0) {\n acc[type] = {\n ...acc[type],\n text: <CombineMessages type={type} messages={messages} />,\n }\n\n fieldStateIdsRef.current[type] = id\n } else {\n fieldStateIdsRef.current[type] = undefined\n }\n }\n\n return acc\n }, {}) as StatusContent\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n info,\n warning,\n errorProp,\n nestedFieldBlockContext,\n setInternalRecord,\n blockId,\n wasUpdated, // wasUpdated is needed to get the current errors\n ])\n\n // Handle the error prop from outside\n useEffect(() => {\n if (!nestedFieldBlockContext) {\n showFieldError(blockId, Boolean(errorProp))\n }\n }, [errorProp, blockId, showFieldError, nestedFieldBlockContext])\n\n useUnmountEffect(() => () => {\n mountedFieldsRef.current = {}\n stateRecordRef.current = {}\n })\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width !== undefined && `dnb-forms-field-block--width-${width}`,\n className\n )\n const gridClasses = classnames(\n 'dnb-forms-field-block__grid',\n `dnb-forms-field-block--layout-${layout}`\n )\n\n // A child component with a label was found, use fieldset/legend instead of div/label\n const enableFieldset = useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n })\n\n const labelProps: FormLabelAllProps = {\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n space: { top: 0, bottom: 'x-small' },\n size: labelSize,\n disabled,\n }\n\n return (\n <FieldBlockContext.Provider\n value={{\n setFieldState,\n showFieldError,\n hasErrorProp: Boolean(errorProp),\n fieldStateIdsRef,\n mountedFieldsRef,\n composition,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n {labelDescription ? (\n <div className=\"dnb-forms-field-block__label\">\n {label || labelDescription ? (\n <FormLabel {...labelProps}>\n {label}\n {labelDescription && (\n <span className=\"dnb-forms-field-block__label-description\">\n {labelDescription}\n </span>\n )}\n </FormLabel>\n ) : (\n <> </>\n )}\n </div>\n ) : (\n label && <FormLabel {...labelProps}>{label}</FormLabel>\n )}\n\n <div className=\"dnb-forms-field-block__status\">\n <FormStatus {...statusContent?.error} />\n <FormStatus {...statusContent?.warning} />\n <FormStatus {...statusContent?.info} />\n </div>\n\n <div\n className={classnames(\n 'dnb-forms-field-block__contents',\n contentWidth !== undefined &&\n `dnb-forms-field-block__contents--width-${contentWidth}`,\n composition !== undefined &&\n `dnb-forms-field-block__contents__composition--${\n composition === true ? 'horizontal' : composition\n }`,\n contentClassName\n )}\n ref={contentsRef}\n >\n {children}\n </div>\n </div>\n </Space>\n </FieldBlockContext.Provider>\n )\n}\n\nfunction useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n}) {\n return useMemo(() => {\n if (asFieldset === false) {\n return false\n }\n\n let result = asFieldset\n\n if (label && !result && !nestedFieldBlockContext) {\n let count = 0\n\n findElementInChildren(children, (child: React.ReactElement) => {\n if (\n child?.props?.label ||\n child?.type?.['_formElement'] === true\n ) {\n count++\n }\n if (count > 1) {\n return (result = true)\n }\n })\n }\n\n return Boolean(result)\n }, [asFieldset, children, label, nestedFieldBlockContext])\n}\n\nfunction CombineMessages({\n type,\n messages,\n}: {\n type: StateTypes\n messages: Array<StateWithMessage>\n}) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n if (messages.length === 1) {\n return <>{messages[0].message}</>\n }\n\n return (\n <>\n {type === 'error' ? tr.fieldErrorSummary : tr.fieldStateSummary}\n <Ul>\n {messages.map(({ message }, i) => {\n return <Li key={i}>{message}</Li>\n })}\n </Ul>\n </>\n )\n}\n\nfunction getMessage(item: Partial<StateWithMessage>): StateMessage {\n const { state } = item\n\n return ((state instanceof Error && state.message) ||\n (state instanceof FormError && state.message) ||\n state?.toString() ||\n state) as StateMessage\n}\n\nFieldBlock._supportsSpacingProps = true\n\nexport default FieldBlock\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAQA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,QAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,kBAAA,GAAAF,sBAAA,CAAAF,OAAA;AAYA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,gBAAA,GAAAP,OAAA;AAIA,IAAAQ,MAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,MAAA,GAAAT,OAAA;AAEA,IAAAU,iBAAA,GAAAR,sBAAA,CAAAF,OAAA;AAAwD,MAAAW,SAAA;AAAA,SAAAT,uBAAAU,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAjB,wBAAAa,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAAA,SAAAW,SAAA,IAAAA,QAAA,GAAAT,MAAA,CAAAU,MAAA,GAAAV,MAAA,CAAAU,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAV,GAAA,IAAAa,MAAA,QAAAhB,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAU,MAAA,EAAAb,GAAA,KAAAS,MAAA,CAAAT,GAAA,IAAAa,MAAA,CAAAb,GAAA,gBAAAS,MAAA,YAAAH,QAAA,CAAAQ,KAAA,OAAAH,SAAA;AAAA,SAAAI,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAArB,MAAA,CAAAqB,IAAA,CAAAF,MAAA,OAAAnB,MAAA,CAAAsB,qBAAA,QAAAC,OAAA,GAAAvB,MAAA,CAAAsB,qBAAA,CAAAH,MAAA,GAAAC,cAAA,KAAAG,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAzB,MAAA,CAAAE,wBAAA,CAAAiB,MAAA,EAAAM,GAAA,EAAAC,UAAA,OAAAL,IAAA,CAAAM,IAAA,CAAAV,KAAA,CAAAI,IAAA,EAAAE,OAAA,YAAAF,IAAA;AAAA,SAAAO,cAAAhB,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAK,OAAA,CAAAlB,MAAA,CAAAgB,MAAA,OAAAa,OAAA,WAAA1B,GAAA,IAAA2B,eAAA,CAAAlB,MAAA,EAAAT,GAAA,EAAAa,MAAA,CAAAb,GAAA,SAAAH,MAAA,CAAA+B,yBAAA,GAAA/B,MAAA,CAAAgC,gBAAA,CAAApB,MAAA,EAAAZ,MAAA,CAAA+B,yBAAA,CAAAf,MAAA,KAAAE,OAAA,CAAAlB,MAAA,CAAAgB,MAAA,GAAAa,OAAA,WAAA1B,GAAA,IAAAH,MAAA,CAAAC,cAAA,CAAAW,MAAA,EAAAT,GAAA,EAAAH,MAAA,CAAAE,wBAAA,CAAAc,MAAA,EAAAb,GAAA,iBAAAS,MAAA;AAAA,SAAAkB,gBAAA3C,GAAA,EAAAgB,GAAA,EAAA8B,KAAA,IAAA9B,GAAA,GAAA+B,cAAA,CAAA/B,GAAA,OAAAA,GAAA,IAAAhB,GAAA,IAAAa,MAAA,CAAAC,cAAA,CAAAd,GAAA,EAAAgB,GAAA,IAAA8B,KAAA,EAAAA,KAAA,EAAAP,UAAA,QAAAS,YAAA,QAAAC,QAAA,oBAAAjD,GAAA,CAAAgB,GAAA,IAAA8B,KAAA,WAAA9C,GAAA;AAAA,SAAA+C,eAAAG,GAAA,QAAAlC,GAAA,GAAAmC,YAAA,CAAAD,GAAA,2BAAAlC,GAAA,gBAAAA,GAAA,GAAAoC,MAAA,CAAApC,GAAA;AAAA,SAAAmC,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAApC,IAAA,CAAAkC,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAC,SAAA,4DAAAN,IAAA,gBAAAF,MAAA,GAAAS,MAAA,EAAAR,KAAA;AAAA,SAAAS,yBAAAjC,MAAA,EAAAkC,QAAA,QAAAlC,MAAA,yBAAAJ,MAAA,GAAAuC,6BAAA,CAAAnC,MAAA,EAAAkC,QAAA,OAAA/C,GAAA,EAAAU,CAAA,MAAAb,MAAA,CAAAsB,qBAAA,QAAA8B,gBAAA,GAAApD,MAAA,CAAAsB,qBAAA,CAAAN,MAAA,QAAAH,CAAA,MAAAA,CAAA,GAAAuC,gBAAA,CAAArC,MAAA,EAAAF,CAAA,MAAAV,GAAA,GAAAiD,gBAAA,CAAAvC,CAAA,OAAAqC,QAAA,CAAAG,OAAA,CAAAlD,GAAA,uBAAAH,MAAA,CAAAI,SAAA,CAAAkD,oBAAA,CAAAhD,IAAA,CAAAU,MAAA,EAAAb,GAAA,aAAAS,MAAA,CAAAT,GAAA,IAAAa,MAAA,CAAAb,GAAA,cAAAS,MAAA;AAAA,SAAAuC,8BAAAnC,MAAA,EAAAkC,QAAA,QAAAlC,MAAA,yBAAAJ,MAAA,WAAA2C,UAAA,GAAAvD,MAAA,CAAAqB,IAAA,CAAAL,MAAA,OAAAb,GAAA,EAAAU,CAAA,OAAAA,CAAA,MAAAA,CAAA,GAAA0C,UAAA,CAAAxC,MAAA,EAAAF,CAAA,MAAAV,GAAA,GAAAoD,UAAA,CAAA1C,CAAA,OAAAqC,QAAA,CAAAG,OAAA,CAAAlD,GAAA,kBAAAS,MAAA,CAAAT,GAAA,IAAAa,MAAA,CAAAb,GAAA,YAAAS,MAAA;AAEjD,MAAM4C,MAAyB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;AAAAC,OAAA,CAAAD,MAAA,GAAAA,MAAA;AA6BrE,SAASE,UAAUA,CAACC,KAAY,EAAE;EAChC,MAAMC,uBAAuB,GAAG,IAAAC,iBAAU,EAACC,0BAAiB,CAAC;EAE7D,MAAM;MACJC,SAAS;MACTC,KAAK;MACLC,MAAM,GAAG,UAAU;MACnBC,WAAW;MACXC,KAAK;MACLC,gBAAgB;MAChBC,UAAU;MACVC,IAAI;MACJC,OAAO;MACPC,KAAK,EAAEC,SAAS;MAChBC,QAAQ;MACRC,KAAK;MACLC,YAAY;MACZC,SAAS;MACTC,gBAAgB;MAChBC;IAEF,CAAC,GAAGpB,KAAK;IADJqB,IAAI,GAAA/B,wBAAA,CACLU,KAAK,EAAAzE,SAAA;EAET,MAAM+F,OAAO,GAAG,IAAAC,cAAK,EAACvB,KAAK,CAACwB,EAAE,CAAC;EAC/B,MAAM,CAACC,UAAU,EAAEC,WAAW,CAAC,GAAG,IAAAC,iBAAU,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5D,MAAMC,gBAAgB,GAAG,IAAAC,aAAM,EAAmB,CAAC,CAAC,CAAC;EACrD,MAAMC,cAAc,GAAG,IAAAD,aAAM,EAAc,CAAC,CAAC,CAAC;EAC9C,MAAME,gBAAgB,GAAG,IAAAF,aAAM,EAAmB,IAAI,CAAC;EACvD,MAAMG,WAAW,GAAG,IAAAH,aAAM,EAAiB,IAAI,CAAC;EAChD,MAAMI,qBAAqB,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC1C,OAAOC,OAAO,CAACrB,SAAS,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMsB,iBAAiB,GAAG,IAAAC,kBAAW,EAAErC,KAAK,IAAK;IAC/C,MAAM;MAAEsC,OAAO;MAAEC,UAAU;MAAEC;IAAK,CAAC,GAAGxC,KAAK;IAE3C,IAAI,CAAC8B,cAAc,CAACW,OAAO,CAACF,UAAU,CAAC,EAAE;MACvCT,cAAc,CAACW,OAAO,CAACF,UAAU,CAAC,GAAG,EAAE;IACzC;IAEAR,gBAAgB,CAACU,OAAO,GAAG;MAAE5B,KAAK,EAAE,IAAI;MAAED,OAAO,EAAE,IAAI;MAAED,IAAI,EAAE;IAAK,CAAC;IAErE,MAAM+B,aAAa,GAAGZ,cAAc,CAACW,OAAO,CAACF,UAAU,CAAC,CAACI,SAAS,CAC/DC,IAAI,IAAK;MACR,OAAOA,IAAI,CAACN,OAAO,KAAKA,OAAO,IAAIM,IAAI,CAACJ,IAAI,KAAKA,IAAI;IACvD,CACF,CAAC;IAED,IAAIE,aAAa,GAAG,CAAC,CAAC,EAAE;MACtBZ,cAAc,CAACW,OAAO,CAACF,UAAU,CAAC,CAACG,aAAa,CAAC,GAAAzE,aAAA,CAAAA,aAAA,KAC5C6D,cAAc,CAACW,OAAO,CAACF,UAAU,CAAC,CAACG,aAAa,CAAC,GACjD1C,KAAK,CACT;IACH,CAAC,MAAM;MACL8B,cAAc,CAACW,OAAO,CAACF,UAAU,CAAC,CAACvE,IAAI,CAACgC,KAAK,CAAC;IAChD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM6C,aAAa,GAAG,IAAAR,kBAAW,EAC9BrC,KAAK,IAAK;IACT,IAAIC,uBAAuB,EAAE;MAE3BA,uBAAuB,CAAC4C,aAAa,CAAC7C,KAAK,CAAC;MAC5C;IACF;IAEAoC,iBAAiB,CAACpC,KAAK,CAAC;IAExB0B,WAAW,CAAC,CAAC;EACf,CAAC,EACD,CAACzB,uBAAuB,EAAEmC,iBAAiB,CAC7C,CAAC;EAED,MAAMU,cAAc,GAAG,IAAAT,kBAAW,EAChC,CAACE,UAAsB,EAAEQ,IAAa,KAAK;IACzC,IAAI9C,uBAAuB,EAAE;MAE3BA,uBAAuB,CAAC6C,cAAc,CAACP,UAAU,EAAEQ,IAAI,CAAC;MACxD;IACF;IAEA,IAAIjB,cAAc,CAACW,OAAO,CAACF,UAAU,CAAC,EAAE;MACtCT,cAAc,CAACW,OAAO,CAACF,UAAU,CAAC,GAAGT,cAAc,CAACW,OAAO,CACzDF,UAAU,CACX,CAACS,GAAG,CAAEJ,IAAI,IAAK;QACd,IAAIA,IAAI,CAACK,aAAa,EAAE;UACtB,OAAOL,IAAI;QACb;QAEA,OAAA3E,aAAA,CAAAA,aAAA,KACK2E,IAAI;UACPG;QAAI;MAER,CAAC,CAAC;MAEFrB,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EACD,CAACzB,uBAAuB,CAC1B,CAAC;EAED,MAAMiD,aAAa,GAAG,IAAAhB,cAAO,EAAC,MAAM;IAClC,IAAIpB,SAAS,EAAE;MACbsB,iBAAiB,CAAC;QAChBG,UAAU,EAAEjB,OAAO;QACnB2B,aAAa,EAAEhB,qBAAqB;QACpCO,IAAI,EAAE,OAAO;QACbW,KAAK,EAAErC;MACT,CAAC,CAAC;IACJ;IAEA,IAAIF,OAAO,EAAE;MACXwB,iBAAiB,CAAC;QAChBG,UAAU,EAAEjB,OAAO;QACnB2B,aAAa,EAAE,IAAI;QACnBT,IAAI,EAAE,SAAS;QACfW,KAAK,EAAEvC;MACT,CAAC,CAAC;IACJ;IAEA,IAAID,IAAI,EAAE;MACRyB,iBAAiB,CAAC;QAChBG,UAAU,EAAEjB,OAAO;QACnB2B,aAAa,EAAE,IAAI;QACnBT,IAAI,EAAE,MAAM;QACZW,KAAK,EAAExC;MACT,CAAC,CAAC;IACJ;IAEA,MAAMyC,kBAA6C,GAEjD/G,MAAM,CAACgH,OAAO,CAACvB,cAAc,CAACW,OAAO,CAAC,CACnCa,OAAO,CAACC,IAAA;MAAA,IAAC,CAAChB,UAAU,EAAE1C,MAAM,CAAC,GAAA0D,IAAA;MAAA,OAC5B1D,MAAM,CAACmD,GAAG,CAAEhD,KAAK,IAAK;QACpB,OAAA/B,aAAA;UACEsE;QAAU,GACPvC,KAAK;MAEZ,CAAC,CAAC;IAAA,CACJ,CAAC,CAGAwD,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAK;MACpB,MAAMC,QAAQ,GAAGF,GAAG,CAACG,IAAI,CAAEhB,IAAI,IAAK;QAClC,OAAOA,IAAI,CAACJ,IAAI,KAAKkB,GAAG,CAAClB,IAAI;MAC/B,CAAC,CAAC;MAEF,MAAMqB,OAAO,GAAGC,UAAU,CAACJ,GAAG,CAAC;MAE/B,IAAIC,QAAQ,EAAE;QACZA,QAAQ,CAACI,QAAQ,CAAC/F,IAAI,CAAAC,aAAA,CAAAA,aAAA,KACjByF,GAAG;UACNG;QAAO,EACR,CAAC;MACJ,CAAC,MAAM;QACLJ,GAAG,CAACzF,IAAI,CAAAC,aAAA,CAAAA,aAAA,KACHyF,GAAG;UACNP,KAAK,EAAEjE,SAAS;UAChB6E,QAAQ,EAAE,CAAA9F,aAAA,CAAAA,aAAA,KAEHyF,GAAG;YACNG;UAAO;QAEV,EACF,CAAC;MACJ;MAEA,OAAOJ,GAAG;IACZ,CAAC,EAAE,EAA+B,CAAC;IAGvC,OAAO5D,MAAM,CAAC2D,MAAM,CAAC,CAACC,GAAG,EAAEjB,IAAI,KAAK;MAClC,MAAMhB,EAAE,GAAI,GAAExB,KAAK,CAACwB,EAAE,IAAInB,KAAK,IAAIiB,OAAQ,iBAAgBkB,IAAK,EAAC;MACjEiB,GAAG,CAACjB,IAAI,CAAC,GAAG;QACVhB,EAAE;QACFhB,KAAK;QACL2C,KAAK,EAAEX,IAAI,KAAK,SAAS,GAAG,MAAM,GAAGA,IAAI;QACzCwB,aAAa,EAAEhC,WAAW;QAG1BiC,YAAY,EACVC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,GAC3B,IAAI,GACJ,OAAOC,UAAU,KAAK,WAAW,GACjCA,UAAU,CAACC,OAAO,KAAK,IAAI,GAC3B;MACR,CAAC;MAED,MAAMC,KAAK,GAAGnB,kBAAkB,CAACQ,IAAI,CAAEhB,IAAI,IAAK;QAC9C,OAAOA,IAAI,CAACJ,IAAI,KAAKA,IAAI;MAC3B,CAAC,CAAC;MAEF,IAAI+B,KAAK,aAALA,KAAK,eAALA,KAAK,CAAER,QAAQ,EAAE;QAEnB,MAAMA,QAAQ,GAAGQ,KAAK,CAACR,QAAQ,CAC5Bf,GAAG,CAAEwB,GAAG,IAAK;UACZ,IAAIA,GAAG,CAAChC,IAAI,KAAK,OAAO,EAAE;YACxB,IAAI,CAACgC,GAAG,CAACvB,aAAa,IAAI,CAACuB,GAAG,CAACzB,IAAI,EAAE;cACnCyB,GAAG,CAACX,OAAO,GAAG,IAAI;YACpB;UACF;UAEA,OAAOW,GAAG;QACZ,CAAC,CAAC,CACD3G,MAAM,CAAC4G,KAAA;UAAA,IAAC;YAAEZ;UAAQ,CAAC,GAAAY,KAAA;UAAA,OAAKZ,OAAO;QAAA,EAAC,CAChCL,MAAM,CAAC,CAACC,GAAG,EAAEe,GAAG,EAAEtH,CAAC,EAAEwH,GAAG,KAAK;UAC5B,MAAMhC,aAAa,GAAGgC,GAAG,CAAC/B,SAAS,CAAEC,IAAI,IAAK;YAC5C,OACE,IAAA+B,mCAAkB,EAAC/B,IAAI,CAACiB,OAAO,CAAC,KAChC,IAAAc,mCAAkB,EAACH,GAAG,CAACX,OAAO,CAAC;UAEnC,CAAC,CAAC;UAGF,IAAInB,aAAa,KAAKxF,CAAC,EAAE;YACvBuG,GAAG,CAACzF,IAAI,CAACwG,GAAG,CAAC;UACf;UAEA,OAAOf,GAAG;QACZ,CAAC,EAAE,EAAE,CAAC;QAGR,IAAIM,QAAQ,CAAC3G,MAAM,GAAG,CAAC,EAAE;UACvBqG,GAAG,CAACjB,IAAI,CAAC,GAAAvE,aAAA,CAAAA,aAAA,KACJwF,GAAG,CAACjB,IAAI,CAAC;YACZoC,IAAI,EAAElK,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAACC,eAAe;cAACtC,IAAI,EAAEA,IAAK;cAACuB,QAAQ,EAAEA;YAAS,CAAE;UAAC,EAC1D;UAEDhC,gBAAgB,CAACU,OAAO,CAACD,IAAI,CAAC,GAAGhB,EAAE;QACrC,CAAC,MAAM;UACLO,gBAAgB,CAACU,OAAO,CAACD,IAAI,CAAC,GAAGtD,SAAS;QAC5C;MACF;MAEA,OAAOuE,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EAGR,CAAC,EAAE,CACD9C,IAAI,EACJC,OAAO,EACPE,SAAS,EACTb,uBAAuB,EACvBmC,iBAAiB,EACjBd,OAAO,EACPG,UAAU,CACX,CAAC;EAGF,IAAAsD,gBAAS,EAAC,MAAM;IACd,IAAI,CAAC9E,uBAAuB,EAAE;MAC5B6C,cAAc,CAACxB,OAAO,EAAEa,OAAO,CAACrB,SAAS,CAAC,CAAC;IAC7C;EACF,CAAC,EAAE,CAACA,SAAS,EAAEQ,OAAO,EAAEwB,cAAc,EAAE7C,uBAAuB,CAAC,CAAC;EAEjE,IAAA+E,yBAAgB,EAAC,MAAM,MAAM;IAC3BpD,gBAAgB,CAACa,OAAO,GAAG,CAAC,CAAC;IAC7BX,cAAc,CAACW,OAAO,GAAG,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEF,MAAMwC,WAAW,GAAG,IAAAC,mBAAU,EAC5B,uBAAuB,EAEvB9E,SAAS,EADTY,KAAK,KAAK9B,SAAS,IAAK,gCAA+B8B,KAAM,EAE/D,CAAC;EACD,MAAMmE,WAAW,gEAEkB7E,MAAO,EACzC;EAGD,MAAM8E,cAAc,GAAGC,iBAAiB,CAAC;IACvC7E,KAAK;IACLE,UAAU;IACVU,QAAQ;IACRnB;EACF,CAAC,CAAC;EAEF,MAAMqF,UAA6B,GAAG;IACpCC,OAAO,EAAEH,cAAc,GAAG,QAAQ,GAAG,OAAO;IAC5C/E,KAAK,EAAE+E,cAAc,GAAGlG,SAAS,GAAGmB,KAAK;IACzCmF,KAAK,EAAE;MAAEC,GAAG,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAU,CAAC;IACpCC,IAAI,EAAEzE,SAAS;IACfH;EACF,CAAC;EAED,OACErG,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAC7J,kBAAA,CAAAU,OAAiB,CAACkK,QAAQ;IACzBtH,KAAK,EAAE;MACLuE,aAAa;MACbC,cAAc;MACd+C,YAAY,EAAE1D,OAAO,CAACrB,SAAS,CAAC;MAChCiB,gBAAgB;MAChBH,gBAAgB;MAChBrB;IACF;EAAE,GAEF7F,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAC5J,WAAA,CAAA6K,KAAK,EAAAhJ,QAAA;IACJyI,OAAO,EAAEH,cAAc,GAAG,UAAU,GAAG,KAAM;IAC7ChF,SAAS,EAAE6E;EAAY,GACnB5D,IAAI,GAER3G,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA;IAAKzE,SAAS,EAAE+E;EAAY,GACzB1E,gBAAgB,GACf/F,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA;IAAKzE,SAAS,EAAC;EAA8B,GAC1CI,KAAK,IAAIC,gBAAgB,GACxB/F,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAC5J,WAAA,CAAA8K,SAAS,EAAKT,UAAU,EACtB9E,KAAK,EACLC,gBAAgB,IACf/F,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA;IAAMzE,SAAS,EAAC;EAA0C,GACvDK,gBACG,CAEC,CAAC,GAEZ/F,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAAnK,MAAA,CAAAgB,OAAA,CAAAsK,QAAA,QAAE,MAAQ,CAET,CAAC,GAENxF,KAAK,IAAI9F,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAC5J,WAAA,CAAA8K,SAAS,EAAKT,UAAU,EAAG9E,KAAiB,CACvD,EAED9F,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA;IAAKzE,SAAS,EAAC;EAA+B,GAC5C1F,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAC5J,WAAA,CAAAgL,UAAU,EAAK/C,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAErC,KAAQ,CAAC,EACxCnG,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAC5J,WAAA,CAAAgL,UAAU,EAAK/C,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEtC,OAAU,CAAC,EAC1ClG,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAC5J,WAAA,CAAAgL,UAAU,EAAK/C,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEvC,IAAO,CACnC,CAAC,EAENjG,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA;IACEzE,SAAS,EAAE,IAAA8E,mBAAU,EACnB,iCAAiC,EAOjC/D,gBAAgB,EANhBF,YAAY,KAAK/B,SAAS,IACvB,0CAAyC+B,YAAa,EAAC,EAC1DV,WAAW,KAAKrB,SAAS,IACtB,iDACCqB,WAAW,KAAK,IAAI,GAAG,YAAY,GAAGA,WACvC,EAEL,CAAE;IACF2F,GAAG,EAAElE;EAAY,GAEhBZ,QACE,CACF,CACA,CACmB,CAAC;AAEjC;AAEA,SAASiE,iBAAiBA,CAAAc,KAAA,EAKvB;EAAA,IALwB;IACzB3F,KAAK;IACLE,UAAU;IACVU,QAAQ;IACRnB;EACF,CAAC,GAAAkG,KAAA;EACC,OAAO,IAAAjE,cAAO,EAAC,MAAM;IACnB,IAAIxB,UAAU,KAAK,KAAK,EAAE;MACxB,OAAO,KAAK;IACd;IAEA,IAAI0F,MAAM,GAAG1F,UAAU;IAEvB,IAAIF,KAAK,IAAI,CAAC4F,MAAM,IAAI,CAACnG,uBAAuB,EAAE;MAChD,IAAIoG,KAAK,GAAG,CAAC;MAEb,IAAAC,sCAAqB,EAAClF,QAAQ,EAAGmF,KAAyB,IAAK;QAAA,IAAAC,YAAA,EAAAC,WAAA;QAC7D,IACEF,KAAK,aAALA,KAAK,gBAAAC,YAAA,GAALD,KAAK,CAAEvG,KAAK,cAAAwG,YAAA,eAAZA,YAAA,CAAchG,KAAK,IACnB,CAAA+F,KAAK,aAALA,KAAK,wBAAAE,WAAA,GAALF,KAAK,CAAE/D,IAAI,cAAAiE,WAAA,uBAAXA,WAAA,CAAc,cAAc,CAAC,MAAK,IAAI,EACtC;UACAJ,KAAK,EAAE;QACT;QACA,IAAIA,KAAK,GAAG,CAAC,EAAE;UACb,OAAQD,MAAM,GAAG,IAAI;QACvB;MACF,CAAC,CAAC;IACJ;IAEA,OAAOjE,OAAO,CAACiE,MAAM,CAAC;EACxB,CAAC,EAAE,CAAC1F,UAAU,EAAEU,QAAQ,EAAEZ,KAAK,EAAEP,uBAAuB,CAAC,CAAC;AAC5D;AAEA,SAAS6E,eAAeA,CAAA4B,KAAA,EAMrB;EAAA,IANsB;IACvBlE,IAAI;IACJuB;EAIF,CAAC,GAAA2C,KAAA;EACC,MAAMC,aAAa,GAAG,IAAAzG,iBAAU,EAAC0G,gBAAa,CAAC;EAC/C,MAAMC,EAAE,GAAGF,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,WAAW,CAACC,KAAK;EAE3C,IAAIhD,QAAQ,CAAC3G,MAAM,KAAK,CAAC,EAAE;IACzB,OAAO1C,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAAnK,MAAA,CAAAgB,OAAA,CAAAsK,QAAA,QAAGjC,QAAQ,CAAC,CAAC,CAAC,CAACF,OAAU,CAAC;EACnC;EAEA,OACEnJ,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAAnK,MAAA,CAAAgB,OAAA,CAAAsK,QAAA,QACGxD,IAAI,KAAK,OAAO,GAAGqE,EAAE,CAACG,iBAAiB,GAAGH,EAAE,CAACI,iBAAiB,EAC/DvM,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAC3J,SAAA,CAAAgM,EAAE,QACAnD,QAAQ,CAACf,GAAG,CAAC,CAAAmE,KAAA,EAAcjK,CAAC,KAAK;IAAA,IAAnB;MAAE2G;IAAQ,CAAC,GAAAsD,KAAA;IACxB,OAAOzM,MAAA,CAAAgB,OAAA,CAAAmJ,aAAA,CAAC3J,SAAA,CAAAkM,EAAE;MAAC5K,GAAG,EAAEU;IAAE,GAAE2G,OAAY,CAAC;EACnC,CAAC,CACC,CACJ,CAAC;AAEP;AAEA,SAASC,UAAUA,CAAClB,IAA+B,EAAgB;EACjE,MAAM;IAAEO;EAAM,CAAC,GAAGP,IAAI;EAEtB,OAASO,KAAK,YAAYkE,KAAK,IAAIlE,KAAK,CAACU,OAAO,IAC7CV,KAAK,YAAYmE,gBAAS,IAAInE,KAAK,CAACU,OAAQ,KAC7CV,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEoE,QAAQ,CAAC,CAAC,KACjBpE,KAAK;AACT;AAEApD,UAAU,CAACyH,qBAAqB,GAAG,IAAI;AAAA,IAAAC,QAAA,GAExB1H,UAAU;AAAAD,OAAA,CAAApE,OAAA,GAAA+L,QAAA"}
|
|
1
|
+
{"version":3,"file":"FieldBlock.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_Context","_FieldBlockContext","_components","_elements","_componentHelper","_useId","_types","_useUnmountEffect","_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","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","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","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","states","exports","FieldBlock","props","nestedFieldBlockContext","useContext","FieldBlockContext","className","forId","layout","composition","label","labelDescription","asFieldset","info","warning","error","errorProp","disabled","width","contentWidth","labelSize","contentClassName","children","rest","blockId","useId","id","wasUpdated","forceUpdate","useReducer","mountedFieldsRef","useRef","stateRecordRef","fieldStateIdsRef","contentsRef","hasInitiallyErrorProp","useMemo","Boolean","setInternalRecord","useCallback","stateId","identifier","type","current","existingIndex","findIndex","item","setFieldState","showFieldError","show","map","showInitially","statusContent","state","statesWithMessages","entries","flatMap","_ref","reduce","acc","cur","existing","find","message","getMessage","messages","width_element","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","found","msg","_ref2","arr","convertJsxToString","text","createElement","CombineMessages","useEffect","useUnmountEffect","mainClasses","classnames","gridClasses","enableFieldset","useEnableFieldset","labelProps","element","space","top","bottom","size","Provider","hasErrorProp","Space","FormLabel","Fragment","FormStatus","ref","_ref3","result","count","findElementInChildren","child","_child$props","_child$type","_ref4","sharedContext","SharedContext","tr","translation","Forms","fieldErrorSummary","fieldStateSummary","Ul","_ref5","Li","Error","FormError","toString","_supportsSpacingProps","_default"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlock.tsx"],"sourcesContent":["import React, {\n useMemo,\n useContext,\n useCallback,\n useRef,\n useReducer,\n useEffect,\n} from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../shared/Context'\nimport FieldBlockContext, {\n StateWithMessage,\n StatesWithMessages,\n FieldErrorIdsRef,\n MountedFieldsRef,\n StateRecord,\n StateMessage,\n StateTypes,\n StatusContent,\n FieldBlockContextProps,\n} from './FieldBlockContext'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { Ul, Li } from '../../../elements'\nimport {\n convertJsxToString,\n findElementInChildren,\n} from '../../../shared/component-helper'\nimport useId from '../hooks/useId'\nimport {\n ComponentProps,\n FieldProps,\n FormError,\n Identifier,\n} from '../types'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\nimport useUnmountEffect from '../hooks/useUnmountEffect'\n\nexport const states: Array<StateTypes> = ['error', 'info', 'warning']\n\nexport type Props = Pick<\n FieldProps,\n | keyof ComponentProps\n | 'layout'\n | 'label'\n | 'labelDescription'\n | 'info'\n | 'warning'\n | 'error'\n | 'disabled'\n> & {\n /** The id to link a element with */\n forId?: string\n /** Use true if you have more than one form element */\n asFieldset?: boolean\n /** Defines the layout of nested fields */\n composition?: FieldBlockContextProps['composition']\n /** Width of outer block element */\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n /** Width of contents block, while label etc can be wider if space is available */\n contentWidth?: 'small' | 'medium' | 'large' | 'stretch'\n contentClassName?: string\n /** Typography size */\n labelSize?: 'medium' | 'large'\n children: React.ReactNode\n} & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const {\n className,\n forId,\n layout = 'vertical',\n composition,\n label,\n labelDescription,\n asFieldset,\n info,\n warning,\n error: errorProp,\n disabled,\n width,\n contentWidth,\n labelSize,\n contentClassName,\n children,\n ...rest\n } = props\n\n const blockId = useId(props.id)\n const [wasUpdated, forceUpdate] = useReducer(() => ({}), {})\n const mountedFieldsRef = useRef<MountedFieldsRef>({})\n const stateRecordRef = useRef<StateRecord>({})\n const fieldStateIdsRef = useRef<FieldErrorIdsRef>(null)\n const contentsRef = useRef<HTMLDivElement>(null)\n const hasInitiallyErrorProp = useMemo(() => {\n return Boolean(errorProp)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const setInternalRecord = useCallback((props) => {\n const { stateId, identifier, type } = props\n\n if (!stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = []\n }\n\n fieldStateIdsRef.current = { error: null, warning: null, info: null }\n\n const existingIndex = stateRecordRef.current[identifier].findIndex(\n (item) => {\n return item.stateId === stateId && item.type === type\n }\n )\n\n if (existingIndex > -1) {\n stateRecordRef.current[identifier][existingIndex] = {\n ...stateRecordRef.current[identifier][existingIndex],\n ...props,\n }\n } else {\n stateRecordRef.current[identifier].push(props)\n }\n }, [])\n\n const setFieldState = useCallback(\n (props) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setFieldState(props)\n return\n }\n\n setInternalRecord(props)\n\n forceUpdate()\n },\n [nestedFieldBlockContext, setInternalRecord]\n )\n\n const showFieldError = useCallback(\n (identifier: Identifier, show: boolean) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.showFieldError(identifier, show)\n return\n }\n\n if (stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = stateRecordRef.current[\n identifier\n ].map((item) => {\n if (item.showInitially) {\n return item\n }\n\n return {\n ...item,\n show,\n }\n })\n\n forceUpdate()\n }\n },\n [nestedFieldBlockContext]\n )\n\n const statusContent = useMemo(() => {\n if (errorProp) {\n setInternalRecord({\n identifier: blockId,\n showInitially: hasInitiallyErrorProp,\n type: 'error',\n state: errorProp,\n })\n }\n\n if (warning) {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'warning',\n state: warning,\n })\n }\n\n if (info) {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'info',\n state: info,\n })\n }\n\n const statesWithMessages: Array<StatesWithMessages> =\n // 1. Prepare the states for later use\n Object.entries(stateRecordRef.current)\n .flatMap(([identifier, states]) =>\n states.map((props) => {\n return {\n identifier,\n ...props,\n }\n })\n )\n\n // 2. Take states and group the same type together\n .reduce((acc, cur) => {\n const existing = acc.find((item) => {\n return item.type === cur.type\n })\n\n const message = getMessage(cur)\n\n if (existing) {\n existing.messages.push({\n ...cur,\n message,\n })\n } else {\n acc.push({\n ...cur,\n state: undefined,\n messages: [\n {\n ...cur,\n message,\n },\n ],\n })\n }\n\n return acc\n }, [] as Array<StatesWithMessages>)\n\n // 3. Return the grouped states/messages\n return states.reduce((acc, type) => {\n const id = `${props.id || forId || blockId}-form-status--${type}`\n acc[type] = {\n id,\n label,\n state: type === 'warning' ? 'warn' : type,\n width_element: contentsRef,\n\n // Enable animation only in the browser and not in tests\n no_animation:\n process.env.NODE_ENV === 'test'\n ? true\n : typeof globalThis !== 'undefined'\n ? globalThis.IS_TEST === true\n : false,\n }\n\n const found = statesWithMessages.find((item) => {\n return item.type === type\n })\n\n if (found?.messages) {\n // Hide/remove messages that should be hidden and are not marked as to be shown initially\n const messages = found.messages\n .map((msg) => {\n if (msg.type === 'error') {\n if (!msg.showInitially && !msg.show) {\n msg.message = null\n }\n }\n\n return msg\n })\n .filter(({ message }) => message)\n .reduce((acc, msg, i, arr) => {\n const existingIndex = arr.findIndex((item) => {\n return (\n convertJsxToString(item.message) ===\n convertJsxToString(msg.message)\n )\n })\n\n // Remove duplicates, use the first found message\n if (existingIndex === i) {\n acc.push(msg)\n }\n\n return acc\n }, [])\n\n // Combine the messages and put them in an ul/li list\n if (messages.length > 0) {\n acc[type] = {\n ...acc[type],\n text: <CombineMessages type={type} messages={messages} />,\n }\n\n fieldStateIdsRef.current[type] = id\n } else {\n fieldStateIdsRef.current[type] = undefined\n }\n }\n\n return acc\n }, {}) as StatusContent\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n info,\n warning,\n errorProp,\n nestedFieldBlockContext,\n setInternalRecord,\n blockId,\n wasUpdated, // wasUpdated is needed to get the current errors\n ])\n\n // Handle the error prop from outside\n useEffect(() => {\n if (!nestedFieldBlockContext) {\n showFieldError(blockId, Boolean(errorProp))\n }\n }, [errorProp, blockId, showFieldError, nestedFieldBlockContext])\n\n useUnmountEffect(() => () => {\n mountedFieldsRef.current = {}\n stateRecordRef.current = {}\n })\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width !== undefined && `dnb-forms-field-block--width-${width}`,\n className\n )\n const gridClasses = classnames(\n 'dnb-forms-field-block__grid',\n `dnb-forms-field-block--layout-${layout}`\n )\n\n // A child component with a label was found, use fieldset/legend instead of div/label\n const enableFieldset = useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n })\n\n const labelProps: FormLabelAllProps = {\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n space: { top: 0, bottom: 'x-small' },\n size: labelSize,\n disabled,\n }\n\n return (\n <FieldBlockContext.Provider\n value={{\n setFieldState,\n showFieldError,\n hasErrorProp: Boolean(errorProp),\n fieldStateIdsRef,\n mountedFieldsRef,\n composition,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n {labelDescription ? (\n <div className=\"dnb-forms-field-block__label\">\n {label || labelDescription ? (\n <FormLabel {...labelProps}>\n {label}\n {labelDescription && (\n <span className=\"dnb-forms-field-block__label-description\">\n {labelDescription}\n </span>\n )}\n </FormLabel>\n ) : (\n <> </>\n )}\n </div>\n ) : (\n label && <FormLabel {...labelProps}>{label}</FormLabel>\n )}\n\n <div className=\"dnb-forms-field-block__status\">\n <FormStatus {...statusContent?.error} />\n <FormStatus {...statusContent?.warning} />\n <FormStatus {...statusContent?.info} />\n </div>\n\n <div\n className={classnames(\n 'dnb-forms-field-block__contents',\n contentWidth !== undefined &&\n `dnb-forms-field-block__contents--width-${contentWidth}`,\n composition !== undefined &&\n `dnb-forms-field-block__contents__composition--${\n composition === true ? 'horizontal' : composition\n }`,\n contentClassName\n )}\n ref={contentsRef}\n >\n {children}\n </div>\n </div>\n </Space>\n </FieldBlockContext.Provider>\n )\n}\n\nfunction useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n}) {\n return useMemo(() => {\n if (asFieldset === false) {\n return false\n }\n\n let result = asFieldset\n\n if (label && !result && !nestedFieldBlockContext) {\n let count = 0\n\n findElementInChildren(children, (child: React.ReactElement) => {\n if (\n child?.props?.label ||\n child?.type?.['_formElement'] === true\n ) {\n count++\n }\n if (count > 1) {\n return (result = true)\n }\n })\n }\n\n return Boolean(result)\n }, [asFieldset, children, label, nestedFieldBlockContext])\n}\n\nfunction CombineMessages({\n type,\n messages,\n}: {\n type: StateTypes\n messages: Array<StateWithMessage>\n}) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n if (messages.length === 1) {\n return <>{messages[0].message}</>\n }\n\n return (\n <>\n {type === 'error' ? tr.fieldErrorSummary : tr.fieldStateSummary}\n <Ul>\n {messages.map(({ message }, i) => {\n return <Li key={i}>{message}</Li>\n })}\n </Ul>\n </>\n )\n}\n\nfunction getMessage(item: Partial<StateWithMessage>): StateMessage {\n const { state } = item\n\n return ((state instanceof Error && state.message) ||\n (state instanceof FormError && state.message) ||\n state?.toString() ||\n state) as StateMessage\n}\n\nFieldBlock._supportsSpacingProps = true\n\nexport default FieldBlock\n"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { FieldProps } from '../types';
|
|
3
|
-
import type { Identifier } from '../DataContext/Context';
|
|
2
|
+
import type { FieldProps, Identifier } from '../types';
|
|
4
3
|
export type FieldErrorIdsRef = Record<StateTypes, string>;
|
|
5
4
|
export type MountedFieldsRef = Record<Identifier, boolean>;
|
|
6
5
|
export type StateTypes = 'error' | 'warning' | 'info';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldBlockContext.js","names":["_react","_interopRequireDefault","require","obj","__esModule","default","FieldBlockContext","React","createContext","undefined","_default","exports"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlockContext.ts"],"sourcesContent":["import React from 'react'\nimport { FieldProps
|
|
1
|
+
{"version":3,"file":"FieldBlockContext.js","names":["_react","_interopRequireDefault","require","obj","__esModule","default","FieldBlockContext","React","createContext","undefined","_default","exports"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlockContext.ts"],"sourcesContent":["import React from 'react'\nimport type { FieldProps, Identifier } from '../types'\n\nexport type FieldErrorIdsRef = Record<StateTypes, string>\nexport type MountedFieldsRef = Record<Identifier, boolean>\nexport type StateTypes = 'error' | 'warning' | 'info'\nexport type StateContent =\n | FieldProps<unknown>['error']\n | FieldProps<unknown>['warning']\n | FieldProps<unknown>['info']\nexport type StateBasis = {\n identifier: Identifier\n type: StateTypes\n state: StateContent\n stateId?: string\n showInitially?: boolean\n show?: boolean\n}\nexport type StateRecord = Record<\n Identifier,\n Array<Omit<StateBasis, 'identifier'>>\n>\nexport type StateMessage = React.ReactNode\nexport type StateWithMessage = StateBasis & {\n message: StateMessage\n}\nexport type StatesWithMessages = StateBasis & {\n messages: Array<StateWithMessage>\n}\nexport type StatusContentState = { id: string; text: React.ReactNode }\nexport type StatusContent = {\n error: StatusContentState\n warning: StatusContentState\n info: StatusContentState\n}\n\nexport type FieldBlockContextProps = {\n setFieldState?: ({\n identifier,\n type,\n stateId,\n state,\n showInitially,\n show,\n }: StateBasis) => void\n showFieldError?: (identifier: Identifier, showError: boolean) => void\n hasErrorProp?: boolean\n composition?: true\n fieldStateIdsRef?: React.MutableRefObject<FieldErrorIdsRef>\n mountedFieldsRef?: React.MutableRefObject<MountedFieldsRef>\n}\n\nconst FieldBlockContext = React.createContext<\n FieldBlockContextProps | undefined\n>(undefined)\n\nexport default FieldBlockContext\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAyB,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAoDzB,MAAMG,iBAAiB,GAAGC,cAAK,CAACC,aAAa,CAE3CC,SAAS,CAAC;AAAA,IAAAC,QAAA,GAEGJ,iBAAiB;AAAAK,OAAA,CAAAN,OAAA,GAAAK,QAAA"}
|
|
@@ -38,10 +38,10 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
|
|
|
38
38
|
display: grid;
|
|
39
39
|
}
|
|
40
40
|
@media screen and (max-width: 40em) {
|
|
41
|
-
.dnb-forms-field-block__grid {
|
|
41
|
+
.dnb-forms-field-block--layout-vertical .dnb-forms-field-block__grid {
|
|
42
42
|
flex-wrap: wrap;
|
|
43
43
|
}
|
|
44
|
-
.dnb-forms-field-block__grid > .dnb-form-label {
|
|
44
|
+
.dnb-forms-field-block--layout-vertical .dnb-forms-field-block__grid > .dnb-form-label {
|
|
45
45
|
margin-bottom: 0.5rem;
|
|
46
46
|
margin-top: 0.5rem;
|
|
47
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}@media screen and (max-width:15em){.dnb-forms-field-number .dnb-input__shell,.dnb-forms-field-string .dnb-input__shell{width:90%}}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block{width:100%}.dnb-forms-field-block__grid{display:grid}@media screen and (max-width:40em){.dnb-forms-field-block__grid{flex-wrap:wrap}.dnb-forms-field-block__grid>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:fit-content(100%) auto}.dnb-forms-field-block--width-stretch{flex-grow:1}@media screen and (min-width:25em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-block__label-description{margin-left:.3em}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__status .dnb-form-status__shell{margin-top:.5rem}@media screen and (max-width:15em){.dnb-forms-field-block__status{width:90%}}.dnb-forms-field-block__contents{grid-area:contents;width:100%}.dnb-forms-field-block__contents--width-stretch{width:100%}@media screen and (min-width:25em){.dnb-forms-field-block__contents--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__contents__composition--vertical{display:flex;flex-flow:column;row-gap:var(--spacing-small)}.dnb-forms-field-block__contents__composition--horizontal{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}@media screen and (min-width:25em){.dnb-forms-field-block__contents__composition--horizontal{align-items:flex-end}}@media screen and (max-width:25em){.dnb-forms-field-block__contents__composition--horizontal{flex-flow:column;row-gap:var(--spacing-x-small)}}
|
|
1
|
+
:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}@media screen and (max-width:15em){.dnb-forms-field-number .dnb-input__shell,.dnb-forms-field-string .dnb-input__shell{width:90%}}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block{width:100%}.dnb-forms-field-block__grid{display:grid}@media screen and (max-width:40em){.dnb-forms-field-block--layout-vertical .dnb-forms-field-block__grid{flex-wrap:wrap}.dnb-forms-field-block--layout-vertical .dnb-forms-field-block__grid>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:fit-content(100%) auto}.dnb-forms-field-block--width-stretch{flex-grow:1}@media screen and (min-width:25em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-block__label-description{margin-left:.3em}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__status .dnb-form-status__shell{margin-top:.5rem}@media screen and (max-width:15em){.dnb-forms-field-block__status{width:90%}}.dnb-forms-field-block__contents{grid-area:contents;width:100%}.dnb-forms-field-block__contents--width-stretch{width:100%}@media screen and (min-width:25em){.dnb-forms-field-block__contents--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__contents__composition--vertical{display:flex;flex-flow:column;row-gap:var(--spacing-small)}.dnb-forms-field-block__contents__composition--horizontal{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}@media screen and (min-width:25em){.dnb-forms-field-block__contents__composition--horizontal{align-items:flex-end}}@media screen and (max-width:25em){.dnb-forms-field-block__contents__composition--horizontal{flex-flow:column;row-gap:var(--spacing-x-small)}}
|
|
@@ -7,6 +7,12 @@
|
|
|
7
7
|
-moz-column-gap: var(--spacing-small);
|
|
8
8
|
column-gap: var(--spacing-small);
|
|
9
9
|
}
|
|
10
|
+
.dnb-card + .dnb-forms-button-row:not([class*=space__top]) {
|
|
11
|
+
margin-top: var(--spacing-small);
|
|
12
|
+
}
|
|
13
|
+
.dnb-card + .dnb-forms-button-row:not([class*=space__top]) .dnb-button[class*=space__top] {
|
|
14
|
+
margin-top: 0;
|
|
15
|
+
}
|
|
10
16
|
@media screen and (min-width: 40em) {
|
|
11
17
|
.dnb-card + .dnb-forms-button-row:not([class*=space__left]) {
|
|
12
18
|
margin-left: var(--spacing-medium);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.dnb-forms-button-row{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}@media screen and (min-width:40em){.dnb-card+.dnb-forms-button-row:not([class*=space__left]){margin-left:var(--spacing-medium)}}
|
|
1
|
+
.dnb-forms-button-row{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-card+.dnb-forms-button-row:not([class*=space__top]){margin-top:var(--spacing-small)}.dnb-card+.dnb-forms-button-row:not([class*=space__top]) .dnb-button[class*=space__top]{margin-top:0}@media screen and (min-width:40em){.dnb-card+.dnb-forms-button-row:not([class*=space__left]){margin-left:var(--spacing-medium)}}
|
|
@@ -6,8 +6,16 @@
|
|
|
6
6
|
column-gap: var(--spacing-small);
|
|
7
7
|
|
|
8
8
|
.dnb-card + & {
|
|
9
|
-
&:not([class*='
|
|
10
|
-
|
|
9
|
+
&:not([class*='space__top']) {
|
|
10
|
+
margin-top: var(--spacing-small);
|
|
11
|
+
|
|
12
|
+
.dnb-button[class*='space__top'] {
|
|
13
|
+
margin-top: 0;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@include allAbove(small) {
|
|
18
|
+
&:not([class*='space__left']) {
|
|
11
19
|
margin-left: var(--spacing-medium);
|
|
12
20
|
}
|
|
13
21
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SharedStateId } from '../../../../shared/helpers/useSharedState';
|
|
2
|
-
import type { Path } from '../../
|
|
2
|
+
import type { Path } from '../../types';
|
|
3
3
|
import type { FilterData } from '../../DataContext/Provider';
|
|
4
4
|
type PathImpl<T, P extends string> = P extends `${infer Key}/${infer Rest}` ? Key extends keyof T ? Rest extends '' ? T[Key] : PathImpl<T[Key], Rest> : never : T[P & keyof T];
|
|
5
5
|
type PathType<T, P extends string> = P extends `/${infer Rest}` ? PathImpl<T, Rest> : never;
|
|
@@ -14,26 +14,10 @@ function useData(id) {
|
|
|
14
14
|
let initialData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
15
15
|
const sharedDataRef = (0, _react.useRef)(null);
|
|
16
16
|
const sharedAttachmentsRef = (0, _react.useRef)(null);
|
|
17
|
-
const hasMounted = (0, _react.useRef)(false);
|
|
18
17
|
const [, forceUpdate] = (0, _react.useReducer)(() => ({}), {});
|
|
19
|
-
(0, _react.useEffect)(() => {
|
|
20
|
-
hasMounted.current = true;
|
|
21
|
-
return () => {
|
|
22
|
-
hasMounted.current = false;
|
|
23
|
-
};
|
|
24
|
-
}, []);
|
|
25
|
-
const rerenderUseDataHook = (0, _react.useCallback)(() => {
|
|
26
|
-
if (hasMounted.current) {
|
|
27
|
-
if (typeof window !== 'undefined') {
|
|
28
|
-
window.requestAnimationFrame(forceUpdate);
|
|
29
|
-
}
|
|
30
|
-
} else {
|
|
31
|
-
forceUpdate();
|
|
32
|
-
}
|
|
33
|
-
}, []);
|
|
34
18
|
sharedDataRef.current = (0, _useSharedState.useSharedState)(id, initialData, forceUpdate);
|
|
35
19
|
sharedAttachmentsRef.current = (0, _useSharedState.useSharedState)(id + '-attachments', {
|
|
36
|
-
rerenderUseDataHook
|
|
20
|
+
rerenderUseDataHook: forceUpdate
|
|
37
21
|
});
|
|
38
22
|
const setHandler = (0, _react.useCallback)(newData => {
|
|
39
23
|
sharedDataRef.current.update(newData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useData.js","names":["_react","require","_jsonPointer","_interopRequireDefault","_useSharedState","_hooks","obj","__esModule","default","useData","id","initialData","arguments","length","undefined","sharedDataRef","useRef","sharedAttachmentsRef","
|
|
1
|
+
{"version":3,"file":"useData.js","names":["_react","require","_jsonPointer","_interopRequireDefault","_useSharedState","_hooks","obj","__esModule","default","useData","id","initialData","arguments","length","undefined","sharedDataRef","useRef","sharedAttachmentsRef","forceUpdate","useReducer","current","useSharedState","rerenderUseDataHook","setHandler","useCallback","newData","update","updateHandler","path","fn","existingData","data","existingValue","pointer","has","get","newValue","set","filterData","filter","_sharedAttachmentsRef","_sharedAttachmentsRef2","filterDataHandler","call","useMountEffect","hadInitialData","extend"],"sources":["../../../../../../src/extensions/forms/Form/data-context/useData.tsx"],"sourcesContent":["import { useCallback, useReducer, useRef } from 'react'\nimport pointer from 'json-pointer'\nimport {\n SharedStateId,\n useSharedState,\n} from '../../../../shared/helpers/useSharedState'\nimport type { Path } from '../../types'\nimport type {\n FilterData,\n FilterDataHandler,\n} from '../../DataContext/Provider'\nimport { useMountEffect } from '../../hooks'\n\ntype PathImpl<T, P extends string> = P extends `${infer Key}/${infer Rest}`\n ? Key extends keyof T\n ? Rest extends ''\n ? T[Key]\n : PathImpl<T[Key], Rest>\n : never\n : T[P & keyof T]\n\ntype PathType<T, P extends string> = P extends `/${infer Rest}`\n ? PathImpl<T, Rest>\n : never\n\ntype UseDataReturnUpdate<Data> = <P extends Path>(\n path: P,\n fn: (value: PathType<Data, P>) => unknown\n) => void\n\ntype UseDataReturn<Data> = {\n data: Data\n update: UseDataReturnUpdate<Data>\n set: (newData: Data) => void\n filterData: (filterDataHandler: FilterData) => Partial<Data>\n}\n\ntype SharedAttachment<Data> = {\n rerenderUseDataHook: () => void\n filterDataHandler?: FilterDataHandler<Data>\n}\n\n/**\n * Custom hook that provides form data management functionality.\n *\n * @template Data - The type of data being managed.\n * @param {SharedStateId} id - The identifier for the data.\n * @param {Data} initialData - The initial data value (optional).\n * @returns {UseDataReturn<Data>} An object containing the data and data management functions.\n */\nexport default function useData<Data>(\n id: SharedStateId,\n initialData: Data = undefined\n): UseDataReturn<Data> {\n const sharedDataRef =\n useRef<ReturnType<typeof useSharedState<Data>>>(null)\n const sharedAttachmentsRef =\n useRef<ReturnType<typeof useSharedState<SharedAttachment<Data>>>>(null)\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n sharedDataRef.current = useSharedState<Data>(\n id,\n initialData,\n forceUpdate\n )\n\n sharedAttachmentsRef.current = useSharedState<SharedAttachment<Data>>(\n id + '-attachments',\n { rerenderUseDataHook: forceUpdate }\n )\n\n const setHandler = useCallback((newData: Data) => {\n sharedDataRef.current.update(newData)\n }, [])\n\n const updateHandler = useCallback<UseDataReturnUpdate<Data>>(\n (path, fn) => {\n const existingData = sharedDataRef.current.data || ({} as Data)\n const existingValue = pointer.has(existingData, path)\n ? pointer.get(existingData, path)\n : undefined\n\n // get new value\n const newValue = fn(existingValue)\n\n // update existing data\n pointer.set(existingData, path, newValue)\n\n // update provider\n sharedDataRef.current.update(existingData)\n },\n []\n )\n\n const filterData = useCallback<UseDataReturn<Data>['filterData']>(\n (filter) => {\n const data = sharedDataRef.current.data\n return sharedAttachmentsRef.current.data?.filterDataHandler?.(\n data,\n filter\n )\n },\n []\n )\n\n useMountEffect(() => {\n if (id && !sharedDataRef.current.hadInitialData && initialData) {\n sharedDataRef.current.extend(initialData)\n }\n })\n\n return {\n data: sharedDataRef.current.data,\n update: updateHandler,\n set: setHandler,\n filterData,\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AASA,IAAAI,MAAA,GAAAJ,OAAA;AAA4C,SAAAE,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAuC7B,SAASG,OAAOA,CAC7BC,EAAiB,EAEI;EAAA,IADrBC,WAAiB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAE7B,MAAMC,aAAa,GACjB,IAAAC,aAAM,EAA0C,IAAI,CAAC;EACvD,MAAMC,oBAAoB,GACxB,IAAAD,aAAM,EAA4D,IAAI,CAAC;EACzE,MAAM,GAAGE,WAAW,CAAC,GAAG,IAAAC,iBAAU,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAElDJ,aAAa,CAACK,OAAO,GAAG,IAAAC,8BAAc,EACpCX,EAAE,EACFC,WAAW,EACXO,WACF,CAAC;EAEDD,oBAAoB,CAACG,OAAO,GAAG,IAAAC,8BAAc,EAC3CX,EAAE,GAAG,cAAc,EACnB;IAAEY,mBAAmB,EAAEJ;EAAY,CACrC,CAAC;EAED,MAAMK,UAAU,GAAG,IAAAC,kBAAW,EAAEC,OAAa,IAAK;IAChDV,aAAa,CAACK,OAAO,CAACM,MAAM,CAACD,OAAO,CAAC;EACvC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,aAAa,GAAG,IAAAH,kBAAW,EAC/B,CAACI,IAAI,EAAEC,EAAE,KAAK;IACZ,MAAMC,YAAY,GAAGf,aAAa,CAACK,OAAO,CAACW,IAAI,IAAK,CAAC,CAAU;IAC/D,MAAMC,aAAa,GAAGC,oBAAO,CAACC,GAAG,CAACJ,YAAY,EAAEF,IAAI,CAAC,GACjDK,oBAAO,CAACE,GAAG,CAACL,YAAY,EAAEF,IAAI,CAAC,GAC/Bd,SAAS;IAGb,MAAMsB,QAAQ,GAAGP,EAAE,CAACG,aAAa,CAAC;IAGlCC,oBAAO,CAACI,GAAG,CAACP,YAAY,EAAEF,IAAI,EAAEQ,QAAQ,CAAC;IAGzCrB,aAAa,CAACK,OAAO,CAACM,MAAM,CAACI,YAAY,CAAC;EAC5C,CAAC,EACD,EACF,CAAC;EAED,MAAMQ,UAAU,GAAG,IAAAd,kBAAW,EAC3Be,MAAM,IAAK;IAAA,IAAAC,qBAAA,EAAAC,sBAAA;IACV,MAAMV,IAAI,GAAGhB,aAAa,CAACK,OAAO,CAACW,IAAI;IACvC,QAAAS,qBAAA,GAAOvB,oBAAoB,CAACG,OAAO,CAACW,IAAI,cAAAS,qBAAA,wBAAAC,sBAAA,GAAjCD,qBAAA,CAAmCE,iBAAiB,cAAAD,sBAAA,uBAApDA,sBAAA,CAAAE,IAAA,CAAAH,qBAAA,EACLT,IAAI,EACJQ,MACF,CAAC;EACH,CAAC,EACD,EACF,CAAC;EAED,IAAAK,qBAAc,EAAC,MAAM;IACnB,IAAIlC,EAAE,IAAI,CAACK,aAAa,CAACK,OAAO,CAACyB,cAAc,IAAIlC,WAAW,EAAE;MAC9DI,aAAa,CAACK,OAAO,CAAC0B,MAAM,CAACnC,WAAW,CAAC;IAC3C;EACF,CAAC,CAAC;EAEF,OAAO;IACLoB,IAAI,EAAEhB,aAAa,CAACK,OAAO,CAACW,IAAI;IAChCL,MAAM,EAAEC,aAAa;IACrBU,GAAG,EAAEd,UAAU;IACfe;EACF,CAAC;AACH"}
|
|
@@ -8,11 +8,13 @@ exports.default = useError;
|
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _useSharedState = require("../../../../shared/helpers/useSharedState");
|
|
10
10
|
function useError(id) {
|
|
11
|
-
var _sharedAttachmentsRef, _sharedAttachmentsRef2;
|
|
12
11
|
const sharedAttachmentsRef = (0, _react.useRef)(null);
|
|
13
12
|
sharedAttachmentsRef.current = (0, _useSharedState.useSharedState)(id + '-attachments');
|
|
13
|
+
const {
|
|
14
|
+
data
|
|
15
|
+
} = sharedAttachmentsRef.current;
|
|
14
16
|
return {
|
|
15
|
-
hasErrors: (
|
|
17
|
+
hasErrors: (data === null || data === void 0 ? void 0 : data.hasErrors) || (() => false)
|
|
16
18
|
};
|
|
17
19
|
}
|
|
18
20
|
//# sourceMappingURL=useError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useError.js","names":["_react","require","_useSharedState","useError","id","
|
|
1
|
+
{"version":3,"file":"useError.js","names":["_react","require","_useSharedState","useError","id","sharedAttachmentsRef","useRef","current","useSharedState","data","hasErrors"],"sources":["../../../../../../src/extensions/forms/Form/data-context/useError.tsx"],"sourcesContent":["import { useRef } from 'react'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport type { ContextState } from '../../DataContext/Context'\n\ntype UseDataReturn = {\n hasErrors: ContextState['hasErrors']\n}\n\nexport default function useError(id: string): UseDataReturn {\n const sharedAttachmentsRef = useRef(null)\n sharedAttachmentsRef.current = useSharedState<UseDataReturn>(\n id + '-attachments'\n )\n\n const { data } = sharedAttachmentsRef.current\n\n return {\n hasErrors: data?.hasErrors || (() => false),\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAOe,SAASE,QAAQA,CAACC,EAAU,EAAiB;EAC1D,MAAMC,oBAAoB,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EACzCD,oBAAoB,CAACE,OAAO,GAAG,IAAAC,8BAAc,EAC3CJ,EAAE,GAAG,cACP,CAAC;EAED,MAAM;IAAEK;EAAK,CAAC,GAAGJ,oBAAoB,CAACE,OAAO;EAE7C,OAAO;IACLG,SAAS,EAAE,CAAAD,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,SAAS,MAAK,MAAM,KAAK;EAC5C,CAAC;AACH"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ValueProps } from '../../types';
|
|
2
2
|
import { NumberFormatProps } from '../../../../components/NumberFormat';
|
|
3
|
-
import {
|
|
4
|
-
export type Props = ValueProps<number> &
|
|
3
|
+
import { IncludeCamelCase } from '../../../../shared/helpers/withCamelCaseProps';
|
|
4
|
+
export type Props = ValueProps<number> & IncludeCamelCase<NumberFormatProps>;
|
|
5
5
|
declare function NumberValue(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
declare namespace NumberValue {
|
|
7
7
|
var _supportsSpacingProps: boolean;
|
|
@@ -28,7 +28,7 @@ function NumberValue(props) {
|
|
|
28
28
|
showEmpty
|
|
29
29
|
} = _useDataValue,
|
|
30
30
|
rest = _objectWithoutProperties(_useDataValue, _excluded);
|
|
31
|
-
const numberFormatProps = (0, _withCamelCaseProps.convertCamelCaseProps)((0,
|
|
31
|
+
const numberFormatProps = (0, _withCamelCaseProps.convertCamelCaseProps)((0, _useDataValue2.omitDataValueProps)((0, _utils.omitSpacingProps)(rest)));
|
|
32
32
|
return _react.default.createElement(_ValueBlock.default, _extends({
|
|
33
33
|
className: (0, _classnames.default)('dnb-forms-value-number', className),
|
|
34
34
|
label: label,
|