@onewelcome/react-lib-components 6.0.0 → 6.2.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/dist/cjs/.scope.d.ts +2 -0
- package/dist/cjs/Button/Button.module.cjs.js +1 -1
- package/dist/cjs/Button/IconButton.module.cjs.js +1 -1
- package/dist/cjs/ContextMenu/ContextMenu.cjs.js +1 -1
- package/dist/cjs/ContextMenu/ContextMenu.cjs.js.map +1 -1
- package/dist/cjs/ContextMenu/ContextMenuItem.module.cjs.js +1 -1
- package/dist/cjs/ContextMenu/ContextMenuService.cjs.js +1 -1
- package/dist/cjs/ContextMenu/ContextMenuService.cjs.js.map +1 -1
- package/dist/cjs/DataGrid/DataGridActions/DataGridColumnsToggle.module.cjs.js +1 -1
- package/dist/cjs/Form/Fieldset/Fieldset.cjs.js +1 -1
- package/dist/cjs/Form/Fieldset/Fieldset.cjs.js.map +1 -1
- package/dist/cjs/Form/Input/Input.module.cjs.js +1 -1
- package/dist/cjs/Form/Select/MultiSelect/MultiOption.cjs.js +2 -0
- package/dist/cjs/Form/Select/MultiSelect/MultiOption.cjs.js.map +1 -0
- package/dist/cjs/Form/Select/MultiSelect/MultiSelect.cjs.js +2 -0
- package/dist/cjs/Form/Select/MultiSelect/MultiSelect.cjs.js.map +1 -0
- package/dist/cjs/Form/Select/MultiSelect/MultiSelect.module.cjs.js +2 -0
- package/dist/cjs/Form/Select/MultiSelect/MultiSelect.module.cjs.js.map +1 -0
- package/dist/cjs/Form/Select/MultiSelect/SelectButton.cjs.js +2 -0
- package/dist/cjs/Form/Select/MultiSelect/SelectButton.cjs.js.map +1 -0
- package/dist/cjs/Form/Select/MultiSelect/SelectButton.module.cjs.js +2 -0
- package/dist/cjs/Form/Select/MultiSelect/SelectButton.module.cjs.js.map +1 -0
- package/dist/cjs/Form/Select/MultiSelect/SelectedOptions.cjs.js +2 -0
- package/dist/cjs/Form/Select/MultiSelect/SelectedOptions.cjs.js.map +1 -0
- package/dist/cjs/Form/Select/MultiSelect/SelectedOptions.module.cjs.js +2 -0
- package/dist/cjs/Form/Select/MultiSelect/SelectedOptions.module.cjs.js.map +1 -0
- package/dist/cjs/Form/Select/SelectService.cjs.js +1 -1
- package/dist/cjs/Form/Select/SelectService.cjs.js.map +1 -1
- package/dist/cjs/Form/Select/SingleSelect/Option.cjs.js +2 -0
- package/dist/cjs/Form/Select/SingleSelect/Option.cjs.js.map +1 -0
- package/dist/cjs/Form/Select/SingleSelect/Select.cjs.js +2 -0
- package/dist/cjs/Form/Select/SingleSelect/Select.cjs.js.map +1 -0
- package/dist/cjs/Form/Select/SingleSelect/Select.module.cjs.js +2 -0
- package/dist/cjs/Form/Select/useAddNewBtn.cjs.js +2 -0
- package/dist/cjs/Form/Select/useAddNewBtn.cjs.js.map +1 -0
- package/dist/cjs/Form/Select/useAddNewBtn.module.cjs.js +2 -0
- package/dist/cjs/Form/Select/useAddNewBtn.module.cjs.js.map +1 -0
- package/dist/cjs/Form/Select/useSearch.cjs.js +2 -0
- package/dist/cjs/Form/Select/useSearch.cjs.js.map +1 -0
- package/dist/cjs/Form/Textarea/Textarea.module.cjs.js +1 -1
- package/dist/cjs/Form/Wrapper/InputWrapper/InputWrapper.module.cjs.js +1 -1
- package/dist/cjs/Form/Wrapper/SelectWrapper/SelectWrapper.cjs.js +1 -1
- package/dist/cjs/Form/Wrapper/SelectWrapper/SelectWrapper.cjs.js.map +1 -1
- package/dist/cjs/Form/Wrapper/SelectWrapper/SelectWrapper.module.cjs.js +1 -1
- package/dist/cjs/Form/Wrapper/Wrapper/Wrapper.module.cjs.js +1 -1
- package/dist/cjs/Icon/Icon.cjs.js +1 -1
- package/dist/cjs/Icon/Icon.cjs.js.map +1 -1
- package/dist/cjs/Icon/Icon.module.cjs.js +1 -1
- package/dist/cjs/Link/Link.module.cjs.js +1 -1
- package/dist/cjs/Notifications/BaseModal/BaseModal.module.cjs.js +1 -1
- package/dist/cjs/Notifications/SlideInModal/SlideInModal.module.cjs.js +1 -1
- package/dist/cjs/Notifications/Snackbar/SnackbarItem/SnackbarItem.module.cjs.js +1 -1
- package/dist/cjs/Pagination/Pagination.cjs.js +1 -1
- package/dist/cjs/Pagination/Pagination.cjs.js.map +1 -1
- package/dist/cjs/Popover/Popover.cjs.js +1 -1
- package/dist/cjs/Popover/Popover.cjs.js.map +1 -1
- package/dist/cjs/Popover/Popover.module.cjs.js +1 -1
- package/dist/cjs/Stepper/Step.cjs.js +1 -1
- package/dist/cjs/Stepper/Step.cjs.js.map +1 -1
- package/dist/cjs/Stepper/Step.module.cjs.js +1 -1
- package/dist/cjs/Stepper/Stepper.cjs.js +1 -1
- package/dist/cjs/Stepper/Stepper.cjs.js.map +1 -1
- package/dist/cjs/Tabs/TabButton.module.cjs.js +1 -1
- package/dist/cjs/Tag/RemoveButton.cjs.js +2 -0
- package/dist/cjs/Tag/RemoveButton.cjs.js.map +1 -0
- package/dist/cjs/Tag/RemoveButton.module.cjs.js +2 -0
- package/dist/cjs/Tag/RemoveButton.module.cjs.js.map +1 -0
- package/dist/cjs/Tag/Tag.cjs.js +1 -1
- package/dist/cjs/Tag/Tag.cjs.js.map +1 -1
- package/dist/cjs/Tag/Tag.module.cjs.js +1 -1
- package/dist/cjs/TextEllipsis/TextEllipsis.module.cjs.js +1 -1
- package/dist/cjs/Tiles/Tile.module.cjs.js +1 -1
- package/dist/cjs/Tooltip/Tooltip.module.cjs.js +1 -1
- package/dist/cjs/Wizard/BaseWizardSteps/BaseWizardSteps.module.cjs.js +1 -1
- package/dist/cjs/src/components/ContextMenu/ContextMenu.d.ts +1 -1
- package/dist/cjs/src/components/ContextMenu/ContextMenuService.d.ts +4 -1
- package/dist/cjs/src/components/Form/Select/MultiSelect/MultiOption.d.ts +6 -0
- package/dist/cjs/src/components/Form/Select/MultiSelect/MultiSelect.d.ts +3 -0
- package/dist/cjs/src/components/Form/Select/MultiSelect/SelectButton.d.ts +4 -0
- package/dist/cjs/src/components/Form/Select/MultiSelect/SelectedOptions.d.ts +11 -0
- package/dist/cjs/src/components/Form/Select/Select.interfaces.d.ts +47 -1
- package/dist/cjs/src/components/Form/Select/SelectService.d.ts +8 -3
- package/dist/cjs/src/components/Form/Select/{Option.d.ts → SingleSelect/Option.d.ts} +1 -0
- package/dist/cjs/src/components/Form/Select/SingleSelect/Select.d.ts +3 -0
- package/dist/cjs/src/components/Form/Select/SingleSelect/Select.test.d.ts +63 -0
- package/dist/cjs/src/components/Form/Select/useAddNewBtn.d.ts +12 -0
- package/dist/cjs/src/components/Form/Select/useSearch.d.ts +29 -0
- package/dist/cjs/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.d.ts +16 -0
- package/dist/cjs/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.d.ts +2 -2
- package/dist/cjs/src/components/Icon/Icon.d.ts +1 -0
- package/dist/cjs/src/components/Stepper/Stepper.d.ts +0 -1
- package/dist/cjs/src/components/Tag/RemoveButton.d.ts +7 -0
- package/dist/cjs/src/components/Tag/Tag.d.ts +3 -0
- package/dist/cjs/src/hooks/usePosition.cjs.js.map +1 -1
- package/dist/cjs/src/hooks/usePosition.d.ts +1 -1
- package/dist/cjs/src/index.cjs.js +1 -1
- package/dist/cjs/src/index.d.ts +7 -4
- package/dist/esm/.scope.d.ts +2 -0
- package/dist/esm/Button/Button.module.esm.js +1 -1
- package/dist/esm/Button/IconButton.module.esm.js +1 -1
- package/dist/esm/ContextMenu/ContextMenu.esm.js +1 -1
- package/dist/esm/ContextMenu/ContextMenu.esm.js.map +1 -1
- package/dist/esm/ContextMenu/ContextMenuItem.module.esm.js +1 -1
- package/dist/esm/ContextMenu/ContextMenuService.esm.js +1 -1
- package/dist/esm/ContextMenu/ContextMenuService.esm.js.map +1 -1
- package/dist/esm/DataGrid/DataGridActions/DataGridColumnsToggle.module.esm.js +1 -1
- package/dist/esm/Form/Fieldset/Fieldset.esm.js +1 -1
- package/dist/esm/Form/Fieldset/Fieldset.esm.js.map +1 -1
- package/dist/esm/Form/Input/Input.module.esm.js +1 -1
- package/dist/esm/Form/Select/MultiSelect/MultiOption.esm.js +2 -0
- package/dist/esm/Form/Select/MultiSelect/MultiOption.esm.js.map +1 -0
- package/dist/esm/Form/Select/MultiSelect/MultiSelect.esm.js +2 -0
- package/dist/esm/Form/Select/MultiSelect/MultiSelect.esm.js.map +1 -0
- package/dist/esm/Form/Select/MultiSelect/MultiSelect.module.esm.js +2 -0
- package/dist/esm/Form/Select/MultiSelect/MultiSelect.module.esm.js.map +1 -0
- package/dist/esm/Form/Select/MultiSelect/SelectButton.esm.js +2 -0
- package/dist/esm/Form/Select/MultiSelect/SelectButton.esm.js.map +1 -0
- package/dist/esm/Form/Select/MultiSelect/SelectButton.module.esm.js +2 -0
- package/dist/esm/Form/Select/MultiSelect/SelectButton.module.esm.js.map +1 -0
- package/dist/esm/Form/Select/MultiSelect/SelectedOptions.esm.js +2 -0
- package/dist/esm/Form/Select/MultiSelect/SelectedOptions.esm.js.map +1 -0
- package/dist/esm/Form/Select/MultiSelect/SelectedOptions.module.esm.js +2 -0
- package/dist/esm/Form/Select/MultiSelect/SelectedOptions.module.esm.js.map +1 -0
- package/dist/esm/Form/Select/SelectService.esm.js +1 -1
- package/dist/esm/Form/Select/SelectService.esm.js.map +1 -1
- package/dist/esm/Form/Select/SingleSelect/Option.esm.js +2 -0
- package/dist/esm/Form/Select/SingleSelect/Option.esm.js.map +1 -0
- package/dist/esm/Form/Select/SingleSelect/Select.esm.js +2 -0
- package/dist/esm/Form/Select/SingleSelect/Select.esm.js.map +1 -0
- package/dist/esm/Form/Select/SingleSelect/Select.module.esm.js +2 -0
- package/dist/esm/Form/Select/useAddNewBtn.esm.js +2 -0
- package/dist/esm/Form/Select/useAddNewBtn.esm.js.map +1 -0
- package/dist/esm/Form/Select/useAddNewBtn.module.esm.js +2 -0
- package/dist/esm/Form/Select/useAddNewBtn.module.esm.js.map +1 -0
- package/dist/esm/Form/Select/useSearch.esm.js +2 -0
- package/dist/esm/Form/Select/useSearch.esm.js.map +1 -0
- package/dist/esm/Form/Textarea/Textarea.module.esm.js +1 -1
- package/dist/esm/Form/Wrapper/InputWrapper/InputWrapper.module.esm.js +1 -1
- package/dist/esm/Form/Wrapper/SelectWrapper/SelectWrapper.esm.js +1 -1
- package/dist/esm/Form/Wrapper/SelectWrapper/SelectWrapper.esm.js.map +1 -1
- package/dist/esm/Form/Wrapper/SelectWrapper/SelectWrapper.module.esm.js +1 -1
- package/dist/esm/Form/Wrapper/Wrapper/Wrapper.module.esm.js +1 -1
- package/dist/esm/Icon/Icon.esm.js +1 -1
- package/dist/esm/Icon/Icon.esm.js.map +1 -1
- package/dist/esm/Icon/Icon.module.esm.js +1 -1
- package/dist/esm/Link/Link.module.esm.js +1 -1
- package/dist/esm/Notifications/BaseModal/BaseModal.module.esm.js +1 -1
- package/dist/esm/Notifications/SlideInModal/SlideInModal.module.esm.js +1 -1
- package/dist/esm/Notifications/Snackbar/SnackbarItem/SnackbarItem.module.esm.js +1 -1
- package/dist/esm/Pagination/Pagination.esm.js +1 -1
- package/dist/esm/Pagination/Pagination.esm.js.map +1 -1
- package/dist/esm/Popover/Popover.esm.js +1 -1
- package/dist/esm/Popover/Popover.esm.js.map +1 -1
- package/dist/esm/Popover/Popover.module.esm.js +1 -1
- package/dist/esm/Stepper/Step.esm.js +1 -1
- package/dist/esm/Stepper/Step.esm.js.map +1 -1
- package/dist/esm/Stepper/Step.module.esm.js +1 -1
- package/dist/esm/Stepper/Stepper.esm.js +1 -1
- package/dist/esm/Stepper/Stepper.esm.js.map +1 -1
- package/dist/esm/Tabs/TabButton.module.esm.js +1 -1
- package/dist/esm/Tag/RemoveButton.esm.js +2 -0
- package/dist/esm/Tag/RemoveButton.esm.js.map +1 -0
- package/dist/esm/Tag/RemoveButton.module.esm.js +2 -0
- package/dist/esm/Tag/RemoveButton.module.esm.js.map +1 -0
- package/dist/esm/Tag/Tag.esm.js +1 -1
- package/dist/esm/Tag/Tag.esm.js.map +1 -1
- package/dist/esm/Tag/Tag.module.esm.js +1 -1
- package/dist/esm/TextEllipsis/TextEllipsis.module.esm.js +1 -1
- package/dist/esm/Tiles/Tile.module.esm.js +1 -1
- package/dist/esm/Tooltip/Tooltip.module.esm.js +1 -1
- package/dist/esm/Wizard/BaseWizardSteps/BaseWizardSteps.module.esm.js +1 -1
- package/dist/esm/src/components/ContextMenu/ContextMenu.d.ts +1 -1
- package/dist/esm/src/components/ContextMenu/ContextMenuService.d.ts +4 -1
- package/dist/esm/src/components/Form/Select/MultiSelect/MultiOption.d.ts +6 -0
- package/dist/esm/src/components/Form/Select/MultiSelect/MultiSelect.d.ts +3 -0
- package/dist/esm/src/components/Form/Select/MultiSelect/MultiSelect.test.d.ts +1 -0
- package/dist/esm/src/components/Form/Select/MultiSelect/SelectButton.d.ts +4 -0
- package/dist/esm/src/components/Form/Select/MultiSelect/SelectedOptions.d.ts +11 -0
- package/dist/esm/src/components/Form/Select/Select.interfaces.d.ts +47 -1
- package/dist/esm/src/components/Form/Select/SelectService.d.ts +8 -3
- package/dist/esm/src/components/Form/Select/{Option.d.ts → SingleSelect/Option.d.ts} +1 -0
- package/dist/esm/src/components/Form/Select/SingleSelect/Option.test.d.ts +1 -0
- package/dist/esm/src/components/Form/Select/SingleSelect/Select.d.ts +3 -0
- package/dist/esm/src/components/Form/Select/SingleSelect/Select.test.d.ts +63 -0
- package/dist/esm/src/components/Form/Select/SingleSelect/SelectKeyboardNavigation.test.d.ts +1 -0
- package/dist/esm/src/components/Form/Select/useAddNewBtn.d.ts +12 -0
- package/dist/esm/src/components/Form/Select/useSearch.d.ts +29 -0
- package/dist/esm/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.d.ts +16 -0
- package/dist/esm/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.test.d.ts +1 -0
- package/dist/esm/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.d.ts +2 -2
- package/dist/esm/src/components/Icon/Icon.d.ts +1 -0
- package/dist/esm/src/components/Stepper/Stepper.d.ts +0 -1
- package/dist/esm/src/components/Tag/RemoveButton.d.ts +7 -0
- package/dist/esm/src/components/Tag/Tag.d.ts +3 -0
- package/dist/esm/src/hooks/usePosition.d.ts +1 -1
- package/dist/esm/src/hooks/usePosition.esm.js.map +1 -1
- package/dist/esm/src/index.d.ts +7 -4
- package/dist/esm/src/index.esm.js +1 -1
- package/package.json +49 -46
- package/src/components/ContextMenu/ContextMenu.tsx +13 -23
- package/src/components/ContextMenu/ContextMenuService.ts +47 -1
- package/src/components/Form/Fieldset/Fieldset.tsx +3 -1
- package/src/{hooks/useWrapper.test.ts → components/Form/Select/MultiSelect/MultiOption.tsx} +13 -10
- package/src/components/Form/Select/{Select.module.scss → MultiSelect/MultiSelect.module.scss} +19 -20
- package/src/components/Form/Select/MultiSelect/MultiSelect.tsx +363 -0
- package/src/components/Form/Select/MultiSelect/SelectButton.module.scss +27 -0
- package/src/components/Form/Select/MultiSelect/SelectButton.tsx +37 -0
- package/src/components/Form/Select/MultiSelect/SelectedOptions.module.scss +31 -0
- package/src/components/Form/Select/MultiSelect/SelectedOptions.tsx +67 -0
- package/src/components/Form/Select/Select.interfaces.ts +51 -1
- package/src/components/Form/Select/SelectService.ts +46 -13
- package/src/components/Form/Select/{Option.tsx → SingleSelect/Option.tsx} +3 -1
- package/src/components/Form/Select/SingleSelect/Select.module.scss +232 -0
- package/src/components/Form/Select/{Select.tsx → SingleSelect/Select.tsx} +56 -87
- package/src/components/Form/Select/useAddNewBtn.module.scss +51 -0
- package/src/components/Form/Select/useAddNewBtn.tsx +54 -0
- package/src/components/Form/Select/useSearch.tsx +124 -0
- package/src/components/Form/Wrapper/InputWrapper/InputWrapper.module.scss +0 -10
- package/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.module.scss +27 -0
- package/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.tsx +84 -0
- package/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.module.scss +0 -4
- package/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.tsx +3 -2
- package/src/components/Form/Wrapper/Wrapper/Wrapper.module.scss +0 -6
- package/src/components/Icon/Icon.module.scss +5 -0
- package/src/components/Icon/Icon.tsx +1 -0
- package/src/components/Link/Link.module.scss +16 -0
- package/src/components/Pagination/Pagination.tsx +2 -2
- package/src/components/Popover/Popover.tsx +19 -2
- package/src/components/Stepper/Step.tsx +2 -1
- package/src/components/Stepper/Stepper.tsx +0 -2
- package/src/{hooks/useScroll.test.tsx → components/Tag/RemoveButton.module.scss} +22 -17
- package/src/components/Tag/RemoveButton.tsx +52 -0
- package/src/components/Tag/Tag.module.scss +23 -2
- package/src/components/Tag/Tag.tsx +21 -11
- package/src/components/Tooltip/Tooltip.module.scss +1 -0
- package/src/font/icomoon.eot +0 -0
- package/src/font/icomoon.svg +1 -0
- package/src/font/icomoon.ttf +0 -0
- package/src/font/icomoon.woff +0 -0
- package/src/font/selection.json +1 -1
- package/src/hooks/usePosition.ts +1 -1
- package/src/index.ts +11 -4
- package/src/interfaces.ts +2 -2
- package/src/mixins.module.scss +2 -4
- package/dist/cjs/Form/Select/Option.cjs.js +0 -2
- package/dist/cjs/Form/Select/Option.cjs.js.map +0 -1
- package/dist/cjs/Form/Select/Select.cjs.js +0 -2
- package/dist/cjs/Form/Select/Select.cjs.js.map +0 -1
- package/dist/cjs/Form/Select/Select.module.cjs.js +0 -2
- package/dist/cjs/src/components/Form/Select/Select.d.ts +0 -23
- package/dist/esm/Form/Select/Option.esm.js +0 -2
- package/dist/esm/Form/Select/Option.esm.js.map +0 -1
- package/dist/esm/Form/Select/Select.esm.js +0 -2
- package/dist/esm/Form/Select/Select.esm.js.map +0 -1
- package/dist/esm/Form/Select/Select.module.esm.js +0 -2
- package/dist/esm/src/components/Form/Select/Select.d.ts +0 -23
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -64
- package/src/components/Button/BaseButton.test.tsx +0 -133
- package/src/components/Button/Button.test.tsx +0 -150
- package/src/components/Button/IconButton.test.tsx +0 -106
- package/src/components/ContextMenu/ContextMenu.test.tsx +0 -358
- package/src/components/DataGrid/DataGrid.test.tsx +0 -437
- package/src/components/DataGrid/DataGridActions/DataGridActions.test.tsx +0 -204
- package/src/components/DataGrid/DataGridActions/DataGridColumnsToggle.test.tsx +0 -99
- package/src/components/DataGrid/DataGridBody/DataGridBody.test.tsx +0 -140
- package/src/components/DataGrid/DataGridBody/DataGridCell.test.tsx +0 -90
- package/src/components/DataGrid/DataGridBody/DataGridRow.test.tsx +0 -117
- package/src/components/DataGrid/DataGridHeader/DataGridHeader.test.tsx +0 -276
- package/src/components/DataGrid/DataGridHeader/DataGridHeaderCell.test.tsx +0 -144
- package/src/components/Form/Checkbox/Checkbox.test.tsx +0 -308
- package/src/components/Form/Fieldset/Fieldset.test.tsx +0 -127
- package/src/components/Form/FileUpload/FileItem/FileItem.test.tsx +0 -103
- package/src/components/Form/FileUpload/FileUpload.test.tsx +0 -374
- package/src/components/Form/Form.test.tsx +0 -63
- package/src/components/Form/FormControl/FormControl.test.tsx +0 -98
- package/src/components/Form/FormGroup/FormGroup.test.tsx +0 -127
- package/src/components/Form/FormHelperText/FormHelperText.test.tsx +0 -84
- package/src/components/Form/FormSelectorWrapper/FormSelectorWrapper.test.tsx +0 -94
- package/src/components/Form/Input/Input.test.tsx +0 -267
- package/src/components/Form/Label/Label.test.tsx +0 -68
- package/src/components/Form/Radio/Radio.test.tsx +0 -130
- package/src/components/Form/Select/Option.test.tsx +0 -57
- package/src/components/Form/Select/Select.test.tsx +0 -564
- package/src/components/Form/Textarea/Textarea.test.tsx +0 -124
- package/src/components/Form/Toggle/Toggle.test.tsx +0 -200
- package/src/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.test.tsx +0 -141
- package/src/components/Form/Wrapper/InputWrapper/InputWrapper.test.tsx +0 -211
- package/src/components/Form/Wrapper/RadioWrapper/RadioWrapper.test.tsx +0 -117
- package/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.test.tsx +0 -186
- package/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.test.tsx +0 -173
- package/src/components/Form/Wrapper/Wrapper/Wrapper.test.tsx +0 -59
- package/src/components/Icon/Icon.test.tsx +0 -83
- package/src/components/Link/Link.test.tsx +0 -203
- package/src/components/Notifications/Banner/Banner.test.tsx +0 -84
- package/src/components/Notifications/BaseModal/BaseModal.test.tsx +0 -194
- package/src/components/Notifications/BaseModal/BaseModalActions/BaseModalActions.test.tsx +0 -74
- package/src/components/Notifications/BaseModal/BaseModalContent/BaseModalContent.test.tsx +0 -71
- package/src/components/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.test.tsx +0 -74
- package/src/components/Notifications/Dialog/Dialog.test.tsx +0 -118
- package/src/components/Notifications/Dialog/DialogActions/DialogActions.test.tsx +0 -61
- package/src/components/Notifications/Dialog/DialogTitle/DialogTitle.test.tsx +0 -87
- package/src/components/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.test.tsx +0 -111
- package/src/components/Notifications/DiscardChangesModal/DiscardChangesModal.test.tsx +0 -175
- package/src/components/Notifications/Modal/Modal.test.tsx +0 -18
- package/src/components/Notifications/NotificationProvider/NotificationContext.test.tsx +0 -449
- package/src/components/Notifications/SlideInModal/SlideInModal.test.tsx +0 -90
- package/src/components/Notifications/Snackbar/SnackbarContainer/SnackbarContainer.test.tsx +0 -53
- package/src/components/Notifications/Snackbar/SnackbarItem/SnackbarItem.test.tsx +0 -77
- package/src/components/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.test.tsx +0 -219
- package/src/components/Notifications/Snackbar/useSnackbar.test.tsx +0 -136
- package/src/components/Pagination/Pagination.test.tsx +0 -183
- package/src/components/Popover/Popover.test.tsx +0 -103
- package/src/components/ProgressBar/ProgressBar.test.tsx +0 -91
- package/src/components/Skeleton/Skeleton.test.tsx +0 -112
- package/src/components/StatusIndicator/StatusIndicator.test.tsx +0 -143
- package/src/components/Stepper/Stepper.test.tsx +0 -83
- package/src/components/Tabs/Tab.test.tsx +0 -49
- package/src/components/Tabs/TabButton.test.tsx +0 -65
- package/src/components/Tabs/Tabs.test.tsx +0 -291
- package/src/components/Tag/Tag.test.tsx +0 -89
- package/src/components/TextEllipsis/TextEllipsis.test.tsx +0 -96
- package/src/components/Tiles/Tile.test.tsx +0 -183
- package/src/components/Tiles/Tiles.test.tsx +0 -162
- package/src/components/Tooltip/Tooltip.test.tsx +0 -390
- package/src/components/Typography/Typography.test.tsx +0 -177
- package/src/components/Wizard/BaseWizardSteps/BaseWizardSteps.test.tsx +0 -90
- package/src/components/Wizard/Wizard.test.tsx +0 -218
- package/src/components/Wizard/WizardActions/WizardActions.test.tsx +0 -187
- package/src/components/Wizard/WizardSteps/WizardSteps.test.tsx +0 -125
- package/src/components/_BaseStyling_/BaseStyling.test.tsx +0 -55
- package/src/hooks/useAnimation.test.tsx +0 -65
- package/src/hooks/useBodyClick.test.tsx +0 -55
- package/src/hooks/useDebouncedCallback.test.ts +0 -150
- package/src/hooks/useDetermineStatusIcon.test.ts +0 -28
- package/src/hooks/useFormSelector.test.ts +0 -56
- package/src/hooks/usePosition.test.tsx +0 -510
- package/src/hooks/useRepeater.test.tsx +0 -156
- package/src/hooks/useSpacing.test.ts +0 -86
- package/src/hooks/useUploadFile.test.ts +0 -211
- package/src/util/helper.test.tsx +0 -403
- /package/dist/cjs/Form/Select/{Select.module.cjs.js.map → SingleSelect/Select.module.cjs.js.map} +0 -0
- /package/dist/cjs/src/components/Form/Select/{Option.test.d.ts → MultiSelect/MultiSelect.test.d.ts} +0 -0
- /package/dist/{esm/src/components/Form/Select → cjs/src/components/Form/Select/SingleSelect}/Option.test.d.ts +0 -0
- /package/dist/cjs/src/components/Form/Select/{Select.test.d.ts → SingleSelect/SelectKeyboardNavigation.test.d.ts} +0 -0
- /package/dist/{esm/src/components/Form/Select/Select.test.d.ts → cjs/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.test.d.ts} +0 -0
- /package/dist/esm/Form/Select/{Select.module.esm.js.map → SingleSelect/Select.module.esm.js.map} +0 -0
|
@@ -38,7 +38,7 @@ export interface Position {
|
|
|
38
38
|
bottom: PositionType;
|
|
39
39
|
left: PositionType;
|
|
40
40
|
}
|
|
41
|
-
type PositionType = number | "initial";
|
|
41
|
+
export type PositionType = number | "initial";
|
|
42
42
|
export declare const usePosition: (providedConfigObject?: ConfigObject) => {
|
|
43
43
|
top: PositionType;
|
|
44
44
|
bottom: PositionType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePosition.esm.js","sources":["../../../../../../src/hooks/usePosition.ts"],"sourcesContent":["/*\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useState } from \"react\";\nimport { useDebouncedCallback } from \"./useDebouncedCallback\";\n\nexport interface ConfigObject {\n relativeElement: RefElement;\n elementToBePositioned: RefElement;\n transformOrigin?: Placement;\n placement?: Placement;\n offset?: Offset;\n debounceAmount?: number;\n}\n\nexport enum horizontal {\n LEFT = \"left\",\n CENTER = \"center\",\n CENTER_H = \"centerh\",\n RIGHT = \"right\"\n}\n\nexport enum vertical {\n TOP = \"top\",\n CENTER = \"center\",\n CENTER_V = \"centerv\",\n BOTTOM = \"bottom\"\n}\n\nexport type HorizontalPlacement = `${horizontal}`;\nexport type VerticalPlacement = `${vertical}`;\n\ntype Axis = \"vertical\" | \"horizontal\";\ntype RefElement = React.RefObject<HTMLOrSVGElement> | undefined;\n\ninterface DomRectObject {\n top: number;\n right: number;\n bottom: number;\n left: number;\n center: number;\n centerh: number;\n centerv: number;\n width: number;\n height: number;\n x: number;\n y: number;\n}\n\nexport interface Placement {\n horizontal: HorizontalPlacement;\n vertical: VerticalPlacement;\n}\n\nexport interface Offset {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface Position {\n top: PositionType;\n right: PositionType;\n bottom: PositionType;\n left: PositionType;\n}\n\ninterface Dimensions {\n height: number;\n width: number;\n}\n\ntype PositionType = number | \"initial\";\n\nconst defaultConfigObject: ConfigObject = {\n relativeElement: undefined,\n elementToBePositioned: undefined,\n transformOrigin: {\n horizontal: \"left\",\n vertical: \"top\"\n },\n placement: {\n horizontal: \"left\",\n vertical: \"top\"\n },\n offset: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n debounceAmount: 20\n};\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-non-null-asserted-optional-chain*/\nexport const usePosition = (providedConfigObject: ConfigObject = defaultConfigObject) => {\n const configObject = { ...defaultConfigObject, ...providedConfigObject };\n const [initialCalculationDone, setInitialCalculationDone] = useState(false);\n\n if (configObject.transformOrigin === undefined) {\n configObject.transformOrigin = defaultConfigObject.transformOrigin;\n }\n\n if (configObject.placement === undefined) {\n configObject.placement = defaultConfigObject.placement;\n }\n\n if (configObject.offset === undefined) {\n configObject.offset = defaultConfigObject.offset;\n }\n\n const [position, setPosition] = useState<Position>({\n left: 0,\n top: 0,\n right: \"initial\",\n bottom: \"initial\"\n });\n\n const _fixPossibleViewportOverflow = (\n value: number,\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n elDimensions: Dimensions\n ) => {\n let returnValue = value;\n\n if (\n (transformOrigin[requestedReturnValue] === \"left\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"top\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"center\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"bottom\" && returnValue < 0)\n ) {\n returnValue = 0;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === \"left\" &&\n returnValue > window.innerWidth - elDimensions.width) ||\n (transformOrigin[requestedReturnValue] === \"center\" &&\n requestedReturnValue === \"horizontal\" &&\n returnValue > window.innerWidth - elDimensions.width)\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === \"top\" &&\n returnValue > window.innerHeight - elDimensions.height) ||\n (transformOrigin[requestedReturnValue] === \"center\" &&\n requestedReturnValue === \"vertical\" &&\n returnValue > window.innerHeight - elDimensions.height)\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n if (\n transformOrigin[requestedReturnValue] === \"right\" &&\n returnValue > window.innerWidth - elDimensions.width\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n transformOrigin[requestedReturnValue] === \"bottom\" &&\n returnValue > window.innerHeight - elDimensions.height\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n return returnValue;\n };\n\n const _applyOffsetToPlacementValue = (\n value: number,\n requestedReturnValue: Axis,\n transformOrigin: Placement\n ) => {\n let returnValue = value;\n if (\n (requestedReturnValue === \"horizontal\" && configObject.offset?.left !== 0) ||\n (requestedReturnValue === \"horizontal\" && configObject.offset?.right !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === \"left\" ||\n transformOrigin[requestedReturnValue] === \"center\"\n ) {\n returnValue += configObject.offset?.left!;\n returnValue -= configObject.offset?.right!;\n }\n\n if (transformOrigin[requestedReturnValue] === \"right\") {\n returnValue -= configObject.offset?.left!;\n returnValue += configObject.offset?.right!;\n }\n }\n\n if (\n (requestedReturnValue === \"vertical\" && configObject.offset?.top !== 0) ||\n (requestedReturnValue === \"vertical\" && configObject.offset?.bottom !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === \"top\" ||\n transformOrigin[requestedReturnValue] === \"center\"\n ) {\n returnValue += configObject.offset?.top!;\n returnValue -= configObject.offset?.bottom!;\n }\n\n if (transformOrigin[requestedReturnValue] === \"bottom\") {\n returnValue -= configObject.offset?.top!;\n returnValue += configObject.offset?.bottom!;\n }\n }\n\n return returnValue;\n };\n\n const _calculateInitialPlacementValue = (\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n placementOriginDefinition: HorizontalPlacement | VerticalPlacement,\n elDimensions: Dimensions\n ) => {\n let value = 0;\n\n if (\n transformOrigin[requestedReturnValue] === \"left\" ||\n transformOrigin[requestedReturnValue] === \"top\"\n ) {\n value = relEl[placementOriginDefinition];\n } else if (transformOrigin[requestedReturnValue] === \"center\") {\n value =\n relEl[placementOriginDefinition] -\n elDimensions[requestedReturnValue === \"horizontal\" ? \"width\" : \"height\"] / 2;\n } else if (\n transformOrigin[requestedReturnValue] === \"right\" ||\n transformOrigin[requestedReturnValue] === \"bottom\"\n ) {\n value =\n window[requestedReturnValue === \"horizontal\" ? \"innerWidth\" : \"innerHeight\"] -\n relEl[placementOriginDefinition];\n }\n\n return value;\n };\n\n /**\n *\n * @param requestedReturnValue whether the requested return value is for the horizontal or vertical axis\n * @returns either the horizontally centered placement definition (centerh) or the vertically centered one (centerv)\n */\n const _determineCenteredPlacementOrigin = (requestedReturnValue: Axis) => {\n if (requestedReturnValue === \"horizontal\") {\n return \"centerh\";\n } else if (requestedReturnValue === \"vertical\") {\n return \"centerv\";\n }\n throw new Error(\n `the requested return value isn't \"vertical\" or \"horizontal\" ${requestedReturnValue} was given.`\n );\n };\n\n const _calculatePlacementValue = (\n transformOrigin: Placement,\n placement: HorizontalPlacement | VerticalPlacement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n elDimensions: Dimensions\n ): number => {\n const placementOriginDefinition =\n placement === \"center\" ? _determineCenteredPlacementOrigin(requestedReturnValue) : placement;\n\n const value = _calculateInitialPlacementValue(\n transformOrigin,\n requestedReturnValue,\n relEl,\n placementOriginDefinition,\n elDimensions\n );\n\n const valueWithOffset = _applyOffsetToPlacementValue(\n value,\n requestedReturnValue,\n transformOrigin\n );\n\n const valueCorrectionForViewportOverflow = _fixPossibleViewportOverflow(\n valueWithOffset,\n transformOrigin,\n requestedReturnValue,\n elDimensions\n );\n\n return valueCorrectionForViewportOverflow;\n };\n\n const _calculatePlacement = (relEl: DomRectObject, elDimensions: Dimensions, axis: Axis) => {\n const placementValue = _calculatePlacementValue(\n configObject.transformOrigin!,\n configObject.placement![axis]!,\n axis,\n relEl,\n elDimensions\n );\n\n let direction = \"left\";\n let oppositeDirection = \"right\";\n\n if (axis === \"horizontal\" && configObject.transformOrigin?.horizontal === \"right\") {\n direction = \"right\";\n oppositeDirection = \"left\";\n } else if (axis === \"horizontal\") {\n direction = \"left\";\n oppositeDirection = \"right\";\n }\n\n if (axis === \"vertical\" && configObject.transformOrigin?.vertical === \"bottom\") {\n direction = \"bottom\";\n oppositeDirection = \"top\";\n } else if (axis === \"vertical\") {\n direction = \"top\";\n oppositeDirection = \"bottom\";\n }\n\n setPosition(prevState => ({\n ...prevState,\n [direction]: placementValue,\n [oppositeDirection]: \"initial\"\n }));\n };\n\n const calculatePosition = useDebouncedCallback(() => {\n if (!configObject.relativeElement?.current || !configObject.elementToBePositioned?.current)\n return;\n const relativeElRect = (configObject.relativeElement!\n .current as HTMLElement)!.getBoundingClientRect();\n const elementToBePositionedDimensions: Dimensions = {\n height: (configObject.elementToBePositioned!.current as HTMLElement).offsetHeight,\n width: (configObject.elementToBePositioned!.current as HTMLElement).offsetWidth\n };\n\n /** We want to add a center (horizontal and vertical) property to the DOMRect object. Since it's a special object we can't modify so we clone it and add it. */\n const clonedRelEl = {\n top: relativeElRect.top,\n right: relativeElRect.right,\n bottom: relativeElRect.bottom,\n center: 0,\n centerv: relativeElRect.top + relativeElRect.height / 2,\n centerh: relativeElRect.left + relativeElRect.width / 2,\n left: relativeElRect.left,\n width: relativeElRect.width,\n height: relativeElRect.height,\n x: relativeElRect.x,\n y: relativeElRect.y\n };\n\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, \"horizontal\");\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, \"vertical\");\n\n if (!initialCalculationDone) {\n setInitialCalculationDone(true);\n }\n }, configObject.debounceAmount ?? 20);\n\n return {\n top: position.top,\n bottom: position.bottom,\n left: position.left,\n right: position.right,\n calculatePosition,\n initialCalculationDone\n };\n};\n"],"names":["horizontal","vertical","defaultConfigObject","relativeElement","undefined","elementToBePositioned","transformOrigin","placement","offset","top","right","bottom","left","debounceAmount","usePosition","providedConfigObject","configObject","initialCalculationDone","setInitialCalculationDone","useState","position","setPosition","_fixPossibleViewportOverflow","value","requestedReturnValue","elDimensions","returnValue","window","innerWidth","width","innerHeight","height","_applyOffsetToPlacementValue","_a","_b","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","_calculateInitialPlacementValue","relEl","placementOriginDefinition","_determineCenteredPlacementOrigin","Error","_calculatePlacementValue","valueWithOffset","valueCorrectionForViewportOverflow","_calculatePlacement","axis","placementValue","direction","oppositeDirection","prevState","calculatePosition","useDebouncedCallback","current","relativeElRect","getBoundingClientRect","elementToBePositionedDimensions","offsetHeight","offsetWidth","clonedRelEl","center","centerv","centerh","x","y"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePosition.esm.js","sources":["../../../../../../src/hooks/usePosition.ts"],"sourcesContent":["/*\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useState } from \"react\";\nimport { useDebouncedCallback } from \"./useDebouncedCallback\";\n\nexport interface ConfigObject {\n relativeElement: RefElement;\n elementToBePositioned: RefElement;\n transformOrigin?: Placement;\n placement?: Placement;\n offset?: Offset;\n debounceAmount?: number;\n}\n\nexport enum horizontal {\n LEFT = \"left\",\n CENTER = \"center\",\n CENTER_H = \"centerh\",\n RIGHT = \"right\"\n}\n\nexport enum vertical {\n TOP = \"top\",\n CENTER = \"center\",\n CENTER_V = \"centerv\",\n BOTTOM = \"bottom\"\n}\n\nexport type HorizontalPlacement = `${horizontal}`;\nexport type VerticalPlacement = `${vertical}`;\n\ntype Axis = \"vertical\" | \"horizontal\";\ntype RefElement = React.RefObject<HTMLOrSVGElement> | undefined;\n\ninterface DomRectObject {\n top: number;\n right: number;\n bottom: number;\n left: number;\n center: number;\n centerh: number;\n centerv: number;\n width: number;\n height: number;\n x: number;\n y: number;\n}\n\nexport interface Placement {\n horizontal: HorizontalPlacement;\n vertical: VerticalPlacement;\n}\n\nexport interface Offset {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface Position {\n top: PositionType;\n right: PositionType;\n bottom: PositionType;\n left: PositionType;\n}\n\ninterface Dimensions {\n height: number;\n width: number;\n}\n\nexport type PositionType = number | \"initial\";\n\nconst defaultConfigObject: ConfigObject = {\n relativeElement: undefined,\n elementToBePositioned: undefined,\n transformOrigin: {\n horizontal: \"left\",\n vertical: \"top\"\n },\n placement: {\n horizontal: \"left\",\n vertical: \"top\"\n },\n offset: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n debounceAmount: 20\n};\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-non-null-asserted-optional-chain*/\nexport const usePosition = (providedConfigObject: ConfigObject = defaultConfigObject) => {\n const configObject = { ...defaultConfigObject, ...providedConfigObject };\n const [initialCalculationDone, setInitialCalculationDone] = useState(false);\n\n if (configObject.transformOrigin === undefined) {\n configObject.transformOrigin = defaultConfigObject.transformOrigin;\n }\n\n if (configObject.placement === undefined) {\n configObject.placement = defaultConfigObject.placement;\n }\n\n if (configObject.offset === undefined) {\n configObject.offset = defaultConfigObject.offset;\n }\n\n const [position, setPosition] = useState<Position>({\n left: 0,\n top: 0,\n right: \"initial\",\n bottom: \"initial\"\n });\n\n const _fixPossibleViewportOverflow = (\n value: number,\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n elDimensions: Dimensions\n ) => {\n let returnValue = value;\n\n if (\n (transformOrigin[requestedReturnValue] === \"left\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"top\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"center\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"bottom\" && returnValue < 0)\n ) {\n returnValue = 0;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === \"left\" &&\n returnValue > window.innerWidth - elDimensions.width) ||\n (transformOrigin[requestedReturnValue] === \"center\" &&\n requestedReturnValue === \"horizontal\" &&\n returnValue > window.innerWidth - elDimensions.width)\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === \"top\" &&\n returnValue > window.innerHeight - elDimensions.height) ||\n (transformOrigin[requestedReturnValue] === \"center\" &&\n requestedReturnValue === \"vertical\" &&\n returnValue > window.innerHeight - elDimensions.height)\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n if (\n transformOrigin[requestedReturnValue] === \"right\" &&\n returnValue > window.innerWidth - elDimensions.width\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n transformOrigin[requestedReturnValue] === \"bottom\" &&\n returnValue > window.innerHeight - elDimensions.height\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n return returnValue;\n };\n\n const _applyOffsetToPlacementValue = (\n value: number,\n requestedReturnValue: Axis,\n transformOrigin: Placement\n ) => {\n let returnValue = value;\n if (\n (requestedReturnValue === \"horizontal\" && configObject.offset?.left !== 0) ||\n (requestedReturnValue === \"horizontal\" && configObject.offset?.right !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === \"left\" ||\n transformOrigin[requestedReturnValue] === \"center\"\n ) {\n returnValue += configObject.offset?.left!;\n returnValue -= configObject.offset?.right!;\n }\n\n if (transformOrigin[requestedReturnValue] === \"right\") {\n returnValue -= configObject.offset?.left!;\n returnValue += configObject.offset?.right!;\n }\n }\n\n if (\n (requestedReturnValue === \"vertical\" && configObject.offset?.top !== 0) ||\n (requestedReturnValue === \"vertical\" && configObject.offset?.bottom !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === \"top\" ||\n transformOrigin[requestedReturnValue] === \"center\"\n ) {\n returnValue += configObject.offset?.top!;\n returnValue -= configObject.offset?.bottom!;\n }\n\n if (transformOrigin[requestedReturnValue] === \"bottom\") {\n returnValue -= configObject.offset?.top!;\n returnValue += configObject.offset?.bottom!;\n }\n }\n\n return returnValue;\n };\n\n const _calculateInitialPlacementValue = (\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n placementOriginDefinition: HorizontalPlacement | VerticalPlacement,\n elDimensions: Dimensions\n ) => {\n let value = 0;\n\n if (\n transformOrigin[requestedReturnValue] === \"left\" ||\n transformOrigin[requestedReturnValue] === \"top\"\n ) {\n value = relEl[placementOriginDefinition];\n } else if (transformOrigin[requestedReturnValue] === \"center\") {\n value =\n relEl[placementOriginDefinition] -\n elDimensions[requestedReturnValue === \"horizontal\" ? \"width\" : \"height\"] / 2;\n } else if (\n transformOrigin[requestedReturnValue] === \"right\" ||\n transformOrigin[requestedReturnValue] === \"bottom\"\n ) {\n value =\n window[requestedReturnValue === \"horizontal\" ? \"innerWidth\" : \"innerHeight\"] -\n relEl[placementOriginDefinition];\n }\n\n return value;\n };\n\n /**\n *\n * @param requestedReturnValue whether the requested return value is for the horizontal or vertical axis\n * @returns either the horizontally centered placement definition (centerh) or the vertically centered one (centerv)\n */\n const _determineCenteredPlacementOrigin = (requestedReturnValue: Axis) => {\n if (requestedReturnValue === \"horizontal\") {\n return \"centerh\";\n } else if (requestedReturnValue === \"vertical\") {\n return \"centerv\";\n }\n throw new Error(\n `the requested return value isn't \"vertical\" or \"horizontal\" ${requestedReturnValue} was given.`\n );\n };\n\n const _calculatePlacementValue = (\n transformOrigin: Placement,\n placement: HorizontalPlacement | VerticalPlacement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n elDimensions: Dimensions\n ): number => {\n const placementOriginDefinition =\n placement === \"center\" ? _determineCenteredPlacementOrigin(requestedReturnValue) : placement;\n\n const value = _calculateInitialPlacementValue(\n transformOrigin,\n requestedReturnValue,\n relEl,\n placementOriginDefinition,\n elDimensions\n );\n\n const valueWithOffset = _applyOffsetToPlacementValue(\n value,\n requestedReturnValue,\n transformOrigin\n );\n\n const valueCorrectionForViewportOverflow = _fixPossibleViewportOverflow(\n valueWithOffset,\n transformOrigin,\n requestedReturnValue,\n elDimensions\n );\n\n return valueCorrectionForViewportOverflow;\n };\n\n const _calculatePlacement = (relEl: DomRectObject, elDimensions: Dimensions, axis: Axis) => {\n const placementValue = _calculatePlacementValue(\n configObject.transformOrigin!,\n configObject.placement![axis]!,\n axis,\n relEl,\n elDimensions\n );\n\n let direction = \"left\";\n let oppositeDirection = \"right\";\n\n if (axis === \"horizontal\" && configObject.transformOrigin?.horizontal === \"right\") {\n direction = \"right\";\n oppositeDirection = \"left\";\n } else if (axis === \"horizontal\") {\n direction = \"left\";\n oppositeDirection = \"right\";\n }\n\n if (axis === \"vertical\" && configObject.transformOrigin?.vertical === \"bottom\") {\n direction = \"bottom\";\n oppositeDirection = \"top\";\n } else if (axis === \"vertical\") {\n direction = \"top\";\n oppositeDirection = \"bottom\";\n }\n\n setPosition(prevState => ({\n ...prevState,\n [direction]: placementValue,\n [oppositeDirection]: \"initial\"\n }));\n };\n\n const calculatePosition = useDebouncedCallback(() => {\n if (!configObject.relativeElement?.current || !configObject.elementToBePositioned?.current)\n return;\n const relativeElRect = (configObject.relativeElement!\n .current as HTMLElement)!.getBoundingClientRect();\n const elementToBePositionedDimensions: Dimensions = {\n height: (configObject.elementToBePositioned!.current as HTMLElement).offsetHeight,\n width: (configObject.elementToBePositioned!.current as HTMLElement).offsetWidth\n };\n\n /** We want to add a center (horizontal and vertical) property to the DOMRect object. Since it's a special object we can't modify so we clone it and add it. */\n const clonedRelEl = {\n top: relativeElRect.top,\n right: relativeElRect.right,\n bottom: relativeElRect.bottom,\n center: 0,\n centerv: relativeElRect.top + relativeElRect.height / 2,\n centerh: relativeElRect.left + relativeElRect.width / 2,\n left: relativeElRect.left,\n width: relativeElRect.width,\n height: relativeElRect.height,\n x: relativeElRect.x,\n y: relativeElRect.y\n };\n\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, \"horizontal\");\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, \"vertical\");\n\n if (!initialCalculationDone) {\n setInitialCalculationDone(true);\n }\n }, configObject.debounceAmount ?? 20);\n\n return {\n top: position.top,\n bottom: position.bottom,\n left: position.left,\n right: position.right,\n calculatePosition,\n initialCalculationDone\n };\n};\n"],"names":["horizontal","vertical","defaultConfigObject","relativeElement","undefined","elementToBePositioned","transformOrigin","placement","offset","top","right","bottom","left","debounceAmount","usePosition","providedConfigObject","configObject","initialCalculationDone","setInitialCalculationDone","useState","position","setPosition","_fixPossibleViewportOverflow","value","requestedReturnValue","elDimensions","returnValue","window","innerWidth","width","innerHeight","height","_applyOffsetToPlacementValue","_a","_b","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","_calculateInitialPlacementValue","relEl","placementOriginDefinition","_determineCenteredPlacementOrigin","Error","_calculatePlacementValue","valueWithOffset","valueCorrectionForViewportOverflow","_calculatePlacement","axis","placementValue","direction","oppositeDirection","prevState","calculatePosition","useDebouncedCallback","current","relativeElRect","getBoundingClientRect","elementToBePositionedDimensions","offsetHeight","offsetWidth","clonedRelEl","center","centerv","centerh","x","y"],"mappings":"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"}
|
package/dist/esm/src/index.d.ts
CHANGED
|
@@ -83,14 +83,17 @@ export { InputWrapper } from "./components/Form/Wrapper/InputWrapper/InputWrappe
|
|
|
83
83
|
export type { Props as InputWrapperProps } from "./components/Form/Wrapper/InputWrapper/InputWrapper";
|
|
84
84
|
export { Label } from "./components/Form/Label/Label";
|
|
85
85
|
export type { Props as LabelProps } from "./components/Form/Label/Label";
|
|
86
|
-
export { Option } from "./components/Form/Select/Option";
|
|
87
|
-
export type { Props as OptionProps } from "./components/Form/Select/Option";
|
|
88
86
|
export { Radio } from "./components/Form/Radio/Radio";
|
|
89
87
|
export type { Props as RadioProps } from "./components/Form/Radio/Radio";
|
|
90
88
|
export { RadioWrapper } from "./components/Form/Wrapper/RadioWrapper/RadioWrapper";
|
|
91
89
|
export type { Props as RadioWrapperProps } from "./components/Form/Wrapper/RadioWrapper/RadioWrapper";
|
|
92
|
-
export { Select } from "./components/Form/Select/Select";
|
|
93
|
-
export
|
|
90
|
+
export { Select } from "./components/Form/Select/SingleSelect/Select";
|
|
91
|
+
export { MultiSelect } from "./components/Form/Select/MultiSelect/MultiSelect";
|
|
92
|
+
export type { SingleSelectProps, MultiSelectProps, SingleSelectProps as SelectProps } from "./components/Form/Select/Select.interfaces";
|
|
93
|
+
export { Option } from "./components/Form/Select/SingleSelect/Option";
|
|
94
|
+
export type { Props as OptionProps } from "./components/Form/Select/SingleSelect/Option";
|
|
95
|
+
export { MultiOption } from "./components/Form/Select/MultiSelect/MultiOption";
|
|
96
|
+
export type { Props as MultiOptionProps } from "./components/Form/Select/MultiSelect/MultiOption";
|
|
94
97
|
export { Textarea } from "./components/Form/Textarea/Textarea";
|
|
95
98
|
export type { Props as TextareaProps } from "./components/Form/Textarea/Textarea";
|
|
96
99
|
export { Toggle } from "./components/Form/Toggle/Toggle";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{BaseStyling}from"../_BaseStyling_/BaseStyling.esm.js";export{Button}from"../Button/Button.esm.js";export{Breadcrumbs}from"../Breadcrumbs/Breadcrumbs.esm.js";export{ContextMenu}from"../ContextMenu/ContextMenu.esm.js";export{ContextMenuItem}from"../ContextMenu/ContextMenuItem.esm.js";export{Link}from"../Link/Link.esm.js";export{Icon,Icons}from"../Icon/Icon.esm.js";export{IconButton}from"../Button/IconButton.esm.js";export{Tab}from"../Tabs/Tab.esm.js";export{Tabs}from"../Tabs/Tabs.esm.js";export{Tag}from"../Tag/Tag.esm.js";export{TextEllipsis}from"../TextEllipsis/TextEllipsis.esm.js";export{Tile}from"../Tiles/Tile.esm.js";export{Tiles}from"../Tiles/Tiles.esm.js";export{Tooltip}from"../Tooltip/Tooltip.esm.js";export{Typography}from"../Typography/Typography.esm.js";export{ProgressBar}from"../ProgressBar/ProgressBar.esm.js";export{Skeleton}from"../Skeleton/Skeleton.esm.js";export{StatusIndicator}from"../StatusIndicator/StatusIndicator.esm.js";export{Stepper}from"../Stepper/Stepper.esm.js";export{Pagination}from"../Pagination/Pagination.esm.js";export{useRepeater}from"./hooks/useRepeater.esm.js";export{usePosition}from"./hooks/usePosition.esm.js";export{useDebouncedCallback}from"./hooks/useDebouncedCallback.esm.js";export{debounce,generateID,throttle}from"./util/helper.esm.js";export{BaseModal as Modal}from"../Notifications/BaseModal/BaseModal.esm.js";export{useSnackbar}from"../Notifications/Snackbar/useSnackbar.esm.js";export{Dialog}from"../Notifications/Dialog/Dialog.esm.js";export{DiscardChangesModal}from"../Notifications/DiscardChangesModal/DiscardChangesModal.esm.js";export{BaseModalActions as ModalActions}from"../Notifications/BaseModal/BaseModalActions/BaseModalActions.esm.js";export{BaseModalContent as ModalContent}from"../Notifications/BaseModal/BaseModalContent/BaseModalContent.esm.js";export{BaseModalHeader as ModalHeader}from"../Notifications/BaseModal/BaseModalHeader/BaseModalHeader.esm.js";export{NotificationProvider,useNotificationContext}from"../Notifications/NotificationProvider/NotificationContext.esm.js";export{SlideInModal}from"../Notifications/SlideInModal/SlideInModal.esm.js";export{SnackbarProvider}from"../Notifications/Snackbar/SnackbarProvider/SnackbarProvider.esm.js";export{Checkbox}from"../Form/Checkbox/Checkbox.esm.js";export{Fieldset}from"../Form/Fieldset/Fieldset.esm.js";export{Form}from"../Form/Form.esm.js";export{FormControl}from"../Form/FormControl/FormControl.esm.js";export{FormGroup}from"../Form/FormGroup/FormGroup.esm.js";export{FormHelperText}from"../Form/FormHelperText/FormHelperText.esm.js";export{Input}from"../Form/Input/Input.esm.js";export{InputWrapper}from"../Form/Wrapper/InputWrapper/InputWrapper.esm.js";export{Label}from"../Form/Label/Label.esm.js";export{
|
|
1
|
+
export{BaseStyling}from"../_BaseStyling_/BaseStyling.esm.js";export{Button}from"../Button/Button.esm.js";export{Breadcrumbs}from"../Breadcrumbs/Breadcrumbs.esm.js";export{ContextMenu}from"../ContextMenu/ContextMenu.esm.js";export{ContextMenuItem}from"../ContextMenu/ContextMenuItem.esm.js";export{Link}from"../Link/Link.esm.js";export{Icon,Icons}from"../Icon/Icon.esm.js";export{IconButton}from"../Button/IconButton.esm.js";export{Tab}from"../Tabs/Tab.esm.js";export{Tabs}from"../Tabs/Tabs.esm.js";export{Tag}from"../Tag/Tag.esm.js";export{TextEllipsis}from"../TextEllipsis/TextEllipsis.esm.js";export{Tile}from"../Tiles/Tile.esm.js";export{Tiles}from"../Tiles/Tiles.esm.js";export{Tooltip}from"../Tooltip/Tooltip.esm.js";export{Typography}from"../Typography/Typography.esm.js";export{ProgressBar}from"../ProgressBar/ProgressBar.esm.js";export{Skeleton}from"../Skeleton/Skeleton.esm.js";export{StatusIndicator}from"../StatusIndicator/StatusIndicator.esm.js";export{Stepper}from"../Stepper/Stepper.esm.js";export{Pagination}from"../Pagination/Pagination.esm.js";export{useRepeater}from"./hooks/useRepeater.esm.js";export{usePosition}from"./hooks/usePosition.esm.js";export{useDebouncedCallback}from"./hooks/useDebouncedCallback.esm.js";export{debounce,generateID,throttle}from"./util/helper.esm.js";export{BaseModal as Modal}from"../Notifications/BaseModal/BaseModal.esm.js";export{useSnackbar}from"../Notifications/Snackbar/useSnackbar.esm.js";export{Dialog}from"../Notifications/Dialog/Dialog.esm.js";export{DiscardChangesModal}from"../Notifications/DiscardChangesModal/DiscardChangesModal.esm.js";export{BaseModalActions as ModalActions}from"../Notifications/BaseModal/BaseModalActions/BaseModalActions.esm.js";export{BaseModalContent as ModalContent}from"../Notifications/BaseModal/BaseModalContent/BaseModalContent.esm.js";export{BaseModalHeader as ModalHeader}from"../Notifications/BaseModal/BaseModalHeader/BaseModalHeader.esm.js";export{NotificationProvider,useNotificationContext}from"../Notifications/NotificationProvider/NotificationContext.esm.js";export{SlideInModal}from"../Notifications/SlideInModal/SlideInModal.esm.js";export{SnackbarProvider}from"../Notifications/Snackbar/SnackbarProvider/SnackbarProvider.esm.js";export{Checkbox}from"../Form/Checkbox/Checkbox.esm.js";export{Fieldset}from"../Form/Fieldset/Fieldset.esm.js";export{Form}from"../Form/Form.esm.js";export{FormControl}from"../Form/FormControl/FormControl.esm.js";export{FormGroup}from"../Form/FormGroup/FormGroup.esm.js";export{FormHelperText}from"../Form/FormHelperText/FormHelperText.esm.js";export{Input}from"../Form/Input/Input.esm.js";export{InputWrapper}from"../Form/Wrapper/InputWrapper/InputWrapper.esm.js";export{Label}from"../Form/Label/Label.esm.js";export{Radio}from"../Form/Radio/Radio.esm.js";export{RadioWrapper}from"../Form/Wrapper/RadioWrapper/RadioWrapper.esm.js";export{Select}from"../Form/Select/SingleSelect/Select.esm.js";export{MultiSelect}from"../Form/Select/MultiSelect/MultiSelect.esm.js";export{Option}from"../Form/Select/SingleSelect/Option.esm.js";export{MultiOption}from"../Form/Select/MultiSelect/MultiOption.esm.js";export{Textarea}from"../Form/Textarea/Textarea.esm.js";export{Toggle}from"../Form/Toggle/Toggle.esm.js";export{CheckboxWrapper}from"../Form/Wrapper/CheckboxWrapper/CheckboxWrapper.esm.js";export{TextareaWrapper}from"../Form/Wrapper/TextareaWrapper/TextareaWrapper.esm.js";export{SelectWrapper}from"../Form/Wrapper/SelectWrapper/SelectWrapper.esm.js";export{Wizard}from"../Wizard/Wizard.esm.js";export{WizardActions}from"../Wizard/WizardActions/WizardActions.esm.js";export{WizardSteps}from"../Wizard/WizardSteps/WizardSteps.esm.js";export{BaseWizardSteps}from"../Wizard/BaseWizardSteps/BaseWizardSteps.esm.js";export{DataGrid}from"../DataGrid/DataGrid.esm.js";export{DataGridRow}from"../DataGrid/DataGridBody/DataGridRow.esm.js";export{DataGridCell}from"../DataGrid/DataGridBody/DataGridCell.esm.js";export{Banner}from"../Notifications/Banner/Banner.esm.js";
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"homepage": "http://onewelcome.github.io/react-lib-components",
|
|
3
3
|
"name": "@onewelcome/react-lib-components",
|
|
4
|
-
"version": "6.
|
|
4
|
+
"version": "6.2.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "OneWelcome B.V.",
|
|
7
7
|
"main": "dist/cjs/src/index.cjs.js",
|
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
"typings": "dist/cjs/src/index.d.ts",
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
|
-
"src"
|
|
12
|
+
"src",
|
|
13
|
+
"!*/**/*.test.tsx",
|
|
14
|
+
"!*/**/*.test.ts"
|
|
13
15
|
],
|
|
14
16
|
"sideEffects": [
|
|
15
17
|
"*.css",
|
|
@@ -50,8 +52,8 @@
|
|
|
50
52
|
"node": ">=16"
|
|
51
53
|
},
|
|
52
54
|
"devDependencies": {
|
|
53
|
-
"@babel/core": "^7.23.
|
|
54
|
-
"@babel/preset-env": "^7.23.
|
|
55
|
+
"@babel/core": "^7.23.9",
|
|
56
|
+
"@babel/preset-env": "^7.23.9",
|
|
55
57
|
"@babel/preset-react": "^7.23.3",
|
|
56
58
|
"@babel/preset-typescript": "^7.23.3",
|
|
57
59
|
"@mdx-js/react": "^3.0.0",
|
|
@@ -59,74 +61,75 @@
|
|
|
59
61
|
"@onewelcome/storybook-addon-basestyling": "^1.0.0",
|
|
60
62
|
"@rollup/plugin-commonjs": "^25.0.7",
|
|
61
63
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
62
|
-
"@rollup/plugin-typescript": "^11.1.
|
|
63
|
-
"@storybook/addon-a11y": "^7.
|
|
64
|
-
"@storybook/addon-actions": "^7.
|
|
65
|
-
"@storybook/addon-docs": "^7.
|
|
66
|
-
"@storybook/addon-essentials": "^7.
|
|
67
|
-
"@storybook/addon-interactions": "^7.
|
|
68
|
-
"@storybook/addon-links": "^7.
|
|
69
|
-
"@storybook/blocks": "^7.
|
|
70
|
-
"@storybook/components": "^7.
|
|
64
|
+
"@rollup/plugin-typescript": "^11.1.6",
|
|
65
|
+
"@storybook/addon-a11y": "^7.6.12",
|
|
66
|
+
"@storybook/addon-actions": "^7.6.12",
|
|
67
|
+
"@storybook/addon-docs": "^7.6.12",
|
|
68
|
+
"@storybook/addon-essentials": "^7.6.12",
|
|
69
|
+
"@storybook/addon-interactions": "^7.6.12",
|
|
70
|
+
"@storybook/addon-links": "^7.6.12",
|
|
71
|
+
"@storybook/blocks": "^7.6.12",
|
|
72
|
+
"@storybook/components": "^7.6.12",
|
|
71
73
|
"@storybook/jest": "^0.2.3",
|
|
72
|
-
"@storybook/manager-api": "^7.
|
|
73
|
-
"@storybook/react": "^7.
|
|
74
|
-
"@storybook/react-webpack5": "^7.
|
|
74
|
+
"@storybook/manager-api": "^7.6.12",
|
|
75
|
+
"@storybook/react": "^7.6.12",
|
|
76
|
+
"@storybook/react-webpack5": "^7.6.12",
|
|
75
77
|
"@storybook/testing-library": "^0.2.2",
|
|
76
|
-
"@storybook/theming": "^7.
|
|
77
|
-
"@testing-library/dom": "^9.3.
|
|
78
|
-
"@testing-library/jest-dom": "^6.
|
|
79
|
-
"@testing-library/react": "^14.
|
|
80
|
-
"@testing-library/user-event": "^14.5.
|
|
81
|
-
"@types/jest": "^29.5.
|
|
82
|
-
"@types/mdx": "^2.0.
|
|
83
|
-
"@types/react": "^18.2.
|
|
84
|
-
"@types/react-dom": "^18.2.
|
|
78
|
+
"@storybook/theming": "^7.6.12",
|
|
79
|
+
"@testing-library/dom": "^9.3.4",
|
|
80
|
+
"@testing-library/jest-dom": "^6.4.2",
|
|
81
|
+
"@testing-library/react": "^14.2.1",
|
|
82
|
+
"@testing-library/user-event": "^14.5.2",
|
|
83
|
+
"@types/jest": "^29.5.12",
|
|
84
|
+
"@types/mdx": "^2.0.11",
|
|
85
|
+
"@types/react": "^18.2.54",
|
|
86
|
+
"@types/react-dom": "^18.2.18",
|
|
85
87
|
"@types/react-router": "^5.1.20",
|
|
86
88
|
"@types/react-router-dom": "^5.3.3",
|
|
87
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
88
|
-
"@typescript-eslint/parser": "^6.
|
|
89
|
+
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
90
|
+
"@typescript-eslint/parser": "^6.21.0",
|
|
89
91
|
"babel-loader": "^9.1.3",
|
|
90
|
-
"chromatic": "^7.
|
|
91
|
-
"css-loader": "^6.
|
|
92
|
-
"eslint": "^8.
|
|
93
|
-
"eslint-config-prettier": "^9.
|
|
92
|
+
"chromatic": "^10.7.1",
|
|
93
|
+
"css-loader": "^6.10.0",
|
|
94
|
+
"eslint": "^8.56.0",
|
|
95
|
+
"eslint-config-prettier": "^9.1.0",
|
|
94
96
|
"eslint-plugin-cypress": "^2.15.1",
|
|
95
|
-
"eslint-plugin-
|
|
97
|
+
"eslint-plugin-export-scope": "^2.0.5",
|
|
98
|
+
"eslint-plugin-jest": "^27.6.3",
|
|
96
99
|
"eslint-plugin-license-header": "^0.6.0",
|
|
97
|
-
"eslint-plugin-prettier": "^5.
|
|
100
|
+
"eslint-plugin-prettier": "^5.1.3",
|
|
98
101
|
"eslint-plugin-react": "^7.33.2",
|
|
99
102
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
100
103
|
"eslint-plugin-storybook": "^0.6.15",
|
|
101
|
-
"husky": "^
|
|
104
|
+
"husky": "^9.0.10",
|
|
102
105
|
"identity-obj-proxy": "^3.0.0",
|
|
103
106
|
"jest": "^29.7.0",
|
|
104
107
|
"jest-environment-jsdom": "^29.7.0",
|
|
105
108
|
"jest-junit": "^16.0.0",
|
|
106
109
|
"jest-sonar-reporter": "^2.0.0",
|
|
107
|
-
"lint-staged": "^15.
|
|
108
|
-
"mini-css-extract-plugin": "^2.
|
|
110
|
+
"lint-staged": "^15.2.2",
|
|
111
|
+
"mini-css-extract-plugin": "^2.8.0",
|
|
109
112
|
"npm-run-all": "^4.1.5",
|
|
110
|
-
"postcss": "^8.4.
|
|
113
|
+
"postcss": "^8.4.34",
|
|
111
114
|
"postcss-modules": "^6.0.0",
|
|
112
115
|
"postcss-url": "^10.1.3",
|
|
113
|
-
"prettier": "^3.
|
|
116
|
+
"prettier": "^3.2.5",
|
|
114
117
|
"react": "^18.2.0",
|
|
115
118
|
"react-dom": "^18.2.0",
|
|
116
119
|
"react-is": "^18.2.0",
|
|
117
|
-
"react-router-dom": "^6.
|
|
120
|
+
"react-router-dom": "^6.22.0",
|
|
118
121
|
"remark-gfm": "^4.0.0",
|
|
119
122
|
"rollup": "^2.79.1",
|
|
120
123
|
"rollup-plugin-postcss": "^4.0.2",
|
|
121
124
|
"rollup-plugin-terser": "^7.0.2",
|
|
122
|
-
"sass": "^1.
|
|
123
|
-
"sass-loader": "^
|
|
124
|
-
"size-limit": "^
|
|
125
|
-
"storybook": "^7.
|
|
125
|
+
"sass": "^1.70.0",
|
|
126
|
+
"sass-loader": "^14.1.0",
|
|
127
|
+
"size-limit": "^11.0.2",
|
|
128
|
+
"storybook": "^7.6.12",
|
|
126
129
|
"storybook-addon-pseudo-states": "^2.1.2",
|
|
127
|
-
"style-loader": "^3.3.
|
|
128
|
-
"ts-jest": "^29.1.
|
|
130
|
+
"style-loader": "^3.3.4",
|
|
131
|
+
"ts-jest": "^29.1.2",
|
|
129
132
|
"tslib": "^2.6.2",
|
|
130
|
-
"typescript": "^5.3.
|
|
133
|
+
"typescript": "^5.3.3"
|
|
131
134
|
}
|
|
132
135
|
}
|
|
@@ -35,7 +35,8 @@ import { useBodyClick } from "../../hooks/useBodyClick";
|
|
|
35
35
|
import { Props as ContextMenuItemProps } from "./ContextMenuItem";
|
|
36
36
|
import { createPortal } from "react-dom";
|
|
37
37
|
import { useGetDomRoot } from "../../hooks/useGetDomRoot";
|
|
38
|
-
import { useArrowNavigation, useDefaultOffset } from "./ContextMenuService";
|
|
38
|
+
import { useArrowNavigation, useDefaultOffset, useFocusAnchorElement } from "./ContextMenuService";
|
|
39
|
+
import { generateID } from "../../util/helper";
|
|
39
40
|
|
|
40
41
|
export interface Props extends Omit<ComponentPropsWithRef<"div">, "onChange"> {
|
|
41
42
|
trigger: ReactElement<ButtonProps> | ReactElement<IconButtonProps>;
|
|
@@ -45,7 +46,7 @@ export interface Props extends Omit<ComponentPropsWithRef<"div">, "onChange"> {
|
|
|
45
46
|
transformOrigin?: Placement;
|
|
46
47
|
offset?: Offset;
|
|
47
48
|
debounceAmount?: number;
|
|
48
|
-
id
|
|
49
|
+
id?: string;
|
|
49
50
|
show?: boolean;
|
|
50
51
|
domRoot?: HTMLElement;
|
|
51
52
|
onShow?: () => void;
|
|
@@ -60,7 +61,7 @@ const ContextMenuComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
|
|
|
60
61
|
trigger,
|
|
61
62
|
children,
|
|
62
63
|
decorativeElement,
|
|
63
|
-
id
|
|
64
|
+
id = `ID-${generateID()}`,
|
|
64
65
|
show = false,
|
|
65
66
|
onShow,
|
|
66
67
|
onClose,
|
|
@@ -79,7 +80,6 @@ const ContextMenuComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
|
|
|
79
80
|
const anchorEl = useRef<HTMLButtonElement>(null);
|
|
80
81
|
const wrappingDivRef = (ref as RefObject<HTMLDivElement>) || createRef<HTMLDivElement>();
|
|
81
82
|
const [showContextMenu, setShowContextMenu] = useState(show);
|
|
82
|
-
const [hasBeenClosed, setHasBeenClosed] = useState(false);
|
|
83
83
|
const [selectedContextMenuItem, setSelectedContextMenuItem] = useState(-1);
|
|
84
84
|
const [focusedContextMenuItem, setFocusedContextMenuItem] = useState(-1);
|
|
85
85
|
const [shouldClick, setShouldClick] =
|
|
@@ -90,10 +90,6 @@ const ContextMenuComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
|
|
|
90
90
|
|
|
91
91
|
const { root } = useGetDomRoot(domRoot, wrappingDivRef);
|
|
92
92
|
|
|
93
|
-
if (!id) {
|
|
94
|
-
throw new Error("You need to provide an ID to the context menu");
|
|
95
|
-
}
|
|
96
|
-
|
|
97
93
|
const syncSelectedContextMenuItem = setSelectedContextMenuItem;
|
|
98
94
|
|
|
99
95
|
useEffect(() => {
|
|
@@ -128,21 +124,15 @@ const ContextMenuComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
|
|
|
128
124
|
showContextMenu
|
|
129
125
|
);
|
|
130
126
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
// otherwise pressing enter wouldn't fire the primary action of the modal.
|
|
141
|
-
if (document.activeElement?.closest(`.${wrappingDivRef.current?.className}`)) {
|
|
142
|
-
hasBeenClosed && anchorEl.current && anchorEl.current.focus();
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}, [showContextMenu]);
|
|
127
|
+
useFocusAnchorElement(
|
|
128
|
+
anchorEl,
|
|
129
|
+
id,
|
|
130
|
+
showContextMenu,
|
|
131
|
+
setShowContextMenu,
|
|
132
|
+
setFocusedContextMenuItem,
|
|
133
|
+
onShow,
|
|
134
|
+
onClose
|
|
135
|
+
);
|
|
146
136
|
|
|
147
137
|
const renderTrigger = () =>
|
|
148
138
|
React.cloneElement(trigger, {
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import { SetStateAction, useEffect } from "react";
|
|
18
|
+
import { horizontal, Offset, Placement, vertical } from "../../hooks/usePosition";
|
|
18
19
|
import { remToPx } from "../../util/helper";
|
|
19
20
|
|
|
20
21
|
interface UseArrowNavigation {
|
|
@@ -28,6 +29,7 @@ interface UseArrowNavigation {
|
|
|
28
29
|
setShouldClick: React.Dispatch<React.SetStateAction<boolean>>;
|
|
29
30
|
}
|
|
30
31
|
|
|
32
|
+
/** @scope . */
|
|
31
33
|
export const useArrowNavigation = ({
|
|
32
34
|
selectedContextMenuItem,
|
|
33
35
|
setSelectedContextMenuItem,
|
|
@@ -123,3 +125,47 @@ export const useDefaultOffset = () => {
|
|
|
123
125
|
|
|
124
126
|
return { calculateDefaultOffset };
|
|
125
127
|
};
|
|
128
|
+
|
|
129
|
+
export const useFocusAnchorElement = (
|
|
130
|
+
anchorEl: React.RefObject<HTMLElement>,
|
|
131
|
+
id: string,
|
|
132
|
+
showContextMenu: boolean,
|
|
133
|
+
setShowContextMenu: React.Dispatch<SetStateAction<boolean>>,
|
|
134
|
+
setFocusedContextMenuItem: React.Dispatch<SetStateAction<number>>,
|
|
135
|
+
onShow?: () => void,
|
|
136
|
+
onClose?: () => void
|
|
137
|
+
) => {
|
|
138
|
+
const handleEscapeKeyPress = (e: KeyboardEvent) => {
|
|
139
|
+
if (e.key === "Escape") {
|
|
140
|
+
setShowContextMenu(false);
|
|
141
|
+
anchorEl.current?.focus();
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
const escapeKeyEventHandlerManager = () => {
|
|
146
|
+
if (showContextMenu) {
|
|
147
|
+
document.addEventListener("keydown", handleEscapeKeyPress);
|
|
148
|
+
} else {
|
|
149
|
+
document.removeEventListener("keydown", handleEscapeKeyPress);
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
const emitContextMenuEvent = () => {
|
|
154
|
+
if (showContextMenu) {
|
|
155
|
+
onShow?.();
|
|
156
|
+
} else {
|
|
157
|
+
onClose?.();
|
|
158
|
+
|
|
159
|
+
if (document.activeElement?.closest(`#${id}-menu`)) {
|
|
160
|
+
anchorEl.current?.focus();
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
setFocusedContextMenuItem(-1);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
useEffect(() => {
|
|
168
|
+
escapeKeyEventHandlerManager();
|
|
169
|
+
emitContextMenuEvent();
|
|
170
|
+
}, [showContextMenu]);
|
|
171
|
+
};
|
|
@@ -19,7 +19,8 @@ import readyclasses from "../../../readyclasses.module.scss";
|
|
|
19
19
|
import classes from "./Fieldset.module.scss";
|
|
20
20
|
import { Typography, Variant } from "../../Typography/Typography";
|
|
21
21
|
import { Input } from "../Input/Input";
|
|
22
|
-
import { Select } from "../Select/Select";
|
|
22
|
+
import { Select } from "../Select/SingleSelect/Select";
|
|
23
|
+
import { MultiSelect } from "../Select/MultiSelect/MultiSelect";
|
|
23
24
|
import { Radio } from "../Radio/Radio";
|
|
24
25
|
import { Checkbox } from "../Checkbox/Checkbox";
|
|
25
26
|
import { Textarea } from "../Textarea/Textarea";
|
|
@@ -73,6 +74,7 @@ const FieldsetComponent: ForwardRefRenderFunction<HTMLFieldSetElement, Props> =
|
|
|
73
74
|
const allowedComponents: React.ComponentPropsWithRef<any>[] = [
|
|
74
75
|
Input,
|
|
75
76
|
Select,
|
|
77
|
+
MultiSelect,
|
|
76
78
|
Radio,
|
|
77
79
|
Checkbox,
|
|
78
80
|
Textarea,
|
|
@@ -14,15 +14,18 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
17
|
+
import React, { ForwardRefRenderFunction } from "react";
|
|
18
|
+
import { Props as SelectOptionProps, Option as SelectOption } from "../SingleSelect/Option";
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
export interface Props extends SelectOptionProps {
|
|
21
|
+
fixed?: boolean;
|
|
22
|
+
}
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
24
|
+
const MultiOptionComponent: ForwardRefRenderFunction<HTMLLIElement, Props> = (
|
|
25
|
+
{ fixed: _fixed, ...rest }: Props,
|
|
26
|
+
ref
|
|
27
|
+
) => {
|
|
28
|
+
return <SelectOption ref={ref} {...rest} />;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const MultiOption = React.forwardRef(MultiOptionComponent);
|
package/src/components/Form/Select/{Select.module.scss → MultiSelect/MultiSelect.module.scss}
RENAMED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
@use "src/mixins.module";
|
|
18
18
|
@use "src/variables";
|
|
19
19
|
|
|
20
|
-
$listItemHeight: 2.
|
|
20
|
+
$listItemHeight: 2.5rem;
|
|
21
21
|
|
|
22
22
|
.select {
|
|
23
23
|
position: relative;
|
|
@@ -40,7 +40,7 @@ $listItemHeight: 2.125rem;
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
&:not(.expanded) {
|
|
43
|
-
|
|
43
|
+
.custom-select:focus:not(.error) {
|
|
44
44
|
border: var(--input-border-width-focus) solid var(--color-focus);
|
|
45
45
|
padding: 0
|
|
46
46
|
calc(variables.$form-element-horizontal-padding-mobile - var(--input-border-width-focus));
|
|
@@ -48,7 +48,7 @@ $listItemHeight: 2.125rem;
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
&:hover:not(.disabled):not(.expanded):not(.error) {
|
|
51
|
-
|
|
51
|
+
.custom-select:not(:focus) {
|
|
52
52
|
border-color: var(--default);
|
|
53
53
|
border-width: var(--input-border-width);
|
|
54
54
|
background-color: var(--color-blue-grey25);
|
|
@@ -56,7 +56,7 @@ $listItemHeight: 2.125rem;
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
.custom-select {
|
|
59
|
-
|
|
59
|
+
box-sizing: border-box;
|
|
60
60
|
width: 100%;
|
|
61
61
|
min-height: calc(2.625rem - (2 * var(--input-border-width)));
|
|
62
62
|
padding: 0 calc(variables.$form-element-horizontal-padding-mobile - var(--input-border-width));
|
|
@@ -66,7 +66,6 @@ $listItemHeight: 2.125rem;
|
|
|
66
66
|
border-width: var(--input-border-width);
|
|
67
67
|
border-radius: var(--input-border-radius);
|
|
68
68
|
font-size: var(--form-control-font-size);
|
|
69
|
-
cursor: pointer;
|
|
70
69
|
@include mixins.transition(all, 0.2s, ease-in-out);
|
|
71
70
|
|
|
72
71
|
&:focus {
|
|
@@ -75,7 +74,6 @@ $listItemHeight: 2.125rem;
|
|
|
75
74
|
|
|
76
75
|
&.error {
|
|
77
76
|
border-color: var(--error);
|
|
78
|
-
color: var(--error);
|
|
79
77
|
}
|
|
80
78
|
|
|
81
79
|
&.error:focus {
|
|
@@ -84,6 +82,14 @@ $listItemHeight: 2.125rem;
|
|
|
84
82
|
|
|
85
83
|
&.disabled {
|
|
86
84
|
border-color: var(--color-disabled);
|
|
85
|
+
pointer-events: none;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.display-container {
|
|
89
|
+
flex: 1;
|
|
90
|
+
display: flex;
|
|
91
|
+
align-items: center;
|
|
92
|
+
padding: 0.1875rem 0;
|
|
87
93
|
}
|
|
88
94
|
}
|
|
89
95
|
|
|
@@ -113,14 +119,17 @@ $listItemHeight: 2.125rem;
|
|
|
113
119
|
border-radius: var(--input-border-radius);
|
|
114
120
|
color: var(--default);
|
|
115
121
|
text-align: left;
|
|
122
|
+
overflow: auto;
|
|
116
123
|
max-height: calc($listItemHeight * 10);
|
|
117
124
|
|
|
118
125
|
li {
|
|
119
|
-
padding: 0.
|
|
126
|
+
padding: 0.62rem 0.75rem;
|
|
120
127
|
font-size: var(--form-control-font-size);
|
|
121
128
|
margin: 0;
|
|
122
129
|
position: relative;
|
|
123
|
-
line-height:
|
|
130
|
+
line-height: 1.25rem;
|
|
131
|
+
box-sizing: border-box;
|
|
132
|
+
min-height: $listItemHeight;
|
|
124
133
|
cursor: pointer;
|
|
125
134
|
|
|
126
135
|
&:after {
|
|
@@ -171,18 +180,8 @@ $listItemHeight: 2.125rem;
|
|
|
171
180
|
color: var(--color-primary);
|
|
172
181
|
}
|
|
173
182
|
|
|
174
|
-
.selected {
|
|
175
|
-
position: absolute;
|
|
176
|
-
top: 50%;
|
|
177
|
-
transform: translateY(-50%);
|
|
178
|
-
pointer-events: none;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
183
|
.status {
|
|
182
|
-
|
|
183
|
-
top: 50%;
|
|
184
|
-
right: 0.8125rem;
|
|
185
|
-
transform: translateY(-50%);
|
|
184
|
+
padding: 0.3125rem;
|
|
186
185
|
display: flex;
|
|
187
186
|
align-items: center;
|
|
188
187
|
|
|
@@ -236,7 +235,7 @@ $listItemHeight: 2.125rem;
|
|
|
236
235
|
}
|
|
237
236
|
|
|
238
237
|
&:not(.expanded) {
|
|
239
|
-
|
|
238
|
+
.custom-select:focus:not(.error) {
|
|
240
239
|
padding: 0
|
|
241
240
|
calc(variables.$form-element-horizontal-padding-desktop - var(--input-border-width-focus));
|
|
242
241
|
}
|