@onewelcome/react-lib-components 0.0.0-experimental-8e3a0fd
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/LICENSE +202 -0
- package/README.md +94 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +9 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.test.d.ts +1 -0
- package/dist/components/Button/BaseButton.d.ts +8 -0
- package/dist/components/Button/BaseButton.test.d.ts +1 -0
- package/dist/components/Button/Button.d.ts +8 -0
- package/dist/components/Button/Button.test.d.ts +1 -0
- package/dist/components/Button/IconButton.d.ts +11 -0
- package/dist/components/Button/IconButton.test.d.ts +1 -0
- package/dist/components/Button/Spinner.d.ts +2 -0
- package/dist/components/ContextMenu/ContextMenu.d.ts +24 -0
- package/dist/components/ContextMenu/ContextMenu.test.d.ts +1 -0
- package/dist/components/ContextMenu/ContextMenuItem.d.ts +15 -0
- package/dist/components/ContextMenu/ContextMenuService.d.ts +21 -0
- package/dist/components/DataGrid/DataGrid.d.ts +46 -0
- package/dist/components/DataGrid/DataGrid.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridActions/DataGridActions.d.ts +15 -0
- package/dist/components/DataGrid/DataGridActions/DataGridActions.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridActions/DataGridColumnsToggle.d.ts +13 -0
- package/dist/components/DataGrid/DataGridActions/DataGridColumnsToggle.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridBody/DataGridBody.d.ts +21 -0
- package/dist/components/DataGrid/DataGridBody/DataGridBody.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridBody/DataGridCell/DataGridCell.d.ts +12 -0
- package/dist/components/DataGrid/DataGridBody/DataGridCell/DataGridCell.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawer.d.ts +5 -0
- package/dist/components/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawerItem.d.ts +6 -0
- package/dist/components/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawerItem.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridBody/DataGridRow/DataGridRow.d.ts +33 -0
- package/dist/components/DataGrid/DataGridBody/DataGridRow/DataGridRow.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridBody/DataGridRow/DataGridWithNestedRows.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridBody/DataGridRow/useNestedRow.d.ts +855 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridDateFilter.d.ts +9 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridFilter.d.ts +16 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridFilterPopover.d.ts +23 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridFilterService.d.ts +16 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridFilterTag.d.ts +15 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridFilterTag.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridFilterValueSelect.d.ts +15 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridFilterValueSelect.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridFilters.interfaces.d.ts +78 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridSearchbar.d.ts +10 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridToolbar.d.ts +15 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridToolbar.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridFilters/DataGridToolbarWrapper.d.ts +10 -0
- package/dist/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.d.ts +31 -0
- package/dist/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.d.ts +15 -0
- package/dist/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.d.ts +18 -0
- package/dist/components/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.d.ts +10 -0
- package/dist/components/DataGrid/DataGridFilters/DateTimePicker/SideMenu.d.ts +10 -0
- package/dist/components/DataGrid/DataGridFilters/FilterKeyMapper.d.ts +14 -0
- package/dist/components/DataGrid/DataGridFilters/FilterKeyMapper.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridFilters/useFiltersReducer.d.ts +9 -0
- package/dist/components/DataGrid/DataGridFilters/useFiltersReducer.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridHeader/DataGridHeader.d.ts +13 -0
- package/dist/components/DataGrid/DataGridHeader/DataGridHeader.test.d.ts +1 -0
- package/dist/components/DataGrid/DataGridHeader/DataGridHeaderCell.d.ts +10 -0
- package/dist/components/DataGrid/DataGridHeader/DataGridHeaderCell.test.d.ts +1 -0
- package/dist/components/DataGrid/datagrid.interfaces.d.ts +13 -0
- package/dist/components/DataGrid/testUtils.d.ts +22 -0
- package/dist/components/DatePicker/DatePicker.d.ts +14 -0
- package/dist/components/DatePicker/DatePicker.test.d.ts +1 -0
- package/dist/components/Form/Checkbox/Checkbox.d.ts +14 -0
- package/dist/components/Form/Checkbox/Checkbox.test.d.ts +1 -0
- package/dist/components/Form/Fieldset/Fieldset.d.ts +14 -0
- package/dist/components/Form/Fieldset/Fieldset.test.d.ts +1 -0
- package/dist/components/Form/FileUpload/FileItem/FileItem.d.ts +28 -0
- package/dist/components/Form/FileUpload/FileItem/FileItem.test.d.ts +1 -0
- package/dist/components/Form/FileUpload/FileUpload.d.ts +32 -0
- package/dist/components/Form/FileUpload/FileUpload.test.d.ts +1 -0
- package/dist/components/Form/Form.d.ts +5 -0
- package/dist/components/Form/Form.test.d.ts +1 -0
- package/dist/components/Form/FormControl/FormControl.d.ts +8 -0
- package/dist/components/Form/FormControl/FormControl.test.d.ts +1 -0
- package/dist/components/Form/FormErrorText/FormErrorText.d.ts +12 -0
- package/dist/components/Form/FormErrorText/FormErrorText.test.d.ts +1 -0
- package/dist/components/Form/FormGroup/FormGroup.d.ts +17 -0
- package/dist/components/Form/FormGroup/FormGroup.test.d.ts +1 -0
- package/dist/components/Form/FormHelperText/FormHelperText.d.ts +7 -0
- package/dist/components/Form/FormHelperText/FormHelperText.test.d.ts +1 -0
- package/dist/components/Form/FormSelectorWrapper/FormSelectorWrapper.d.ts +15 -0
- package/dist/components/Form/FormSelectorWrapper/FormSelectorWrapper.test.d.ts +1 -0
- package/dist/components/Form/FormStatusIndicator/FormStatusIndicator.d.ts +8 -0
- package/dist/components/Form/Input/Input.d.ts +14 -0
- package/dist/components/Form/Input/Input.test.d.ts +1 -0
- package/dist/components/Form/Label/Label.d.ts +5 -0
- package/dist/components/Form/Label/Label.test.d.ts +1 -0
- package/dist/components/Form/Radio/Radio.d.ts +11 -0
- package/dist/components/Form/Radio/Radio.test.d.ts +1 -0
- package/dist/components/Form/Select/MultiSelect/MultiOption.d.ts +6 -0
- package/dist/components/Form/Select/MultiSelect/MultiSelect.d.ts +3 -0
- package/dist/components/Form/Select/MultiSelect/MultiSelect.test.d.ts +63 -0
- package/dist/components/Form/Select/MultiSelect/MultiSelectKeyboardNavigation.test.d.ts +1 -0
- package/dist/components/Form/Select/MultiSelect/SelectButton.d.ts +4 -0
- package/dist/components/Form/Select/MultiSelect/SelectedOptions.d.ts +12 -0
- package/dist/components/Form/Select/MultiSelect/useArrowNavigation.d.ts +17 -0
- package/dist/components/Form/Select/MultiSelect/useMultiSelect.d.ts +16 -0
- package/dist/components/Form/Select/MultiSelect/useMultiSelect.test.d.ts +1 -0
- package/dist/components/Form/Select/MultiSelect/useSearch.d.ts +24 -0
- package/dist/components/Form/Select/Select.interfaces.d.ts +60 -0
- package/dist/components/Form/Select/SingleSelect/Option.d.ts +18 -0
- package/dist/components/Form/Select/SingleSelect/Option.test.d.ts +1 -0
- package/dist/components/Form/Select/SingleSelect/Select.d.ts +3 -0
- package/dist/components/Form/Select/SingleSelect/Select.test.d.ts +124 -0
- package/dist/components/Form/Select/SingleSelect/SelectKeyboardNavigation.test.d.ts +1 -0
- package/dist/components/Form/Select/SingleSelect/useArrowNavigation.d.ts +5 -0
- package/dist/components/Form/Select/SingleSelect/useSearch.d.ts +20 -0
- package/dist/components/Form/Select/useAddNewBtn.d.ts +19 -0
- package/dist/components/Form/Select/useSelectPositionList.d.ts +12 -0
- package/dist/components/Form/Textarea/Textarea.d.ts +7 -0
- package/dist/components/Form/Textarea/Textarea.test.d.ts +1 -0
- package/dist/components/Form/Toggle/Toggle.d.ts +11 -0
- package/dist/components/Form/Toggle/Toggle.test.d.ts +1 -0
- package/dist/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.d.ts +12 -0
- package/dist/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.test.d.ts +1 -0
- package/dist/components/Form/Wrapper/InputWrapper/InputWrapper.d.ts +18 -0
- package/dist/components/Form/Wrapper/InputWrapper/InputWrapper.test.d.ts +1 -0
- package/dist/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.d.ts +16 -0
- package/dist/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.test.d.ts +1 -0
- package/dist/components/Form/Wrapper/RadioWrapper/RadioWrapper.d.ts +10 -0
- package/dist/components/Form/Wrapper/RadioWrapper/RadioWrapper.test.d.ts +1 -0
- package/dist/components/Form/Wrapper/SelectWrapper/SelectWrapper.d.ts +16 -0
- package/dist/components/Form/Wrapper/SelectWrapper/SelectWrapper.test.d.ts +1 -0
- package/dist/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.d.ts +16 -0
- package/dist/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.test.d.ts +1 -0
- package/dist/components/Form/Wrapper/Wrapper/Wrapper.d.ts +27 -0
- package/dist/components/Form/Wrapper/Wrapper/Wrapper.test.d.ts +1 -0
- package/dist/components/Form/form.interfaces.d.ts +16 -0
- package/dist/components/Icon/Icon.d.ts +114 -0
- package/dist/components/Icon/Icon.test.d.ts +1 -0
- package/dist/components/InlineEditing/InlineCheckbox/InlineCheckbox.d.ts +6 -0
- package/dist/components/InlineEditing/InlineEditingContext.d.ts +10 -0
- package/dist/components/InlineEditing/InlineEditingSelect/InlineSelect.d.ts +6 -0
- package/dist/components/Layout/Card/Card.d.ts +16 -0
- package/dist/components/Layout/Card/Card.test.d.ts +0 -0
- package/dist/components/Layout/ContentHeader/ContentHeader.d.ts +24 -0
- package/dist/components/Layout/ContentHeader/ContentHeader.test.d.ts +1 -0
- package/dist/components/Layout/FormPage/FormWithStepper/FormSection/FormSection.d.ts +7 -0
- package/dist/components/Layout/FormPage/FormWithStepper/FormSection/FormSection.test.d.ts +1 -0
- package/dist/components/Layout/FormPage/FormWithStepper/FormStepper/FormStepper.d.ts +10 -0
- package/dist/components/Layout/FormPage/FormWithStepper/FormStepper/FormStepper.test.d.ts +1 -0
- package/dist/components/Layout/FormPage/FormWithStepper/FormWithStepper.d.ts +6 -0
- package/dist/components/Layout/FormPage/FormWithStepper/FormWithStepper.test.d.ts +1 -0
- package/dist/components/Link/Link.d.ts +14 -0
- package/dist/components/Link/Link.test.d.ts +1 -0
- package/dist/components/Notifications/Alert/AlertContainer/AlertContainer.d.ts +12 -0
- package/dist/components/Notifications/Alert/AlertContainer/AlertContainer.test.d.ts +1 -0
- package/dist/components/Notifications/Alert/AlertContainer/useAlertContainerHeightAnimation.d.ts +4 -0
- package/dist/components/Notifications/Alert/AlertItem/AlertItem.d.ts +22 -0
- package/dist/components/Notifications/Alert/AlertItem/AlertItem.test.d.ts +1 -0
- package/dist/components/Notifications/Alert/AlertProvider/AlertContext.d.ts +13 -0
- package/dist/components/Notifications/Alert/AlertProvider/AlertProvider.d.ts +22 -0
- package/dist/components/Notifications/Alert/AlertProvider/AlertProvider.test.d.ts +1 -0
- package/dist/components/Notifications/Alert/useAlert.d.ts +7 -0
- package/dist/components/Notifications/Alert/useAlert.test.d.ts +1 -0
- package/dist/components/Notifications/Banner/Banner.d.ts +11 -0
- package/dist/components/Notifications/Banner/Banner.test.d.ts +1 -0
- package/dist/components/Notifications/BaseModal/BaseModal.d.ts +21 -0
- package/dist/components/Notifications/BaseModal/BaseModal.test.d.ts +1 -0
- package/dist/components/Notifications/BaseModal/BaseModalActions/BaseModalActions.d.ts +13 -0
- package/dist/components/Notifications/BaseModal/BaseModalActions/BaseModalActions.test.d.ts +1 -0
- package/dist/components/Notifications/BaseModal/BaseModalContent/BaseModalContent.d.ts +8 -0
- package/dist/components/Notifications/BaseModal/BaseModalContent/BaseModalContent.test.d.ts +1 -0
- package/dist/components/Notifications/BaseModal/BaseModalContext.d.ts +2 -0
- package/dist/components/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.d.ts +9 -0
- package/dist/components/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.test.d.ts +1 -0
- package/dist/components/Notifications/Dialog/Dialog.d.ts +22 -0
- package/dist/components/Notifications/Dialog/Dialog.test.d.ts +1 -0
- package/dist/components/Notifications/Dialog/DialogActions/DialogActions.d.ts +6 -0
- package/dist/components/Notifications/Dialog/DialogActions/DialogActions.test.d.ts +1 -0
- package/dist/components/Notifications/Dialog/DialogTitle/DialogTitle.d.ts +9 -0
- package/dist/components/Notifications/Dialog/DialogTitle/DialogTitle.test.d.ts +1 -0
- package/dist/components/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.d.ts +15 -0
- package/dist/components/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.test.d.ts +1 -0
- package/dist/components/Notifications/DiscardChangesModal/DiscardChangesModal.d.ts +13 -0
- package/dist/components/Notifications/DiscardChangesModal/DiscardChangesModal.test.d.ts +1 -0
- package/dist/components/Notifications/Modal/Modal.d.ts +2 -0
- package/dist/components/Notifications/Modal/Modal.test.d.ts +1 -0
- package/dist/components/Notifications/Modal/ModalActions/ModalActions.d.ts +2 -0
- package/dist/components/Notifications/Modal/ModalContent/ModalContent.d.ts +2 -0
- package/dist/components/Notifications/Modal/ModalHeader/ModalHeader.d.ts +2 -0
- package/dist/components/Notifications/NotificationProvider/NotificationContext.d.ts +35 -0
- package/dist/components/Notifications/NotificationProvider/NotificationContext.test.d.ts +1 -0
- package/dist/components/Notifications/NotificationProvider/NotificationService.d.ts +2 -0
- package/dist/components/Notifications/NotificationProvider/notification.interfaces.d.ts +46 -0
- package/dist/components/Notifications/SideSheet/SideSheet.d.ts +10 -0
- package/dist/components/Notifications/SideSheet/SideSheet.test.d.ts +1 -0
- package/dist/components/Notifications/SideSheet/SideSheetActions/SideSheetActions.d.ts +2 -0
- package/dist/components/Notifications/SideSheet/SideSheetContent/SideSheetContent.d.ts +4 -0
- package/dist/components/Notifications/SideSheet/SideSheetHeader/SideSheetHeader.d.ts +4 -0
- package/dist/components/Notifications/SlideInModal/SlideInModal.d.ts +4 -0
- package/dist/components/Notifications/SlideInModal/SlideInModal.test.d.ts +1 -0
- package/dist/components/Pagination/Pagination.d.ts +19 -0
- package/dist/components/Pagination/Pagination.test.d.ts +1 -0
- package/dist/components/Popover/Popover.d.ts +13 -0
- package/dist/components/Popover/Popover.test.d.ts +1 -0
- package/dist/components/ProgressBar/ProgressBar.d.ts +9 -0
- package/dist/components/ProgressBar/ProgressBar.test.d.ts +1 -0
- package/dist/components/RequiredSign/RequiredSign.d.ts +5 -0
- package/dist/components/Skeleton/Skeleton.d.ts +7 -0
- package/dist/components/Skeleton/Skeleton.test.d.ts +1 -0
- package/dist/components/Spinner/Spinner.d.ts +6 -0
- package/dist/components/Spinner/Spinner.test.d.ts +1 -0
- package/dist/components/Stepper/Step.d.ts +15 -0
- package/dist/components/Stepper/Stepper.d.ts +8 -0
- package/dist/components/Stepper/Stepper.test.d.ts +1 -0
- package/dist/components/Tabs/Tab.d.ts +8 -0
- package/dist/components/Tabs/Tab.test.d.ts +1 -0
- package/dist/components/Tabs/TabButton.d.ts +9 -0
- package/dist/components/Tabs/TabButton.test.d.ts +1 -0
- package/dist/components/Tabs/Tabs.d.ts +13 -0
- package/dist/components/Tabs/Tabs.test.d.ts +1 -0
- package/dist/components/Tag/RemoveButton.d.ts +7 -0
- package/dist/components/Tag/Tag.d.ts +13 -0
- package/dist/components/Tag/Tag.test.d.ts +1 -0
- package/dist/components/TextEllipsis/TextEllipsis.d.ts +6 -0
- package/dist/components/TextEllipsis/TextEllipsis.test.d.ts +1 -0
- package/dist/components/Tiles/Tile.d.ts +15 -0
- package/dist/components/Tiles/Tile.test.d.ts +1 -0
- package/dist/components/Tiles/Tiles.d.ts +6 -0
- package/dist/components/Tiles/Tiles.test.d.ts +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +13 -0
- package/dist/components/Tooltip/Tooltip.test.d.ts +1 -0
- package/dist/components/Typography/Typography.d.ts +14 -0
- package/dist/components/Typography/Typography.test.d.ts +1 -0
- package/dist/components/_BaseStyling_/BaseStyling.d.ts +208 -0
- package/dist/components/_BaseStyling_/BaseStyling.test.d.ts +1 -0
- package/dist/components/_BaseStyling_/buttonBaseStyling.d.ts +14 -0
- package/dist/components/admin/layout/LeftNav/LeftNav.d.ts +13 -0
- package/dist/components/admin/layout/LeftNav/LeftNav.interfaces.d.ts +13 -0
- package/dist/components/admin/layout/LeftNav/LeftNav.test.d.ts +0 -0
- package/dist/components/admin/layout/LeftNav/LeftNavItem/ButtonLeftNavItem.d.ts +14 -0
- package/dist/components/admin/layout/LeftNav/LeftNavItem/LeftNavItem.d.ts +3 -0
- package/dist/components/admin/layout/LeftNav/LeftNavItem/LeftNavItem.interface.d.ts +11 -0
- package/dist/components/admin/layout/LeftNav/LeftNavItem/LeftNavItem.test.d.ts +0 -0
- package/dist/components/admin/layout/LeftNav/LeftNavItem/LinkLeftNavItem.d.ts +12 -0
- package/dist/components/admin/layout/LeftNav/LeftNavItem/useKeyboardNavigation.d.ts +13 -0
- package/dist/components/admin/layout/LeftNav/useRefItems.d.ts +22 -0
- package/dist/components/admin/layout/LeftNav/useRefItems.test.d.ts +1 -0
- package/dist/components/admin/layout/MicrofrontendContainer/MicrofrontendContainer.d.ts +8 -0
- package/dist/components/miscellaneous/IdentityProviderButton.d.ts +18 -0
- package/dist/components/miscellaneous/IdentityProviderButton.test.d.ts +1 -0
- package/dist/components/withReadOnly.d.ts +12 -0
- package/dist/components/withReadOnly.test.d.ts +1 -0
- package/dist/hooks/useAnimation.d.ts +5 -0
- package/dist/hooks/useAnimation.test.d.ts +1 -0
- package/dist/hooks/useClickOutside.d.ts +2 -0
- package/dist/hooks/useClickOutside.test.d.ts +1 -0
- package/dist/hooks/useDebouncedCallback.d.ts +1 -0
- package/dist/hooks/useDebouncedCallback.test.d.ts +1 -0
- package/dist/hooks/useDetermineStatusIcon.d.ts +3 -0
- package/dist/hooks/useDetermineStatusIcon.test.d.ts +1 -0
- package/dist/hooks/useFormSelector.d.ts +13 -0
- package/dist/hooks/useFormSelector.test.d.ts +1 -0
- package/dist/hooks/useFullHeightCollapse.d.ts +4 -0
- package/dist/hooks/useFullHeightCollapse.test.d.ts +1 -0
- package/dist/hooks/useGetDomRoot.d.ts +3 -0
- package/dist/hooks/usePosition.d.ts +50 -0
- package/dist/hooks/usePosition.test.d.ts +1 -0
- package/dist/hooks/useRepeatFocus.d.ts +7 -0
- package/dist/hooks/useRepeater.d.ts +10 -0
- package/dist/hooks/useRepeater.test.d.ts +6 -0
- package/dist/hooks/useScreenSize.d.ts +9 -0
- package/dist/hooks/useScreenSize.test.d.ts +1 -0
- package/dist/hooks/useScroll.d.ts +2 -0
- package/dist/hooks/useScroll.test.d.ts +1 -0
- package/dist/hooks/useSpacing.d.ts +18 -0
- package/dist/hooks/useSpacing.test.d.ts +1 -0
- package/dist/hooks/useUploadFile.d.ts +27 -0
- package/dist/hooks/useUploadFile.test.d.ts +1 -0
- package/dist/hooks/useWrapper.d.ts +7 -0
- package/dist/hooks/useWrapper.test.d.ts +1 -0
- package/dist/index.cjs.js +205 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +175 -0
- package/dist/index.es.js +65380 -0
- package/dist/index.es.js.map +1 -0
- package/dist/interfaces.d.ts +9 -0
- package/dist/util/helper.d.ts +14 -0
- package/dist/util/helper.test.d.ts +1 -0
- package/dist/util/unitTestUtils.d.ts +12 -0
- package/dist/utils/statusUtils.d.ts +10 -0
- package/dist/variables.d.ts +8 -0
- package/package.json +144 -0
- package/src/_functions.scss +19 -0
- package/src/components/Breadcrumbs/Breadcrumbs.module.scss +54 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +84 -0
- package/src/components/Button/BaseButton.module.scss +48 -0
- package/src/components/Button/BaseButton.tsx +65 -0
- package/src/components/Button/Button.module.scss +58 -0
- package/src/components/Button/Button.tsx +70 -0
- package/src/components/Button/IconButton.module.scss +73 -0
- package/src/components/Button/IconButton.tsx +63 -0
- package/src/components/Button/Spinner.tsx +33 -0
- package/src/components/ContextMenu/ContextMenu.module.scss +41 -0
- package/src/components/ContextMenu/ContextMenu.tsx +206 -0
- package/src/components/ContextMenu/ContextMenuItem.module.scss +73 -0
- package/src/components/ContextMenu/ContextMenuItem.tsx +100 -0
- package/src/components/ContextMenu/ContextMenuService.ts +171 -0
- package/src/components/DataGrid/DataGrid.module.scss +51 -0
- package/src/components/DataGrid/DataGrid.tsx +225 -0
- package/src/components/DataGrid/DataGridActions/DataGridActions.module.scss +51 -0
- package/src/components/DataGrid/DataGridActions/DataGridActions.tsx +140 -0
- package/src/components/DataGrid/DataGridActions/DataGridColumnsToggle.module.scss +58 -0
- package/src/components/DataGrid/DataGridActions/DataGridColumnsToggle.tsx +107 -0
- package/src/components/DataGrid/DataGridBody/DataGridBody.module.scss +26 -0
- package/src/components/DataGrid/DataGridBody/DataGridBody.tsx +110 -0
- package/src/components/DataGrid/DataGridBody/DataGridCell/DataGridCell.module.scss +61 -0
- package/src/components/DataGrid/DataGridBody/DataGridCell/DataGridCell.tsx +131 -0
- package/src/components/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawer.module.scss +60 -0
- package/src/components/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawer.tsx +39 -0
- package/src/components/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawerItem.module.scss +21 -0
- package/src/components/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawerItem.tsx +47 -0
- package/src/components/DataGrid/DataGridBody/DataGridRow/DataGridRow.module.scss +127 -0
- package/src/components/DataGrid/DataGridBody/DataGridRow/DataGridRow.tsx +192 -0
- package/src/components/DataGrid/DataGridBody/DataGridRow/useNestedRow.tsx +143 -0
- package/src/components/DataGrid/DataGridBody/__snapshots__/DataGridBody.test.tsx.snap +262 -0
- package/src/components/DataGrid/DataGridFilters/DataGridDateFilter.tsx +65 -0
- package/src/components/DataGrid/DataGridFilters/DataGridFilter.module.scss +116 -0
- package/src/components/DataGrid/DataGridFilters/DataGridFilter.tsx +161 -0
- package/src/components/DataGrid/DataGridFilters/DataGridFilterPopover.tsx +172 -0
- package/src/components/DataGrid/DataGridFilters/DataGridFilterService.ts +124 -0
- package/src/components/DataGrid/DataGridFilters/DataGridFilterTag.tsx +146 -0
- package/src/components/DataGrid/DataGridFilters/DataGridFilterValueSelect.tsx +136 -0
- package/src/components/DataGrid/DataGridFilters/DataGridFilters.interfaces.ts +123 -0
- package/src/components/DataGrid/DataGridFilters/DataGridSearchbar.tsx +71 -0
- package/src/components/DataGrid/DataGridFilters/DataGridToolbar.module.scss +73 -0
- package/src/components/DataGrid/DataGridFilters/DataGridToolbar.tsx +132 -0
- package/src/components/DataGrid/DataGridFilters/DataGridToolbarWrapper.tsx +38 -0
- package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss +136 -0
- package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.tsx +267 -0
- package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.tsx +103 -0
- package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.tsx +121 -0
- package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.ts +30 -0
- package/src/components/DataGrid/DataGridFilters/DateTimePicker/SideMenu.tsx +50 -0
- package/src/components/DataGrid/DataGridFilters/FilterKeyMapper.ts +48 -0
- package/src/components/DataGrid/DataGridFilters/useFiltersReducer.tsx +73 -0
- package/src/components/DataGrid/DataGridHeader/DataGridHeader.module.scss +32 -0
- package/src/components/DataGrid/DataGridHeader/DataGridHeader.tsx +128 -0
- package/src/components/DataGrid/DataGridHeader/DataGridHeaderCell.module.scss +93 -0
- package/src/components/DataGrid/DataGridHeader/DataGridHeaderCell.tsx +83 -0
- package/src/components/DataGrid/dataGridMixins.module.scss +33 -0
- package/src/components/DataGrid/datagrid.interfaces.ts +30 -0
- package/src/components/DataGrid/testUtils.ts +117 -0
- package/src/components/DatePicker/DatePicker.module.scss +360 -0
- package/src/components/DatePicker/DatePicker.tsx +98 -0
- package/src/components/Form/Checkbox/Checkbox.module.scss +221 -0
- package/src/components/Form/Checkbox/Checkbox.tsx +205 -0
- package/src/components/Form/Fieldset/Fieldset.module.scss +49 -0
- package/src/components/Form/Fieldset/Fieldset.tsx +128 -0
- package/src/components/Form/FileUpload/FileItem/FileItem.module.scss +204 -0
- package/src/components/Form/FileUpload/FileItem/FileItem.tsx +271 -0
- package/src/components/Form/FileUpload/FileUpload.module.scss +241 -0
- package/src/components/Form/FileUpload/FileUpload.tsx +317 -0
- package/src/components/Form/Form.module.scss +19 -0
- package/src/components/Form/Form.tsx +35 -0
- package/src/components/Form/FormControl/FormControl.module.scss +65 -0
- package/src/components/Form/FormControl/FormControl.tsx +62 -0
- package/src/components/Form/FormErrorText/FormErrorText.module.scss +35 -0
- package/src/components/Form/FormErrorText/FormErrorText.tsx +65 -0
- package/src/components/Form/FormGroup/FormGroup.module.scss +24 -0
- package/src/components/Form/FormGroup/FormGroup.tsx +96 -0
- package/src/components/Form/FormHelperText/FormHelperText.module.scss +32 -0
- package/src/components/Form/FormHelperText/FormHelperText.tsx +43 -0
- package/src/components/Form/FormSection/FormSection.module.scss +12 -0
- package/src/components/Form/FormSelectorWrapper/FormSelectorWrapper.module.scss +68 -0
- package/src/components/Form/FormSelectorWrapper/FormSelectorWrapper.tsx +117 -0
- package/src/components/Form/FormStatusIndicator/FormStatusIndicator.tsx +75 -0
- package/src/components/Form/Input/Input.module.scss +186 -0
- package/src/components/Form/Input/Input.tsx +161 -0
- package/src/components/Form/Label/Label.module.scss +21 -0
- package/src/components/Form/Label/Label.tsx +40 -0
- package/src/components/Form/Radio/Radio.module.scss +196 -0
- package/src/components/Form/Radio/Radio.tsx +142 -0
- package/src/components/Form/Select/MultiSelect/MultiOption.tsx +66 -0
- package/src/components/Form/Select/MultiSelect/MultiSelect.module.scss +318 -0
- package/src/components/Form/Select/MultiSelect/MultiSelect.tsx +406 -0
- package/src/components/Form/Select/MultiSelect/SelectButton.module.scss +28 -0
- package/src/components/Form/Select/MultiSelect/SelectButton.tsx +37 -0
- package/src/components/Form/Select/MultiSelect/SelectedOptions.module.scss +39 -0
- package/src/components/Form/Select/MultiSelect/SelectedOptions.tsx +68 -0
- package/src/components/Form/Select/MultiSelect/useArrowNavigation.ts +133 -0
- package/src/components/Form/Select/MultiSelect/useMultiSelect.tsx +98 -0
- package/src/components/Form/Select/MultiSelect/useSearch.tsx +117 -0
- package/src/components/Form/Select/Select.interfaces.ts +84 -0
- package/src/components/Form/Select/SingleSelect/Option.tsx +116 -0
- package/src/components/Form/Select/SingleSelect/Select.module.scss +409 -0
- package/src/components/Form/Select/SingleSelect/Select.tsx +312 -0
- package/src/components/Form/Select/SingleSelect/useArrowNavigation.ts +177 -0
- package/src/components/Form/Select/SingleSelect/useSearch.tsx +113 -0
- package/src/components/Form/Select/useAddNewBtn.module.scss +66 -0
- package/src/components/Form/Select/useAddNewBtn.tsx +89 -0
- package/src/components/Form/Select/useSelectPositionList.ts +109 -0
- package/src/components/Form/Textarea/Textarea.module.scss +142 -0
- package/src/components/Form/Textarea/Textarea.tsx +97 -0
- package/src/components/Form/Toggle/Toggle.module.scss +214 -0
- package/src/components/Form/Toggle/Toggle.tsx +80 -0
- package/src/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.module.scss +32 -0
- package/src/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.tsx +99 -0
- package/src/components/Form/Wrapper/InputWrapper/InputWrapper.module.scss +79 -0
- package/src/components/Form/Wrapper/InputWrapper/InputWrapper.tsx +125 -0
- package/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.module.scss +27 -0
- package/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.tsx +88 -0
- package/src/components/Form/Wrapper/RadioWrapper/RadioWrapper.module.scss +30 -0
- package/src/components/Form/Wrapper/RadioWrapper/RadioWrapper.tsx +109 -0
- package/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.module.scss +27 -0
- package/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.tsx +89 -0
- package/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss +100 -0
- package/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx +154 -0
- package/src/components/Form/Wrapper/Wrapper/Wrapper.module.scss +87 -0
- package/src/components/Form/Wrapper/Wrapper/Wrapper.tsx +116 -0
- package/src/components/Form/form.interfaces.ts +34 -0
- package/src/components/Icon/Icon.module.scss +455 -0
- package/src/components/Icon/Icon.tsx +152 -0
- package/src/components/InlineEditing/InlineCheckbox/InlineCheckbox.tsx +40 -0
- package/src/components/InlineEditing/InlineEditingContext.tsx +32 -0
- package/src/components/InlineEditing/InlineEditingSelect/InlineSelect.tsx +44 -0
- package/src/components/Layout/Card/Card.module.scss +68 -0
- package/src/components/Layout/Card/Card.tsx +108 -0
- package/src/components/Layout/ContentHeader/ContentHeader.module.scss +95 -0
- package/src/components/Layout/ContentHeader/ContentHeader.tsx +146 -0
- package/src/components/Layout/FormPage/FormWithStepper/FormSection/FormSection.module.scss +12 -0
- package/src/components/Layout/FormPage/FormWithStepper/FormSection/FormSection.tsx +53 -0
- package/src/components/Layout/FormPage/FormWithStepper/FormStepper/FormStepper.module.scss +25 -0
- package/src/components/Layout/FormPage/FormWithStepper/FormStepper/FormStepper.tsx +54 -0
- package/src/components/Layout/FormPage/FormWithStepper/FormWithStepper.module.scss +36 -0
- package/src/components/Layout/FormPage/FormWithStepper/FormWithStepper.tsx +32 -0
- package/src/components/Link/Link.module.scss +106 -0
- package/src/components/Link/Link.tsx +111 -0
- package/src/components/Notifications/Alert/AlertContainer/AlertContainer.module.scss +57 -0
- package/src/components/Notifications/Alert/AlertContainer/AlertContainer.tsx +52 -0
- package/src/components/Notifications/Alert/AlertContainer/useAlertContainerHeightAnimation.ts +47 -0
- package/src/components/Notifications/Alert/AlertItem/AlertItem.module.scss +279 -0
- package/src/components/Notifications/Alert/AlertItem/AlertItem.tsx +214 -0
- package/src/components/Notifications/Alert/AlertProvider/AlertContext.ts +42 -0
- package/src/components/Notifications/Alert/AlertProvider/AlertProvider.tsx +173 -0
- package/src/components/Notifications/Alert/alertVariables.scss +17 -0
- package/src/components/Notifications/Alert/useAlert.ts +30 -0
- package/src/components/Notifications/Banner/Banner.module.scss +76 -0
- package/src/components/Notifications/Banner/Banner.tsx +78 -0
- package/src/components/Notifications/BaseModal/BaseModal.module.scss +76 -0
- package/src/components/Notifications/BaseModal/BaseModal.tsx +186 -0
- package/src/components/Notifications/BaseModal/BaseModalActions/BaseModalActions.module.scss +65 -0
- package/src/components/Notifications/BaseModal/BaseModalActions/BaseModalActions.tsx +66 -0
- package/src/components/Notifications/BaseModal/BaseModalContent/BaseModalContent.module.scss +25 -0
- package/src/components/Notifications/BaseModal/BaseModalContent/BaseModalContent.tsx +60 -0
- package/src/components/Notifications/BaseModal/BaseModalContext.ts +18 -0
- package/src/components/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.module.scss +43 -0
- package/src/components/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.tsx +69 -0
- package/src/components/Notifications/Dialog/Dialog.module.scss +31 -0
- package/src/components/Notifications/Dialog/Dialog.tsx +143 -0
- package/src/components/Notifications/Dialog/DialogActions/DialogActions.module.scss +35 -0
- package/src/components/Notifications/Dialog/DialogActions/DialogActions.tsx +48 -0
- package/src/components/Notifications/Dialog/DialogTitle/DialogTitle.module.scss +58 -0
- package/src/components/Notifications/Dialog/DialogTitle/DialogTitle.tsx +75 -0
- package/src/components/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.tsx +77 -0
- package/src/components/Notifications/DiscardChangesModal/DiscardChangesModal.tsx +77 -0
- package/src/components/Notifications/Modal/Modal.tsx +18 -0
- package/src/components/Notifications/Modal/ModalActions/ModalActions.tsx +18 -0
- package/src/components/Notifications/Modal/ModalContent/ModalContent.tsx +18 -0
- package/src/components/Notifications/Modal/ModalHeader/ModalHeader.tsx +18 -0
- package/src/components/Notifications/NotificationProvider/NotificationContext.tsx +217 -0
- package/src/components/Notifications/NotificationProvider/NotificationService.ts +33 -0
- package/src/components/Notifications/NotificationProvider/notification.interfaces.ts +68 -0
- package/src/components/Notifications/SideSheet/SideSheet.module.scss +97 -0
- package/src/components/Notifications/SideSheet/SideSheet.tsx +114 -0
- package/src/components/Notifications/SideSheet/SideSheetActions/SideSheetActions.tsx +18 -0
- package/src/components/Notifications/SideSheet/SideSheetContent/SideSheetContent.module.scss +19 -0
- package/src/components/Notifications/SideSheet/SideSheetContent/SideSheetContent.tsx +25 -0
- package/src/components/Notifications/SideSheet/SideSheetHeader/SideSheetHeader.module.scss +19 -0
- package/src/components/Notifications/SideSheet/SideSheetHeader/SideSheetHeader.tsx +25 -0
- package/src/components/Notifications/SlideInModal/SlideInModal.module.scss +54 -0
- package/src/components/Notifications/SlideInModal/SlideInModal.tsx +75 -0
- package/src/components/Pagination/Pagination.module.scss +162 -0
- package/src/components/Pagination/Pagination.tsx +235 -0
- package/src/components/Popover/Popover.module.scss +42 -0
- package/src/components/Popover/Popover.tsx +142 -0
- package/src/components/ProgressBar/ProgressBar.module.scss +95 -0
- package/src/components/ProgressBar/ProgressBar.tsx +75 -0
- package/src/components/RequiredSign/RequiredSign.tsx +28 -0
- package/src/components/Skeleton/Skeleton.module.scss +36 -0
- package/src/components/Skeleton/Skeleton.tsx +48 -0
- package/src/components/Spinner/Spinner.module.scss +33 -0
- package/src/components/Spinner/Spinner.tsx +61 -0
- package/src/components/Stepper/Step.module.scss +301 -0
- package/src/components/Stepper/Step.tsx +116 -0
- package/src/components/Stepper/Stepper.module.scss +17 -0
- package/src/components/Stepper/Stepper.tsx +53 -0
- package/src/components/Tabs/Tab.module.scss +27 -0
- package/src/components/Tabs/Tab.tsx +41 -0
- package/src/components/Tabs/TabButton.module.scss +87 -0
- package/src/components/Tabs/TabButton.tsx +66 -0
- package/src/components/Tabs/Tabs.module.scss +58 -0
- package/src/components/Tabs/Tabs.tsx +217 -0
- package/src/components/Tag/RemoveButton.module.scss +42 -0
- package/src/components/Tag/RemoveButton.tsx +53 -0
- package/src/components/Tag/Tag.module.scss +43 -0
- package/src/components/Tag/Tag.tsx +79 -0
- package/src/components/TextEllipsis/TextEllipsis.module.scss +35 -0
- package/src/components/TextEllipsis/TextEllipsis.tsx +80 -0
- package/src/components/Tiles/Tile.module.scss +91 -0
- package/src/components/Tiles/Tile.tsx +105 -0
- package/src/components/Tiles/Tiles.module.scss +27 -0
- package/src/components/Tiles/Tiles.tsx +70 -0
- package/src/components/Tooltip/Tooltip.module.scss +221 -0
- package/src/components/Tooltip/Tooltip.tsx +251 -0
- package/src/components/Typography/Typography.module.scss +80 -0
- package/src/components/Typography/Typography.tsx +111 -0
- package/src/components/_BaseStyling_/BaseStyling.tsx +481 -0
- package/src/components/_BaseStyling_/buttonBaseStyling.ts +123 -0
- package/src/components/admin/layout/LeftNav/LeftNav.interfaces.ts +30 -0
- package/src/components/admin/layout/LeftNav/LeftNav.module.scss +66 -0
- package/src/components/admin/layout/LeftNav/LeftNav.tsx +96 -0
- package/src/components/admin/layout/LeftNav/LeftNavItem/ButtonLeftNavItem.tsx +173 -0
- package/src/components/admin/layout/LeftNav/LeftNavItem/LeftNavItem.interface.ts +28 -0
- package/src/components/admin/layout/LeftNav/LeftNavItem/LeftNavItem.module.scss +222 -0
- package/src/components/admin/layout/LeftNav/LeftNavItem/LeftNavItem.tsx +34 -0
- package/src/components/admin/layout/LeftNav/LeftNavItem/LinkLeftNavItem.tsx +106 -0
- package/src/components/admin/layout/LeftNav/LeftNavItem/useKeyboardNavigation.ts +75 -0
- package/src/components/admin/layout/LeftNav/useRefItems.ts +280 -0
- package/src/components/admin/layout/MicrofrontendContainer/MicrofrontendContainer.module.scss +25 -0
- package/src/components/admin/layout/MicrofrontendContainer/MicrofrontendContainer.tsx +47 -0
- package/src/components/miscellaneous/IdentityProviderButton.module.scss +31 -0
- package/src/components/miscellaneous/IdentityProviderButton.tsx +92 -0
- package/src/components/withReadOnly.tsx +121 -0
- package/src/font/README.md +47 -0
- package/src/font/icomoon.eot +0 -0
- package/src/font/icomoon.svg +111 -0
- package/src/font/icomoon.ttf +0 -0
- package/src/font/icomoon.woff +0 -0
- package/src/font/selection.json +1 -0
- package/src/hooks/useAnimation.ts +36 -0
- package/src/hooks/useClickOutside.ts +42 -0
- package/src/hooks/useDebouncedCallback.tsx +34 -0
- package/src/hooks/useDetermineStatusIcon.tsx +33 -0
- package/src/hooks/useFormSelector.ts +63 -0
- package/src/hooks/useFullHeightCollapse.ts +33 -0
- package/src/hooks/useGetDomRoot.ts +40 -0
- package/src/hooks/usePosition.ts +387 -0
- package/src/hooks/useRepeatFocus.tsx +89 -0
- package/src/hooks/useRepeater.ts +50 -0
- package/src/hooks/useScreenSize.ts +60 -0
- package/src/hooks/useScroll.ts +32 -0
- package/src/hooks/useSpacing.ts +58 -0
- package/src/hooks/useUploadFile.tsx +141 -0
- package/src/hooks/useWrapper.ts +33 -0
- package/src/index.ts +237 -0
- package/src/interfaces.ts +37 -0
- package/src/mixins.module.scss +371 -0
- package/src/readyclasses.module.scss +64 -0
- package/src/types.d.ts +20 -0
- package/src/util/helper.tsx +219 -0
- package/src/util/unitTestUtils.ts +32 -0
- package/src/utils/statusUtils.ts +51 -0
- package/src/variables.scss +38 -0
- package/src/variables.ts +32 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 OneWelcome B.V.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import React, { ForwardRefRenderFunction, HTMLProps, MouseEvent, Ref } from "react";
|
|
18
|
+
import classes from "./LeftNavItem.module.scss";
|
|
19
|
+
import { MenuItem } from "../LeftNav.interfaces";
|
|
20
|
+
import { Link } from "../../../../Link/Link";
|
|
21
|
+
import { useKeyboardNavigation } from "./useKeyboardNavigation";
|
|
22
|
+
import { UseRefItemsReturnType } from "../useRefItems";
|
|
23
|
+
|
|
24
|
+
export interface Props extends HTMLProps<HTMLElement> {
|
|
25
|
+
item: MenuItem;
|
|
26
|
+
navigate: (path: string) => void;
|
|
27
|
+
onItemClick?: (path?: string, button?: boolean) => void;
|
|
28
|
+
refItems: UseRefItemsReturnType;
|
|
29
|
+
closeParentList?: () => void;
|
|
30
|
+
internalLinkPrefix?: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const LinkLeftNavItemComponent: ForwardRefRenderFunction<HTMLElement, Props> = (
|
|
34
|
+
{ item, onItemClick, refItems, closeParentList, navigate, internalLinkPrefix = "" },
|
|
35
|
+
ref
|
|
36
|
+
) => {
|
|
37
|
+
const { onKeyPressNavigation } = useKeyboardNavigation({ refItems, item, closeParentList });
|
|
38
|
+
|
|
39
|
+
const onLinkClickHandler = (event: MouseEvent<HTMLAnchorElement>) => {
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
if (!item.disabled) {
|
|
42
|
+
onItemClick?.(item.path);
|
|
43
|
+
item.path && navigate(item.path);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const getStylingClasses = () => {
|
|
48
|
+
const menuItemLinkClasses = [classes["menu-item"], classes["menu-link"]];
|
|
49
|
+
item.active && menuItemLinkClasses.push(classes["menu-item-active"]);
|
|
50
|
+
item.disabled && menuItemLinkClasses.push(classes["disabled"]);
|
|
51
|
+
const menuLinkWrapperClasses = [classes["menu-list-item"]];
|
|
52
|
+
return {
|
|
53
|
+
menuItemLinkClasses,
|
|
54
|
+
menuLinkWrapperClasses
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const { menuItemLinkClasses, menuLinkWrapperClasses } = getStylingClasses();
|
|
59
|
+
const tabIndexActive = item.active ? 0 : -1;
|
|
60
|
+
const tabIndex = item.disabled ? -1 : tabIndexActive;
|
|
61
|
+
|
|
62
|
+
return (
|
|
63
|
+
<li className={menuLinkWrapperClasses.join(" ")} data-testid={`${item.key}`}>
|
|
64
|
+
{item.path?.match(/^https?:\/\//) ? (
|
|
65
|
+
<Link
|
|
66
|
+
ref={ref as Ref<HTMLAnchorElement>}
|
|
67
|
+
onKeyDown={onKeyPressNavigation}
|
|
68
|
+
data-testid={`left-nav-item-${item.key}`}
|
|
69
|
+
aria-current={item.active ? "page" : false}
|
|
70
|
+
aria-disabled={item.disabled}
|
|
71
|
+
className={menuItemLinkClasses.join(" ")}
|
|
72
|
+
to={item.path ?? ""}
|
|
73
|
+
type="external"
|
|
74
|
+
disabled={item.disabled}
|
|
75
|
+
tabIndex={tabIndex}
|
|
76
|
+
>
|
|
77
|
+
<div className={classes["menu-item-text-wrapper"]}>
|
|
78
|
+
{item.iconComponent &&
|
|
79
|
+
React.cloneElement(item.iconComponent, { className: classes["menu-item-icon"] })}
|
|
80
|
+
<span className={classes["menu-item-text"]}>{item.title}</span>
|
|
81
|
+
</div>
|
|
82
|
+
</Link>
|
|
83
|
+
) : (
|
|
84
|
+
<a
|
|
85
|
+
ref={ref as Ref<HTMLAnchorElement>}
|
|
86
|
+
onKeyDown={onKeyPressNavigation}
|
|
87
|
+
onClick={onLinkClickHandler}
|
|
88
|
+
data-testid={`left-nav-item-${item.key}`}
|
|
89
|
+
aria-current={item.active ? "page" : false}
|
|
90
|
+
aria-disabled={item.disabled}
|
|
91
|
+
className={menuItemLinkClasses.join(" ")}
|
|
92
|
+
href={item.path ? internalLinkPrefix + item.path : ""}
|
|
93
|
+
tabIndex={tabIndex}
|
|
94
|
+
>
|
|
95
|
+
<div className={classes["menu-item-text-wrapper"]}>
|
|
96
|
+
{item.iconComponent &&
|
|
97
|
+
React.cloneElement(item.iconComponent, { className: classes["menu-item-icon"] })}
|
|
98
|
+
<span className={classes["menu-item-text"]}>{item.title}</span>
|
|
99
|
+
</div>
|
|
100
|
+
</a>
|
|
101
|
+
)}
|
|
102
|
+
</li>
|
|
103
|
+
);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export const LinkLeftNavItem = React.forwardRef(LinkLeftNavItemComponent);
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 OneWelcome B.V.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { KeyboardEvent } from "react";
|
|
18
|
+
import { MenuItem } from "../LeftNav.interfaces";
|
|
19
|
+
import { UseRefItemsReturnType } from "../useRefItems";
|
|
20
|
+
|
|
21
|
+
interface Props {
|
|
22
|
+
item: MenuItem;
|
|
23
|
+
refItems: UseRefItemsReturnType;
|
|
24
|
+
closeParentList?: () => void;
|
|
25
|
+
onExpandIconClickHandler?: () => void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export const useKeyboardNavigation = ({
|
|
29
|
+
refItems,
|
|
30
|
+
item,
|
|
31
|
+
closeParentList,
|
|
32
|
+
onExpandIconClickHandler
|
|
33
|
+
}: Props) => {
|
|
34
|
+
const isButtonLeftNavItem = !!onExpandIconClickHandler;
|
|
35
|
+
const onKeyPressNavigation = (e: KeyboardEvent<HTMLButtonElement | HTMLAnchorElement>) => {
|
|
36
|
+
if (e.code === "Escape" || e.code === "ArrowLeft") {
|
|
37
|
+
e.preventDefault();
|
|
38
|
+
e.stopPropagation();
|
|
39
|
+
closeParentList?.();
|
|
40
|
+
refItems.getParentElement(item.key)?.focus();
|
|
41
|
+
}
|
|
42
|
+
if (e.code === "ArrowUp") {
|
|
43
|
+
e.preventDefault();
|
|
44
|
+
e.stopPropagation();
|
|
45
|
+
refItems.getPrevElementOnSameLevel(item.key)?.focus();
|
|
46
|
+
}
|
|
47
|
+
if (e.code === "ArrowDown") {
|
|
48
|
+
e.preventDefault();
|
|
49
|
+
e.stopPropagation();
|
|
50
|
+
refItems.getNextElementOnSameLevel(item.key)?.focus();
|
|
51
|
+
}
|
|
52
|
+
if (e.code === "Home") {
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
e.stopPropagation();
|
|
55
|
+
refItems.getFirstElementOnSameLevel(item.key)?.focus();
|
|
56
|
+
}
|
|
57
|
+
if (e.code === "End") {
|
|
58
|
+
e.preventDefault();
|
|
59
|
+
e.stopPropagation();
|
|
60
|
+
refItems.getLastElementOnSameLevel(item.key)?.focus();
|
|
61
|
+
}
|
|
62
|
+
if (e.code === "Space" || e.code === "Enter") {
|
|
63
|
+
e.stopPropagation();
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
isButtonLeftNavItem && refItems.getNextElement(item.key, true)?.focus();
|
|
66
|
+
e.currentTarget.click();
|
|
67
|
+
}
|
|
68
|
+
if (e.code === "ArrowRight") {
|
|
69
|
+
onExpandIconClickHandler?.();
|
|
70
|
+
refItems.getNextElement(item.key, true)?.focus();
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
return { onKeyPressNavigation };
|
|
75
|
+
};
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 OneWelcome B.V.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { useEffect, useRef } from "react";
|
|
18
|
+
import { MenuItem } from "./LeftNav.interfaces";
|
|
19
|
+
|
|
20
|
+
interface Props {
|
|
21
|
+
items: MenuItem[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface LinkedMapValue {
|
|
25
|
+
item: MenuItem;
|
|
26
|
+
level: number;
|
|
27
|
+
prev?: MenuItem;
|
|
28
|
+
next?: MenuItem;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type UseRefItemsReturnType = ReturnType<typeof useRefItems>;
|
|
32
|
+
|
|
33
|
+
export const useRefItems = ({ items }: Props) => {
|
|
34
|
+
const navRefs = useRef<Record<string, HTMLElement>>({});
|
|
35
|
+
const itemsMap = useRef<Record<string, LinkedMapValue>>({});
|
|
36
|
+
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
createLinkedMap(items);
|
|
39
|
+
}, [items]);
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Creates linked list of provided menu items.
|
|
43
|
+
* Disabled items are filtered out.
|
|
44
|
+
*/
|
|
45
|
+
const createLinkedMap = (menuItems: MenuItem[]) => {
|
|
46
|
+
const map: Record<string, LinkedMapValue> = {};
|
|
47
|
+
createRecursiveLinkedMap(map, 0, menuItems);
|
|
48
|
+
itemsMap.current = map;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const createRecursiveLinkedMap = (
|
|
52
|
+
itemsMap: Record<string, LinkedMapValue>,
|
|
53
|
+
level: number,
|
|
54
|
+
items?: MenuItem[],
|
|
55
|
+
prevItem?: MenuItem,
|
|
56
|
+
nextItem?: MenuItem
|
|
57
|
+
): { lastItem?: MenuItem } => {
|
|
58
|
+
let currentPreviousItem: MenuItem | undefined = prevItem,
|
|
59
|
+
currentNextItem: MenuItem | undefined = nextItem;
|
|
60
|
+
const nonDisabledItems = items?.filter(item => !item.disabled);
|
|
61
|
+
nonDisabledItems?.forEach((currentItem, index) => {
|
|
62
|
+
const isLast = index === nonDisabledItems.length - 1;
|
|
63
|
+
if (!isLast) {
|
|
64
|
+
currentNextItem = nonDisabledItems[index + 1];
|
|
65
|
+
} else {
|
|
66
|
+
currentNextItem = nextItem;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const hasChildren = (currentItem.items?.filter(item => !item.disabled) ?? []).length !== 0;
|
|
70
|
+
if (hasChildren) {
|
|
71
|
+
itemsMap[currentItem.key] = {
|
|
72
|
+
item: currentItem,
|
|
73
|
+
level,
|
|
74
|
+
prev: currentPreviousItem,
|
|
75
|
+
next: currentItem?.items?.filter(item => !item.disabled)[0]
|
|
76
|
+
};
|
|
77
|
+
currentPreviousItem = currentItem;
|
|
78
|
+
const { lastItem } = createRecursiveLinkedMap(
|
|
79
|
+
itemsMap,
|
|
80
|
+
level + 1,
|
|
81
|
+
currentItem?.items,
|
|
82
|
+
currentPreviousItem,
|
|
83
|
+
currentNextItem
|
|
84
|
+
);
|
|
85
|
+
currentPreviousItem = lastItem;
|
|
86
|
+
} else {
|
|
87
|
+
itemsMap[currentItem.key] = {
|
|
88
|
+
item: currentItem,
|
|
89
|
+
level,
|
|
90
|
+
prev: currentPreviousItem,
|
|
91
|
+
next: currentNextItem
|
|
92
|
+
};
|
|
93
|
+
currentPreviousItem = currentItem;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
return { lastItem: currentPreviousItem };
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const addElementReference = (el: HTMLElement | null, key: string) => {
|
|
100
|
+
if (el) {
|
|
101
|
+
navRefs.current[key] = el;
|
|
102
|
+
} else {
|
|
103
|
+
delete navRefs.current[key];
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Get next element that is rendered. It could be nested element
|
|
109
|
+
* @param currentKey key of item
|
|
110
|
+
* @returns element or undefined if element does not exists or current element is the last element on that level
|
|
111
|
+
*/
|
|
112
|
+
const getNextElement = (currentKey: string, whenHavingChildren: boolean = false) => {
|
|
113
|
+
const currentItem = itemsMap.current?.[currentKey];
|
|
114
|
+
if (whenHavingChildren && !currentItem.item.items) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const nextKey = currentItem.next?.key;
|
|
118
|
+
return nextKey ? navRefs.current?.[nextKey] : undefined;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Get next element on the same level as currentKey param
|
|
123
|
+
* @param currentKey key of item
|
|
124
|
+
* @returns element or undefined if element does not exists or current element is the last element on that level
|
|
125
|
+
*/
|
|
126
|
+
const getNextElementOnSameLevel = (currentKey: string) => {
|
|
127
|
+
const currentItem = itemsMap.current?.[currentKey];
|
|
128
|
+
const currentLevel = currentItem.level;
|
|
129
|
+
const nextItem = _traverseNextElements({
|
|
130
|
+
currentItem,
|
|
131
|
+
desiredLevel: currentLevel,
|
|
132
|
+
currentLevel
|
|
133
|
+
});
|
|
134
|
+
return nextItem?.item.key ? navRefs.current?.[nextItem?.item.key] : undefined;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Get previous element on the same level as currentKey param
|
|
139
|
+
* @param currentKey key of item
|
|
140
|
+
* @returns element or undefined if element does not exists or current element is the first element on that level
|
|
141
|
+
*/
|
|
142
|
+
const getPrevElementOnSameLevel = (currentKey: string) => {
|
|
143
|
+
const currentItem = itemsMap.current?.[currentKey];
|
|
144
|
+
const currentLevel = currentItem.level;
|
|
145
|
+
const prevItem = _traversePrevElements({
|
|
146
|
+
currentItem,
|
|
147
|
+
desiredLevel: currentLevel
|
|
148
|
+
});
|
|
149
|
+
return prevItem?.item.key ? navRefs.current?.[prevItem?.item.key] : undefined;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Get first element on the same level as currentKey param
|
|
154
|
+
* @param currentKey key of item
|
|
155
|
+
* @returns element or undefined if element does not exists or current element is the first element on that level
|
|
156
|
+
*/
|
|
157
|
+
const getFirstElementOnSameLevel = (currentKey: string) => {
|
|
158
|
+
const currentItem = itemsMap.current?.[currentKey];
|
|
159
|
+
const currentLevel = currentItem.level;
|
|
160
|
+
const prevItem = _traversePrevElements({
|
|
161
|
+
currentItem,
|
|
162
|
+
desiredLevel: currentLevel
|
|
163
|
+
});
|
|
164
|
+
const prevItemKey = prevItem?.item.key;
|
|
165
|
+
if (prevItemKey) {
|
|
166
|
+
const hasNextPrevElement = !!_traversePrevElements({
|
|
167
|
+
currentItem: itemsMap.current?.[prevItemKey],
|
|
168
|
+
desiredLevel: currentLevel
|
|
169
|
+
});
|
|
170
|
+
if (hasNextPrevElement) {
|
|
171
|
+
return getFirstElementOnSameLevel(prevItemKey);
|
|
172
|
+
}
|
|
173
|
+
return navRefs.current?.[prevItemKey];
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Get last element on the same level as currentKey param
|
|
179
|
+
* @param currentKey key of item
|
|
180
|
+
* @returns element or undefined if element does not exists or current element is the last element on that level
|
|
181
|
+
*/
|
|
182
|
+
const getLastElementOnSameLevel = (currentKey: string) => {
|
|
183
|
+
const currentItem = itemsMap.current?.[currentKey];
|
|
184
|
+
const currentLevel = currentItem.level;
|
|
185
|
+
const nextItem = _traverseNextElements({
|
|
186
|
+
currentItem,
|
|
187
|
+
desiredLevel: currentLevel,
|
|
188
|
+
currentLevel
|
|
189
|
+
});
|
|
190
|
+
const nextItemKey = nextItem?.item.key;
|
|
191
|
+
if (nextItemKey) {
|
|
192
|
+
const hasNextNextElement = !!_traverseNextElements({
|
|
193
|
+
currentItem: itemsMap.current?.[nextItemKey],
|
|
194
|
+
desiredLevel: currentLevel,
|
|
195
|
+
currentLevel
|
|
196
|
+
});
|
|
197
|
+
if (hasNextNextElement) {
|
|
198
|
+
return getLastElementOnSameLevel(nextItemKey);
|
|
199
|
+
}
|
|
200
|
+
return navRefs.current?.[nextItemKey];
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
const getParentElement = (currentKey: string) => {
|
|
205
|
+
const currentItem = itemsMap.current?.[currentKey];
|
|
206
|
+
const currentLevel = currentItem.level;
|
|
207
|
+
const parentLevel = currentLevel - 1;
|
|
208
|
+
const parentItem = _traversePrevElements({
|
|
209
|
+
currentItem,
|
|
210
|
+
desiredLevel: parentLevel,
|
|
211
|
+
checkForMenuEscape: false
|
|
212
|
+
});
|
|
213
|
+
return parentItem?.item.key ? navRefs.current?.[parentItem?.item.key] : undefined;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
const _traverseNextElements = ({
|
|
217
|
+
currentItem,
|
|
218
|
+
desiredLevel,
|
|
219
|
+
currentLevel
|
|
220
|
+
}: {
|
|
221
|
+
currentItem: LinkedMapValue;
|
|
222
|
+
desiredLevel: number;
|
|
223
|
+
currentLevel: number;
|
|
224
|
+
}) => {
|
|
225
|
+
const nextKey = currentItem.next?.key;
|
|
226
|
+
if (!nextKey) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const escapedSubMenu = desiredLevel > currentLevel;
|
|
230
|
+
if (escapedSubMenu) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
const next = itemsMap.current?.[nextKey];
|
|
235
|
+
if (next && next.level === desiredLevel) {
|
|
236
|
+
return next;
|
|
237
|
+
} else {
|
|
238
|
+
return _traverseNextElements({ currentItem: next, desiredLevel, currentLevel: next.level });
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
const _traversePrevElements = ({
|
|
243
|
+
currentItem,
|
|
244
|
+
desiredLevel,
|
|
245
|
+
checkForMenuEscape = true
|
|
246
|
+
}: {
|
|
247
|
+
currentItem: LinkedMapValue;
|
|
248
|
+
desiredLevel: number;
|
|
249
|
+
checkForMenuEscape?: boolean;
|
|
250
|
+
}) => {
|
|
251
|
+
const prevKey = currentItem.prev?.key;
|
|
252
|
+
if (!prevKey) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
const prev = itemsMap.current?.[prevKey];
|
|
256
|
+
const prevLevel = prev.level;
|
|
257
|
+
|
|
258
|
+
const escapedSubMenu = desiredLevel > prevLevel;
|
|
259
|
+
if (checkForMenuEscape && escapedSubMenu) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if (prev && prev.level === desiredLevel) {
|
|
264
|
+
return prev;
|
|
265
|
+
} else {
|
|
266
|
+
return _traversePrevElements({ currentItem: prev, desiredLevel });
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
return {
|
|
271
|
+
addElementReference,
|
|
272
|
+
getNextElement,
|
|
273
|
+
getNextElementOnSameLevel,
|
|
274
|
+
getPrevElementOnSameLevel,
|
|
275
|
+
getFirstElementOnSameLevel,
|
|
276
|
+
getLastElementOnSameLevel,
|
|
277
|
+
getParentElement,
|
|
278
|
+
getItemMap: () => itemsMap.current
|
|
279
|
+
};
|
|
280
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2022 OneWelcome B.V.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
.microfrontend-container {
|
|
18
|
+
&-margin {
|
|
19
|
+
padding: 2rem;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&-max-width {
|
|
23
|
+
max-width: 105rem;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 OneWelcome B.V.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import React, { ReactElement } from "react";
|
|
18
|
+
import classes from "./MicrofrontendContainer.module.scss";
|
|
19
|
+
|
|
20
|
+
export interface Props {
|
|
21
|
+
header?: ReactElement | ReactElement[];
|
|
22
|
+
children: ReactElement | ReactElement[];
|
|
23
|
+
contentMargins?: boolean;
|
|
24
|
+
contentMaxWidth?: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const MicrofrontendContainer = ({
|
|
28
|
+
header,
|
|
29
|
+
children,
|
|
30
|
+
contentMargins = true,
|
|
31
|
+
contentMaxWidth = true,
|
|
32
|
+
...rest
|
|
33
|
+
}: Props) => {
|
|
34
|
+
const appliedClasses = [];
|
|
35
|
+
|
|
36
|
+
contentMargins && appliedClasses.push(classes["microfrontend-container-margin"]);
|
|
37
|
+
contentMaxWidth && appliedClasses.push(classes["microfrontend-container-max-width"]);
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<>
|
|
41
|
+
<div>{header}</div>
|
|
42
|
+
<div className={appliedClasses.join(" ")} {...rest}>
|
|
43
|
+
{children}
|
|
44
|
+
</div>
|
|
45
|
+
</>
|
|
46
|
+
);
|
|
47
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2022 OneWelcome B.V.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
@use "../../mixins.module";
|
|
18
|
+
|
|
19
|
+
.idp-button {
|
|
20
|
+
width: 100%;
|
|
21
|
+
|
|
22
|
+
&--with-icon {
|
|
23
|
+
display: flex;
|
|
24
|
+
align-items: center;
|
|
25
|
+
justify-content: center;
|
|
26
|
+
gap: 0.5rem;
|
|
27
|
+
|
|
28
|
+
margin-top: -0.125rem;
|
|
29
|
+
margin-bottom: -0.125rem;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 OneWelcome B.V.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import React, { ComponentPropsWithRef, CSSProperties, ForwardRefRenderFunction } from "react";
|
|
18
|
+
import classes from "./IdentityProviderButton.module.scss";
|
|
19
|
+
import { Button } from "../Button/Button";
|
|
20
|
+
|
|
21
|
+
export interface SupportedCustomizationKeys {
|
|
22
|
+
backgroundColor: string;
|
|
23
|
+
focusBorderColor: string;
|
|
24
|
+
focusBackgroundColor: string;
|
|
25
|
+
hoverBackgroundColor: string;
|
|
26
|
+
pressedBackgroundColor: string;
|
|
27
|
+
textColor: string;
|
|
28
|
+
borderColor: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface Props extends Omit<ComponentPropsWithRef<"button">, "color"> {
|
|
32
|
+
iconUrl?: string;
|
|
33
|
+
imgAltText?: string;
|
|
34
|
+
idpType: string;
|
|
35
|
+
customization?: SupportedCustomizationKeys;
|
|
36
|
+
loading?: boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const IdentityProviderButton: ForwardRefRenderFunction<HTMLButtonElement, Props> = ({
|
|
40
|
+
children,
|
|
41
|
+
iconUrl,
|
|
42
|
+
imgAltText,
|
|
43
|
+
idpType,
|
|
44
|
+
customization,
|
|
45
|
+
loading,
|
|
46
|
+
...rest
|
|
47
|
+
}) => {
|
|
48
|
+
const DEFAULT_BACKGROUND_COLOR = "#FFFFFF";
|
|
49
|
+
const DEFAULT_BORDER_COLOR = "#000000";
|
|
50
|
+
const DEFAULT_TEXT_COLOR = "#000000";
|
|
51
|
+
const DEFAULT_FOCUS_OUTLINE_COLOR = "var(--color-black50)";
|
|
52
|
+
const DEFAULT_HOVER_COLOR = "var(--color-black10)";
|
|
53
|
+
const DEFAULT_PRESSED_COLOR = "var(--color-black20)";
|
|
54
|
+
|
|
55
|
+
const generateCSSProperties = () => {
|
|
56
|
+
return {
|
|
57
|
+
"--button-fill-primary-default-color":
|
|
58
|
+
customization?.backgroundColor ?? DEFAULT_BACKGROUND_COLOR,
|
|
59
|
+
borderColor: customization?.borderColor ?? DEFAULT_BORDER_COLOR,
|
|
60
|
+
"--button-fill-text-color": customization?.textColor ?? DEFAULT_TEXT_COLOR,
|
|
61
|
+
"--color-focus": customization?.focusBorderColor ?? DEFAULT_FOCUS_OUTLINE_COLOR,
|
|
62
|
+
"--button-fill-primary-focused-color":
|
|
63
|
+
customization?.focusBackgroundColor ?? DEFAULT_BACKGROUND_COLOR,
|
|
64
|
+
"--button-fill-primary-hover-color":
|
|
65
|
+
customization?.hoverBackgroundColor ?? DEFAULT_HOVER_COLOR,
|
|
66
|
+
"--button-fill-primary-pressed-color":
|
|
67
|
+
customization?.pressedBackgroundColor ?? DEFAULT_PRESSED_COLOR
|
|
68
|
+
} as CSSProperties;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
return (
|
|
72
|
+
<Button
|
|
73
|
+
style={generateCSSProperties()}
|
|
74
|
+
color="primary"
|
|
75
|
+
variant="fill"
|
|
76
|
+
className={classes["idp-button"]}
|
|
77
|
+
loading={loading}
|
|
78
|
+
{...rest}
|
|
79
|
+
>
|
|
80
|
+
<span className={classes["idp-button--with-icon"]}>
|
|
81
|
+
<img
|
|
82
|
+
height={24}
|
|
83
|
+
width={24}
|
|
84
|
+
aria-hidden={!imgAltText}
|
|
85
|
+
src={iconUrl || `/ui-resources-static/common/idb/icons/${idpType}.svg`}
|
|
86
|
+
alt={imgAltText || "Identity Provider icon"}
|
|
87
|
+
/>
|
|
88
|
+
{children}
|
|
89
|
+
</span>
|
|
90
|
+
</Button>
|
|
91
|
+
);
|
|
92
|
+
};
|