@loadsmart/loadsmart-ui 7.6.0 → 7.7.0-beta.1
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/README.md +15 -1
- package/dist/DragDropFile.context-oKnUu6d3.js +33 -0
- package/dist/{DragDropFile.context-D-EBrXnw.js.map → DragDropFile.context-oKnUu6d3.js.map} +1 -1
- package/dist/index.js +9104 -253
- package/dist/index.js.map +1 -1
- package/dist/miranda-compatibility.theme-C_FEacSw.js +2528 -0
- package/dist/{miranda-compatibility.theme-ChPV-BBw.js.map → miranda-compatibility.theme-C_FEacSw.js.map} +1 -1
- package/dist/prop-B8LY6G2g.js +81 -0
- package/dist/{prop-BwhJNJHO.js.map → prop-B8LY6G2g.js.map} +1 -1
- package/dist/testing/index.js +282 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/theming/index.js +22 -1
- package/dist/theming/index.js.map +1 -1
- package/dist/toArray-Dxb1kUxx.js +14 -0
- package/dist/{toArray-BW3gx_gH.js.map → toArray-Dxb1kUxx.js.map} +1 -1
- package/dist/tools/index.js +6 -1
- package/dist/tools/index.js.map +1 -1
- package/package.json +24 -54
- package/dist/DragDropFile.context-D-EBrXnw.js +0 -2
- package/dist/DragDropFile.context-jVTIKfj5.mjs +0 -29
- package/dist/DragDropFile.context-jVTIKfj5.mjs.map +0 -1
- package/dist/index.mjs +0 -8046
- package/dist/index.mjs.map +0 -1
- package/dist/miranda-compatibility.theme-ChPV-BBw.js +0 -2
- package/dist/miranda-compatibility.theme-DQDHkWzC.mjs +0 -2469
- package/dist/miranda-compatibility.theme-DQDHkWzC.mjs.map +0 -1
- package/dist/prop-5m3D4883.mjs +0 -54
- package/dist/prop-5m3D4883.mjs.map +0 -1
- package/dist/prop-BwhJNJHO.js +0 -2
- package/dist/testing/index.mjs +0 -228
- package/dist/testing/index.mjs.map +0 -1
- package/dist/theming/index.mjs +0 -20
- package/dist/theming/index.mjs.map +0 -1
- package/dist/toArray-BW3gx_gH.js +0 -2
- package/dist/toArray-DqgeO2ua.mjs +0 -8
- package/dist/toArray-DqgeO2ua.mjs.map +0 -1
- package/dist/tools/index.mjs +0 -7
- package/dist/tools/index.mjs.map +0 -1
- package/src/@types/@loadsmart/utilsFunction.d.ts +0 -5
- package/src/@types/@loadsmart/utilsObject.d.ts +0 -5
- package/src/@types/svg.d.ts +0 -4
- package/src/addons/Theme/register.js +0 -590
- package/src/common/BackButton/BackButton.tsx +0 -18
- package/src/common/BackButton/index.ts +0 -2
- package/src/common/CloseButton/CloseButton.tsx +0 -55
- package/src/common/CloseButton/index.ts +0 -2
- package/src/common/SelectionWrapper.tsx +0 -130
- package/src/components/Accordion/Accordion.context.tsx +0 -36
- package/src/components/Accordion/Accordion.stories.tsx +0 -186
- package/src/components/Accordion/Accordion.test.tsx +0 -209
- package/src/components/Accordion/Accordion.tsx +0 -233
- package/src/components/Accordion/index.ts +0 -2
- package/src/components/Banner/Banner.stories.tsx +0 -213
- package/src/components/Banner/Banner.test.tsx +0 -118
- package/src/components/Banner/Banner.tsx +0 -418
- package/src/components/Banner/index.tsx +0 -2
- package/src/components/Breadcrumbs/Breadbrumbs.test.tsx +0 -125
- package/src/components/Breadcrumbs/Breadcrumb.tsx +0 -92
- package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +0 -21
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -54
- package/src/components/Breadcrumbs/index.ts +0 -4
- package/src/components/Button/Button.stories.tsx +0 -174
- package/src/components/Button/Button.test.tsx +0 -57
- package/src/components/Button/Button.tsx +0 -576
- package/src/components/Button/index.tsx +0 -2
- package/src/components/Calendar/Calendar.helpers.ts +0 -15
- package/src/components/Calendar/Calendar.stories.tsx +0 -168
- package/src/components/Calendar/Calendar.test.tsx +0 -316
- package/src/components/Calendar/Calendar.tsx +0 -130
- package/src/components/Calendar/Calendar.types.ts +0 -68
- package/src/components/Calendar/Date.helper.test.ts +0 -847
- package/src/components/Calendar/Date.helper.ts +0 -461
- package/src/components/Calendar/DateFormat.helper.test.ts +0 -171
- package/src/components/Calendar/DateFormat.helper.ts +0 -195
- package/src/components/Calendar/Month.helper.test.ts +0 -187
- package/src/components/Calendar/Month.helper.ts +0 -172
- package/src/components/Calendar/PickerModeToggle.tsx +0 -61
- package/src/components/Calendar/Pickers/DayPicker.test.tsx +0 -85
- package/src/components/Calendar/Pickers/DayPicker.tsx +0 -127
- package/src/components/Calendar/Pickers/MonthPicker.test.tsx +0 -77
- package/src/components/Calendar/Pickers/MonthPicker.tsx +0 -51
- package/src/components/Calendar/Pickers/PickerButton.tsx +0 -119
- package/src/components/Calendar/Pickers/YearPicker.test.tsx +0 -75
- package/src/components/Calendar/Pickers/YearPicker.tsx +0 -52
- package/src/components/Calendar/index.ts +0 -10
- package/src/components/Calendar/useCalendar.ts +0 -190
- package/src/components/Calendar/usePickerMode.ts +0 -48
- package/src/components/Card/Card.stories.tsx +0 -117
- package/src/components/Card/Card.test.tsx +0 -139
- package/src/components/Card/Card.tsx +0 -106
- package/src/components/Card/CardTitle.tsx +0 -43
- package/src/components/Card/index.ts +0 -2
- package/src/components/Checkbox/Checkbox.stories.tsx +0 -79
- package/src/components/Checkbox/Checkbox.test.tsx +0 -66
- package/src/components/Checkbox/Checkbox.tsx +0 -170
- package/src/components/Checkbox/index.ts +0 -2
- package/src/components/DatePicker/DatePicker.stories.tsx +0 -113
- package/src/components/DatePicker/DatePicker.test.tsx +0 -174
- package/src/components/DatePicker/DatePicker.tsx +0 -140
- package/src/components/DatePicker/DatePicker.types.ts +0 -30
- package/src/components/DatePicker/DateRangePicker.stories.tsx +0 -128
- package/src/components/DatePicker/DateRangePicker.test.tsx +0 -267
- package/src/components/DatePicker/DateRangePicker.tsx +0 -110
- package/src/components/DatePicker/index.ts +0 -3
- package/src/components/DatePicker/useDatePicker.ts +0 -201
- package/src/components/DatePicker/useDateRangePicker.ts +0 -224
- package/src/components/Dialog/Dialog.stories.tsx +0 -227
- package/src/components/Dialog/Dialog.test.tsx +0 -74
- package/src/components/Dialog/Dialog.tsx +0 -139
- package/src/components/Dialog/index.tsx +0 -4
- package/src/components/Dialog/useDialog.tsx +0 -59
- package/src/components/DragDropFile/DragDropFile.context.tsx +0 -39
- package/src/components/DragDropFile/DragDropFile.stories.tsx +0 -183
- package/src/components/DragDropFile/DragDropFile.tsx +0 -11
- package/src/components/DragDropFile/components/DropZone.test.tsx +0 -108
- package/src/components/DragDropFile/components/DropZone.tsx +0 -145
- package/src/components/DragDropFile/components/FileItem.tsx +0 -117
- package/src/components/DragDropFile/components/FileList.test.tsx +0 -119
- package/src/components/DragDropFile/components/FileList.tsx +0 -47
- package/src/components/DragDropFile/components/Wrapper.tsx +0 -22
- package/src/components/DragDropFile/index.ts +0 -9
- package/src/components/DragDropFile/mocks.ts +0 -23
- package/src/components/DragDropFile/styles.tsx +0 -81
- package/src/components/DragDropFile/types.ts +0 -85
- package/src/components/Drawer/Drawer.stories.tsx +0 -83
- package/src/components/Drawer/Drawer.test.tsx +0 -90
- package/src/components/Drawer/Drawer.tsx +0 -225
- package/src/components/Drawer/index.ts +0 -4
- package/src/components/Dropdown/Dropdown.context.ts +0 -13
- package/src/components/Dropdown/Dropdown.fixtures.ts +0 -15
- package/src/components/Dropdown/Dropdown.stories.tsx +0 -259
- package/src/components/Dropdown/Dropdown.test.tsx +0 -173
- package/src/components/Dropdown/Dropdown.tsx +0 -141
- package/src/components/Dropdown/Dropdown.types.ts +0 -59
- package/src/components/Dropdown/DropdownMenu.tsx +0 -263
- package/src/components/Dropdown/DropdownTrigger.tsx +0 -368
- package/src/components/Dropdown/index.ts +0 -15
- package/src/components/Dropdown/useDropdown.test.ts +0 -96
- package/src/components/Dropdown/useDropdown.ts +0 -65
- package/src/components/EmptyState/EmptyState.mocks.tsx +0 -60
- package/src/components/EmptyState/EmptyState.stories.tsx +0 -239
- package/src/components/EmptyState/EmptyState.test.tsx +0 -101
- package/src/components/EmptyState/EmptyState.tsx +0 -22
- package/src/components/EmptyState/EmptyState.types.ts +0 -59
- package/src/components/EmptyState/EmptyStateWithIcon.tsx +0 -42
- package/src/components/EmptyState/EmptyStateWithIllustration.tsx +0 -72
- package/src/components/EmptyState/Illustration.tsx +0 -29
- package/src/components/EmptyState/index.ts +0 -4
- package/src/components/ErrorMessage/ErrorMessage.stories.tsx +0 -26
- package/src/components/ErrorMessage/ErrorMessage.test.tsx +0 -24
- package/src/components/ErrorMessage/ErrorMessage.tsx +0 -19
- package/src/components/ErrorMessage/index.ts +0 -2
- package/src/components/HighlightMatch/HighlightMatch.stories.tsx +0 -24
- package/src/components/HighlightMatch/HighlightMatch.test.tsx +0 -37
- package/src/components/HighlightMatch/HighlightMatch.tsx +0 -29
- package/src/components/HighlightMatch/index.ts +0 -2
- package/src/components/Icon/Icon.tsx +0 -55
- package/src/components/Icon/assets/back.svg +0 -4
- package/src/components/Icon/assets/burger-menu.svg +0 -3
- package/src/components/Icon/assets/calendar.svg +0 -5
- package/src/components/Icon/assets/caret-down.svg +0 -4
- package/src/components/Icon/assets/caret-left.svg +0 -4
- package/src/components/Icon/assets/caret-right-last.svg +0 -4
- package/src/components/Icon/assets/caret-right.svg +0 -4
- package/src/components/Icon/assets/check.svg +0 -4
- package/src/components/Icon/assets/chevron-down.svg +0 -3
- package/src/components/Icon/assets/circle.svg +0 -3
- package/src/components/Icon/assets/close.svg +0 -4
- package/src/components/Icon/assets/dots-horizontal.svg +0 -1
- package/src/components/Icon/assets/information.svg +0 -4
- package/src/components/Icon/assets/minus.svg +0 -4
- package/src/components/Icon/assets/plus.svg +0 -4
- package/src/components/Icon/assets/refresh.svg +0 -3
- package/src/components/Icon/assets/sort-asc.svg +0 -7
- package/src/components/Icon/assets/sort-desc.svg +0 -7
- package/src/components/Icon/assets/sort.svg +0 -7
- package/src/components/Icon/assets/upload.svg +0 -3
- package/src/components/Icon/assets/warning.svg +0 -4
- package/src/components/Icon/index.ts +0 -2
- package/src/components/IconFactory/IconFactory.fixtures.tsx +0 -31
- package/src/components/IconFactory/IconFactory.stories.tsx +0 -120
- package/src/components/IconFactory/IconFactory.test.tsx +0 -36
- package/src/components/IconFactory/IconFactory.tsx +0 -75
- package/src/components/IconFactory/index.ts +0 -2
- package/src/components/Label/Label.stories.tsx +0 -47
- package/src/components/Label/Label.test.tsx +0 -80
- package/src/components/Label/Label.tsx +0 -120
- package/src/components/Label/index.ts +0 -2
- package/src/components/Layout/Box.tsx +0 -98
- package/src/components/Layout/Grid.tsx +0 -42
- package/src/components/Layout/Group.tsx +0 -55
- package/src/components/Layout/Layout.stories.tsx +0 -412
- package/src/components/Layout/Layout.tsx +0 -19
- package/src/components/Layout/Layout.types.ts +0 -9
- package/src/components/Layout/Layout.utils.ts +0 -20
- package/src/components/Layout/Sidebar.tsx +0 -75
- package/src/components/Layout/Stack.tsx +0 -63
- package/src/components/Layout/Switcher.tsx +0 -48
- package/src/components/Layout/index.tsx +0 -8
- package/src/components/Link/Link.stories.tsx +0 -22
- package/src/components/Link/Link.test.tsx +0 -79
- package/src/components/Link/Link.tsx +0 -114
- package/src/components/Link/index.ts +0 -3
- package/src/components/Link/useSafeLink.ts +0 -49
- package/src/components/Loaders/LoadingBar.stories.tsx +0 -36
- package/src/components/Loaders/LoadingBar.test.tsx +0 -35
- package/src/components/Loaders/LoadingBar.tsx +0 -65
- package/src/components/Loaders/LoadingDots.stories.tsx +0 -69
- package/src/components/Loaders/LoadingDots.test.tsx +0 -22
- package/src/components/Loaders/LoadingDots.tsx +0 -68
- package/src/components/Loaders/Spinner.stories.tsx +0 -24
- package/src/components/Loaders/Spinner.test.tsx +0 -35
- package/src/components/Loaders/Spinner.tsx +0 -68
- package/src/components/Loaders/index.tsx +0 -3
- package/src/components/Modal/Modal.stories.tsx +0 -121
- package/src/components/Modal/Modal.test.tsx +0 -46
- package/src/components/Modal/Modal.tsx +0 -163
- package/src/components/Modal/index.tsx +0 -2
- package/src/components/Pagination/Pagination.constants.ts +0 -7
- package/src/components/Pagination/Pagination.helper.ts +0 -88
- package/src/components/Pagination/Pagination.stories.tsx +0 -29
- package/src/components/Pagination/Pagination.test.tsx +0 -102
- package/src/components/Pagination/Pagination.tsx +0 -34
- package/src/components/Pagination/Pagination.types.ts +0 -55
- package/src/components/Pagination/PaginationItem.tsx +0 -74
- package/src/components/Pagination/index.ts +0 -2
- package/src/components/Pagination/usePagination.test.ts +0 -188
- package/src/components/Pagination/usePagination.ts +0 -87
- package/src/components/Popover/Popover.stories.tsx +0 -50
- package/src/components/Popover/Popover.test.tsx +0 -22
- package/src/components/Popover/Popover.tsx +0 -110
- package/src/components/Popover/Popover.types.ts +0 -39
- package/src/components/Popover/index.ts +0 -11
- package/src/components/ProgressBar/ProgressBar.stories.tsx +0 -47
- package/src/components/ProgressBar/ProgressBar.test.tsx +0 -40
- package/src/components/ProgressBar/ProgressBar.tsx +0 -89
- package/src/components/ProgressBar/index.tsx +0 -2
- package/src/components/Radio/Radio.stories.tsx +0 -75
- package/src/components/Radio/Radio.test.tsx +0 -66
- package/src/components/Radio/Radio.tsx +0 -153
- package/src/components/Radio/index.ts +0 -2
- package/src/components/Section/Section.test.tsx +0 -35
- package/src/components/Section/Section.tsx +0 -66
- package/src/components/Section/Sections.stories.tsx +0 -56
- package/src/components/Section/index.ts +0 -2
- package/src/components/Select/Select.constants.ts +0 -12
- package/src/components/Select/Select.context.ts +0 -11
- package/src/components/Select/Select.fixtures.ts +0 -167
- package/src/components/Select/Select.stories.tsx +0 -780
- package/src/components/Select/Select.test.tsx +0 -1109
- package/src/components/Select/Select.tsx +0 -271
- package/src/components/Select/Select.types.ts +0 -148
- package/src/components/Select/SelectCreatableOption.tsx +0 -20
- package/src/components/Select/SelectEmpty.test.tsx +0 -15
- package/src/components/Select/SelectEmpty.tsx +0 -29
- package/src/components/Select/SelectOption.test.tsx +0 -78
- package/src/components/Select/SelectOption.tsx +0 -79
- package/src/components/Select/SelectTrigger.tsx +0 -83
- package/src/components/Select/components.tsx +0 -14
- package/src/components/Select/index.ts +0 -12
- package/src/components/Select/useSelect.helpers.test.ts +0 -184
- package/src/components/Select/useSelect.helpers.ts +0 -63
- package/src/components/Select/useSelect.test.ts +0 -207
- package/src/components/Select/useSelect.ts +0 -540
- package/src/components/Select/useSelectExternal.ts +0 -26
- package/src/components/SideNavigation/Logo/Logo.test.tsx +0 -19
- package/src/components/SideNavigation/Logo/Logo.tsx +0 -26
- package/src/components/SideNavigation/Logo/index.ts +0 -1
- package/src/components/SideNavigation/Menu/Menu.test.tsx +0 -65
- package/src/components/SideNavigation/Menu/Menu.tsx +0 -53
- package/src/components/SideNavigation/Menu/MenuBaseItem.tsx +0 -64
- package/src/components/SideNavigation/Menu/MenuExpandable.tsx +0 -107
- package/src/components/SideNavigation/Menu/MenuLink.tsx +0 -37
- package/src/components/SideNavigation/Menu/index.ts +0 -1
- package/src/components/SideNavigation/Separator/Separator.test.tsx +0 -14
- package/src/components/SideNavigation/Separator/Separator.tsx +0 -20
- package/src/components/SideNavigation/Separator/index.ts +0 -1
- package/src/components/SideNavigation/SideNavigation.stories.tsx +0 -69
- package/src/components/SideNavigation/SideNavigation.test.tsx +0 -21
- package/src/components/SideNavigation/SideNavigation.tsx +0 -47
- package/src/components/SideNavigation/index.ts +0 -5
- package/src/components/SideNavigation/useSideNavigation.ts +0 -36
- package/src/components/Steps/ProgressSteps/ProgressStep.tsx +0 -163
- package/src/components/Steps/ProgressSteps/ProgressSteps.tsx +0 -37
- package/src/components/Steps/ProgressSteps/index.ts +0 -1
- package/src/components/Steps/Steps.fixtures.ts +0 -11
- package/src/components/Steps/Steps.helpers.ts +0 -11
- package/src/components/Steps/Steps.stories.tsx +0 -65
- package/src/components/Steps/Steps.test.tsx +0 -78
- package/src/components/Steps/Steps.tsx +0 -53
- package/src/components/Steps/Steps.types.ts +0 -5
- package/src/components/Steps/StepsContext.ts +0 -5
- package/src/components/Steps/StepsStep.tsx +0 -58
- package/src/components/Steps/index.ts +0 -6
- package/src/components/Steps/useStep.test.tsx +0 -217
- package/src/components/Steps/useSteps.ts +0 -131
- package/src/components/Switch/Switch.stories.tsx +0 -65
- package/src/components/Switch/Switch.test.tsx +0 -60
- package/src/components/Switch/Switch.tsx +0 -209
- package/src/components/Switch/index.ts +0 -2
- package/src/components/Table/Selection.tsx +0 -202
- package/src/components/Table/Table.fixtures.ts +0 -101
- package/src/components/Table/Table.stories.tsx +0 -568
- package/src/components/Table/Table.test.tsx +0 -310
- package/src/components/Table/Table.tsx +0 -523
- package/src/components/Table/Table.types.ts +0 -93
- package/src/components/Table/TableSortHandle.tsx +0 -31
- package/src/components/Table/index.tsx +0 -2
- package/src/components/Table/useSortBy.test.ts +0 -96
- package/src/components/Table/useSortBy.ts +0 -92
- package/src/components/Table/useSortBy.types.ts +0 -21
- package/src/components/TablePagination/RowsPerPage.tsx +0 -81
- package/src/components/TablePagination/TablePagination.stories.tsx +0 -42
- package/src/components/TablePagination/TablePagination.styles.ts +0 -13
- package/src/components/TablePagination/TablePagination.test.tsx +0 -111
- package/src/components/TablePagination/TablePagination.tsx +0 -49
- package/src/components/TablePagination/TablePagination.types.ts +0 -69
- package/src/components/TablePagination/TablePaginationActions.tsx +0 -144
- package/src/components/TablePagination/index.ts +0 -2
- package/src/components/Tabs/Tabs.stories.tsx +0 -78
- package/src/components/Tabs/Tabs.test.tsx +0 -103
- package/src/components/Tabs/Tabs.tsx +0 -287
- package/src/components/Tabs/Tabs.types.ts +0 -7
- package/src/components/Tabs/TabsContext.ts +0 -10
- package/src/components/Tabs/index.ts +0 -2
- package/src/components/Tag/Tag.stories.tsx +0 -112
- package/src/components/Tag/Tag.test.tsx +0 -19
- package/src/components/Tag/Tag.tsx +0 -393
- package/src/components/Tag/index.ts +0 -2
- package/src/components/Text/Text.stories.tsx +0 -59
- package/src/components/Text/Text.test.tsx +0 -48
- package/src/components/Text/Text.tsx +0 -14
- package/src/components/Text/index.ts +0 -2
- package/src/components/TextField/TextField.stories.tsx +0 -90
- package/src/components/TextField/TextField.test.tsx +0 -36
- package/src/components/TextField/TextField.tsx +0 -244
- package/src/components/TextField/index.ts +0 -6
- package/src/components/TextField/useTextField.tsx +0 -26
- package/src/components/Textarea/Textarea.stories.tsx +0 -101
- package/src/components/Textarea/Textarea.test.tsx +0 -14
- package/src/components/Textarea/Textarea.tsx +0 -230
- package/src/components/Textarea/index.ts +0 -2
- package/src/components/Toast/Toast.stories.tsx +0 -50
- package/src/components/Toast/Toast.test.tsx +0 -24
- package/src/components/Toast/Toast.tsx +0 -141
- package/src/components/Toast/icons/close.svg +0 -3
- package/src/components/Toast/icons/danger.svg +0 -4
- package/src/components/Toast/icons/neutral.svg +0 -4
- package/src/components/Toast/icons/success.svg +0 -3
- package/src/components/Toast/icons/warning.svg +0 -4
- package/src/components/Toast/index.tsx +0 -2
- package/src/components/ToggleGroup/Toggle.test.tsx +0 -76
- package/src/components/ToggleGroup/Toggle.tsx +0 -158
- package/src/components/ToggleGroup/ToggleGroup.constants.ts +0 -16
- package/src/components/ToggleGroup/ToggleGroup.stories.tsx +0 -145
- package/src/components/ToggleGroup/ToggleGroup.test.tsx +0 -237
- package/src/components/ToggleGroup/ToggleGroup.tsx +0 -165
- package/src/components/ToggleGroup/ToggleGroup.types.ts +0 -35
- package/src/components/ToggleGroup/ToggleGroupContext.ts +0 -13
- package/src/components/ToggleGroup/index.ts +0 -3
- package/src/components/Tooltip/Tooltip.stories.tsx +0 -82
- package/src/components/Tooltip/Tooltip.test.tsx +0 -49
- package/src/components/Tooltip/Tooltip.tsx +0 -185
- package/src/components/Tooltip/index.ts +0 -2
- package/src/components/TopNavigation/Logo/Logo.test.tsx +0 -21
- package/src/components/TopNavigation/Logo/Logo.tsx +0 -20
- package/src/components/TopNavigation/Logo/index.ts +0 -1
- package/src/components/TopNavigation/Menu/Menu.test.tsx +0 -125
- package/src/components/TopNavigation/Menu/Menu.tsx +0 -62
- package/src/components/TopNavigation/Menu/MenuItemDropdown.tsx +0 -118
- package/src/components/TopNavigation/Menu/MenuItemIcon.tsx +0 -50
- package/src/components/TopNavigation/Menu/index.ts +0 -1
- package/src/components/TopNavigation/OpenSideNavButton/OpenSideNavButton.tsx +0 -28
- package/src/components/TopNavigation/OpenSideNavButton/index.ts +0 -1
- package/src/components/TopNavigation/TopNavigation.stories.tsx +0 -42
- package/src/components/TopNavigation/TopNavigation.tsx +0 -47
- package/src/components/TopNavigation/index.ts +0 -2
- package/src/components/VisuallyHidden/VisuallyHidden.mdx +0 -26
- package/src/components/VisuallyHidden/VisuallyHidden.stories.tsx +0 -32
- package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +0 -18
- package/src/components/VisuallyHidden/VisuallyHidden.tsx +0 -6
- package/src/components/VisuallyHidden/index.ts +0 -1
- package/src/docs/tools/DatePickerEvent.stories.mdx +0 -108
- package/src/docs/tools/DragDropFileEvent.stories.mdx +0 -75
- package/src/docs/tools/conditional.stories.mdx +0 -251
- package/src/docs/tools/selectEvent.stories.mdx +0 -121
- package/src/hooks/useClickOutside/index.ts +0 -1
- package/src/hooks/useClickOutside/useClickOutside.test.tsx +0 -116
- package/src/hooks/useClickOutside/useClickOutside.ts +0 -65
- package/src/hooks/useDidMount/index.ts +0 -1
- package/src/hooks/useDidMount/useDidMount.test.tsx +0 -38
- package/src/hooks/useDidMount/useDidMount.ts +0 -20
- package/src/hooks/useFingerprint/index.ts +0 -1
- package/src/hooks/useFingerprint/useFingerprint.test.ts +0 -76
- package/src/hooks/useFingerprint/useFingerprint.ts +0 -94
- package/src/hooks/useFocusTrap/index.ts +0 -2
- package/src/hooks/useFocusTrap/useFocusTrap.stories.tsx +0 -87
- package/src/hooks/useFocusTrap/useFocusTrap.test.tsx +0 -129
- package/src/hooks/useFocusTrap/useFocusTrap.ts +0 -187
- package/src/hooks/useFocusWithin/index.ts +0 -2
- package/src/hooks/useFocusWithin/useFocusWithin.test.tsx +0 -71
- package/src/hooks/useFocusWithin/useFocusWithin.ts +0 -62
- package/src/hooks/useHeightExpansionToggler/index.ts +0 -2
- package/src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.test.tsx +0 -85
- package/src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.ts +0 -54
- package/src/hooks/useID/index.ts +0 -1
- package/src/hooks/useID/useID.ts +0 -18
- package/src/hooks/useSelectable/SelectableStrategy.test.ts +0 -424
- package/src/hooks/useSelectable/SelectableStrategy.ts +0 -143
- package/src/hooks/useSelectable/index.ts +0 -8
- package/src/hooks/useSelectable/useSelectable.test.ts +0 -221
- package/src/hooks/useSelectable/useSelectable.ts +0 -156
- package/src/hooks/useSelectable/useSelectable.types.ts +0 -45
- package/src/hooks/useWindowResize/index.ts +0 -1
- package/src/hooks/useWindowResize/useWindowResize.ts +0 -27
- package/src/index.ts +0 -188
- package/src/stories/assets/code-brackets.svg +0 -1
- package/src/stories/assets/colors.svg +0 -1
- package/src/stories/assets/comments.svg +0 -1
- package/src/stories/assets/direction.svg +0 -1
- package/src/stories/assets/flow.svg +0 -1
- package/src/stories/assets/plugin.svg +0 -1
- package/src/stories/assets/repo.svg +0 -1
- package/src/stories/assets/stackalt.svg +0 -1
- package/src/stories/introduction.stories.mdx +0 -57
- package/src/stories/startPage.stories.mdx +0 -95
- package/src/styles/activatable.tsx +0 -30
- package/src/styles/disableable.tsx +0 -45
- package/src/styles/ellipsizable.tsx +0 -14
- package/src/styles/focusable.tsx +0 -32
- package/src/styles/font.test.ts +0 -31
- package/src/styles/font.tsx +0 -40
- package/src/styles/hidden.tsx +0 -29
- package/src/styles/hoverable.tsx +0 -30
- package/src/styles/transition.tsx +0 -25
- package/src/styles/typography.test.ts +0 -93
- package/src/styles/typography.ts +0 -190
- package/src/testing/DatePickerEvent/DatePickerEvent.ts +0 -117
- package/src/testing/DatePickerEvent/DateRangePickerEvent.ts +0 -83
- package/src/testing/DatePickerEvent/index.ts +0 -2
- package/src/testing/DragDropFileEvent/DragDropFileEvent.ts +0 -56
- package/src/testing/DragDropFileEvent/index.ts +0 -1
- package/src/testing/SelectEvent/SelectEvent.test.tsx +0 -192
- package/src/testing/SelectEvent/SelectEvent.ts +0 -264
- package/src/testing/SelectEvent/index.ts +0 -1
- package/src/testing/getInterpolatedStyles/getInterpolatedStyles.ts +0 -25
- package/src/testing/getInterpolatedStyles/index.ts +0 -1
- package/src/testing/index.ts +0 -6
- package/src/testing/renderWithDragDropFileProvider/index.ts +0 -1
- package/src/testing/renderWithDragDropFileProvider/renderWithDragDropFileProvider.tsx +0 -28
- package/src/tests/generator.ts +0 -127
- package/src/tests/renderer.tsx +0 -39
- package/src/theming/index.ts +0 -42
- package/src/theming/themes/alice.theme.ts +0 -1022
- package/src/theming/themes/index.ts +0 -3
- package/src/theming/themes/loadsmart.theme.ts +0 -1019
- package/src/theming/themes/miranda-compatibility.theme.ts +0 -972
- package/src/theming/theming.helpers.ts +0 -95
- package/src/tools/conditional.test.ts +0 -166
- package/src/tools/conditional.ts +0 -127
- package/src/tools/index.ts +0 -2
- package/src/tools/prop.test.ts +0 -52
- package/src/tools/prop.ts +0 -36
- package/src/utils/toolset/awaitTo.ts +0 -24
- package/src/utils/toolset/flatten.ts +0 -3
- package/src/utils/toolset/formatBytes.test.ts +0 -45
- package/src/utils/toolset/formatBytes.ts +0 -18
- package/src/utils/toolset/get.ts +0 -2
- package/src/utils/toolset/getID.test.ts +0 -57
- package/src/utils/toolset/getID.ts +0 -93
- package/src/utils/toolset/getOrdinalSuffix.test.ts +0 -27
- package/src/utils/toolset/getOrdinalSuffix.ts +0 -15
- package/src/utils/toolset/highlightMatch.test.tsx +0 -32
- package/src/utils/toolset/highlightMatch.tsx +0 -32
- package/src/utils/toolset/interleave.test.ts +0 -40
- package/src/utils/toolset/interleave.ts +0 -23
- package/src/utils/toolset/isEmpty.ts +0 -2
- package/src/utils/toolset/isThenable.test.ts +0 -40
- package/src/utils/toolset/isThenable.ts +0 -14
- package/src/utils/toolset/keyboard.ts +0 -50
- package/src/utils/toolset/omit.ts +0 -2
- package/src/utils/toolset/pluralize.ts +0 -16
- package/src/utils/toolset/range.ts +0 -2
- package/src/utils/toolset/rem.ts +0 -7
- package/src/utils/toolset/styledCompounds.ts +0 -22
- package/src/utils/toolset/toArray.ts +0 -16
- package/src/utils/types/ColorScheme.ts +0 -3
- package/src/utils/types/EventLike.ts +0 -11
- package/src/utils/types/InterpolatedStyle.ts +0 -3
- package/src/utils/types/Status.ts +0 -8
|
@@ -1,780 +0,0 @@
|
|
|
1
|
-
import React, { useCallback, useState } from 'react'
|
|
2
|
-
import type { Story, Meta } from '@storybook/react'
|
|
3
|
-
import { omit } from 'lodash'
|
|
4
|
-
|
|
5
|
-
import { Label } from 'components/Label'
|
|
6
|
-
import { Text } from 'components/Text'
|
|
7
|
-
import { HighlightMatch } from 'components/HighlightMatch'
|
|
8
|
-
import { Select } from 'components/Select'
|
|
9
|
-
|
|
10
|
-
import {
|
|
11
|
-
useSyncFruits,
|
|
12
|
-
useAsyncUsers,
|
|
13
|
-
useAsyncCustomers,
|
|
14
|
-
FRUITS,
|
|
15
|
-
USERS,
|
|
16
|
-
CUSTOMERS,
|
|
17
|
-
Fruit,
|
|
18
|
-
User,
|
|
19
|
-
} from './Select.fixtures'
|
|
20
|
-
|
|
21
|
-
import type {
|
|
22
|
-
Option,
|
|
23
|
-
SelectComponentsOptionProps as SelectOptionProps,
|
|
24
|
-
SelectProps,
|
|
25
|
-
} from './Select.types'
|
|
26
|
-
import { useSelect } from '.'
|
|
27
|
-
import generators from '../../tests/generator'
|
|
28
|
-
|
|
29
|
-
export default {
|
|
30
|
-
title: 'Components/Select',
|
|
31
|
-
component: Select,
|
|
32
|
-
argTypes: {},
|
|
33
|
-
} as Meta
|
|
34
|
-
|
|
35
|
-
const OMITTED_PROPS = ['onCreate']
|
|
36
|
-
|
|
37
|
-
export const Playground: Story<SelectProps> = (args: SelectProps) => {
|
|
38
|
-
return (
|
|
39
|
-
<div className="flex flex-col space-y-4">
|
|
40
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
41
|
-
<div className="flex-1">
|
|
42
|
-
<Label htmlFor="select-playground">Select your favorite fruit</Label>
|
|
43
|
-
<Select
|
|
44
|
-
options={[...FRUITS]}
|
|
45
|
-
placeholder="Select sync"
|
|
46
|
-
{...omit(args, OMITTED_PROPS)}
|
|
47
|
-
id="select-playground"
|
|
48
|
-
name="select-playground"
|
|
49
|
-
/>
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
52
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
53
|
-
<p>Available options:</p>
|
|
54
|
-
<code>{FRUITS.map(({ label }) => label).join(', ')}</code>
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
)
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
Playground.args = {
|
|
61
|
-
multiple: false,
|
|
62
|
-
autoFocus: true,
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const SINGLE_SYNC_DATASOURCES = [useSyncFruits]
|
|
66
|
-
export const SingleSyncDatasource: Story<SelectProps> = (args: SelectProps) => {
|
|
67
|
-
return (
|
|
68
|
-
<div className="flex flex-col space-y-4">
|
|
69
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
70
|
-
<div className="flex-1">
|
|
71
|
-
<Label htmlFor="select-single-sync">Select your favorite fruit</Label>
|
|
72
|
-
<Select
|
|
73
|
-
placeholder="Select sync"
|
|
74
|
-
{...omit(args, OMITTED_PROPS)}
|
|
75
|
-
id="select-single-sync"
|
|
76
|
-
name="select-single-sync"
|
|
77
|
-
datasources={SINGLE_SYNC_DATASOURCES}
|
|
78
|
-
/>
|
|
79
|
-
</div>
|
|
80
|
-
</div>
|
|
81
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
82
|
-
<p>Available options:</p>
|
|
83
|
-
<code>{FRUITS.map(({ label }) => label).join(', ')}</code>
|
|
84
|
-
</div>
|
|
85
|
-
</div>
|
|
86
|
-
)
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
SingleSyncDatasource.args = {
|
|
90
|
-
multiple: false,
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const CustomOption = ({ value }: SelectOptionProps) => {
|
|
94
|
-
const select = useSelect()
|
|
95
|
-
const option = select.getOption(value)
|
|
96
|
-
const query = select.query
|
|
97
|
-
const { label, family } = option as Fruit
|
|
98
|
-
|
|
99
|
-
return (
|
|
100
|
-
<Select.Option value={value} data-testid="custom-option">
|
|
101
|
-
<div>
|
|
102
|
-
<HighlightMatch text={label} match={query} />
|
|
103
|
-
<Text as="div" color="color-neutral-dark" variant="caption">
|
|
104
|
-
family: {family}
|
|
105
|
-
</Text>
|
|
106
|
-
</div>
|
|
107
|
-
</Select.Option>
|
|
108
|
-
)
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export const SingleCustomOptionRendering: Story<SelectProps> = (args: SelectProps) => {
|
|
112
|
-
return (
|
|
113
|
-
<div className="flex flex-col space-y-4">
|
|
114
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
115
|
-
<div className="flex-1">
|
|
116
|
-
<Label htmlFor="select-custom-option">Select your favorite fruit</Label>
|
|
117
|
-
<Select
|
|
118
|
-
placeholder="Select with custom option"
|
|
119
|
-
{...args}
|
|
120
|
-
id="select-custom-option"
|
|
121
|
-
name="select-custom-option"
|
|
122
|
-
datasources={SINGLE_SYNC_DATASOURCES}
|
|
123
|
-
/>
|
|
124
|
-
</div>
|
|
125
|
-
</div>
|
|
126
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
127
|
-
<p>Available options:</p>
|
|
128
|
-
<code>{FRUITS.map(({ label }) => label).join(', ')}</code>
|
|
129
|
-
</div>
|
|
130
|
-
</div>
|
|
131
|
-
)
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
SingleCustomOptionRendering.args = {
|
|
135
|
-
multiple: false,
|
|
136
|
-
components: { Option: CustomOption },
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
SingleCustomOptionRendering.parameters = {
|
|
140
|
-
docs: {
|
|
141
|
-
description: {
|
|
142
|
-
story: `
|
|
143
|
-
\`\`\`jsx
|
|
144
|
-
const Option = ({ value }: SelectOptionProps) => {
|
|
145
|
-
const select = useSelect()
|
|
146
|
-
const option = select.getOption(value)
|
|
147
|
-
const query = select.query
|
|
148
|
-
const { label, family } = option as Fruit
|
|
149
|
-
|
|
150
|
-
return (
|
|
151
|
-
<Select.Option value={value}>
|
|
152
|
-
<div>
|
|
153
|
-
<HighlightMatch text={label} match={query} />
|
|
154
|
-
<Text as="div" color="color-neutral-dark" variant="caption">
|
|
155
|
-
family: {family}
|
|
156
|
-
</Text>
|
|
157
|
-
</div>
|
|
158
|
-
</Select.Option>
|
|
159
|
-
)
|
|
160
|
-
}
|
|
161
|
-
\`\`\`
|
|
162
|
-
`,
|
|
163
|
-
},
|
|
164
|
-
},
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
const Empty = () => {
|
|
168
|
-
return <Select.Empty>No fruit found.</Select.Empty>
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
export const SingleCustomEmptyRendering: Story<SelectProps> = (args: SelectProps) => {
|
|
172
|
-
return (
|
|
173
|
-
<div className="flex flex-col space-y-4">
|
|
174
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
175
|
-
<div className="flex-1">
|
|
176
|
-
<Label htmlFor="select-custom-empty">Select your favorite fruit</Label>
|
|
177
|
-
<Select
|
|
178
|
-
placeholder="Select with custom empty"
|
|
179
|
-
{...omit(args, OMITTED_PROPS)}
|
|
180
|
-
id="select-custom-empty"
|
|
181
|
-
name="select-custom-empyy"
|
|
182
|
-
datasources={SINGLE_SYNC_DATASOURCES}
|
|
183
|
-
components={{ Empty }}
|
|
184
|
-
/>
|
|
185
|
-
</div>
|
|
186
|
-
</div>
|
|
187
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
188
|
-
<p>Available options:</p>
|
|
189
|
-
<code>{FRUITS.map(({ label }) => label).join(', ')}</code>
|
|
190
|
-
</div>
|
|
191
|
-
</div>
|
|
192
|
-
)
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
SingleCustomEmptyRendering.args = {
|
|
196
|
-
multiple: false,
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
SingleCustomEmptyRendering.parameters = {
|
|
200
|
-
docs: {
|
|
201
|
-
description: {
|
|
202
|
-
story: `
|
|
203
|
-
\`\`\`jsx
|
|
204
|
-
const Empty = () => {
|
|
205
|
-
return <Select.Empty>No fruit found.</Select.Empty>
|
|
206
|
-
}
|
|
207
|
-
\`\`\`
|
|
208
|
-
`,
|
|
209
|
-
},
|
|
210
|
-
},
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
const SINGLE_ASYNC_DATASOURCES = [useAsyncUsers]
|
|
214
|
-
export const SingleAsyncDatasource: Story<SelectProps> = (args: SelectProps) => {
|
|
215
|
-
return (
|
|
216
|
-
<div className="flex flex-col space-y-4">
|
|
217
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
218
|
-
<div className="flex-1">
|
|
219
|
-
<Label htmlFor="select-single-async">Select the project manager</Label>
|
|
220
|
-
<Select
|
|
221
|
-
placeholder="Select async"
|
|
222
|
-
{...omit(args, OMITTED_PROPS)}
|
|
223
|
-
id="select-single-async"
|
|
224
|
-
name="select-single-async"
|
|
225
|
-
datasources={SINGLE_ASYNC_DATASOURCES}
|
|
226
|
-
/>
|
|
227
|
-
</div>
|
|
228
|
-
</div>
|
|
229
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
230
|
-
<p>Available options:</p>
|
|
231
|
-
<code>{USERS.map(({ name }) => name).join(', ')}</code>
|
|
232
|
-
</div>
|
|
233
|
-
</div>
|
|
234
|
-
)
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
SingleAsyncDatasource.args = {
|
|
238
|
-
multiple: false,
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
const SINGLE_MIXED_DATASOURCES = [useSyncFruits, useAsyncUsers]
|
|
242
|
-
export const SingleMixedDatasources: Story<SelectProps> = (args: SelectProps) => {
|
|
243
|
-
return (
|
|
244
|
-
<div className="flex flex-col space-y-4">
|
|
245
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
246
|
-
<div className="flex-1">
|
|
247
|
-
<Label htmlFor="select-mixed">Select your favorite fruit or the project manager</Label>
|
|
248
|
-
<Select
|
|
249
|
-
placeholder="Select mixed"
|
|
250
|
-
{...omit(args, OMITTED_PROPS)}
|
|
251
|
-
id="select-mixed"
|
|
252
|
-
name="select-mixed"
|
|
253
|
-
datasources={SINGLE_MIXED_DATASOURCES}
|
|
254
|
-
/>
|
|
255
|
-
</div>
|
|
256
|
-
</div>
|
|
257
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
258
|
-
<p>Available options:</p>
|
|
259
|
-
<code>{FRUITS.map(({ label }) => label).join(', ')}</code>
|
|
260
|
-
<code>{USERS.map(({ name }) => name).join(', ')}</code>
|
|
261
|
-
</div>
|
|
262
|
-
</div>
|
|
263
|
-
)
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
SingleMixedDatasources.args = {
|
|
267
|
-
multiple: false,
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
const MULTI_SYNC_DATASOURCES = [useSyncFruits]
|
|
271
|
-
export const MultiSyncDatasource: Story<SelectProps> = (args: SelectProps) => {
|
|
272
|
-
return (
|
|
273
|
-
<div className="flex flex-col space-y-4">
|
|
274
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
275
|
-
<div className="flex-1">
|
|
276
|
-
<Label htmlFor="select-multi-sync">Select your favorite fruit</Label>
|
|
277
|
-
<Select
|
|
278
|
-
placeholder="Select multiple sync"
|
|
279
|
-
{...omit(args, OMITTED_PROPS)}
|
|
280
|
-
id="select-multi-sync"
|
|
281
|
-
name="select-multi-sync"
|
|
282
|
-
datasources={MULTI_SYNC_DATASOURCES}
|
|
283
|
-
/>
|
|
284
|
-
</div>
|
|
285
|
-
</div>
|
|
286
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
287
|
-
<p>Available options:</p>
|
|
288
|
-
<code>{FRUITS.map(({ label }) => label).join(', ')}</code>
|
|
289
|
-
</div>
|
|
290
|
-
</div>
|
|
291
|
-
)
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
MultiSyncDatasource.args = {
|
|
295
|
-
multiple: true,
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
const MULTI_ASYNC_DATASOURCES = [useAsyncUsers]
|
|
299
|
-
export const MultiAsyncDatasource: Story<SelectProps> = (args: SelectProps) => {
|
|
300
|
-
return (
|
|
301
|
-
<div className="flex flex-col space-y-4">
|
|
302
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
303
|
-
<div className="flex-1">
|
|
304
|
-
<Label htmlFor="select-multi-async">Select the project manager</Label>
|
|
305
|
-
<Select
|
|
306
|
-
placeholder="Select multiple async"
|
|
307
|
-
{...omit(args, OMITTED_PROPS)}
|
|
308
|
-
id="select-multi-async"
|
|
309
|
-
name="select-multi-async"
|
|
310
|
-
datasources={MULTI_ASYNC_DATASOURCES}
|
|
311
|
-
/>
|
|
312
|
-
</div>
|
|
313
|
-
</div>
|
|
314
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
315
|
-
<p>Available options:</p>
|
|
316
|
-
<code>{USERS.map(({ name }) => name).join(', ')}</code>
|
|
317
|
-
</div>
|
|
318
|
-
</div>
|
|
319
|
-
)
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
MultiAsyncDatasource.args = {
|
|
323
|
-
multiple: true,
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
const MULTI_MIXED_DATASOURCES = [useSyncFruits, useAsyncUsers]
|
|
327
|
-
export const MultiMixedDatasource: Story<SelectProps> = (args: SelectProps) => {
|
|
328
|
-
return (
|
|
329
|
-
<div className="flex flex-col space-y-4">
|
|
330
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
331
|
-
<div className="flex-1">
|
|
332
|
-
<Label htmlFor="select-multi-mixed">
|
|
333
|
-
Select your favorite fruit or the project manager
|
|
334
|
-
</Label>
|
|
335
|
-
<Select
|
|
336
|
-
placeholder="Select multiple mixed"
|
|
337
|
-
{...omit(args, OMITTED_PROPS)}
|
|
338
|
-
id="select-multi-mixed"
|
|
339
|
-
name="select-multi-mixed"
|
|
340
|
-
datasources={MULTI_MIXED_DATASOURCES}
|
|
341
|
-
/>
|
|
342
|
-
</div>
|
|
343
|
-
</div>
|
|
344
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
345
|
-
<p>Available options:</p>
|
|
346
|
-
<code>{FRUITS.map(({ label }) => label).join(', ')}</code>
|
|
347
|
-
<code>{USERS.map(({ name }) => name).join(', ')}</code>
|
|
348
|
-
</div>
|
|
349
|
-
</div>
|
|
350
|
-
)
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
MultiMixedDatasource.args = {
|
|
354
|
-
multiple: true,
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
const VARIOUS_ASYNC_DATASOURCES = [useAsyncUsers, useAsyncCustomers]
|
|
358
|
-
export const VariousAsyncDatasources: Story<SelectProps> = (args: SelectProps) => {
|
|
359
|
-
return (
|
|
360
|
-
<div className="flex flex-col space-y-4">
|
|
361
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
362
|
-
<div className="flex-1">
|
|
363
|
-
<Label htmlFor="select-multi-async">Select the beneficiary</Label>
|
|
364
|
-
<Select
|
|
365
|
-
placeholder="Select async datasources"
|
|
366
|
-
{...omit(args, OMITTED_PROPS)}
|
|
367
|
-
id="select-multi-async"
|
|
368
|
-
name="select-multi-async"
|
|
369
|
-
datasources={VARIOUS_ASYNC_DATASOURCES}
|
|
370
|
-
/>
|
|
371
|
-
</div>
|
|
372
|
-
</div>
|
|
373
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
374
|
-
<p>Available options:</p>
|
|
375
|
-
<code>{[...USERS, ...CUSTOMERS].map(({ name }) => name).join(', ')}</code>
|
|
376
|
-
</div>
|
|
377
|
-
</div>
|
|
378
|
-
)
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
VariousAsyncDatasources.args = {
|
|
382
|
-
multiple: false,
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
const MixedCustomOption = ({ value }: SelectOptionProps) => {
|
|
386
|
-
const select = useSelect()
|
|
387
|
-
const option = select.getOption(value) || {}
|
|
388
|
-
const query = select.query
|
|
389
|
-
|
|
390
|
-
let label
|
|
391
|
-
if (option._type === 'user') {
|
|
392
|
-
label = (option as User).name
|
|
393
|
-
} else {
|
|
394
|
-
label = (option as Fruit).label
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
return (
|
|
398
|
-
<Select.Option value={value} trailing={option._type === 'user' ? '🙂' : '🍑'}>
|
|
399
|
-
<div>
|
|
400
|
-
<HighlightMatch text={label} match={query} />
|
|
401
|
-
<Text as="div" color="color-neutral-dark" variant="caption">
|
|
402
|
-
{option._type}
|
|
403
|
-
</Text>
|
|
404
|
-
</div>
|
|
405
|
-
</Select.Option>
|
|
406
|
-
)
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
const value = [
|
|
410
|
-
{ _type: 'fruit', ...FRUITS[0] },
|
|
411
|
-
{ _type: 'user', ...USERS[0] },
|
|
412
|
-
] as Option[]
|
|
413
|
-
|
|
414
|
-
export const MultiCustomOptionRendering: Story<SelectProps> = (args: SelectProps) => {
|
|
415
|
-
return (
|
|
416
|
-
<div className="flex flex-col space-y-4">
|
|
417
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
418
|
-
<div className="flex-1">
|
|
419
|
-
<Label htmlFor="select-multi-mixed">
|
|
420
|
-
Select your favorite fruit or the project manager
|
|
421
|
-
</Label>
|
|
422
|
-
<Select
|
|
423
|
-
placeholder="Select multiple mixed"
|
|
424
|
-
{...omit(args, OMITTED_PROPS)}
|
|
425
|
-
id="select-multi-mixed"
|
|
426
|
-
name="select-multi-mixed"
|
|
427
|
-
datasources={MULTI_MIXED_DATASOURCES}
|
|
428
|
-
components={{ Option: MixedCustomOption }}
|
|
429
|
-
value={value}
|
|
430
|
-
/>
|
|
431
|
-
</div>
|
|
432
|
-
</div>
|
|
433
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
434
|
-
<p>Available options:</p>
|
|
435
|
-
<code>{FRUITS.map(({ label }) => label).join(', ')}</code>
|
|
436
|
-
<code>{USERS.map(({ name }) => name).join(', ')}</code>
|
|
437
|
-
</div>
|
|
438
|
-
</div>
|
|
439
|
-
)
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
MultiCustomOptionRendering.args = {
|
|
443
|
-
multiple: true,
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
MultiCustomOptionRendering.parameters = {
|
|
447
|
-
docs: {
|
|
448
|
-
description: {
|
|
449
|
-
story: `
|
|
450
|
-
\`\`\`jsx
|
|
451
|
-
const MixedCustomOption = ({ value }: SelectOptionProps) => {
|
|
452
|
-
const select = useSelect()
|
|
453
|
-
const option = select.getOption(value) || {}
|
|
454
|
-
const query = select.query
|
|
455
|
-
|
|
456
|
-
let label
|
|
457
|
-
if (option._type === 'user') {
|
|
458
|
-
label = (option as User).name
|
|
459
|
-
} else {
|
|
460
|
-
label = (option as Fruit).label
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
return (
|
|
464
|
-
<Select.Option value={value} trailing={option._type === 'user' ? '🙂' : '🍑'}>
|
|
465
|
-
<div>
|
|
466
|
-
<HighlightMatch text={label} match={query} />
|
|
467
|
-
<Text as="div" color="color-neutral-dark" variant="caption">
|
|
468
|
-
{option._type}
|
|
469
|
-
</Text>
|
|
470
|
-
</div>
|
|
471
|
-
</Select.Option>
|
|
472
|
-
)
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
\`\`\`
|
|
476
|
-
`,
|
|
477
|
-
},
|
|
478
|
-
},
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
const fruits = [...FRUITS]
|
|
482
|
-
|
|
483
|
-
export const CreatableSync: Story<SelectProps> = (args: SelectProps) => {
|
|
484
|
-
const handleCreate = useCallback(function handleCreate(query: string) {
|
|
485
|
-
const item: Option = { label: query, value: query } as Option
|
|
486
|
-
|
|
487
|
-
fruits.push(item as Fruit)
|
|
488
|
-
return item
|
|
489
|
-
}, [])
|
|
490
|
-
|
|
491
|
-
return (
|
|
492
|
-
<div className="flex flex-col space-y-4">
|
|
493
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
494
|
-
<div className="flex-1">
|
|
495
|
-
<Label htmlFor="select-creatable-sync">Select your favorite fruit</Label>
|
|
496
|
-
<Select
|
|
497
|
-
onCreate={handleCreate}
|
|
498
|
-
datasources={SINGLE_SYNC_DATASOURCES}
|
|
499
|
-
placeholder="Select creatable sync"
|
|
500
|
-
{...args}
|
|
501
|
-
id="select-creatable-sync"
|
|
502
|
-
name="select-creatable-sync"
|
|
503
|
-
/>
|
|
504
|
-
</div>
|
|
505
|
-
</div>
|
|
506
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
507
|
-
<p>Available options:</p>
|
|
508
|
-
<code>{fruits.map(({ label }) => label).join(', ')}</code>
|
|
509
|
-
</div>
|
|
510
|
-
</div>
|
|
511
|
-
)
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
CreatableSync.parameters = {
|
|
515
|
-
actions: { argTypesRegex: 'onClick' },
|
|
516
|
-
docs: {
|
|
517
|
-
description: {
|
|
518
|
-
story: `
|
|
519
|
-
|
|
520
|
-
Creatable Select allows users to add new items to the options list when the query they typed doesn't match the available options.
|
|
521
|
-
When the \`onCreate\` prop is provided, if the entered query does not match any of the available options, a new item can be created based on that query
|
|
522
|
-
|
|
523
|
-
\`\`\`jsx
|
|
524
|
-
function handleCreate(query: string): Promise<void | Option> | void | Option {
|
|
525
|
-
// Create the new item
|
|
526
|
-
const item: Option = { label: query, value: query.toLowerCase() }
|
|
527
|
-
|
|
528
|
-
// Update options
|
|
529
|
-
FRUITS = [...FRUITS, item]
|
|
530
|
-
|
|
531
|
-
// When the option is returned it will be selected. onChange will be fired with the new value
|
|
532
|
-
return item
|
|
533
|
-
}
|
|
534
|
-
\`\`\`
|
|
535
|
-
`,
|
|
536
|
-
},
|
|
537
|
-
},
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
export const CreatableAsync: Story<SelectProps> = (args: SelectProps) => {
|
|
541
|
-
const [disabled, setDisabled] = useState(false)
|
|
542
|
-
|
|
543
|
-
const handleCreate = useCallback(function handleCreate(query: string) {
|
|
544
|
-
return new Promise<Option>((resolve) => {
|
|
545
|
-
const item: Option = {
|
|
546
|
-
uuid: generators.id(),
|
|
547
|
-
name: query,
|
|
548
|
-
_type: 'user',
|
|
549
|
-
} as Option
|
|
550
|
-
setDisabled(true)
|
|
551
|
-
|
|
552
|
-
setTimeout(() => {
|
|
553
|
-
USERS.push(item as User)
|
|
554
|
-
|
|
555
|
-
setDisabled(false)
|
|
556
|
-
resolve(item)
|
|
557
|
-
}, 2000)
|
|
558
|
-
})
|
|
559
|
-
}, [])
|
|
560
|
-
|
|
561
|
-
return (
|
|
562
|
-
<div className="flex flex-col space-y-4">
|
|
563
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
564
|
-
<div className="flex-1">
|
|
565
|
-
<Label htmlFor="select-creatable-async">Select the project manager</Label>
|
|
566
|
-
<Select
|
|
567
|
-
datasources={SINGLE_ASYNC_DATASOURCES}
|
|
568
|
-
onCreate={handleCreate}
|
|
569
|
-
multiple
|
|
570
|
-
placeholder="Select creatable async"
|
|
571
|
-
{...args}
|
|
572
|
-
id="select-creatable-async"
|
|
573
|
-
name="select-creatable-async"
|
|
574
|
-
disabled={disabled}
|
|
575
|
-
/>
|
|
576
|
-
</div>
|
|
577
|
-
</div>
|
|
578
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
579
|
-
<p>Available options:</p>
|
|
580
|
-
<code>{USERS.map(({ name }) => name).join(', ')}</code>
|
|
581
|
-
</div>
|
|
582
|
-
</div>
|
|
583
|
-
)
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
CreatableAsync.parameters = {
|
|
587
|
-
actions: { argTypesRegex: 'onClick' },
|
|
588
|
-
docs: {
|
|
589
|
-
description: {
|
|
590
|
-
story: `
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
> The asynchronous version is useful when the new item needs to be created in a backend service.
|
|
594
|
-
|
|
595
|
-
The callback handler must return a \`Promise\`.
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
\`\`\`jsx
|
|
599
|
-
function handleCreate(query: string): Promise<void | Option> | void | Option {
|
|
600
|
-
return new Promise<void>((resolve) => {
|
|
601
|
-
// Create the new item
|
|
602
|
-
const item: Option = {
|
|
603
|
-
uuid: generators.id(),
|
|
604
|
-
name: query,
|
|
605
|
-
_type: 'user',
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
// Disable the Select to wait until the new item is created. (optional)
|
|
609
|
-
setDisabled(true)
|
|
610
|
-
|
|
611
|
-
// Run "asynchronous" code
|
|
612
|
-
setTimeout(() => {
|
|
613
|
-
// Update options
|
|
614
|
-
USERS = [...USERS, item]
|
|
615
|
-
|
|
616
|
-
// Enable the component
|
|
617
|
-
setDisabled(false)
|
|
618
|
-
|
|
619
|
-
// When the promise resolves with the new option, it will be selected. onChange will fire with the new value
|
|
620
|
-
resolve(item)
|
|
621
|
-
}, 2000)
|
|
622
|
-
})
|
|
623
|
-
}
|
|
624
|
-
\`\`\`
|
|
625
|
-
`,
|
|
626
|
-
},
|
|
627
|
-
},
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
const CreatableOption = () => {
|
|
631
|
-
const select = useSelect()
|
|
632
|
-
|
|
633
|
-
return <Select.CreatableOption leading="➕">{`Add "${select.query}"`}</Select.CreatableOption>
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
export const CustomCreatableOption: Story<SelectProps> = ({ onCreate, ...args }: SelectProps) => {
|
|
637
|
-
const [value, setValue] = useState<Option | null>(null)
|
|
638
|
-
|
|
639
|
-
const handleCreate = useCallback(
|
|
640
|
-
function handleCreate(query: string) {
|
|
641
|
-
void onCreate?.(query)
|
|
642
|
-
|
|
643
|
-
const item: Option = { label: query, value: query } as Option
|
|
644
|
-
|
|
645
|
-
setValue(item)
|
|
646
|
-
fruits.push(item as Fruit)
|
|
647
|
-
},
|
|
648
|
-
[onCreate]
|
|
649
|
-
)
|
|
650
|
-
|
|
651
|
-
return (
|
|
652
|
-
<div className="flex flex-col space-y-4">
|
|
653
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
654
|
-
<div className="flex-1">
|
|
655
|
-
<Label htmlFor="select-custom-creatable-option">Select your favorite fruit</Label>
|
|
656
|
-
<Select
|
|
657
|
-
placeholder="Select with custom creatable option"
|
|
658
|
-
{...args}
|
|
659
|
-
id="select-custom-creatable-option"
|
|
660
|
-
name="select-custom-creatable-option"
|
|
661
|
-
datasources={SINGLE_SYNC_DATASOURCES}
|
|
662
|
-
onChange={(event) => setValue(event.target.value as Option)}
|
|
663
|
-
onCreate={handleCreate}
|
|
664
|
-
value={value as Option}
|
|
665
|
-
components={{
|
|
666
|
-
CreatableOption,
|
|
667
|
-
}}
|
|
668
|
-
/>
|
|
669
|
-
</div>
|
|
670
|
-
</div>
|
|
671
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
672
|
-
<p>Available options:</p>
|
|
673
|
-
<code>{fruits.map(({ label }) => label).join(', ')}</code>
|
|
674
|
-
</div>
|
|
675
|
-
</div>
|
|
676
|
-
)
|
|
677
|
-
}
|
|
678
|
-
|
|
679
|
-
CustomCreatableOption.parameters = {
|
|
680
|
-
docs: {
|
|
681
|
-
description: {
|
|
682
|
-
story: `
|
|
683
|
-
\`\`\`jsx
|
|
684
|
-
const CreatableOption = () => {
|
|
685
|
-
const select = useSelect()
|
|
686
|
-
|
|
687
|
-
return (
|
|
688
|
-
<Select.CreatableOption leading="➕">
|
|
689
|
-
Add "{select.query}"
|
|
690
|
-
</Select.CreatableOption>
|
|
691
|
-
)
|
|
692
|
-
}
|
|
693
|
-
\`\`\`
|
|
694
|
-
`,
|
|
695
|
-
},
|
|
696
|
-
},
|
|
697
|
-
}
|
|
698
|
-
|
|
699
|
-
const FixedCreatableOption = () => {
|
|
700
|
-
return (
|
|
701
|
-
<Select.CreatableOption>
|
|
702
|
-
<Text variant="body-bold" color="color-accent">
|
|
703
|
-
Add new...
|
|
704
|
-
</Text>
|
|
705
|
-
</Select.CreatableOption>
|
|
706
|
-
)
|
|
707
|
-
}
|
|
708
|
-
|
|
709
|
-
export const SelectWithFixedCreatableOption: Story<SelectProps> = ({
|
|
710
|
-
onCreate,
|
|
711
|
-
...args
|
|
712
|
-
}: SelectProps) => {
|
|
713
|
-
const [value, setValue] = useState<Option | null>(null)
|
|
714
|
-
|
|
715
|
-
const handleCreate = useCallback(
|
|
716
|
-
function handleCreate(query: string) {
|
|
717
|
-
void onCreate?.(query)
|
|
718
|
-
},
|
|
719
|
-
[onCreate]
|
|
720
|
-
)
|
|
721
|
-
|
|
722
|
-
return (
|
|
723
|
-
<div className="flex flex-col space-y-4">
|
|
724
|
-
<div className="flex flex-row space-x-4" style={{ width: 720 }}>
|
|
725
|
-
<div className="flex-1">
|
|
726
|
-
<Label htmlFor="select-custom-creatable-option">Select your favorite fruit</Label>
|
|
727
|
-
<Select
|
|
728
|
-
{...args}
|
|
729
|
-
id="select-custom-creatable-option"
|
|
730
|
-
name="select-custom-creatable-option"
|
|
731
|
-
placeholder="Select with custom creatable option"
|
|
732
|
-
datasources={SINGLE_SYNC_DATASOURCES}
|
|
733
|
-
onChange={(event) => setValue(event.target.value as Option)}
|
|
734
|
-
onCreate={handleCreate}
|
|
735
|
-
value={value as Option}
|
|
736
|
-
components={{
|
|
737
|
-
CreatableOption: FixedCreatableOption,
|
|
738
|
-
}}
|
|
739
|
-
/>
|
|
740
|
-
</div>
|
|
741
|
-
</div>
|
|
742
|
-
<div className="text-sm" style={{ width: 720 }}>
|
|
743
|
-
<p>Available options:</p>
|
|
744
|
-
<code>{FRUITS.map(({ label }) => label).join(', ')}</code>
|
|
745
|
-
</div>
|
|
746
|
-
</div>
|
|
747
|
-
)
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
SelectWithFixedCreatableOption.args = {
|
|
751
|
-
createOptionPosition: 'first',
|
|
752
|
-
isValidNewOption: true,
|
|
753
|
-
}
|
|
754
|
-
|
|
755
|
-
SelectWithFixedCreatableOption.parameters = {
|
|
756
|
-
docs: {
|
|
757
|
-
description: {
|
|
758
|
-
story: `
|
|
759
|
-
\`\`\`jsx
|
|
760
|
-
const CreatableOption = () => {
|
|
761
|
-
return (
|
|
762
|
-
<Select.CreatableOption>
|
|
763
|
-
Add new...
|
|
764
|
-
</Select.CreatableOption>
|
|
765
|
-
)
|
|
766
|
-
}
|
|
767
|
-
|
|
768
|
-
<Select
|
|
769
|
-
{...args}
|
|
770
|
-
createOptionPosition="first"
|
|
771
|
-
isValidNewOption={true}
|
|
772
|
-
components={{
|
|
773
|
-
CreatableOption,
|
|
774
|
-
}}
|
|
775
|
-
/>
|
|
776
|
-
\`\`\`
|
|
777
|
-
`,
|
|
778
|
-
},
|
|
779
|
-
},
|
|
780
|
-
}
|