@dnb/eufemia 10.73.2 → 10.74.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 +28 -0
- package/cjs/components/autocomplete/Autocomplete.js +7 -4
- package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/autocomplete/AutocompleteDocs.d.ts +289 -3
- package/cjs/components/autocomplete/AutocompleteDocs.js +2 -2
- package/cjs/components/autocomplete/AutocompleteDocs.js.map +1 -1
- package/cjs/components/button/style/dnb-button.css +1 -0
- package/cjs/components/button/style/dnb-button.min.css +1 -1
- package/cjs/components/button/style/dnb-button.scss +1 -0
- package/cjs/components/checkbox/Checkbox.d.ts +9 -1
- package/cjs/components/checkbox/Checkbox.js +59 -34
- package/cjs/components/checkbox/Checkbox.js.map +1 -1
- package/cjs/components/checkbox/CheckboxDocs.js +6 -1
- package/cjs/components/checkbox/CheckboxDocs.js.map +1 -1
- package/cjs/components/date-picker/DatePicker.d.ts +4 -0
- package/cjs/components/date-picker/DatePicker.js +4 -3
- package/cjs/components/date-picker/DatePicker.js.map +1 -1
- package/cjs/components/date-picker/DatePickerCalendar.d.ts +2 -16
- package/cjs/components/date-picker/DatePickerCalendar.js +27 -86
- package/cjs/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/cjs/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
- package/cjs/components/date-picker/DatePickerCalendarNavigator.js +173 -0
- package/cjs/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
- package/cjs/components/date-picker/DatePickerContext.d.ts +3 -0
- package/cjs/components/date-picker/DatePickerContext.js.map +1 -1
- package/cjs/components/date-picker/DatePickerDocs.js +6 -1
- package/cjs/components/date-picker/DatePickerDocs.js.map +1 -1
- package/cjs/components/date-picker/DatePickerFooter.js +20 -17
- package/cjs/components/date-picker/DatePickerFooter.js.map +1 -1
- package/cjs/components/date-picker/DatePickerProvider.js +7 -0
- package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
- package/cjs/components/date-picker/DatePickerRange.js +2 -28
- package/cjs/components/date-picker/DatePickerRange.js.map +1 -1
- package/cjs/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
- package/cjs/components/date-picker/hooks/useSubmittedDates.js +19 -0
- package/cjs/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
- package/cjs/components/date-picker/style/dnb-date-picker.css +1 -1
- package/cjs/components/date-picker/style/dnb-date-picker.min.css +1 -1
- package/cjs/components/date-picker/style/dnb-date-picker.scss +1 -1
- package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
- package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
- package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
- package/cjs/components/drawer/Drawer.js +1 -0
- package/cjs/components/drawer/Drawer.js.map +1 -1
- package/cjs/components/dropdown/Dropdown.js +6 -4
- package/cjs/components/dropdown/Dropdown.js.map +1 -1
- package/cjs/components/dropdown/DropdownDocs.d.ts +179 -3
- package/cjs/components/dropdown/DropdownDocs.js.map +1 -1
- package/cjs/components/heading/HeadingHelpers.js +9 -5
- package/cjs/components/heading/HeadingHelpers.js.map +1 -1
- package/cjs/components/icon/Icon.d.ts +2 -2
- package/cjs/components/input-masked/InputMaskedDocs.js +1 -1
- package/cjs/components/input-masked/InputMaskedDocs.js.map +1 -1
- package/cjs/components/input-masked/InputMaskedHooks.d.ts +1 -0
- package/cjs/components/input-masked/InputMaskedHooks.js +38 -6
- package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
- package/cjs/components/input-masked/InputMaskedUtils.js +5 -4
- package/cjs/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/cjs/components/number-format/NumberUtils.js +6 -4
- package/cjs/components/number-format/NumberUtils.js.map +1 -1
- package/cjs/components/switch/SwitchDocs.js +2 -2
- package/cjs/components/switch/SwitchDocs.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Context.d.ts +1 -1
- package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +9 -0
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
- package/cjs/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js +8 -1
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Date/Date.d.ts +1 -1
- package/cjs/extensions/forms/Field/Date/Date.js +1 -1
- package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
- package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/cjs/extensions/forms/Field/Number/NumberDocs.js +1 -1
- package/cjs/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +2 -2
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +2 -2
- package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Selection/Selection.d.ts +2 -0
- package/cjs/extensions/forms/Field/Selection/Selection.js +10 -9
- package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
- package/cjs/extensions/forms/Field/Toggle/Toggle.js +24 -8
- package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
- package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js +8 -1
- package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
- package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.js +64 -0
- package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
- package/cjs/extensions/forms/Form/Isolation/Isolation.js +39 -14
- package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
- package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationContext.js +11 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.js +31 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.js +112 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
- package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.js +58 -0
- package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
- package/cjs/extensions/forms/Form/Isolation/useHandleStatus.js +57 -0
- package/cjs/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
- package/cjs/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +11 -9
- package/cjs/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
- package/cjs/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
- package/cjs/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/index.js +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js +15 -56
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.js +3 -3
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +1 -1
- package/cjs/extensions/forms/constants/locales/index.d.ts +2 -2
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
- package/cjs/extensions/forms/constants/locales/nb-NO.js +3 -3
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
- package/cjs/extensions/forms/constants/locales/sv-SE.js +3 -3
- package/cjs/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/cjs/extensions/forms/hooks/useDataContext.js +5 -3
- package/cjs/extensions/forms/hooks/useDataContext.js.map +1 -1
- package/cjs/extensions/forms/hooks/useSnapshot.js +17 -14
- package/cjs/extensions/forms/hooks/useSnapshot.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerList.d.ts +176 -224
- package/cjs/fragments/drawer-list/DrawerList.js +70 -175
- package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListContext.d.ts +27 -2
- package/cjs/fragments/drawer-list/DrawerListContext.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
- package/cjs/fragments/drawer-list/DrawerListDocs.js +2 -2
- package/cjs/fragments/drawer-list/DrawerListDocs.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
- package/cjs/fragments/drawer-list/DrawerListHelpers.js +52 -58
- package/cjs/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListItem.d.ts +30 -0
- package/cjs/fragments/drawer-list/DrawerListItem.js +106 -0
- package/cjs/fragments/drawer-list/DrawerListItem.js.map +1 -0
- package/cjs/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
- package/cjs/fragments/drawer-list/DrawerListPortal.js +93 -125
- package/cjs/fragments/drawer-list/DrawerListPortal.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
- package/cjs/fragments/drawer-list/DrawerListProvider.js +11 -18
- package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/component-helper.d.ts +45 -48
- package/cjs/shared/component-helper.js +72 -201
- package/cjs/shared/component-helper.js.map +1 -1
- package/cjs/shared/helpers/withCamelCaseProps.d.ts +4 -5
- package/cjs/shared/helpers/withCamelCaseProps.js +7 -2
- package/cjs/shared/helpers/withCamelCaseProps.js.map +1 -1
- package/cjs/shared/legacy/component-helper-legacy.d.ts +19 -0
- package/cjs/shared/legacy/component-helper-legacy.js +202 -0
- package/cjs/shared/legacy/component-helper-legacy.js.map +1 -0
- package/cjs/shared/locales/en-GB.d.ts +1 -0
- package/cjs/shared/locales/en-GB.js +1 -0
- package/cjs/shared/locales/en-GB.js.map +1 -1
- package/cjs/shared/locales/en-US.js.map +1 -1
- package/cjs/shared/locales/index.d.ts +2 -0
- package/cjs/shared/locales/nb-NO.d.ts +1 -0
- package/cjs/shared/locales/nb-NO.js +2 -1
- package/cjs/shared/locales/nb-NO.js.map +1 -1
- package/cjs/shared/locales/sv-SE.d.ts +1 -0
- package/cjs/shared/locales/sv-SE.js +1 -0
- package/cjs/shared/locales/sv-SE.js.map +1 -1
- package/cjs/style/core/scopes.scss +1 -1
- package/cjs/style/dnb-ui-basis.css +1 -1
- package/cjs/style/dnb-ui-basis.min.css +1 -1
- package/cjs/style/dnb-ui-body.css +1 -1
- package/cjs/style/dnb-ui-body.min.css +1 -1
- package/cjs/style/dnb-ui-components.css +2 -1
- package/cjs/style/dnb-ui-components.min.css +1 -1
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-ui/ui-theme-components.css +19 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/components/autocomplete/Autocomplete.js +6 -3
- package/components/autocomplete/Autocomplete.js.map +1 -1
- package/components/autocomplete/AutocompleteDocs.d.ts +289 -3
- package/components/autocomplete/AutocompleteDocs.js +1 -1
- package/components/autocomplete/AutocompleteDocs.js.map +1 -1
- package/components/button/style/dnb-button.css +1 -0
- package/components/button/style/dnb-button.min.css +1 -1
- package/components/button/style/dnb-button.scss +1 -0
- package/components/checkbox/Checkbox.d.ts +9 -1
- package/components/checkbox/Checkbox.js +60 -35
- package/components/checkbox/Checkbox.js.map +1 -1
- package/components/checkbox/CheckboxDocs.js +6 -1
- package/components/checkbox/CheckboxDocs.js.map +1 -1
- package/components/date-picker/DatePicker.d.ts +4 -0
- package/components/date-picker/DatePicker.js +4 -3
- package/components/date-picker/DatePicker.js.map +1 -1
- package/components/date-picker/DatePickerCalendar.d.ts +2 -16
- package/components/date-picker/DatePickerCalendar.js +27 -86
- package/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
- package/components/date-picker/DatePickerCalendarNavigator.js +162 -0
- package/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
- package/components/date-picker/DatePickerContext.d.ts +3 -0
- package/components/date-picker/DatePickerContext.js.map +1 -1
- package/components/date-picker/DatePickerDocs.js +6 -1
- package/components/date-picker/DatePickerDocs.js.map +1 -1
- package/components/date-picker/DatePickerFooter.js +20 -17
- package/components/date-picker/DatePickerFooter.js.map +1 -1
- package/components/date-picker/DatePickerProvider.js +7 -0
- package/components/date-picker/DatePickerProvider.js.map +1 -1
- package/components/date-picker/DatePickerRange.js +2 -28
- package/components/date-picker/DatePickerRange.js.map +1 -1
- package/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
- package/components/date-picker/hooks/useSubmittedDates.js +14 -0
- package/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
- package/components/date-picker/style/dnb-date-picker.css +1 -1
- package/components/date-picker/style/dnb-date-picker.min.css +1 -1
- package/components/date-picker/style/dnb-date-picker.scss +1 -1
- package/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
- package/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
- package/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
- package/components/drawer/Drawer.js +1 -0
- package/components/drawer/Drawer.js.map +1 -1
- package/components/dropdown/Dropdown.js +6 -4
- package/components/dropdown/Dropdown.js.map +1 -1
- package/components/dropdown/DropdownDocs.d.ts +179 -3
- package/components/dropdown/DropdownDocs.js.map +1 -1
- package/components/heading/HeadingHelpers.js +9 -5
- package/components/heading/HeadingHelpers.js.map +1 -1
- package/components/icon/Icon.d.ts +2 -2
- package/components/input-masked/InputMaskedDocs.js +1 -1
- package/components/input-masked/InputMaskedDocs.js.map +1 -1
- package/components/input-masked/InputMaskedHooks.d.ts +1 -0
- package/components/input-masked/InputMaskedHooks.js +39 -7
- package/components/input-masked/InputMaskedHooks.js.map +1 -1
- package/components/input-masked/InputMaskedUtils.js +6 -5
- package/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/components/number-format/NumberUtils.js +5 -4
- package/components/number-format/NumberUtils.js.map +1 -1
- package/components/switch/SwitchDocs.js +2 -2
- package/components/switch/SwitchDocs.js.map +1 -1
- package/es/components/autocomplete/Autocomplete.js +6 -3
- package/es/components/autocomplete/Autocomplete.js.map +1 -1
- package/es/components/autocomplete/AutocompleteDocs.d.ts +289 -3
- package/es/components/autocomplete/AutocompleteDocs.js +1 -1
- package/es/components/autocomplete/AutocompleteDocs.js.map +1 -1
- package/es/components/button/style/dnb-button.css +1 -0
- package/es/components/button/style/dnb-button.min.css +1 -1
- package/es/components/button/style/dnb-button.scss +1 -0
- package/es/components/checkbox/Checkbox.d.ts +9 -1
- package/es/components/checkbox/Checkbox.js +60 -35
- package/es/components/checkbox/Checkbox.js.map +1 -1
- package/es/components/checkbox/CheckboxDocs.js +6 -1
- package/es/components/checkbox/CheckboxDocs.js.map +1 -1
- package/es/components/date-picker/DatePicker.d.ts +4 -0
- package/es/components/date-picker/DatePicker.js +4 -3
- package/es/components/date-picker/DatePicker.js.map +1 -1
- package/es/components/date-picker/DatePickerCalendar.d.ts +2 -16
- package/es/components/date-picker/DatePickerCalendar.js +23 -80
- package/es/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/es/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
- package/es/components/date-picker/DatePickerCalendarNavigator.js +158 -0
- package/es/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
- package/es/components/date-picker/DatePickerContext.d.ts +3 -0
- package/es/components/date-picker/DatePickerContext.js.map +1 -1
- package/es/components/date-picker/DatePickerDocs.js +6 -1
- package/es/components/date-picker/DatePickerDocs.js.map +1 -1
- package/es/components/date-picker/DatePickerFooter.js +20 -17
- package/es/components/date-picker/DatePickerFooter.js.map +1 -1
- package/es/components/date-picker/DatePickerProvider.js +7 -0
- package/es/components/date-picker/DatePickerProvider.js.map +1 -1
- package/es/components/date-picker/DatePickerRange.js +2 -27
- package/es/components/date-picker/DatePickerRange.js.map +1 -1
- package/es/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
- package/es/components/date-picker/hooks/useSubmittedDates.js +14 -0
- package/es/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
- package/es/components/date-picker/style/dnb-date-picker.css +1 -1
- package/es/components/date-picker/style/dnb-date-picker.min.css +1 -1
- package/es/components/date-picker/style/dnb-date-picker.scss +1 -1
- package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
- package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
- package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
- package/es/components/drawer/Drawer.js +1 -0
- package/es/components/drawer/Drawer.js.map +1 -1
- package/es/components/dropdown/Dropdown.js +6 -4
- package/es/components/dropdown/Dropdown.js.map +1 -1
- package/es/components/dropdown/DropdownDocs.d.ts +179 -3
- package/es/components/dropdown/DropdownDocs.js.map +1 -1
- package/es/components/heading/HeadingHelpers.js +9 -5
- package/es/components/heading/HeadingHelpers.js.map +1 -1
- package/es/components/icon/Icon.d.ts +2 -2
- package/es/components/input-masked/InputMaskedDocs.js +1 -1
- package/es/components/input-masked/InputMaskedDocs.js.map +1 -1
- package/es/components/input-masked/InputMaskedHooks.d.ts +1 -0
- package/es/components/input-masked/InputMaskedHooks.js +39 -7
- package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
- package/es/components/input-masked/InputMaskedUtils.js +6 -5
- package/es/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/es/components/number-format/NumberUtils.js +5 -4
- package/es/components/number-format/NumberUtils.js.map +1 -1
- package/es/components/switch/SwitchDocs.js +2 -2
- package/es/components/switch/SwitchDocs.js.map +1 -1
- package/es/extensions/forms/DataContext/Context.d.ts +1 -1
- package/es/extensions/forms/DataContext/Context.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.js +9 -0
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
- package/es/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/es/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
- package/es/extensions/forms/Field/Boolean/BooleanDocs.js +7 -0
- package/es/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/es/extensions/forms/Field/Date/Date.d.ts +1 -1
- package/es/extensions/forms/Field/Date/Date.js +1 -1
- package/es/extensions/forms/Field/Date/Date.js.map +1 -1
- package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/es/extensions/forms/Field/Number/NumberDocs.js +1 -1
- package/es/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/es/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
- package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +3 -3
- package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
- package/es/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +3 -3
- package/es/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
- package/es/extensions/forms/Field/Selection/Selection.d.ts +2 -0
- package/es/extensions/forms/Field/Selection/Selection.js +9 -8
- package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
- package/es/extensions/forms/Field/Toggle/Toggle.js +24 -6
- package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
- package/es/extensions/forms/Field/Toggle/ToggleDocs.js +7 -0
- package/es/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
- package/es/extensions/forms/Form/Isolation/IsolatedContainer.js +53 -0
- package/es/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
- package/es/extensions/forms/Form/Isolation/Isolation.js +40 -14
- package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
- package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
- package/es/extensions/forms/Form/Isolation/IsolationContext.js +6 -0
- package/es/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
- package/es/extensions/forms/Form/Isolation/IsolationDataReference.js +25 -0
- package/es/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
- package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
- package/es/extensions/forms/Form/Isolation/IsolationResetButton.js +99 -0
- package/es/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
- package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.js +50 -0
- package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
- package/es/extensions/forms/Form/Isolation/useHandleStatus.js +48 -0
- package/es/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
- package/es/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +12 -10
- package/es/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
- package/es/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
- package/es/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
- package/es/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
- package/es/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
- package/es/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
- package/es/extensions/forms/Iterate/EditContainer/index.js +1 -1
- package/es/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.js +16 -55
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
- package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +1 -1
- package/es/extensions/forms/constants/locales/en-GB.js +3 -3
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +1 -1
- package/es/extensions/forms/constants/locales/index.d.ts +2 -2
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
- package/es/extensions/forms/constants/locales/nb-NO.js +3 -3
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
- package/es/extensions/forms/constants/locales/sv-SE.js +3 -3
- package/es/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/es/extensions/forms/hooks/useDataContext.js +5 -3
- package/es/extensions/forms/hooks/useDataContext.js.map +1 -1
- package/es/extensions/forms/hooks/useSnapshot.js +18 -15
- package/es/extensions/forms/hooks/useSnapshot.js.map +1 -1
- package/es/fragments/drawer-list/DrawerList.d.ts +176 -224
- package/es/fragments/drawer-list/DrawerList.js +72 -173
- package/es/fragments/drawer-list/DrawerList.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListContext.d.ts +27 -2
- package/es/fragments/drawer-list/DrawerListContext.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
- package/es/fragments/drawer-list/DrawerListDocs.js +2 -2
- package/es/fragments/drawer-list/DrawerListDocs.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
- package/es/fragments/drawer-list/DrawerListHelpers.js +45 -54
- package/es/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListItem.d.ts +30 -0
- package/es/fragments/drawer-list/DrawerListItem.js +90 -0
- package/es/fragments/drawer-list/DrawerListItem.js.map +1 -0
- package/es/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
- package/es/fragments/drawer-list/DrawerListPortal.js +88 -120
- package/es/fragments/drawer-list/DrawerListPortal.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
- package/es/fragments/drawer-list/DrawerListProvider.js +33 -19
- package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/component-helper.d.ts +45 -48
- package/es/shared/component-helper.js +20 -183
- package/es/shared/component-helper.js.map +1 -1
- package/es/shared/helpers/withCamelCaseProps.d.ts +4 -5
- package/es/shared/helpers/withCamelCaseProps.js +7 -2
- package/es/shared/helpers/withCamelCaseProps.js.map +1 -1
- package/es/shared/legacy/component-helper-legacy.d.ts +19 -0
- package/es/shared/legacy/component-helper-legacy.js +180 -0
- package/es/shared/legacy/component-helper-legacy.js.map +1 -0
- package/es/shared/locales/en-GB.d.ts +1 -0
- package/es/shared/locales/en-GB.js +1 -0
- package/es/shared/locales/en-GB.js.map +1 -1
- package/es/shared/locales/en-US.js.map +1 -1
- package/es/shared/locales/index.d.ts +2 -0
- package/es/shared/locales/nb-NO.d.ts +1 -0
- package/es/shared/locales/nb-NO.js +2 -1
- package/es/shared/locales/nb-NO.js.map +1 -1
- package/es/shared/locales/sv-SE.d.ts +1 -0
- package/es/shared/locales/sv-SE.js +1 -0
- package/es/shared/locales/sv-SE.js.map +1 -1
- package/es/style/core/scopes.scss +1 -1
- package/es/style/dnb-ui-basis.css +1 -1
- package/es/style/dnb-ui-basis.min.css +1 -1
- package/es/style/dnb-ui-body.css +1 -1
- package/es/style/dnb-ui-body.min.css +1 -1
- package/es/style/dnb-ui-components.css +2 -1
- package/es/style/dnb-ui-components.min.css +1 -1
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/es/style/themes/theme-ui/ui-theme-components.css +19 -1
- package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- 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 +2 -2
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Context.d.ts +1 -1
- package/extensions/forms/DataContext/Context.js.map +1 -1
- package/extensions/forms/DataContext/Provider/Provider.js +9 -0
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
- package/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
- package/extensions/forms/Field/Boolean/BooleanDocs.js +7 -0
- package/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/extensions/forms/Field/Date/Date.d.ts +1 -1
- package/extensions/forms/Field/Date/Date.js +1 -1
- package/extensions/forms/Field/Date/Date.js.map +1 -1
- package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/extensions/forms/Field/Number/NumberDocs.js +1 -1
- package/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
- package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +3 -3
- package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
- package/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +3 -3
- package/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
- package/extensions/forms/Field/Selection/Selection.d.ts +2 -0
- package/extensions/forms/Field/Selection/Selection.js +10 -9
- package/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
- package/extensions/forms/Field/Toggle/Toggle.js +26 -9
- package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
- package/extensions/forms/Field/Toggle/ToggleDocs.js +7 -0
- package/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
- package/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
- package/extensions/forms/Form/Isolation/IsolatedContainer.js +54 -0
- package/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
- package/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
- package/extensions/forms/Form/Isolation/Isolation.js +40 -15
- package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
- package/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
- package/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
- package/extensions/forms/Form/Isolation/IsolationContext.js +6 -0
- package/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
- package/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
- package/extensions/forms/Form/Isolation/IsolationDataReference.js +25 -0
- package/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
- package/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
- package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
- package/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
- package/extensions/forms/Form/Isolation/IsolationResetButton.js +100 -0
- package/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
- package/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
- package/extensions/forms/Form/Isolation/useDataContextSnapshot.js +52 -0
- package/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
- package/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
- package/extensions/forms/Form/Isolation/useHandleStatus.js +51 -0
- package/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
- package/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +12 -10
- package/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
- package/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
- package/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
- package/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
- package/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
- package/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
- package/extensions/forms/Iterate/EditContainer/index.js +1 -1
- package/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
- package/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
- package/extensions/forms/Iterate/PushContainer/PushContainer.js +16 -57
- package/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
- package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +1 -1
- package/extensions/forms/constants/locales/en-GB.js +3 -3
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +1 -1
- package/extensions/forms/constants/locales/index.d.ts +2 -2
- package/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
- package/extensions/forms/constants/locales/nb-NO.js +3 -3
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
- package/extensions/forms/constants/locales/sv-SE.js +3 -3
- package/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/extensions/forms/hooks/useDataContext.js +5 -3
- package/extensions/forms/hooks/useDataContext.js.map +1 -1
- package/extensions/forms/hooks/useSnapshot.js +18 -15
- package/extensions/forms/hooks/useSnapshot.js.map +1 -1
- package/fragments/drawer-list/DrawerList.d.ts +176 -224
- package/fragments/drawer-list/DrawerList.js +71 -175
- package/fragments/drawer-list/DrawerList.js.map +1 -1
- package/fragments/drawer-list/DrawerListContext.d.ts +27 -2
- package/fragments/drawer-list/DrawerListContext.js.map +1 -1
- package/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
- package/fragments/drawer-list/DrawerListDocs.js +2 -2
- package/fragments/drawer-list/DrawerListDocs.js.map +1 -1
- package/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
- package/fragments/drawer-list/DrawerListHelpers.js +45 -53
- package/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
- package/fragments/drawer-list/DrawerListItem.d.ts +30 -0
- package/fragments/drawer-list/DrawerListItem.js +91 -0
- package/fragments/drawer-list/DrawerListItem.js.map +1 -0
- package/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
- package/fragments/drawer-list/DrawerListPortal.js +91 -121
- package/fragments/drawer-list/DrawerListPortal.js.map +1 -1
- package/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
- package/fragments/drawer-list/DrawerListProvider.js +12 -19
- package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/component-helper.d.ts +45 -48
- package/shared/component-helper.js +23 -189
- package/shared/component-helper.js.map +1 -1
- package/shared/helpers/withCamelCaseProps.d.ts +4 -5
- package/shared/helpers/withCamelCaseProps.js +7 -2
- package/shared/helpers/withCamelCaseProps.js.map +1 -1
- package/shared/legacy/component-helper-legacy.d.ts +19 -0
- package/shared/legacy/component-helper-legacy.js +185 -0
- package/shared/legacy/component-helper-legacy.js.map +1 -0
- package/shared/locales/en-GB.d.ts +1 -0
- package/shared/locales/en-GB.js +1 -0
- package/shared/locales/en-GB.js.map +1 -1
- package/shared/locales/en-US.js.map +1 -1
- package/shared/locales/index.d.ts +2 -0
- package/shared/locales/nb-NO.d.ts +1 -0
- package/shared/locales/nb-NO.js +2 -1
- package/shared/locales/nb-NO.js.map +1 -1
- package/shared/locales/sv-SE.d.ts +1 -0
- package/shared/locales/sv-SE.js +1 -0
- package/shared/locales/sv-SE.js.map +1 -1
- package/style/core/scopes.scss +1 -1
- package/style/dnb-ui-basis.css +1 -1
- package/style/dnb-ui-basis.min.css +1 -1
- package/style/dnb-ui-body.css +1 -1
- package/style/dnb-ui-body.min.css +1 -1
- package/style/dnb-ui-components.css +2 -1
- package/style/dnb-ui-components.min.css +1 -1
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/style/themes/theme-ui/ui-theme-components.css +19 -1
- package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- 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 +1 -1
- package/umd/dnb-ui-lib.min.js +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
- package/es/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
- package/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
- /package/cjs/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
- /package/es/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
- /package/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
4
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
5
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
6
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
-
import React, { useCallback, useMemo } from 'react';
|
|
7
|
+
import React, { useCallback, useMemo, useRef } from 'react';
|
|
6
8
|
import classnames from 'classnames';
|
|
7
9
|
import { Checkbox, ToggleButton } from '../../../../components';
|
|
8
10
|
import ButtonRow from '../../Form/ButtonRow';
|
|
@@ -33,16 +35,30 @@ function Toggle(props) {
|
|
|
33
35
|
handleChange,
|
|
34
36
|
setDisplayValue
|
|
35
37
|
} = useFieldProps(preparedProps);
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
const preventChangeRef = useRef(false);
|
|
39
|
+
const onClick = preparedProps === null || preparedProps === void 0 ? void 0 : preparedProps.onClick;
|
|
40
|
+
const handleClick = useCallback(args => {
|
|
41
|
+
const preventDefault = () => {
|
|
42
|
+
var _args$preventDefault;
|
|
43
|
+
preventChangeRef.current = true;
|
|
44
|
+
(_args$preventDefault = args.preventDefault) === null || _args$preventDefault === void 0 ? void 0 : _args$preventDefault.call(args);
|
|
45
|
+
};
|
|
46
|
+
if (preventChangeRef.current) {
|
|
47
|
+
args.checked = !args.checked;
|
|
48
|
+
preventChangeRef.current = false;
|
|
49
|
+
}
|
|
50
|
+
const event = _objectSpread(_objectSpread({}, args), {}, {
|
|
51
|
+
preventDefault
|
|
52
|
+
});
|
|
53
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(args.checked ? valueOn : valueOff, event);
|
|
54
|
+
}, [onClick, valueOff, valueOn]);
|
|
55
|
+
const handleCheckboxChange = useCallback(args => {
|
|
56
|
+
handleChange === null || handleChange === void 0 ? void 0 : handleChange(args.checked ? valueOn : valueOff, args);
|
|
41
57
|
}, [handleChange, valueOn, valueOff]);
|
|
42
|
-
const handleToggleChange = useCallback(
|
|
58
|
+
const handleToggleChange = useCallback(_ref => {
|
|
43
59
|
let {
|
|
44
60
|
value
|
|
45
|
-
} =
|
|
61
|
+
} = _ref;
|
|
46
62
|
handleChange === null || handleChange === void 0 ? void 0 : handleChange(value === 'on' ? valueOn : valueOff);
|
|
47
63
|
}, [handleChange, valueOn, valueOff]);
|
|
48
64
|
const cn = classnames('dnb-forms-field-toggle', className);
|
|
@@ -84,7 +100,8 @@ function Toggle(props) {
|
|
|
84
100
|
disabled: disabled,
|
|
85
101
|
size: size !== 'small' ? size : undefined,
|
|
86
102
|
status: hasError ? 'error' : undefined,
|
|
87
|
-
onChange: handleCheckboxChange
|
|
103
|
+
onChange: handleCheckboxChange,
|
|
104
|
+
onClick: handleClick
|
|
88
105
|
}, htmlAttributes)));
|
|
89
106
|
case 'button':
|
|
90
107
|
return React.createElement(FieldBlock, fieldBlockProps, React.createElement(ToggleButton, _extends({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toggle.js","names":["React","useCallback","useMemo","classnames","Checkbox","ToggleButton","ButtonRow","FieldBlock","useFieldProps","pickSpacingProps","ToggleButtonGroupContext","useTranslation","useIterateItemNo","Toggle","props","translations","ToggleField","preparedProps","_objectSpread","errorMessages","id","className","valueOn","valueOff","variant","disabled","textOn","textOff","value","size","hasError","htmlAttributes","handleChange","setDisplayValue","handleCheckboxChange","_ref","checked","handleToggleChange","_ref2","cn","fieldBlockProps","forId","isOn","isOff","text","label","labelSuffix","required","labelSrOnly","labelWithItemNo","createElement","_extends","undefined","yes","no","status","onChange","on_change","role","asFieldset","bottom","Group","Provider","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/Toggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\nimport classnames from 'classnames'\nimport { Checkbox, ToggleButton } from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport useTranslation from '../../hooks/useTranslation'\nimport { useIterateItemNo } from '../../Iterate/ItemNo/useIItemNo'\nimport type { CheckboxProps } from '../../../../components/Checkbox'\nimport type { ToggleButtonProps } from '../../../../components/ToggleButton'\n\nexport type ToggleProps = {\n valueOn: unknown\n valueOff: unknown\n variant?: 'checkbox' | 'checkbox-button' | 'button' | 'buttons'\n textOn?: string\n textOff?: string\n size?: ToggleButtonProps['size'] | CheckboxProps['size']\n}\n\nexport type Props = Omit<FieldProps<unknown>, 'layout' | 'layoutOptions'> &\n ToggleProps\n\nfunction Toggle(props: Props) {\n const translations = useTranslation().ToggleField\n\n const preparedProps: Props = {\n ...props,\n errorMessages: props.errorMessages,\n }\n\n const {\n id,\n className,\n valueOn,\n valueOff,\n variant,\n disabled,\n textOn,\n textOff,\n value,\n size,\n hasError,\n htmlAttributes,\n handleChange,\n setDisplayValue,\n } = useFieldProps(preparedProps)\n\n const handleCheckboxChange = useCallback(\n ({ checked }) => {\n handleChange?.(checked ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n const handleToggleChange = useCallback(\n ({ value }) => {\n handleChange?.(value === 'on' ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n\n const cn = classnames('dnb-forms-field-toggle', className)\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: cn,\n disabled,\n ...pickSpacingProps(props),\n }\n\n const isOn = value === valueOn\n const isOff = value === valueOff\n\n useMemo(() => {\n const text = isOn ? textOn : textOff\n if (text) {\n setDisplayValue(text)\n }\n }, [isOn, setDisplayValue, textOff, textOn])\n\n const { label, labelSuffix, required, labelSrOnly } = props\n const labelWithItemNo = useIterateItemNo({\n label,\n labelSuffix,\n required,\n })\n\n switch (variant) {\n default:\n case 'checkbox':\n return (\n <FieldBlock {...fieldBlockProps} label={undefined}>\n <Checkbox\n id={id}\n className={cn}\n label={\n labelWithItemNo ??\n (isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no)\n }\n labelSrOnly={labelSrOnly}\n checked={isOn}\n disabled={disabled}\n size={size !== 'small' ? size : undefined}\n status={hasError ? 'error' : undefined}\n onChange={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'buttons':\n return (\n <FieldBlock {...fieldBlockProps} asFieldset>\n <ButtonRow bottom=\"x-small\">\n <ToggleButton.Group role=\"radiogroup\">\n <ToggleButtonGroupContext.Provider\n value={{\n value: isOn ? 'on' : isOff ? 'off' : null, // use \"null\" to reset the value\n onChange: handleToggleChange,\n status: hasError ? 'error' : undefined,\n disabled,\n size,\n }}\n >\n <ToggleButton\n text={textOn ?? translations.yes}\n value=\"on\"\n role=\"radio\"\n {...htmlAttributes}\n />\n <ToggleButton\n text={textOff ?? translations.no}\n value=\"off\"\n role=\"radio\"\n {...htmlAttributes}\n />\n </ToggleButtonGroupContext.Provider>\n </ToggleButton.Group>\n </ButtonRow>\n </FieldBlock>\n )\n case 'checkbox-button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n variant=\"checkbox\"\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n }\n}\n\nToggle._supportsSpacingProps = true\nexport default Toggle\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Toggle.js","names":["React","useCallback","useMemo","useRef","classnames","Checkbox","ToggleButton","ButtonRow","FieldBlock","useFieldProps","pickSpacingProps","ToggleButtonGroupContext","useTranslation","useIterateItemNo","Toggle","props","translations","ToggleField","preparedProps","_objectSpread","errorMessages","id","className","valueOn","valueOff","variant","disabled","textOn","textOff","value","size","hasError","htmlAttributes","handleChange","setDisplayValue","preventChangeRef","onClick","handleClick","args","preventDefault","_args$preventDefault","current","call","checked","event","handleCheckboxChange","handleToggleChange","_ref","cn","fieldBlockProps","forId","isOn","isOff","text","label","labelSuffix","required","labelSrOnly","labelWithItemNo","createElement","_extends","undefined","yes","no","status","onChange","on_change","role","asFieldset","bottom","Group","Provider","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/Toggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport { Checkbox, ToggleButton } from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport useTranslation from '../../hooks/useTranslation'\nimport { useIterateItemNo } from '../../Iterate/ItemNo/useIItemNo'\nimport type {\n CheckboxProps,\n OnChangeParams,\n OnClickParams,\n} from '../../../../components/Checkbox'\nimport type { ToggleButtonProps } from '../../../../components/ToggleButton'\n\nexport type ToggleProps = {\n valueOn: unknown\n valueOff: unknown\n variant?: 'checkbox' | 'checkbox-button' | 'button' | 'buttons'\n textOn?: string\n textOff?: string\n size?: ToggleButtonProps['size'] | CheckboxProps['size']\n\n /**\n * Checkbox props\n */\n onClick?: (\n value: unknown,\n params: { event: React.MouseEvent<HTMLInputElement> }\n ) => void\n}\n\nexport type Props = Omit<FieldProps<unknown>, 'layout' | 'layoutOptions'> &\n ToggleProps\n\nfunction Toggle(props: Props) {\n const translations = useTranslation().ToggleField\n\n const preparedProps: Props = {\n ...props,\n errorMessages: props.errorMessages,\n }\n\n const {\n id,\n className,\n valueOn,\n valueOff,\n variant,\n disabled,\n textOn,\n textOff,\n value,\n size,\n hasError,\n htmlAttributes,\n handleChange,\n setDisplayValue,\n } = useFieldProps(preparedProps)\n\n const preventChangeRef = useRef(false)\n\n const onClick = preparedProps?.onClick\n const handleClick = useCallback(\n (args: OnClickParams) => {\n const preventDefault = () => {\n preventChangeRef.current = true\n args.preventDefault?.()\n }\n\n if (preventChangeRef.current) {\n args.checked = !args.checked\n preventChangeRef.current = false\n }\n\n const event = {\n ...args,\n preventDefault,\n }\n onClick?.(args.checked ? valueOn : valueOff, event)\n },\n [onClick, valueOff, valueOn]\n )\n const handleCheckboxChange = useCallback(\n (args: OnChangeParams) => {\n handleChange?.(args.checked ? valueOn : valueOff, args)\n },\n [handleChange, valueOn, valueOff]\n )\n const handleToggleChange = useCallback(\n ({ value }) => {\n handleChange?.(value === 'on' ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n\n const cn = classnames('dnb-forms-field-toggle', className)\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: cn,\n disabled,\n ...pickSpacingProps(props),\n }\n\n const isOn = value === valueOn\n const isOff = value === valueOff\n\n useMemo(() => {\n const text = isOn ? textOn : textOff\n if (text) {\n setDisplayValue(text)\n }\n }, [isOn, setDisplayValue, textOff, textOn])\n\n const { label, labelSuffix, required, labelSrOnly } = props\n const labelWithItemNo = useIterateItemNo({\n label,\n labelSuffix,\n required,\n })\n\n switch (variant) {\n default:\n case 'checkbox':\n return (\n <FieldBlock {...fieldBlockProps} label={undefined}>\n <Checkbox\n id={id}\n className={cn}\n label={\n labelWithItemNo ??\n (isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no)\n }\n labelSrOnly={labelSrOnly}\n checked={isOn}\n disabled={disabled}\n size={size !== 'small' ? size : undefined}\n status={hasError ? 'error' : undefined}\n onChange={handleCheckboxChange}\n onClick={handleClick}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'buttons':\n return (\n <FieldBlock {...fieldBlockProps} asFieldset>\n <ButtonRow bottom=\"x-small\">\n <ToggleButton.Group role=\"radiogroup\">\n <ToggleButtonGroupContext.Provider\n value={{\n value: isOn ? 'on' : isOff ? 'off' : null, // use \"null\" to reset the value\n onChange: handleToggleChange,\n status: hasError ? 'error' : undefined,\n disabled,\n size,\n }}\n >\n <ToggleButton\n text={textOn ?? translations.yes}\n value=\"on\"\n role=\"radio\"\n {...htmlAttributes}\n />\n <ToggleButton\n text={textOff ?? translations.no}\n value=\"off\"\n role=\"radio\"\n {...htmlAttributes}\n />\n </ToggleButtonGroupContext.Provider>\n </ToggleButton.Group>\n </ButtonRow>\n </FieldBlock>\n )\n case 'checkbox-button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n variant=\"checkbox\"\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n }\n}\n\nToggle._supportsSpacingProps = true\nexport default Toggle\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -30,4 +30,11 @@ export const ToggleProperties = {
|
|
|
30
30
|
status: 'optional'
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
+
export const ToggleEvents = {
|
|
34
|
+
onClick: {
|
|
35
|
+
doc: 'Will be called on click.',
|
|
36
|
+
type: '(value: unknown, { event: ClickEvent, preventDefault: () => void }) => void',
|
|
37
|
+
status: 'optional'
|
|
38
|
+
}
|
|
39
|
+
};
|
|
33
40
|
//# sourceMappingURL=ToggleDocs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleDocs.js","names":["ToggleProperties","valueOn","doc","type","status","valueOff","textOn","textOff","size","variant"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/ToggleDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const ToggleProperties: PropertiesTableProps = {\n valueOn: {\n doc: 'Source data value when the toggle is in the \"on-state\" (varies based on UI variant).',\n type: ['string', 'number', 'boolean'],\n status: 'required',\n },\n valueOff: {\n doc: 'Source data value when the toggle is in the \"off-state\".',\n type: ['string', 'number', 'boolean'],\n status: 'required',\n },\n textOn: {\n doc: 'Text to show in the UI when in the \"on-state\".',\n type: 'string',\n status: 'optional',\n },\n textOff: {\n doc: 'Text to show in the UI when in the \"off-state\".',\n type: 'string',\n status: 'optional',\n },\n size: {\n doc: 'The sizes you can choose is small (1.5rem), default (2rem), medium (2.5rem) and large (3rem) are supported component sizes. Defaults to default / null. Also, if you define a number like size=\"2\" then it will be forwarded as the input element attribute. Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).',\n type: 'string',\n status: 'optional',\n },\n variant: {\n doc: 'Choice of input feature. Can be: `checkbox`, `button`, `checkbox-button` or `buttons`.',\n type: 'string',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,gBAAsC,GAAG;EACpDC,OAAO,EAAE;IACPC,GAAG,EAAE,sFAAsF;IAC3FC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACrCC,MAAM,EAAE;EACV,CAAC;EACDC,QAAQ,EAAE;IACRH,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACrCC,MAAM,EAAE;EACV,CAAC;EACDE,MAAM,EAAE;IACNJ,GAAG,EAAE,gDAAgD;IACrDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,OAAO,EAAE;IACPL,GAAG,EAAE,iDAAiD;IACtDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,IAAI,EAAE;IACJN,GAAG,EAAE,oWAAoW;IACzWC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACPP,GAAG,EAAE,wFAAwF;IAC7FC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ToggleDocs.js","names":["ToggleProperties","valueOn","doc","type","status","valueOff","textOn","textOff","size","variant","ToggleEvents","onClick"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/ToggleDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const ToggleProperties: PropertiesTableProps = {\n valueOn: {\n doc: 'Source data value when the toggle is in the \"on-state\" (varies based on UI variant).',\n type: ['string', 'number', 'boolean'],\n status: 'required',\n },\n valueOff: {\n doc: 'Source data value when the toggle is in the \"off-state\".',\n type: ['string', 'number', 'boolean'],\n status: 'required',\n },\n textOn: {\n doc: 'Text to show in the UI when in the \"on-state\".',\n type: 'string',\n status: 'optional',\n },\n textOff: {\n doc: 'Text to show in the UI when in the \"off-state\".',\n type: 'string',\n status: 'optional',\n },\n size: {\n doc: 'The sizes you can choose is small (1.5rem), default (2rem), medium (2.5rem) and large (3rem) are supported component sizes. Defaults to default / null. Also, if you define a number like size=\"2\" then it will be forwarded as the input element attribute. Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).',\n type: 'string',\n status: 'optional',\n },\n variant: {\n doc: 'Choice of input feature. Can be: `checkbox`, `button`, `checkbox-button` or `buttons`.',\n type: 'string',\n status: 'optional',\n },\n}\n\nexport const ToggleEvents: PropertiesTableProps = {\n onClick: {\n doc: 'Will be called on click.',\n type: '(value: unknown, { event: ClickEvent, preventDefault: () => void }) => void',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,gBAAsC,GAAG;EACpDC,OAAO,EAAE;IACPC,GAAG,EAAE,sFAAsF;IAC3FC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACrCC,MAAM,EAAE;EACV,CAAC;EACDC,QAAQ,EAAE;IACRH,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACrCC,MAAM,EAAE;EACV,CAAC;EACDE,MAAM,EAAE;IACNJ,GAAG,EAAE,gDAAgD;IACrDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,OAAO,EAAE;IACPL,GAAG,EAAE,iDAAiD;IACtDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,IAAI,EAAE;IACJN,GAAG,EAAE,oWAAoW;IACzWC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACPP,GAAG,EAAE,wFAAwF;IAC7FC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMM,YAAkC,GAAG;EAChDC,OAAO,EAAE;IACPT,GAAG,EAAE,0BAA0B;IAC/BC,IAAI,EAAE,6EAA6E;IACnFC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import React, { useCallback, useContext } from 'react';
|
|
4
|
+
import { FormStatus } from '../../../../components';
|
|
5
|
+
import { useTranslation } from '../../hooks';
|
|
6
|
+
import useHandleStatus from './useHandleStatus';
|
|
7
|
+
import IsolationContext from './IsolationContext';
|
|
8
|
+
import DataContext from '../../DataContext/Context';
|
|
9
|
+
import useDataContextSnapshot from './useDataContextSnapshot';
|
|
10
|
+
export default function IsolatedContainer(_ref) {
|
|
11
|
+
let {
|
|
12
|
+
children
|
|
13
|
+
} = _ref;
|
|
14
|
+
const {
|
|
15
|
+
outerContext,
|
|
16
|
+
preventUncommittedChanges
|
|
17
|
+
} = useContext(IsolationContext);
|
|
18
|
+
const {
|
|
19
|
+
preventUncommittedChangesText
|
|
20
|
+
} = useTranslation().Isolation;
|
|
21
|
+
const {
|
|
22
|
+
showStatus: showCommitStatus
|
|
23
|
+
} = useHandleStatus({
|
|
24
|
+
outerContext,
|
|
25
|
+
preventUncommittedChanges,
|
|
26
|
+
error: isolationError
|
|
27
|
+
});
|
|
28
|
+
const {
|
|
29
|
+
setFieldEventListener
|
|
30
|
+
} = useContext(DataContext);
|
|
31
|
+
const {
|
|
32
|
+
resetDataAfterCommit
|
|
33
|
+
} = useContext(IsolationContext);
|
|
34
|
+
const {
|
|
35
|
+
handleReset
|
|
36
|
+
} = useDataContextSnapshot({
|
|
37
|
+
enabled: resetDataAfterCommit
|
|
38
|
+
});
|
|
39
|
+
const handleSubmit = useCallback(() => {
|
|
40
|
+
if (resetDataAfterCommit) {
|
|
41
|
+
handleReset();
|
|
42
|
+
}
|
|
43
|
+
}, [handleReset, resetDataAfterCommit]);
|
|
44
|
+
setFieldEventListener === null || setFieldEventListener === void 0 ? void 0 : setFieldEventListener(undefined, 'onBeforeCommit', handleSubmit);
|
|
45
|
+
return React.createElement(React.Fragment, null, children, preventUncommittedChanges && React.createElement(FormStatus, {
|
|
46
|
+
no_animation: false,
|
|
47
|
+
shellSpace: {
|
|
48
|
+
top: true
|
|
49
|
+
},
|
|
50
|
+
show: Boolean(showCommitStatus)
|
|
51
|
+
}, preventUncommittedChangesText));
|
|
52
|
+
}
|
|
53
|
+
export const isolationError = new Error('Form.Isolation');
|
|
54
|
+
//# sourceMappingURL=IsolatedContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsolatedContainer.js","names":["React","useCallback","useContext","FormStatus","useTranslation","useHandleStatus","IsolationContext","DataContext","useDataContextSnapshot","IsolatedContainer","_ref","children","outerContext","preventUncommittedChanges","preventUncommittedChangesText","Isolation","showStatus","showCommitStatus","error","isolationError","setFieldEventListener","resetDataAfterCommit","handleReset","enabled","handleSubmit","undefined","createElement","Fragment","no_animation","shellSpace","top","show","Boolean","Error"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolatedContainer.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport { FormStatus } from '../../../../components'\nimport { useTranslation } from '../../hooks'\nimport useHandleStatus from './useHandleStatus'\nimport IsolationContext from './IsolationContext'\nimport DataContext from '../../DataContext/Context'\nimport useDataContextSnapshot from './useDataContextSnapshot'\n\nexport default function IsolatedContainer({ children }) {\n const { outerContext, preventUncommittedChanges } =\n useContext(IsolationContext)\n const { preventUncommittedChangesText } = useTranslation().Isolation\n const { showStatus: showCommitStatus } = useHandleStatus({\n outerContext,\n preventUncommittedChanges,\n error: isolationError,\n })\n\n const { setFieldEventListener } = useContext(DataContext)\n const { resetDataAfterCommit } = useContext(IsolationContext)\n const { handleReset } = useDataContextSnapshot({\n enabled: resetDataAfterCommit,\n })\n\n const handleSubmit = useCallback(() => {\n if (resetDataAfterCommit) {\n handleReset()\n }\n }, [handleReset, resetDataAfterCommit])\n setFieldEventListener?.(undefined, 'onBeforeCommit', handleSubmit)\n\n return (\n <>\n {children}\n\n {preventUncommittedChanges && (\n <FormStatus\n no_animation={false}\n shellSpace={{ top: true }}\n show={Boolean(showCommitStatus)}\n >\n {preventUncommittedChangesText}\n </FormStatus>\n )}\n </>\n )\n}\n\nexport const isolationError = new Error('Form.Isolation')\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,cAAc,QAAQ,aAAa;AAC5C,OAAOC,eAAe,MAAM,mBAAmB;AAC/C,OAAOC,gBAAgB,MAAM,oBAAoB;AACjD,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,sBAAsB,MAAM,0BAA0B;AAE7D,eAAe,SAASC,iBAAiBA,CAAAC,IAAA,EAAe;EAAA,IAAd;IAAEC;EAAS,CAAC,GAAAD,IAAA;EACpD,MAAM;IAAEE,YAAY;IAAEC;EAA0B,CAAC,GAC/CX,UAAU,CAACI,gBAAgB,CAAC;EAC9B,MAAM;IAAEQ;EAA8B,CAAC,GAAGV,cAAc,CAAC,CAAC,CAACW,SAAS;EACpE,MAAM;IAAEC,UAAU,EAAEC;EAAiB,CAAC,GAAGZ,eAAe,CAAC;IACvDO,YAAY;IACZC,yBAAyB;IACzBK,KAAK,EAAEC;EACT,CAAC,CAAC;EAEF,MAAM;IAAEC;EAAsB,CAAC,GAAGlB,UAAU,CAACK,WAAW,CAAC;EACzD,MAAM;IAAEc;EAAqB,CAAC,GAAGnB,UAAU,CAACI,gBAAgB,CAAC;EAC7D,MAAM;IAAEgB;EAAY,CAAC,GAAGd,sBAAsB,CAAC;IAC7Ce,OAAO,EAAEF;EACX,CAAC,CAAC;EAEF,MAAMG,YAAY,GAAGvB,WAAW,CAAC,MAAM;IACrC,IAAIoB,oBAAoB,EAAE;MACxBC,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EAAE,CAACA,WAAW,EAAED,oBAAoB,CAAC,CAAC;EACvCD,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAGK,SAAS,EAAE,gBAAgB,EAAED,YAAY,CAAC;EAElE,OACExB,KAAA,CAAA0B,aAAA,CAAA1B,KAAA,CAAA2B,QAAA,QACGhB,QAAQ,EAERE,yBAAyB,IACxBb,KAAA,CAAA0B,aAAA,CAACvB,UAAU;IACTyB,YAAY,EAAE,KAAM;IACpBC,UAAU,EAAE;MAAEC,GAAG,EAAE;IAAK,CAAE;IAC1BC,IAAI,EAAEC,OAAO,CAACf,gBAAgB;EAAE,GAE/BH,6BACS,CAEd,CAAC;AAEP;AAEA,OAAO,MAAMK,cAAc,GAAG,IAAIc,KAAK,CAAC,gBAAgB,CAAC","ignoreList":[]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { JsonObject } from '../../utils/json-pointer';
|
|
3
3
|
import IsolationCommitButton from './IsolationCommitButton';
|
|
4
|
+
import IsolationResetButton from './IsolationResetButton';
|
|
4
5
|
import { type Props as ProviderProps } from '../../DataContext/Provider';
|
|
6
|
+
import { IsolationDataReference } from './IsolationDataReference';
|
|
5
7
|
import type { OnCommit, Path } from '../../types';
|
|
6
8
|
export type IsolationProviderProps<Data extends JsonObject> = {
|
|
7
9
|
/**
|
|
@@ -22,6 +24,18 @@ export type IsolationProviderProps<Data extends JsonObject> = {
|
|
|
22
24
|
* Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.
|
|
23
25
|
*/
|
|
24
26
|
bubbleValidation?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Prevents uncommitted changes before the form is submitted. Will display an error message if user tries to submit without committing their changes.
|
|
29
|
+
*/
|
|
30
|
+
preventUncommittedChanges?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* If set to `true`, the Form.Isolation will reset its data context after committing the data to the outer context.
|
|
33
|
+
*/
|
|
34
|
+
resetDataAfterCommit?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Provide a reference by using Form.Isolation.createDataReference.
|
|
37
|
+
*/
|
|
38
|
+
dataReference?: IsolationDataReference;
|
|
25
39
|
/**
|
|
26
40
|
* Used internally by the Form.Isolation component
|
|
27
41
|
*/
|
|
@@ -40,6 +54,8 @@ export type IsolationProps<Data extends JsonObject> = Omit<ProviderProps<Data>,
|
|
|
40
54
|
declare function IsolationProvider<Data extends JsonObject>(props: IsolationProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
41
55
|
declare namespace IsolationProvider {
|
|
42
56
|
var CommitButton: typeof IsolationCommitButton;
|
|
57
|
+
var ResetButton: typeof IsolationResetButton;
|
|
58
|
+
var createDataReference: typeof import("./IsolationDataReference").createDataReference;
|
|
43
59
|
var _supportsSpacingProps: any;
|
|
44
60
|
}
|
|
45
61
|
export default IsolationProvider;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
|
+
var _BubbleValidation;
|
|
4
5
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
6
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
7
|
import "core-js/modules/es.string.replace.js";
|
|
7
8
|
import "core-js/modules/web.dom-collections.iterator.js";
|
|
8
|
-
import React, { useCallback, useContext, useMemo, useReducer, useRef } from 'react';
|
|
9
|
+
import React, { useCallback, useContext, useMemo, useReducer, useRef, useState } from 'react';
|
|
9
10
|
import useMountEffect from '../../../../shared/helpers/useMountEffect';
|
|
10
11
|
import pointer from '../../utils/json-pointer';
|
|
11
12
|
import { extendDeep } from '../../../../shared/component-helper';
|
|
@@ -15,9 +16,19 @@ import { Context as DataContext, Provider } from '../../DataContext';
|
|
|
15
16
|
import SectionContext from '../Section/SectionContext';
|
|
16
17
|
import useReportError from './useReportError';
|
|
17
18
|
import IsolationCommitButton from './IsolationCommitButton';
|
|
19
|
+
import IsolationResetButton from './IsolationResetButton';
|
|
18
20
|
import { clearedData } from '../../DataContext/Provider';
|
|
21
|
+
import { createDataReference } from './IsolationDataReference';
|
|
22
|
+
import IsolatedContainer from './IsolatedContainer';
|
|
23
|
+
import IsolationContext from './IsolationContext';
|
|
19
24
|
import structuredClone from '@ungap/structured-clone';
|
|
20
25
|
function IsolationProvider(props) {
|
|
26
|
+
var _IsolatedContainer;
|
|
27
|
+
const [dataReferenceFallback] = useState(() => {
|
|
28
|
+
if (!(props !== null && props !== void 0 && props.dataReference)) {
|
|
29
|
+
return createDataReference();
|
|
30
|
+
}
|
|
31
|
+
});
|
|
21
32
|
const {
|
|
22
33
|
children,
|
|
23
34
|
onPathChange,
|
|
@@ -26,8 +37,11 @@ function IsolationProvider(props) {
|
|
|
26
37
|
transformOnCommit: transformOnCommitProp,
|
|
27
38
|
commitHandleRef,
|
|
28
39
|
bubbleValidation,
|
|
40
|
+
preventUncommittedChanges,
|
|
29
41
|
data,
|
|
30
|
-
defaultData
|
|
42
|
+
defaultData,
|
|
43
|
+
dataReference = dataReferenceFallback,
|
|
44
|
+
resetDataAfterCommit
|
|
31
45
|
} = props;
|
|
32
46
|
const [, forceUpdate] = useReducer(() => ({}), {});
|
|
33
47
|
const internalDataRef = useRef();
|
|
@@ -90,7 +104,7 @@ function IsolationProvider(props) {
|
|
|
90
104
|
if (localData && pathSection && !pointer.has(localDataRef.current, pathSection)) {
|
|
91
105
|
localData = moveValueToPath(pathSection, localData);
|
|
92
106
|
}
|
|
93
|
-
internalDataRef.current = Object.assign({}, localData || dataOuter || {}, localDataRef.current);
|
|
107
|
+
internalDataRef.current = Object.assign({}, localData || structuredClone(dataOuter) || {}, localDataRef.current);
|
|
94
108
|
}, [data, defaultData, pathSection, dataOuter, moveValueToPath]);
|
|
95
109
|
const onCommit = useCallback(async (data, additionalArgs) => {
|
|
96
110
|
var _props$path;
|
|
@@ -112,12 +126,15 @@ function IsolationProvider(props) {
|
|
|
112
126
|
await (handlePathChangeOuter === null || handlePathChangeOuter === void 0 ? void 0 : handlePathChangeOuter(path, Array.isArray(isolatedData) ? isolatedData : extendDeep({}, outerData, isolatedData)));
|
|
113
127
|
return result;
|
|
114
128
|
}, [getMountedData, props.path, dataOuter, transformOnCommitProp, handlePathChangeOuter, onCommitProp, removeSectionPath]);
|
|
129
|
+
const setIsolatedData = useCallback(data => {
|
|
130
|
+
localDataRef.current = data;
|
|
131
|
+
internalDataRef.current = data;
|
|
132
|
+
}, []);
|
|
115
133
|
const onClear = useCallback(() => {
|
|
116
|
-
|
|
117
|
-
internalDataRef.current = clearedData;
|
|
134
|
+
setIsolatedData(clearedData);
|
|
118
135
|
forceUpdate();
|
|
119
136
|
onClearProp === null || onClearProp === void 0 ? void 0 : onClearProp();
|
|
120
|
-
}, [onClearProp]);
|
|
137
|
+
}, [onClearProp, setIsolatedData]);
|
|
121
138
|
const providerProps = _objectSpread(_objectSpread({}, props), {}, {
|
|
122
139
|
[defaultData ? 'defaultData' : 'data']: internalDataRef.current,
|
|
123
140
|
onUpdateDataValue: onUpdateDataValueHandler,
|
|
@@ -126,22 +143,28 @@ function IsolationProvider(props) {
|
|
|
126
143
|
onClear,
|
|
127
144
|
isolate: true
|
|
128
145
|
});
|
|
129
|
-
return React.createElement(Provider, providerProps, React.createElement(
|
|
146
|
+
return React.createElement(Provider, providerProps, React.createElement(IsolationContext.Provider, {
|
|
147
|
+
value: {
|
|
148
|
+
preventUncommittedChanges,
|
|
149
|
+
dataReference,
|
|
150
|
+
resetDataAfterCommit,
|
|
151
|
+
outerContext,
|
|
152
|
+
setIsolatedData
|
|
153
|
+
}
|
|
154
|
+
}, React.createElement(DataContext.Consumer, null, dataContext => {
|
|
130
155
|
dataContextRef.current = dataContext;
|
|
131
156
|
if (commitHandleRef) {
|
|
132
157
|
commitHandleRef.current = dataContext === null || dataContext === void 0 ? void 0 : dataContext.handleSubmit;
|
|
133
158
|
}
|
|
134
|
-
return children;
|
|
135
|
-
}), bubbleValidation && React.createElement(BubbleValidation,
|
|
136
|
-
outerContext: outerContext
|
|
137
|
-
}));
|
|
159
|
+
return _IsolatedContainer || (_IsolatedContainer = React.createElement(IsolatedContainer, null, children, " "));
|
|
160
|
+
}), bubbleValidation && (_BubbleValidation || (_BubbleValidation = React.createElement(BubbleValidation, null)))));
|
|
138
161
|
}
|
|
139
|
-
function BubbleValidation(
|
|
162
|
+
function BubbleValidation() {
|
|
140
163
|
var _addSetShowAllErrorsR;
|
|
141
|
-
let {
|
|
142
|
-
outerContext
|
|
143
|
-
} = _ref;
|
|
144
164
|
const innerContext = useContext(DataContext);
|
|
165
|
+
const {
|
|
166
|
+
outerContext
|
|
167
|
+
} = useContext(IsolationContext);
|
|
145
168
|
const {
|
|
146
169
|
setShowAllErrors
|
|
147
170
|
} = innerContext;
|
|
@@ -159,6 +182,8 @@ function BubbleValidation(_ref) {
|
|
|
159
182
|
}
|
|
160
183
|
const isolationError = new Error('Form.Isolation');
|
|
161
184
|
IsolationProvider.CommitButton = IsolationCommitButton;
|
|
185
|
+
IsolationProvider.ResetButton = IsolationResetButton;
|
|
186
|
+
IsolationProvider.createDataReference = createDataReference;
|
|
162
187
|
IsolationProvider._supportsSpacingProps = undefined;
|
|
163
188
|
export default IsolationProvider;
|
|
164
189
|
//# sourceMappingURL=Isolation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Isolation.js","names":["React","useCallback","useContext","useMemo","useReducer","useRef","useMountEffect","pointer","extendDeep","isAsync","useDataValue","Context","DataContext","Provider","SectionContext","useReportError","IsolationCommitButton","clearedData","structuredClone","IsolationProvider","props","children","onPathChange","onCommit","onCommitProp","onClear","onClearProp","transformOnCommit","transformOnCommitProp","commitHandleRef","bubbleValidation","data","defaultData","forceUpdate","internalDataRef","localDataRef","dataContextRef","outerContext","path","pathSection","handlePathChange","handlePathChangeOuter","dataOuter","moveValueToPath","onPathChangeHandler","value","current","set","replace","onUpdateDataValueHandler","preventUpdate","undefined","arguments","length","removeSectionPath","has","get","getMountedData","_dataContextRef$curre","mounterData","mountedFieldsRef","forEach","field","isMounted","localData","Object","assign","additionalArgs","_props$path","mountedData","outerData","isolatedData","stop","preventCommit","commitData","result","Array","isArray","providerProps","_objectSpread","onUpdateDataValue","isolate","createElement","Consumer","dataContext","handleSubmit","BubbleValidation","_ref","_addSetShowAllErrorsR","innerContext","setShowAllErrors","setShowAllErrorsNested","showAllErrors","addSetShowAllErrorsRef","includes","push","hasErrors","isolationError","Error","CommitButton","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/Isolation.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport pointer, { JsonObject } from '../../utils/json-pointer'\nimport { extendDeep } from '../../../../shared/component-helper'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport useDataValue from '../../hooks/useDataValue'\nimport {\n Context as DataContext,\n ContextState,\n Provider,\n} from '../../DataContext'\nimport SectionContext from '../Section/SectionContext'\nimport useReportError from './useReportError'\nimport IsolationCommitButton from './IsolationCommitButton'\nimport {\n clearedData,\n type Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport type { OnCommit, Path } from '../../types'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So it's a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\nexport type IsolationProviderProps<Data extends JsonObject> = {\n /**\n * Form.Isolation: Will be called when the isolated context is committed.\n */\n onCommit?: OnCommit<Data>\n /**\n * Form.Isolation: Will be called when the form is cleared via Form.clearData\n */\n onClear?: () => void\n /**\n * Form.Isolation: A function that will be called when the isolated context is committed.\n * It will receive the data from the isolated context and the data from the outer context.\n * You can use this to transform the data before it is committed.\n */\n transformOnCommit?: (isolatedData: Data, handlerData: Data) => JsonObject\n /**\n * Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.\n */\n bubbleValidation?: boolean\n /**\n * Used internally by the Form.Isolation component\n */\n path?: Path\n /**\n * Used internally by the Form.Isolation component\n */\n isolate?: boolean\n}\n\nexport type IsolationProps<Data extends JsonObject> = Omit<\n ProviderProps<Data>,\n | 'onSubmit'\n | 'onSubmitRequest'\n | 'onSubmitComplete'\n | 'minimumAsyncBehaviorTime'\n | 'asyncSubmitTimeout'\n | 'scrollTopOnSubmit'\n | 'sessionStorageId'\n | 'globalStatusId'\n> & {\n /**\n * A ref (function) that you can call in order to commit the data programmatically to the outer context.\n */\n commitHandleRef?: React.MutableRefObject<() => void>\n}\n\nfunction IsolationProvider<Data extends JsonObject>(\n props: IsolationProps<Data>\n) {\n const {\n children,\n onPathChange,\n onCommit: onCommitProp,\n onClear: onClearProp,\n transformOnCommit: transformOnCommitProp,\n commitHandleRef,\n bubbleValidation,\n data,\n defaultData,\n } = props\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const internalDataRef = useRef<Data>()\n const localDataRef = useRef<Partial<Data>>({})\n const dataContextRef = useRef<ContextState>(null)\n const outerContext = useContext(DataContext)\n const { path: pathSection } = useContext(SectionContext) || {}\n const { handlePathChange: handlePathChangeOuter, data: dataOuter } =\n outerContext || {}\n const { moveValueToPath } = useDataValue()\n\n const onPathChangeHandler = useCallback(\n async (path: Path, value: unknown) => {\n if (localDataRef.current === clearedData) {\n localDataRef.current = {}\n }\n\n // Depending on the usage, we can get a path like so: \"/pushContainerItems/0/somePath\"\n // where \"somePath\" is a frozen object. In order to still be able to modify it,\n // pointer.set will unfreeze the object and then modify it. (Object.isFrozen(obj[tok]))\n\n pointer.set(localDataRef.current, path, value)\n\n if (pathSection) {\n path = path.replace(pathSection, '')\n }\n\n return await onPathChange?.(path, value)\n },\n [onPathChange, pathSection]\n )\n\n const onUpdateDataValueHandler = useCallback(\n async (\n path: Path,\n value: unknown,\n { preventUpdate = undefined } = {}\n ) => {\n if (internalDataRef.current === clearedData) {\n internalDataRef.current = {} as Data\n }\n\n pointer.set(internalDataRef.current, path, value)\n\n if (!preventUpdate) {\n forceUpdate()\n }\n },\n []\n )\n\n const removeSectionPath = useCallback(\n (data: Data) => {\n return pathSection && pointer.has(data, pathSection)\n ? pointer.get(data, pathSection)\n : data\n },\n [pathSection]\n )\n\n const getMountedData = useCallback((data: Data) => {\n const mounterData = {} as Data\n dataContextRef.current?.mountedFieldsRef.current.forEach(\n (field, path) => {\n if (field.isMounted && pointer.has(data, path)) {\n pointer.set(mounterData, path, pointer.get(data, path))\n }\n }\n )\n return mounterData\n }, [])\n\n useMountEffect(() => {\n localDataRef.current = getMountedData(internalDataRef.current)\n })\n\n // Update the isolated data with the outside context data\n useMemo(() => {\n if (localDataRef.current === clearedData) {\n return // stop here\n }\n\n let localData = data ?? defaultData\n\n if (\n localData &&\n pathSection &&\n !pointer.has(localDataRef.current, pathSection)\n ) {\n localData = moveValueToPath<Data>(pathSection, localData)\n }\n\n internalDataRef.current = Object.assign(\n {},\n localData || dataOuter || {},\n localDataRef.current\n )\n }, [data, defaultData, pathSection, dataOuter, moveValueToPath])\n\n const onCommit: IsolationProps<Data>['onCommit'] = useCallback(\n async (data: Data, additionalArgs) => {\n const mountedData = getMountedData(data)\n const path = props.path ?? '/'\n const outerData =\n props.path && pointer.has(dataOuter, path)\n ? pointer.get(dataOuter, path)\n : dataOuter\n\n localDataRef.current = mountedData\n let isolatedData = structuredClone(mountedData)\n\n if (typeof transformOnCommitProp === 'function') {\n isolatedData = transformOnCommitProp(isolatedData, outerData)\n }\n\n let stop = false\n additionalArgs.preventCommit = () => (stop = true)\n\n const commitData = removeSectionPath(isolatedData)\n const result = isAsync(onCommitProp)\n ? await onCommitProp?.(commitData, additionalArgs)\n : onCommitProp?.(commitData, additionalArgs)\n\n if (stop) {\n return // stop here\n }\n\n // Commit the internal data to the nested context data\n await handlePathChangeOuter?.(\n path,\n Array.isArray(isolatedData)\n ? isolatedData\n : extendDeep({}, outerData, isolatedData)\n )\n\n return result\n },\n [\n getMountedData,\n props.path,\n dataOuter,\n transformOnCommitProp,\n handlePathChangeOuter,\n onCommitProp,\n removeSectionPath,\n ]\n )\n\n const onClear = useCallback(() => {\n localDataRef.current = clearedData\n internalDataRef.current = clearedData as Data\n forceUpdate()\n onClearProp?.()\n }, [onClearProp])\n\n const providerProps: IsolationProps<Data> = {\n ...props,\n [defaultData ? 'defaultData' : 'data']: internalDataRef.current,\n onUpdateDataValue: onUpdateDataValueHandler,\n onPathChange: onPathChangeHandler,\n onCommit,\n onClear,\n isolate: true,\n }\n\n return (\n <Provider {...providerProps}>\n <DataContext.Consumer>\n {(dataContext) => {\n dataContextRef.current = dataContext\n\n if (commitHandleRef) {\n commitHandleRef.current = dataContext?.handleSubmit\n }\n\n return children\n }}\n </DataContext.Consumer>\n\n {bubbleValidation && (\n <BubbleValidation outerContext={outerContext} />\n )}\n </Provider>\n )\n}\n\nfunction BubbleValidation({\n outerContext,\n}: {\n outerContext: ContextState\n}) {\n const innerContext = useContext(DataContext)\n const { setShowAllErrors } = innerContext\n\n const setShowAllErrorsNested = useCallback(\n (showAllErrors: boolean) => {\n setShowAllErrors?.(showAllErrors)\n },\n [setShowAllErrors]\n )\n\n const { addSetShowAllErrorsRef } = outerContext || {}\n if (!addSetShowAllErrorsRef?.current?.includes(setShowAllErrorsNested)) {\n addSetShowAllErrorsRef?.current.push(setShowAllErrorsNested)\n }\n\n useReportError(\n innerContext.hasErrors() ? isolationError : undefined,\n outerContext\n )\n\n return null\n}\n\nconst isolationError = new Error('Form.Isolation')\n\nIsolationProvider.CommitButton = IsolationCommitButton\nIsolationProvider._supportsSpacingProps = undefined\n\nexport default IsolationProvider\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Isolation.js","names":["React","useCallback","useContext","useMemo","useReducer","useRef","useState","useMountEffect","pointer","extendDeep","isAsync","useDataValue","Context","DataContext","Provider","SectionContext","useReportError","IsolationCommitButton","IsolationResetButton","clearedData","createDataReference","IsolatedContainer","IsolationContext","structuredClone","IsolationProvider","props","_IsolatedContainer","dataReferenceFallback","dataReference","children","onPathChange","onCommit","onCommitProp","onClear","onClearProp","transformOnCommit","transformOnCommitProp","commitHandleRef","bubbleValidation","preventUncommittedChanges","data","defaultData","resetDataAfterCommit","forceUpdate","internalDataRef","localDataRef","dataContextRef","outerContext","path","pathSection","handlePathChange","handlePathChangeOuter","dataOuter","moveValueToPath","onPathChangeHandler","value","current","set","replace","onUpdateDataValueHandler","preventUpdate","undefined","arguments","length","removeSectionPath","has","get","getMountedData","_dataContextRef$curre","mounterData","mountedFieldsRef","forEach","field","isMounted","localData","Object","assign","additionalArgs","_props$path","mountedData","outerData","isolatedData","stop","preventCommit","commitData","result","Array","isArray","setIsolatedData","providerProps","_objectSpread","onUpdateDataValue","isolate","createElement","Consumer","dataContext","handleSubmit","_BubbleValidation","BubbleValidation","_addSetShowAllErrorsR","innerContext","setShowAllErrors","setShowAllErrorsNested","showAllErrors","addSetShowAllErrorsRef","includes","push","hasErrors","isolationError","Error","CommitButton","ResetButton","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/Isolation.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport pointer, { JsonObject } from '../../utils/json-pointer'\nimport { extendDeep } from '../../../../shared/component-helper'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport useDataValue from '../../hooks/useDataValue'\nimport {\n Context as DataContext,\n ContextState,\n Provider,\n} from '../../DataContext'\nimport SectionContext from '../Section/SectionContext'\nimport useReportError from './useReportError'\nimport IsolationCommitButton from './IsolationCommitButton'\nimport IsolationResetButton from './IsolationResetButton'\nimport {\n clearedData,\n type Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport {\n IsolationDataReference,\n createDataReference,\n} from './IsolationDataReference'\nimport IsolatedContainer from './IsolatedContainer'\nimport IsolationContext from './IsolationContext'\nimport type { OnCommit, Path } from '../../types'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So it's a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\nexport type IsolationProviderProps<Data extends JsonObject> = {\n /**\n * Form.Isolation: Will be called when the isolated context is committed.\n */\n onCommit?: OnCommit<Data>\n /**\n * Form.Isolation: Will be called when the form is cleared via Form.clearData\n */\n onClear?: () => void\n /**\n * Form.Isolation: A function that will be called when the isolated context is committed.\n * It will receive the data from the isolated context and the data from the outer context.\n * You can use this to transform the data before it is committed.\n */\n transformOnCommit?: (isolatedData: Data, handlerData: Data) => JsonObject\n /**\n * Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.\n */\n bubbleValidation?: boolean\n /**\n * Prevents uncommitted changes before the form is submitted. Will display an error message if user tries to submit without committing their changes.\n */\n preventUncommittedChanges?: boolean\n /**\n * If set to `true`, the Form.Isolation will reset its data context after committing the data to the outer context.\n */\n resetDataAfterCommit?: boolean\n /**\n * Provide a reference by using Form.Isolation.createDataReference.\n */\n dataReference?: IsolationDataReference\n /**\n * Used internally by the Form.Isolation component\n */\n path?: Path\n /**\n * Used internally by the Form.Isolation component\n */\n isolate?: boolean\n}\n\nexport type IsolationProps<Data extends JsonObject> = Omit<\n ProviderProps<Data>,\n | 'onSubmit'\n | 'onSubmitRequest'\n | 'onSubmitComplete'\n | 'minimumAsyncBehaviorTime'\n | 'asyncSubmitTimeout'\n | 'scrollTopOnSubmit'\n | 'sessionStorageId'\n | 'globalStatusId'\n> & {\n /**\n * A ref (function) that you can call in order to commit the data programmatically to the outer context.\n */\n commitHandleRef?: React.MutableRefObject<() => void>\n}\n\nfunction IsolationProvider<Data extends JsonObject>(\n props: IsolationProps<Data>\n) {\n const [dataReferenceFallback] = useState<IsolationDataReference>(() => {\n if (!props?.dataReference) {\n return createDataReference()\n }\n })\n\n const {\n children,\n onPathChange,\n onCommit: onCommitProp,\n onClear: onClearProp,\n transformOnCommit: transformOnCommitProp,\n commitHandleRef,\n bubbleValidation,\n preventUncommittedChanges,\n data,\n defaultData,\n dataReference = dataReferenceFallback,\n resetDataAfterCommit,\n } = props\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const internalDataRef = useRef<Data>()\n const localDataRef = useRef<Partial<Data>>({})\n const dataContextRef = useRef<ContextState>(null)\n const outerContext = useContext(DataContext)\n const { path: pathSection } = useContext(SectionContext) || {}\n const { handlePathChange: handlePathChangeOuter, data: dataOuter } =\n outerContext || {}\n const { moveValueToPath } = useDataValue()\n\n const onPathChangeHandler = useCallback(\n async (path: Path, value: unknown) => {\n if (localDataRef.current === clearedData) {\n localDataRef.current = {}\n }\n\n // Depending on the usage, we can get a path like so: \"/pushContainerItems/0/somePath\"\n // where \"somePath\" is a frozen object. In order to still be able to modify it,\n // pointer.set will unfreeze the object and then modify it. (Object.isFrozen(obj[tok]))\n\n pointer.set(localDataRef.current, path, value)\n\n if (pathSection) {\n path = path.replace(pathSection, '')\n }\n\n return await onPathChange?.(path, value)\n },\n [onPathChange, pathSection]\n )\n\n const onUpdateDataValueHandler = useCallback(\n async (\n path: Path,\n value: unknown,\n { preventUpdate = undefined } = {}\n ) => {\n if (internalDataRef.current === clearedData) {\n internalDataRef.current = {} as Data\n }\n\n pointer.set(internalDataRef.current, path, value)\n\n if (!preventUpdate) {\n forceUpdate()\n }\n },\n []\n )\n\n const removeSectionPath = useCallback(\n (data: Data) => {\n return pathSection && pointer.has(data, pathSection)\n ? pointer.get(data, pathSection)\n : data\n },\n [pathSection]\n )\n\n const getMountedData = useCallback((data: Data) => {\n const mounterData = {} as Data\n dataContextRef.current?.mountedFieldsRef.current.forEach(\n (field, path) => {\n if (field.isMounted && pointer.has(data, path)) {\n pointer.set(mounterData, path, pointer.get(data, path))\n }\n }\n )\n return mounterData\n }, [])\n\n useMountEffect(() => {\n localDataRef.current = getMountedData(internalDataRef.current)\n })\n\n // Update the isolated data with the outside context data\n useMemo(() => {\n if (localDataRef.current === clearedData) {\n return // stop here\n }\n\n let localData = data ?? defaultData\n\n if (\n localData &&\n pathSection &&\n !pointer.has(localDataRef.current, pathSection)\n ) {\n localData = moveValueToPath<Data>(pathSection, localData)\n }\n\n internalDataRef.current = Object.assign(\n {},\n localData || structuredClone(dataOuter) || {},\n localDataRef.current\n )\n }, [data, defaultData, pathSection, dataOuter, moveValueToPath])\n\n const onCommit: IsolationProps<Data>['onCommit'] = useCallback(\n async (data: Data, additionalArgs) => {\n const mountedData = getMountedData(data)\n const path = props.path ?? '/'\n const outerData =\n props.path && pointer.has(dataOuter, path)\n ? pointer.get(dataOuter, path)\n : dataOuter\n\n localDataRef.current = mountedData\n let isolatedData = structuredClone(mountedData)\n\n if (typeof transformOnCommitProp === 'function') {\n isolatedData = transformOnCommitProp(isolatedData, outerData)\n }\n\n let stop = false\n additionalArgs.preventCommit = () => (stop = true)\n\n const commitData = removeSectionPath(isolatedData)\n const result = isAsync(onCommitProp)\n ? await onCommitProp?.(commitData, additionalArgs)\n : onCommitProp?.(commitData, additionalArgs)\n\n if (stop) {\n return // stop here\n }\n\n // Commit the internal data to the nested context data\n await handlePathChangeOuter?.(\n path,\n Array.isArray(isolatedData)\n ? isolatedData\n : extendDeep({}, outerData, isolatedData)\n )\n\n return result\n },\n [\n getMountedData,\n props.path,\n dataOuter,\n transformOnCommitProp,\n handlePathChangeOuter,\n onCommitProp,\n removeSectionPath,\n ]\n )\n\n const setIsolatedData = useCallback((data: Data) => {\n localDataRef.current = data\n internalDataRef.current = data\n }, [])\n\n const onClear = useCallback(() => {\n setIsolatedData(clearedData as Data)\n forceUpdate()\n onClearProp?.()\n }, [onClearProp, setIsolatedData])\n\n const providerProps: IsolationProps<Data> = {\n ...props,\n [defaultData ? 'defaultData' : 'data']: internalDataRef.current,\n onUpdateDataValue: onUpdateDataValueHandler,\n onPathChange: onPathChangeHandler,\n onCommit,\n onClear,\n isolate: true,\n }\n\n return (\n <Provider {...providerProps}>\n <IsolationContext.Provider\n value={{\n preventUncommittedChanges,\n dataReference,\n resetDataAfterCommit,\n outerContext,\n setIsolatedData,\n }}\n >\n <DataContext.Consumer>\n {(dataContext) => {\n dataContextRef.current = dataContext\n\n if (commitHandleRef) {\n commitHandleRef.current = dataContext?.handleSubmit\n }\n\n return <IsolatedContainer>{children} </IsolatedContainer>\n }}\n </DataContext.Consumer>\n\n {bubbleValidation && <BubbleValidation />}\n </IsolationContext.Provider>\n </Provider>\n )\n}\n\nfunction BubbleValidation() {\n const innerContext = useContext(DataContext)\n const { outerContext } = useContext(IsolationContext)\n const { setShowAllErrors } = innerContext\n\n const setShowAllErrorsNested = useCallback(\n (showAllErrors: boolean) => {\n setShowAllErrors?.(showAllErrors)\n },\n [setShowAllErrors]\n )\n\n const { addSetShowAllErrorsRef } = outerContext || {}\n if (!addSetShowAllErrorsRef?.current?.includes(setShowAllErrorsNested)) {\n addSetShowAllErrorsRef?.current.push(setShowAllErrorsNested)\n }\n\n useReportError(\n innerContext.hasErrors() ? isolationError : undefined,\n outerContext\n )\n\n return null\n}\n\nconst isolationError = new Error('Form.Isolation')\n\nIsolationProvider.CommitButton = IsolationCommitButton\nIsolationProvider.ResetButton = IsolationResetButton\nIsolationProvider.createDataReference = createDataReference\nIsolationProvider._supportsSpacingProps = undefined\n\nexport default IsolationProvider\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -32,7 +32,7 @@ function IsolationCommitButton(props) {
|
|
|
32
32
|
}, [handleSubmit, isolate]);
|
|
33
33
|
return React.createElement(Button, _extends({
|
|
34
34
|
variant: "secondary",
|
|
35
|
-
className: classnames('dnb-forms-
|
|
35
|
+
className: classnames('dnb-forms-isolate__commit-button', className),
|
|
36
36
|
icon: check,
|
|
37
37
|
icon_position: "left",
|
|
38
38
|
onClick: onClickHandler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsolationCommitButton.js","names":["React","useCallback","useContext","classnames","useTranslation","DataContext","Button","check","IsolationCommitButton","props","translations","Isolation","className","children","text","rest","_objectWithoutProperties","_excluded","content","commitButtonText","handleSubmit","dataContextProps","isolate","onClickHandler","createElement","_extends","variant","icon","icon_position","onClick","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationCommitButton.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classnames from 'classnames'\nimport { useTranslation } from '../../hooks'\nimport DataContext from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\nimport { check } from '../../../../icons'\n\nexport type Props = ButtonProps\n\nfunction IsolationCommitButton(props: Props) {\n const translations = useTranslation().Isolation\n\n const { className, children, text, ...rest } = props\n\n const content = text || children || translations.commitButtonText\n\n const { handleSubmit, props: dataContextProps } =\n useContext(DataContext) || {}\n const { isolate } = dataContextProps || {}\n\n const onClickHandler = useCallback(() => {\n if (isolate) {\n handleSubmit?.()\n }\n }, [handleSubmit, isolate])\n\n return (\n <Button\n variant=\"secondary\"\n className={classnames('dnb-forms-
|
|
1
|
+
{"version":3,"file":"IsolationCommitButton.js","names":["React","useCallback","useContext","classnames","useTranslation","DataContext","Button","check","IsolationCommitButton","props","translations","Isolation","className","children","text","rest","_objectWithoutProperties","_excluded","content","commitButtonText","handleSubmit","dataContextProps","isolate","onClickHandler","createElement","_extends","variant","icon","icon_position","onClick","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationCommitButton.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classnames from 'classnames'\nimport { useTranslation } from '../../hooks'\nimport DataContext from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\nimport { check } from '../../../../icons'\n\nexport type Props = ButtonProps\n\nfunction IsolationCommitButton(props: Props) {\n const translations = useTranslation().Isolation\n\n const { className, children, text, ...rest } = props\n\n const content = text || children || translations.commitButtonText\n\n const { handleSubmit, props: dataContextProps } =\n useContext(DataContext) || {}\n const { isolate } = dataContextProps || {}\n\n const onClickHandler = useCallback(() => {\n if (isolate) {\n handleSubmit?.()\n }\n }, [handleSubmit, isolate])\n\n return (\n <Button\n variant=\"secondary\"\n className={classnames('dnb-forms-isolate__commit-button', className)}\n icon={check}\n icon_position=\"left\"\n onClick={onClickHandler}\n {...rest}\n >\n {content}\n </Button>\n )\n}\n\nIsolationCommitButton._supportsSpacingProps = true\nexport default IsolationCommitButton\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,cAAc,QAAQ,aAAa;AAC5C,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,MAAM,MAAuB,sCAAsC;AAC1E,SAASC,KAAK,QAAQ,mBAAmB;AAIzC,SAASC,qBAAqBA,CAACC,KAAY,EAAE;EAC3C,MAAMC,YAAY,GAAGN,cAAc,CAAC,CAAC,CAACO,SAAS;EAE/C,MAAM;MAAEC,SAAS;MAAEC,QAAQ;MAAEC;IAAc,CAAC,GAAGL,KAAK;IAAdM,IAAI,GAAAC,wBAAA,CAAKP,KAAK,EAAAQ,SAAA;EAEpD,MAAMC,OAAO,GAAGJ,IAAI,IAAID,QAAQ,IAAIH,YAAY,CAACS,gBAAgB;EAEjE,MAAM;IAAEC,YAAY;IAAEX,KAAK,EAAEY;EAAiB,CAAC,GAC7CnB,UAAU,CAACG,WAAW,CAAC,IAAI,CAAC,CAAC;EAC/B,MAAM;IAAEiB;EAAQ,CAAC,GAAGD,gBAAgB,IAAI,CAAC,CAAC;EAE1C,MAAME,cAAc,GAAGtB,WAAW,CAAC,MAAM;IACvC,IAAIqB,OAAO,EAAE;MACXF,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAAC;IAClB;EACF,CAAC,EAAE,CAACA,YAAY,EAAEE,OAAO,CAAC,CAAC;EAE3B,OACEtB,KAAA,CAAAwB,aAAA,CAAClB,MAAM,EAAAmB,QAAA;IACLC,OAAO,EAAC,WAAW;IACnBd,SAAS,EAAET,UAAU,CAAC,kCAAkC,EAAES,SAAS,CAAE;IACrEe,IAAI,EAAEpB,KAAM;IACZqB,aAAa,EAAC,MAAM;IACpBC,OAAO,EAAEN;EAAe,GACpBR,IAAI,GAEPG,OACK,CAAC;AAEb;AAEAV,qBAAqB,CAACsB,qBAAqB,GAAG,IAAI;AAClD,eAAetB,qBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ContextState } from '../../DataContext/Context';
|
|
3
|
+
import { IsolationDataReference } from './IsolationDataReference';
|
|
4
|
+
export type IsolationContext = {
|
|
5
|
+
dataReference: IsolationDataReference;
|
|
6
|
+
resetDataAfterCommit: boolean;
|
|
7
|
+
outerContext: ContextState;
|
|
8
|
+
preventUncommittedChanges: boolean;
|
|
9
|
+
setIsolatedData: (data: unknown) => void;
|
|
10
|
+
};
|
|
11
|
+
declare const IsolationContext: import("react").Context<IsolationContext>;
|
|
12
|
+
export default IsolationContext;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsolationContext.js","names":["createContext","IsolationContext"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationContext.ts"],"sourcesContent":["import { createContext } from 'react'\nimport { ContextState } from '../../DataContext/Context'\nimport { IsolationDataReference } from './IsolationDataReference'\n\nexport type IsolationContext = {\n dataReference: IsolationDataReference\n resetDataAfterCommit: boolean\n outerContext: ContextState\n preventUncommittedChanges: boolean\n setIsolatedData: (data: unknown) => void\n}\n\nconst IsolationContext = createContext<IsolationContext>(null)\n\nexport default IsolationContext\n"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,OAAO;AAYrC,MAAMC,gBAAgB,GAAGD,aAAa,CAAmB,IAAI,CAAC;AAE9D,eAAeC,gBAAgB","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type IsolationDataReference = {
|
|
3
|
+
refresh: () => void;
|
|
4
|
+
update: (data: unknown) => void;
|
|
5
|
+
cleanup: () => void;
|
|
6
|
+
snapshotRef: React.MutableRefObject<unknown>;
|
|
7
|
+
eventsRef: React.MutableRefObject<Array<() => void>>;
|
|
8
|
+
};
|
|
9
|
+
export declare function createDataReference(): IsolationDataReference;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function createDataReference() {
|
|
2
|
+
const snapshotRef = {
|
|
3
|
+
current: undefined
|
|
4
|
+
};
|
|
5
|
+
const eventsRef = {
|
|
6
|
+
current: []
|
|
7
|
+
};
|
|
8
|
+
const refresh = () => {
|
|
9
|
+
eventsRef.current.forEach(fn => fn());
|
|
10
|
+
};
|
|
11
|
+
const update = data => {
|
|
12
|
+
snapshotRef.current = data;
|
|
13
|
+
};
|
|
14
|
+
const cleanup = () => {
|
|
15
|
+
eventsRef.current = [];
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
refresh,
|
|
19
|
+
update,
|
|
20
|
+
cleanup,
|
|
21
|
+
snapshotRef,
|
|
22
|
+
eventsRef
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=IsolationDataReference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsolationDataReference.js","names":["createDataReference","snapshotRef","current","undefined","eventsRef","refresh","forEach","fn","update","data","cleanup"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationDataReference.ts"],"sourcesContent":["import React from 'react'\n\nexport type IsolationDataReference = {\n refresh: () => void\n update: (data: unknown) => void\n cleanup: () => void\n snapshotRef: React.MutableRefObject<unknown>\n eventsRef: React.MutableRefObject<Array<() => void>>\n}\n\nexport function createDataReference(): IsolationDataReference {\n const snapshotRef = { current: undefined }\n const eventsRef = { current: [] }\n\n const refresh: IsolationDataReference['refresh'] = () => {\n eventsRef.current.forEach((fn) => fn())\n }\n\n const update: IsolationDataReference['update'] = (data) => {\n snapshotRef.current = data\n }\n\n const cleanup: IsolationDataReference['cleanup'] = () => {\n eventsRef.current = []\n }\n\n return {\n refresh,\n update,\n cleanup,\n snapshotRef,\n eventsRef,\n }\n}\n"],"mappings":"AAUA,OAAO,SAASA,mBAAmBA,CAAA,EAA2B;EAC5D,MAAMC,WAAW,GAAG;IAAEC,OAAO,EAAEC;EAAU,CAAC;EAC1C,MAAMC,SAAS,GAAG;IAAEF,OAAO,EAAE;EAAG,CAAC;EAEjC,MAAMG,OAA0C,GAAGA,CAAA,KAAM;IACvDD,SAAS,CAACF,OAAO,CAACI,OAAO,CAAEC,EAAE,IAAKA,EAAE,CAAC,CAAC,CAAC;EACzC,CAAC;EAED,MAAMC,MAAwC,GAAIC,IAAI,IAAK;IACzDR,WAAW,CAACC,OAAO,GAAGO,IAAI;EAC5B,CAAC;EAED,MAAMC,OAA0C,GAAGA,CAAA,KAAM;IACvDN,SAAS,CAACF,OAAO,GAAG,EAAE;EACxB,CAAC;EAED,OAAO;IACLG,OAAO;IACPG,MAAM;IACNE,OAAO;IACPT,WAAW;IACXG;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -22,6 +22,21 @@ export const IsolationProperties = _objectSpread(_objectSpread({
|
|
|
22
22
|
doc: 'Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.',
|
|
23
23
|
type: 'boolean',
|
|
24
24
|
status: 'optional'
|
|
25
|
+
},
|
|
26
|
+
preventUncommittedChanges: {
|
|
27
|
+
doc: 'Prevents uncommitted changes before the form is submitted. Will display an error message if user tries to submit without committing their changes.',
|
|
28
|
+
type: 'boolean',
|
|
29
|
+
status: 'optional'
|
|
30
|
+
},
|
|
31
|
+
resetDataAfterCommit: {
|
|
32
|
+
doc: 'If set to `true`, the Form.Isolation will reset its data context after committing the data to the outer context.',
|
|
33
|
+
type: 'boolean',
|
|
34
|
+
status: 'optional'
|
|
35
|
+
},
|
|
36
|
+
dataReference: {
|
|
37
|
+
doc: 'Provide a reference by using `Form.Isolation.createDataReference.`',
|
|
38
|
+
type: 'IsolationDataReference',
|
|
39
|
+
status: 'optional'
|
|
25
40
|
}
|
|
26
41
|
}, ProviderProperties), {}, {
|
|
27
42
|
minimumAsyncBehaviorTime: undefined,
|