@strapi/design-system 1.3.0-beta.1 → 1.3.0-beta.3
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/Accordion.development.js +775 -0
- package/Accordion.js +9 -0
- package/Accordion.production.js +1 -0
- package/Alert.development.js +562 -0
- package/Alert.js +9 -0
- package/Alert.production.js +1 -0
- package/Avatar.development.js +485 -0
- package/Avatar.js +9 -0
- package/Avatar.production.js +1 -0
- package/Badge.development.js +494 -0
- package/Badge.js +9 -0
- package/Badge.production.js +1 -0
- package/BaseButton.development.js +285 -0
- package/BaseButton.js +9 -0
- package/BaseButton.production.js +1 -0
- package/BaseCheckbox.development.js +434 -0
- package/BaseCheckbox.js +9 -0
- package/BaseCheckbox.production.js +1 -0
- package/BaseLink.development.js +273 -0
- package/BaseLink.js +9 -0
- package/BaseLink.production.js +1 -0
- package/BaseRadio.development.js +321 -0
- package/BaseRadio.js +9 -0
- package/BaseRadio.production.js +1 -0
- package/Box.development.js +341 -0
- package/Box.js +9 -0
- package/Box.production.js +1 -0
- package/Breadcrumbs.development.js +518 -0
- package/Breadcrumbs.js +9 -0
- package/Breadcrumbs.production.js +1 -0
- package/Button.development.js +573 -0
- package/Button.js +9 -0
- package/Button.production.js +1 -0
- package/Card.development.js +746 -0
- package/Card.js +9 -0
- package/Card.production.js +1 -0
- package/CarouselInput.development.js +898 -0
- package/CarouselInput.js +9 -0
- package/CarouselInput.production.js +1 -0
- package/Checkbox.development.js +722 -0
- package/Checkbox.js +9 -0
- package/Checkbox.production.js +1 -0
- package/Combobox.development.js +934 -0
- package/Combobox.js +9 -0
- package/Combobox.production.js +1 -0
- package/DatePicker.development.js +1323 -0
- package/DatePicker.js +9 -0
- package/DatePicker.production.js +1 -0
- package/DateTimePicker.development.js +1622 -0
- package/DateTimePicker.js +9 -0
- package/DateTimePicker.production.js +1 -0
- package/Dialog.development.js +741 -0
- package/Dialog.js +9 -0
- package/Dialog.production.js +1 -0
- package/DismissibleLayer.development.js +218 -0
- package/DismissibleLayer.js +9 -0
- package/DismissibleLayer.production.js +1 -0
- package/Divider.development.js +398 -0
- package/Divider.js +9 -0
- package/Divider.production.js +1 -0
- package/EmptyStateLayout.development.js +425 -0
- package/EmptyStateLayout.js +9 -0
- package/EmptyStateLayout.production.js +1 -0
- package/Field.development.js +614 -0
- package/Field.js +9 -0
- package/Field.production.js +1 -0
- package/Flex.development.js +377 -0
- package/Flex.js +9 -0
- package/Flex.production.js +1 -0
- package/FocusTrap.development.js +341 -0
- package/FocusTrap.js +9 -0
- package/FocusTrap.production.js +1 -0
- package/Grid.development.js +422 -0
- package/Grid.js +9 -0
- package/Grid.production.js +1 -0
- package/Icon.development.js +376 -0
- package/Icon.js +9 -0
- package/Icon.production.js +1 -0
- package/IconButton.development.js +684 -0
- package/IconButton.js +9 -0
- package/IconButton.production.js +1 -0
- package/KeyboardNavigable.development.js +454 -0
- package/KeyboardNavigable.js +9 -0
- package/KeyboardNavigable.production.js +1 -0
- package/Layout.development.js +626 -0
- package/Layout.js +9 -0
- package/Layout.production.js +1 -0
- package/Link.development.js +492 -0
- package/Link.js +9 -0
- package/Link.production.js +1 -0
- package/LinkButton.development.js +573 -0
- package/LinkButton.js +9 -0
- package/LinkButton.production.js +1 -0
- package/LiveRegions.development.js +147 -0
- package/LiveRegions.js +9 -0
- package/LiveRegions.production.js +1 -0
- package/Loader.development.js +309 -0
- package/Loader.js +9 -0
- package/Loader.production.js +1 -0
- package/Main.development.js +410 -0
- package/Main.js +9 -0
- package/Main.production.js +1 -0
- package/MainNav.development.js +957 -0
- package/MainNav.js +9 -0
- package/MainNav.production.js +1 -0
- package/ModalLayout.development.js +895 -0
- package/ModalLayout.js +9 -0
- package/ModalLayout.production.js +1 -0
- package/NumberInput.development.js +733 -0
- package/NumberInput.js +9 -0
- package/NumberInput.production.js +1 -0
- package/Pagination.development.js +587 -0
- package/Pagination.js +9 -0
- package/Pagination.production.js +1 -0
- package/Popover.development.js +481 -0
- package/Popover.js +9 -0
- package/Popover.production.js +1 -0
- package/Portal.development.js +212 -0
- package/Portal.js +9 -0
- package/Portal.production.js +1 -0
- package/ProgressBar.development.js +273 -0
- package/ProgressBar.js +9 -0
- package/ProgressBar.production.js +1 -0
- package/Radio.development.js +518 -0
- package/Radio.js +9 -0
- package/Radio.production.js +1 -0
- package/RawTable.development.js +549 -0
- package/RawTable.js +9 -0
- package/RawTable.production.js +1 -0
- package/Searchbar.development.js +696 -0
- package/Searchbar.js +9 -0
- package/Searchbar.production.js +1 -0
- package/Select.development.js +1063 -0
- package/Select.js +9 -0
- package/Select.production.js +1 -0
- package/SimpleMenu.development.js +821 -0
- package/SimpleMenu.js +9 -0
- package/SimpleMenu.production.js +1 -0
- package/Stack.development.js +434 -0
- package/Stack.js +9 -0
- package/Stack.production.js +1 -0
- package/Status.development.js +494 -0
- package/Status.js +9 -0
- package/Status.production.js +1 -0
- package/SubNav.development.js +1123 -0
- package/SubNav.js +9 -0
- package/SubNav.production.js +1 -0
- package/Switch.development.js +434 -0
- package/Switch.js +9 -0
- package/Switch.production.js +1 -0
- package/Table.development.js +741 -0
- package/Table.js +9 -0
- package/Table.production.js +1 -0
- package/Tabs.development.js +590 -0
- package/Tabs.js +9 -0
- package/Tabs.production.js +1 -0
- package/Tag.development.js +494 -0
- package/Tag.js +9 -0
- package/Tag.production.js +1 -0
- package/TextButton.development.js +517 -0
- package/TextButton.js +9 -0
- package/TextButton.production.js +1 -0
- package/TextInput.development.js +662 -0
- package/TextInput.js +9 -0
- package/TextInput.production.js +1 -0
- package/Textarea.development.js +674 -0
- package/Textarea.js +9 -0
- package/Textarea.production.js +1 -0
- package/ThemeProvider.development.js +300 -0
- package/ThemeProvider.js +9 -0
- package/ThemeProvider.production.js +1 -0
- package/TimePicker.development.js +1098 -0
- package/TimePicker.js +9 -0
- package/TimePicker.production.js +1 -0
- package/ToggleCheckbox.development.js +542 -0
- package/ToggleCheckbox.js +9 -0
- package/ToggleCheckbox.production.js +1 -0
- package/ToggleInput.development.js +745 -0
- package/ToggleInput.js +9 -0
- package/ToggleInput.production.js +1 -0
- package/Tooltip.development.js +588 -0
- package/Tooltip.js +9 -0
- package/Tooltip.production.js +1 -0
- package/Typography.development.js +276 -0
- package/Typography.js +9 -0
- package/Typography.production.js +1 -0
- package/VisuallyHidden.development.js +146 -0
- package/VisuallyHidden.js +9 -0
- package/VisuallyHidden.production.js +1 -0
- package/index.development.js +4338 -0
- package/index.js +9 -0
- package/index.production.js +1 -0
- package/package.json +2 -2
- package/themes.development.js +254 -0
- package/themes.js +9 -0
- package/themes.production.js +1 -0
- package/v2/Breadcrumbs.development.js +906 -0
- package/v2/Breadcrumbs.js +9 -0
- package/v2/Breadcrumbs.production.js +1 -0
- package/v2/Link.development.js +505 -0
- package/v2/Link.js +9 -0
- package/v2/Link.production.js +1 -0
- package/v2/LinkButton.development.js +586 -0
- package/v2/LinkButton.js +9 -0
- package/v2/LinkButton.production.js +1 -0
- package/v2/MainNav.development.js +970 -0
- package/v2/MainNav.js +9 -0
- package/v2/MainNav.production.js +1 -0
- package/v2/Pagination.development.js +600 -0
- package/v2/Pagination.js +9 -0
- package/v2/Pagination.production.js +1 -0
- package/v2/SimpleMenu.development.js +834 -0
- package/v2/SimpleMenu.js +9 -0
- package/v2/SimpleMenu.production.js +1 -0
- package/v2/SubNav.development.js +1136 -0
- package/v2/SubNav.js +9 -0
- package/v2/SubNav.production.js +1 -0
- package/v2/index.development.js +1740 -0
- package/v2/index.js +9 -0
- package/v2/index.production.js +1 -0
- package/v2/package.json +81 -0
- package/.eslintignore +0 -3
- package/.eslintrc.js +0 -38
- package/.prettierrc.js +0 -7
- package/.storybook/components/Theme.js +0 -28
- package/.storybook/main.js +0 -13
- package/.storybook/manager.js +0 -12
- package/.storybook/preview.js +0 -42
- package/.storybook/utils/createCustomTheme.js +0 -26
- package/LICENSE +0 -20
- package/__mocks__/fileMock.js +0 -1
- package/__mocks__/styleMock.js +0 -1
- package/babel.config.js +0 -5
- package/createIndexFiles.js +0 -34
- package/global-setup.js +0 -4
- package/jest.config.js +0 -17
- package/playwright.config.js +0 -39
- package/src/Accordion/Accordion.js +0 -148
- package/src/Accordion/Accordion.stories.mdx +0 -327
- package/src/Accordion/AccordionContent.js +0 -26
- package/src/Accordion/AccordionContext.js +0 -5
- package/src/Accordion/AccordionGroup.js +0 -114
- package/src/Accordion/AccordionToggle.js +0 -192
- package/src/Accordion/__tests__/Accordion.e2e.js +0 -32
- package/src/Accordion/__tests__/AccordionKeyboard.e2e.js +0 -73
- package/src/Accordion/index.js +0 -4
- package/src/Accordion/utils.js +0 -15
- package/src/Alert/Alert.js +0 -144
- package/src/Alert/Alert.stories.mdx +0 -135
- package/src/Alert/__tests__/Alert.e2e.js +0 -39
- package/src/Alert/index.js +0 -1
- package/src/Alert/utils.js +0 -35
- package/src/Avatar/Avatar.js +0 -110
- package/src/Avatar/Avatar.stories.mdx +0 -67
- package/src/Avatar/AvatarGroup.js +0 -9
- package/src/Avatar/__tests__/Avatar.e2e.js +0 -23
- package/src/Avatar/__tests__/Avatar.spec.js +0 -153
- package/src/Avatar/constants.js +0 -2
- package/src/Avatar/index.js +0 -2
- package/src/Badge/Badge.js +0 -41
- package/src/Badge/Badge.stories.mdx +0 -57
- package/src/Badge/__tests__/Badge.e2e.js +0 -23
- package/src/Badge/index.js +0 -1
- package/src/BaseButton/BaseButton.js +0 -46
- package/src/BaseButton/BaseButton.stories.mdx +0 -32
- package/src/BaseButton/__tests__/BaseButton.e2e.js +0 -23
- package/src/BaseButton/index.js +0 -1
- package/src/BaseCheckbox/BaseCheckbox.js +0 -133
- package/src/BaseCheckbox/BaseCheckbox.stories.mdx +0 -107
- package/src/BaseCheckbox/__tests__/BaseCheckbox.e2e.js +0 -94
- package/src/BaseCheckbox/assets/checkmark-black.svg +0 -6
- package/src/BaseCheckbox/assets/checkmark.svg +0 -6
- package/src/BaseCheckbox/index.js +0 -1
- package/src/BaseCheckbox/utils.js +0 -7
- package/src/BaseLink/BaseLink.js +0 -38
- package/src/BaseLink/BaseLink.stories.mdx +0 -34
- package/src/BaseLink/__tests__/BaseLink.e2e.js +0 -23
- package/src/BaseLink/__tests__/BaseLink.spec.js +0 -26
- package/src/BaseLink/index.js +0 -1
- package/src/BaseRadio/BaseRadio.js +0 -69
- package/src/BaseRadio/BaseRadio.stories.mdx +0 -110
- package/src/BaseRadio/RadioGroup.js +0 -36
- package/src/BaseRadio/__tests__/BaseRadio.e2e.js +0 -90
- package/src/BaseRadio/context.js +0 -3
- package/src/BaseRadio/index.js +0 -2
- package/src/BaseRadio/utils.js +0 -30
- package/src/Box/Box.js +0 -104
- package/src/Box/Box.stories.mdx +0 -57
- package/src/Box/BoxProps.js +0 -99
- package/src/Box/__tests__/Box.e2e.js +0 -23
- package/src/Box/__tests__/Box.spec.js +0 -36
- package/src/Box/index.js +0 -1
- package/src/Breadcrumbs/Breadcrumbs.js +0 -58
- package/src/Breadcrumbs/Breadcrumbs.stories.mdx +0 -47
- package/src/Breadcrumbs/__tests__/Breadcrumbs.e2e.js +0 -23
- package/src/Breadcrumbs/index.js +0 -1
- package/src/Button/Button.js +0 -138
- package/src/Button/Button.stories.mdx +0 -216
- package/src/Button/__tests__/Button.e2e.js +0 -89
- package/src/Button/__tests__/utils.spec.js +0 -19
- package/src/Button/constants.js +0 -12
- package/src/Button/index.js +0 -1
- package/src/Button/utils.js +0 -170
- package/src/Card/Card.js +0 -35
- package/src/Card/Card.stories.mdx +0 -202
- package/src/Card/CardAction.js +0 -13
- package/src/Card/CardAsset.js +0 -49
- package/src/Card/CardBadge.js +0 -18
- package/src/Card/CardBody.js +0 -11
- package/src/Card/CardCheckbox.js +0 -14
- package/src/Card/CardContent.js +0 -16
- package/src/Card/CardContext.js +0 -5
- package/src/Card/CardHeader.js +0 -12
- package/src/Card/CardTimer.js +0 -23
- package/src/Card/CardTitle.js +0 -12
- package/src/Card/__tests__/Card.e2e.js +0 -164
- package/src/Card/index.js +0 -10
- package/src/Card/story-assets/first.jpg +0 -0
- package/src/CarouselInput/Carousel.js +0 -138
- package/src/CarouselInput/Carousel.stories.mdx +0 -149
- package/src/CarouselInput/CarouselActions.js +0 -6
- package/src/CarouselInput/CarouselImage.js +0 -39
- package/src/CarouselInput/CarouselInput.js +0 -80
- package/src/CarouselInput/CarouselSlide.js +0 -32
- package/src/CarouselInput/__tests__/CarouselImage.e2e.js +0 -15
- package/src/CarouselInput/__tests__/CarouselInput.e2e.js +0 -48
- package/src/CarouselInput/index.js +0 -5
- package/src/CarouselInput/story-assets/first.jpg +0 -0
- package/src/Checkbox/Checkbox.js +0 -63
- package/src/Checkbox/Checkbox.stories.mdx +0 -190
- package/src/Checkbox/__tests__/Checkbox.e2e.js +0 -96
- package/src/Checkbox/index.js +0 -1
- package/src/Combobox/Combobox.js +0 -421
- package/src/Combobox/Combobox.stories.mdx +0 -191
- package/src/Combobox/ComboboxList.js +0 -22
- package/src/Combobox/ComboboxOption.js +0 -36
- package/src/Combobox/__tests__/Combobox.e2e.js +0 -133
- package/src/Combobox/__tests__/utils.spec.js +0 -94
- package/src/Combobox/components.js +0 -69
- package/src/Combobox/index.js +0 -2
- package/src/Combobox/utils.js +0 -97
- package/src/DatePicker/DatePicker.js +0 -132
- package/src/DatePicker/DatePicker.stories.mdx +0 -172
- package/src/DatePicker/DatePickerCalendar.js +0 -134
- package/src/DatePicker/DatePickerTd.js +0 -51
- package/src/DatePicker/DatePickerTh.js +0 -39
- package/src/DatePicker/__tests__/DatePicker.e2e.js +0 -94
- package/src/DatePicker/__tests__/DatePicker.spec.js +0 -40
- package/src/DatePicker/compareDates.js +0 -9
- package/src/DatePicker/components.js +0 -45
- package/src/DatePicker/index.js +0 -1
- package/src/DatePicker/utils/formatDate.js +0 -5
- package/src/DatePicker/utils/generateWeeks.js +0 -58
- package/src/DatePicker/utils/getDayOfWeek.js +0 -24
- package/src/DatePicker/utils/getMonths.js +0 -10
- package/src/DatePicker/utils/getYears.js +0 -19
- package/src/DatePicker/utils/index.js +0 -5
- package/src/DatePicker/utils/tests/generateWeeks.spec.js +0 -136
- package/src/DatePicker/utils/tests/getMonths.spec.js +0 -21
- package/src/DatePicker/utils/tests/getYears.spec.js +0 -21
- package/src/DateTimePicker/DateTimePicker.js +0 -151
- package/src/DateTimePicker/DateTimePicker.stories.mdx +0 -114
- package/src/DateTimePicker/DateTimePickerProps.js +0 -85
- package/src/DateTimePicker/__tests__/DateTimePicker.e2e.js +0 -103
- package/src/DateTimePicker/__tests__/DateTimePicker.spec.js +0 -89
- package/src/DateTimePicker/__tests__/__snapshots__/DateTimePicker.spec.js.snap +0 -448
- package/src/DateTimePicker/__tests__/parseDate.test.js +0 -10
- package/src/DateTimePicker/index.js +0 -1
- package/src/DateTimePicker/parseDate.js +0 -11
- package/src/Dialog/Dialog.js +0 -86
- package/src/Dialog/Dialog.stories.mdx +0 -78
- package/src/Dialog/DialogBody.js +0 -36
- package/src/Dialog/DialogFooter.js +0 -38
- package/src/Dialog/__tests__/Dialog.e2e.js +0 -20
- package/src/Dialog/__tests__/Dialog.spec.js +0 -28
- package/src/Dialog/index.js +0 -3
- package/src/DismissibleLayer/DismissibleLayer.js +0 -87
- package/src/DismissibleLayer/DismissibleLayer.stories.mdx +0 -50
- package/src/DismissibleLayer/__test__/DimissibleLayer.spec.js +0 -44
- package/src/DismissibleLayer/index.js +0 -1
- package/src/Divider/Divider.js +0 -26
- package/src/Divider/Divider.stories.mdx +0 -55
- package/src/Divider/__tests__/Divider.e2e.js +0 -23
- package/src/Divider/index.js +0 -1
- package/src/EmptyStateLayout/EmptyStateLayout.js +0 -48
- package/src/EmptyStateLayout/EmptyStateLayout.stories.mdx +0 -87
- package/src/EmptyStateLayout/__tests__/EmptyStateLayout.e2e.js +0 -31
- package/src/EmptyStateLayout/index.js +0 -1
- package/src/EmptyStateLayout/story-assets/Illo.js +0 -51
- package/src/Field/Field.js +0 -29
- package/src/Field/Field.stories.mdx +0 -237
- package/src/Field/FieldAction.js +0 -25
- package/src/Field/FieldContext.js +0 -4
- package/src/Field/FieldError.js +0 -17
- package/src/Field/FieldHint.js +0 -17
- package/src/Field/FieldInput.js +0 -129
- package/src/Field/FieldLabel.js +0 -50
- package/src/Field/__tests__/Field.e2e.js +0 -61
- package/src/Field/index.js +0 -7
- package/src/Flex/Flex.js +0 -26
- package/src/Flex/Flex.stories.mdx +0 -45
- package/src/Flex/FlexProps.js +0 -41
- package/src/Flex/__tests__/Flex.e2e.js +0 -23
- package/src/Flex/index.js +0 -1
- package/src/FocusTrap/ExampleComponent.js +0 -71
- package/src/FocusTrap/FocusTrap.js +0 -83
- package/src/FocusTrap/FocusTrap.stories.mdx +0 -32
- package/src/FocusTrap/__tests__/FocusTrap.e2e.js +0 -126
- package/src/FocusTrap/index.js +0 -1
- package/src/Grid/Grid.js +0 -30
- package/src/Grid/Grid.stories.mdx +0 -112
- package/src/Grid/GridContext.js +0 -5
- package/src/Grid/GridItem.js +0 -40
- package/src/Grid/__tests__/Grid.e2e.js +0 -23
- package/src/Grid/index.js +0 -2
- package/src/Icon/Icon.js +0 -27
- package/src/Icon/Icon.stories.mdx +0 -41
- package/src/Icon/__tests__/Icon.e2e.js +0 -21
- package/src/Icon/index.js +0 -1
- package/src/IconButton/IconButton.js +0 -175
- package/src/IconButton/IconButton.stories.mdx +0 -153
- package/src/IconButton/__tests__/IconButton.e2e.js +0 -57
- package/src/IconButton/index.js +0 -1
- package/src/KeyboardNavigable/KeyboardNavigable.js +0 -96
- package/src/KeyboardNavigable/index.js +0 -1
- package/src/Layout/ActionLayout.js +0 -40
- package/src/Layout/ContentLayout.js +0 -15
- package/src/Layout/GridLayout.js +0 -12
- package/src/Layout/GridLayout.stories.mdx +0 -36
- package/src/Layout/HeaderLayout.js +0 -170
- package/src/Layout/HeaderLayout.stories.mdx +0 -175
- package/src/Layout/Layout.js +0 -31
- package/src/Layout/Layout.stories.mdx +0 -240
- package/src/Layout/TwoColsLayout.js +0 -26
- package/src/Layout/TwoColsLayout.stories.mdx +0 -46
- package/src/Layout/__tests__/GridLayout.e2e.js +0 -23
- package/src/Layout/__tests__/HeaderLayout.e2e.js +0 -83
- package/src/Layout/__tests__/Layout.e2e.js +0 -23
- package/src/Layout/__tests__/TwoColsLayout.e2e.js +0 -23
- package/src/Layout/index.js +0 -6
- package/src/Link/Link.js +0 -105
- package/src/Link/Link.stories.mdx +0 -57
- package/src/Link/__tests__/Link.e2e.js +0 -23
- package/src/Link/index.js +0 -1
- package/src/LinkButton/LinkButton.js +0 -113
- package/src/LinkButton/LinkButton.stories.mdx +0 -153
- package/src/LinkButton/__tests__/LinkButton.e2e.js +0 -89
- package/src/LinkButton/index.js +0 -1
- package/src/LiveRegions/LiveRegions.js +0 -13
- package/src/LiveRegions/LiveRegions.stories.mdx +0 -76
- package/src/LiveRegions/StoryComponent.js +0 -26
- package/src/LiveRegions/__tests__/LiveRegions.spec.js +0 -200
- package/src/LiveRegions/constants.js +0 -5
- package/src/LiveRegions/index.js +0 -1
- package/src/LiveRegions/useNotifyAT.js +0 -39
- package/src/Loader/Loader.js +0 -40
- package/src/Loader/Loader.stories.mdx +0 -48
- package/src/Loader/__tests__/Loader.e2e.js +0 -23
- package/src/Loader/assets/loader.svg +0 -3
- package/src/Loader/index.js +0 -1
- package/src/Main/Main.js +0 -24
- package/src/Main/SkipToContent.js +0 -29
- package/src/Main/index.js +0 -2
- package/src/MainNav/MainNav.js +0 -31
- package/src/MainNav/MainNav.stories.mdx +0 -197
- package/src/MainNav/MainNavContext.js +0 -5
- package/src/MainNav/NavBrand.js +0 -76
- package/src/MainNav/NavCondense.js +0 -44
- package/src/MainNav/NavLink.js +0 -143
- package/src/MainNav/NavSection.js +0 -53
- package/src/MainNav/NavSections.js +0 -20
- package/src/MainNav/NavUser.js +0 -53
- package/src/MainNav/__tests__/MainNav.e2e.js +0 -23
- package/src/MainNav/index.js +0 -7
- package/src/MainNav/strapi-img.png +0 -0
- package/src/ModalLayout/ModalBody.js +0 -12
- package/src/ModalLayout/ModalContext.js +0 -4
- package/src/ModalLayout/ModalFooter.js +0 -37
- package/src/ModalLayout/ModalHeader.js +0 -35
- package/src/ModalLayout/ModalLayout.js +0 -58
- package/src/ModalLayout/ModalLayout.stories.mdx +0 -100
- package/src/ModalLayout/__tests__/ModalLayout.e2e.js +0 -19
- package/src/ModalLayout/__tests__/ModalLayout.spec.js +0 -596
- package/src/ModalLayout/index.js +0 -4
- package/src/NumberInput/NumberInput.js +0 -253
- package/src/NumberInput/NumberInput.stories.mdx +0 -319
- package/src/NumberInput/__tests__/NumberInput.e2e.js +0 -194
- package/src/NumberInput/index.js +0 -1
- package/src/Pagination/Pagination.js +0 -37
- package/src/Pagination/Pagination.stories.mdx +0 -97
- package/src/Pagination/PaginationContext.js +0 -4
- package/src/Pagination/__tests__/Pagination.e2e.js +0 -23
- package/src/Pagination/assets/next.svg +0 -3
- package/src/Pagination/assets/previous.svg +0 -3
- package/src/Pagination/components.js +0 -147
- package/src/Pagination/index.js +0 -2
- package/src/Popover/Popover.js +0 -167
- package/src/Popover/Popover.stories.mdx +0 -167
- package/src/Popover/__tests__/Popover.e2e.js +0 -48
- package/src/Popover/__tests__/Popover.spec.js +0 -153
- package/src/Popover/index.js +0 -1
- package/src/Portal/Portal.js +0 -25
- package/src/Portal/Portal.stories.mdx +0 -33
- package/src/Portal/__tests__/Portal.e2e.js +0 -23
- package/src/Portal/index.js +0 -1
- package/src/ProgressBar/ProgressBar.js +0 -57
- package/src/ProgressBar/ProgressBar.stories.mdx +0 -47
- package/src/ProgressBar/__tests__/ProgressBar.e2e.js +0 -41
- package/src/ProgressBar/index.js +0 -1
- package/src/Radio/Radio.js +0 -25
- package/src/Radio/Radio.stories.mdx +0 -66
- package/src/Radio/__tests__/Radio.e2e.js +0 -66
- package/src/Radio/__tests__/Radio.spec.js +0 -56
- package/src/Radio/index.js +0 -2
- package/src/RawTable/RawCell.js +0 -182
- package/src/RawTable/RawTable.js +0 -123
- package/src/RawTable/RawTable.stories.mdx +0 -258
- package/src/RawTable/RawTableContext.js +0 -10
- package/src/RawTable/RawTbody.js +0 -18
- package/src/RawTable/RawThead.js +0 -15
- package/src/RawTable/RawTr.js +0 -20
- package/src/RawTable/__tests__/RawTable.e2e.js +0 -344
- package/src/RawTable/focusFocusable.js +0 -7
- package/src/RawTable/index.js +0 -5
- package/src/Searchbar/SearchForm.js +0 -3
- package/src/Searchbar/Searchbar.js +0 -103
- package/src/Searchbar/Searchbar.stories.mdx +0 -115
- package/src/Searchbar/__tests__/Searchbar.e2e.js +0 -52
- package/src/Searchbar/index.js +0 -2
- package/src/Select/MultiSelectNested.js +0 -31
- package/src/Select/OptGroup.js +0 -27
- package/src/Select/Option.js +0 -123
- package/src/Select/Select.js +0 -318
- package/src/Select/Select.stories.mdx +0 -362
- package/src/Select/SelectButton.js +0 -77
- package/src/Select/SelectList.js +0 -113
- package/src/Select/SelectTags.js +0 -50
- package/src/Select/__tests__/Select.e2e.js +0 -238
- package/src/Select/__tests__/Select.spec.js +0 -1020
- package/src/Select/components.js +0 -51
- package/src/Select/constants.js +0 -6
- package/src/Select/hooks/useButtonRef.js +0 -31
- package/src/Select/hooks/useListRef.js +0 -35
- package/src/Select/index.js +0 -5
- package/src/Select/utils.js +0 -27
- package/src/SimpleMenu/SimpleMenu.js +0 -252
- package/src/SimpleMenu/SimpleMenu.stories.mdx +0 -220
- package/src/SimpleMenu/__tests__/SimpleMenu.e2e.js +0 -98
- package/src/SimpleMenu/__tests__/SimpleMenu.spec.js +0 -48
- package/src/SimpleMenu/index.js +0 -1
- package/src/SimpleMenu/utils.js +0 -12
- package/src/Stack/Stack.js +0 -75
- package/src/Stack/Stack.stories.mdx +0 -66
- package/src/Stack/__tests__/Stack.e2e.js +0 -43
- package/src/Stack/index.js +0 -1
- package/src/Status/Status.js +0 -76
- package/src/Status/Status.stories.mdx +0 -80
- package/src/Status/__tests__/Status.e2e.js +0 -23
- package/src/Status/__tests__/Status.spec.js +0 -48
- package/src/Status/index.js +0 -1
- package/src/SubNav/SubNav.js +0 -25
- package/src/SubNav/SubNav.stories.mdx +0 -234
- package/src/SubNav/SubNavHeader.js +0 -122
- package/src/SubNav/SubNavLink.js +0 -92
- package/src/SubNav/SubNavLinkSection.js +0 -75
- package/src/SubNav/SubNavSection.js +0 -75
- package/src/SubNav/SubNavSectionLabel.js +0 -67
- package/src/SubNav/SubNavSections.js +0 -20
- package/src/SubNav/__tests__/SubNav.e2e.js +0 -23
- package/src/SubNav/index.js +0 -6
- package/src/Switch/Switch.js +0 -97
- package/src/Switch/Switch.stories.mdx +0 -76
- package/src/Switch/__tests__/Switch.e2e.js +0 -33
- package/src/Switch/index.js +0 -1
- package/src/Table/Cell.js +0 -49
- package/src/Table/TFooter.js +0 -58
- package/src/Table/Table.js +0 -96
- package/src/Table/Table.stories.mdx +0 -330
- package/src/Table/Tbody.js +0 -13
- package/src/Table/Thead.js +0 -11
- package/src/Table/Tr.js +0 -28
- package/src/Table/__tests__/Table.e2e.js +0 -41
- package/src/Table/index.js +0 -6
- package/src/Tabs/TabGroup.js +0 -46
- package/src/Tabs/TabPanels.js +0 -32
- package/src/Tabs/Tabs.js +0 -227
- package/src/Tabs/Tabs.stories.mdx +0 -211
- package/src/Tabs/TabsContext.js +0 -5
- package/src/Tabs/__tests__/Tabs.e2e.js +0 -253
- package/src/Tabs/components.js +0 -66
- package/src/Tabs/index.js +0 -3
- package/src/Tabs/useTabsFocus.js +0 -28
- package/src/Tag/Tag.js +0 -72
- package/src/Tag/Tag.stories.mdx +0 -47
- package/src/Tag/__tests__/Tag.e2e.js +0 -37
- package/src/Tag/index.js +0 -1
- package/src/TextButton/TextButton.js +0 -102
- package/src/TextButton/TextButton.stories.mdx +0 -71
- package/src/TextButton/__tests__/TextButton.e2e.js +0 -23
- package/src/TextButton/index.js +0 -1
- package/src/TextInput/TextInput.js +0 -67
- package/src/TextInput/TextInput.stories.mdx +0 -228
- package/src/TextInput/__tests__/TextInput.e2e.js +0 -73
- package/src/TextInput/index.js +0 -1
- package/src/Textarea/Textarea.js +0 -74
- package/src/Textarea/Textarea.stories.mdx +0 -105
- package/src/Textarea/TextareaInput.js +0 -77
- package/src/Textarea/__tests__/Textarea.e2e.js +0 -37
- package/src/Textarea/index.js +0 -1
- package/src/ThemeProvider/ThemeProvider.js +0 -193
- package/src/ThemeProvider/hooks.js +0 -5
- package/src/ThemeProvider/index.js +0 -2
- package/src/TimePicker/TimePicker.js +0 -128
- package/src/TimePicker/TimePicker.stories.mdx +0 -171
- package/src/TimePicker/__tests__/TimePicker.e2e.js +0 -37
- package/src/TimePicker/__tests__/TimePicker.spec.js +0 -2099
- package/src/TimePicker/index.js +0 -1
- package/src/ToggleCheckbox/ToggleCheckbox.js +0 -169
- package/src/ToggleCheckbox/ToggleCheckbox.stories.mdx +0 -96
- package/src/ToggleCheckbox/__tests__/ToggleCheckbox.e2e.js +0 -59
- package/src/ToggleCheckbox/index.js +0 -1
- package/src/ToggleInput/ToggleInput.js +0 -89
- package/src/ToggleInput/ToggleInput.stories.mdx +0 -171
- package/src/ToggleInput/__tests__/ToggleInput.e2e.js +0 -109
- package/src/ToggleInput/index.js +0 -1
- package/src/Tooltip/Tooltip.js +0 -72
- package/src/Tooltip/Tooltip.stories.mdx +0 -127
- package/src/Tooltip/__tests__/Tooltip.e2e.js +0 -33
- package/src/Tooltip/__tests__/Tooltip.spec.js +0 -306
- package/src/Tooltip/hooks/useTooltipHandlers.js +0 -39
- package/src/Tooltip/hooks/useTooltipLayout.js +0 -21
- package/src/Tooltip/index.js +0 -1
- package/src/Tooltip/utils/__tests__/positionTooltip.spec.js +0 -114
- package/src/Tooltip/utils/positionTooltip.js +0 -83
- package/src/Typography/Typography.js +0 -24
- package/src/Typography/Typography.stories.mdx +0 -86
- package/src/Typography/TypographyProps.js +0 -30
- package/src/Typography/__tests__/Typography.e2e.js +0 -25
- package/src/Typography/__tests__/Typography.spec.js +0 -32
- package/src/Typography/__tests__/__snapshots__/Typography.spec.js.snap +0 -103
- package/src/Typography/constants.js +0 -9
- package/src/Typography/index.js +0 -1
- package/src/Typography/utils.js +0 -69
- package/src/VisuallyHidden/VisuallyHidden.js +0 -12
- package/src/VisuallyHidden/index.js +0 -1
- package/src/helpers/__tests__/useId.spec.js +0 -39
- package/src/helpers/escapeSelector.js +0 -1
- package/src/helpers/genId.js +0 -2
- package/src/helpers/getDefaultLocale.js +0 -33
- package/src/helpers/getFocusableNodes.js +0 -35
- package/src/helpers/handleResponsiveValues.js +0 -34
- package/src/helpers/keyboardKeys.js +0 -17
- package/src/helpers/setOpacity.js +0 -4
- package/src/helpers/setTabIndexOnFirstItem.js +0 -7
- package/src/helpers/useElementOnScreen.js +0 -27
- package/src/helpers/useId.js +0 -8
- package/src/helpers/useIntersection.js +0 -31
- package/src/helpers/useLockScroll.js +0 -14
- package/src/helpers/usePrevious.js +0 -9
- package/src/helpers/useResizeObserver.js +0 -22
- package/src/index.js +0 -65
- package/src/themes/ColorButton.js +0 -24
- package/src/themes/Theme.stories.mdx +0 -227
- package/src/themes/__tests__/extendTheme.spec.js +0 -119
- package/src/themes/colors.js +0 -46
- package/src/themes/common-theme.js +0 -19
- package/src/themes/darkTheme/dark-colors.js +0 -49
- package/src/themes/darkTheme/dark-shadows.js +0 -10
- package/src/themes/darkTheme/index.js +0 -9
- package/src/themes/extendTheme.js +0 -60
- package/src/themes/index.js +0 -4
- package/src/themes/lightTheme/index.js +0 -9
- package/src/themes/lightTheme/light-colors.js +0 -49
- package/src/themes/lightTheme/light-shadows.js +0 -10
- package/src/themes/sizes.js +0 -10
- package/src/themes/utils.js +0 -50
- package/src/v2/Breadcrumbs/Breadcrumbs.js +0 -45
- package/src/v2/Breadcrumbs/Breadcrumbs.stories.mdx +0 -129
- package/src/v2/Breadcrumbs/Crumb.js +0 -30
- package/src/v2/Breadcrumbs/CrumbLink.js +0 -33
- package/src/v2/Breadcrumbs/CrumbSimpleMenu.js +0 -30
- package/src/v2/Breadcrumbs/Divider.js +0 -16
- package/src/v2/Breadcrumbs/__tests__/Breadcrumbs.e2e.js +0 -47
- package/src/v2/Breadcrumbs/__tests__/Breadcrumbs.spec.js +0 -47
- package/src/v2/Breadcrumbs/index.js +0 -4
- package/src/v2/Link/Link.js +0 -79
- package/src/v2/Link/Link.stories.mdx +0 -113
- package/src/v2/Link/__tests__/Link.e2e.js +0 -23
- package/src/v2/Link/index.js +0 -1
- package/src/v2/LinkButton/LinkButton.js +0 -105
- package/src/v2/LinkButton/LinkButton.stories.mdx +0 -153
- package/src/v2/LinkButton/__tests__/LinkButton.e2e.js +0 -89
- package/src/v2/LinkButton/index.js +0 -1
- package/src/v2/MainNav/MainNav.js +0 -31
- package/src/v2/MainNav/MainNav.stories.mdx +0 -197
- package/src/v2/MainNav/MainNavContext.js +0 -5
- package/src/v2/MainNav/NavBrand.js +0 -79
- package/src/v2/MainNav/NavCondense.js +0 -44
- package/src/v2/MainNav/NavLink.js +0 -143
- package/src/v2/MainNav/NavSection.js +0 -53
- package/src/v2/MainNav/NavSections.js +0 -20
- package/src/v2/MainNav/NavUser.js +0 -53
- package/src/v2/MainNav/__tests__/MainNav.e2e.js +0 -23
- package/src/v2/MainNav/index.js +0 -7
- package/src/v2/MainNav/strapi-img.png +0 -0
- package/src/v2/Pagination/Pagination.js +0 -37
- package/src/v2/Pagination/Pagination.stories.mdx +0 -97
- package/src/v2/Pagination/PaginationContext.js +0 -4
- package/src/v2/Pagination/__tests__/Pagination.e2e.js +0 -23
- package/src/v2/Pagination/assets/next.svg +0 -3
- package/src/v2/Pagination/assets/previous.svg +0 -3
- package/src/v2/Pagination/components.js +0 -136
- package/src/v2/Pagination/index.js +0 -2
- package/src/v2/SimpleMenu/SimpleMenu.js +0 -252
- package/src/v2/SimpleMenu/SimpleMenu.stories.mdx +0 -220
- package/src/v2/SimpleMenu/__tests__/SimpleMenu.e2e.js +0 -100
- package/src/v2/SimpleMenu/__tests__/SimpleMenu.spec.js +0 -48
- package/src/v2/SimpleMenu/index.js +0 -1
- package/src/v2/SimpleMenu/utils.js +0 -12
- package/src/v2/SubNav/SubNav.js +0 -25
- package/src/v2/SubNav/SubNav.stories.mdx +0 -234
- package/src/v2/SubNav/SubNavHeader.js +0 -122
- package/src/v2/SubNav/SubNavLink.js +0 -95
- package/src/v2/SubNav/SubNavLinkSection.js +0 -75
- package/src/v2/SubNav/SubNavSection.js +0 -75
- package/src/v2/SubNav/SubNavSectionLabel.js +0 -67
- package/src/v2/SubNav/SubNavSections.js +0 -20
- package/src/v2/SubNav/__tests__/SubNav.e2e.js +0 -23
- package/src/v2/SubNav/index.js +0 -6
- package/src/v2/index.js +0 -7
- package/test-bundler.js +0 -35
- package/tests/check-exports.spec.js +0 -36
- package/webpack.config.js +0 -84
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
<!--- SimpleMenu.stories.mdx --->
|
|
2
|
-
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import { ArgsTable } from '@storybook/addon-docs';
|
|
5
|
-
import { Meta, Story, Canvas } from '@storybook/addon-docs';
|
|
6
|
-
import CarretDown from '@strapi/icons/CarretDown';
|
|
7
|
-
import { SimpleMenu, MenuItem } from './SimpleMenu';
|
|
8
|
-
import { IconButton } from '../../IconButton';
|
|
9
|
-
import { Stack } from '../../Stack';
|
|
10
|
-
|
|
11
|
-
<Meta title="Design System/Components/v2/SimpleMenu" component={SimpleMenu} />
|
|
12
|
-
|
|
13
|
-
# SimpleMenu
|
|
14
|
-
|
|
15
|
-
A menu displays a list of potential options or actions via a Popover component. A menu is used to give choices to the users in small spaces. However, a single option or action should be taken via a menu.
|
|
16
|
-
|
|
17
|
-
**Best practices**
|
|
18
|
-
|
|
19
|
-
- Use menu for small spaces. When there is more space, use Select component.
|
|
20
|
-
- Use menu if you want the user to make a single choice. When you need your user to select one or several options, use Select component.
|
|
21
|
-
- Try to have a sort logic in the popover of the menu.
|
|
22
|
-
|
|
23
|
-
[View source](https://github.com/strapi/design-system-experiments/tree/main/packages/strapi-design-system/src/v2/SimpleMenu)
|
|
24
|
-
|
|
25
|
-
## Imports
|
|
26
|
-
|
|
27
|
-
```js
|
|
28
|
-
import { SimpleMenu, MenuItem } from '@strapi/design-system/v2/SimpleMenu';
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Usage
|
|
32
|
-
|
|
33
|
-
The label of the menu can be replaced by the option selected. For instance, in a Date picker component, the menu label will be replaced by the active month.
|
|
34
|
-
|
|
35
|
-
By passing `aria-disabled` hover styles on `MenuItem`s can be disabled.
|
|
36
|
-
|
|
37
|
-
<Canvas>
|
|
38
|
-
<Story
|
|
39
|
-
name="base"
|
|
40
|
-
parameters={{
|
|
41
|
-
docs: {
|
|
42
|
-
source: {
|
|
43
|
-
code: `
|
|
44
|
-
const [val, setValue] = useState('January');\n
|
|
45
|
-
return (
|
|
46
|
-
<SimpleMenu id="label" label={val}>
|
|
47
|
-
<MenuItem id="menuItem-January" onClick={() => setValue('January')}>
|
|
48
|
-
January
|
|
49
|
-
</MenuItem>
|
|
50
|
-
<MenuItem id="menuItem-February" onClick={() => setValue('February')}>
|
|
51
|
-
February
|
|
52
|
-
</MenuItem>
|
|
53
|
-
</SimpleMenu>
|
|
54
|
-
);
|
|
55
|
-
`,
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
}}
|
|
59
|
-
>
|
|
60
|
-
{() => {
|
|
61
|
-
const [val, setValue] = useState('January');
|
|
62
|
-
return (
|
|
63
|
-
<SimpleMenu id="label" label={val}>
|
|
64
|
-
<MenuItem id="menuItem-January" onClick={() => setValue('January')}>
|
|
65
|
-
January
|
|
66
|
-
</MenuItem>
|
|
67
|
-
<MenuItem id="menuItem-February" onClick={() => setValue('February')}>
|
|
68
|
-
February
|
|
69
|
-
</MenuItem>
|
|
70
|
-
</SimpleMenu>
|
|
71
|
-
);
|
|
72
|
-
}}
|
|
73
|
-
</Story>
|
|
74
|
-
</Canvas>
|
|
75
|
-
|
|
76
|
-
### With links
|
|
77
|
-
|
|
78
|
-
<Canvas>
|
|
79
|
-
<Story
|
|
80
|
-
name="with-links"
|
|
81
|
-
parameters={{
|
|
82
|
-
docs: {
|
|
83
|
-
source: {
|
|
84
|
-
code: `
|
|
85
|
-
<SimpleMenu label="Menu">
|
|
86
|
-
<MenuItem to="/">
|
|
87
|
-
Home
|
|
88
|
-
</MenuItem>
|
|
89
|
-
<MenuItem to="/somewhere">
|
|
90
|
-
Somewhere internal
|
|
91
|
-
</MenuItem>
|
|
92
|
-
</SimpleMenu>
|
|
93
|
-
`,
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
}}
|
|
97
|
-
>
|
|
98
|
-
<SimpleMenu label="Menu">
|
|
99
|
-
<MenuItem to="/">Home</MenuItem>
|
|
100
|
-
<MenuItem to="/somewhere">Somewhere internal</MenuItem>
|
|
101
|
-
</SimpleMenu>
|
|
102
|
-
</Story>
|
|
103
|
-
</Canvas>
|
|
104
|
-
|
|
105
|
-
A menu can allow the user to make actions. It can redirect the user to another page or another part of the product.
|
|
106
|
-
|
|
107
|
-
### With IconButton
|
|
108
|
-
|
|
109
|
-
<Canvas>
|
|
110
|
-
<Story name="with-iconbutton">
|
|
111
|
-
<SimpleMenu label="Menu" as={IconButton} icon={<CarretDown />}>
|
|
112
|
-
<MenuItem>Home</MenuItem>
|
|
113
|
-
<MenuItem>Somewhere internal</MenuItem>
|
|
114
|
-
</SimpleMenu>
|
|
115
|
-
</Story>
|
|
116
|
-
</Canvas>
|
|
117
|
-
|
|
118
|
-
### Sizes
|
|
119
|
-
|
|
120
|
-
Use the size prop to change the size of the button. You can set the value to `S` or `M` (by default `M` is being used).
|
|
121
|
-
If a custom component is rendered (through the `as` prop), the size is passed through, but needs to be handled in
|
|
122
|
-
that component.
|
|
123
|
-
|
|
124
|
-
Size `S` can be useful if the component is being used in places, where it needs to align on the left (ex: within tables).
|
|
125
|
-
|
|
126
|
-
<Canvas>
|
|
127
|
-
<Story name="sizes">
|
|
128
|
-
<Stack horizontal spacing={4}>
|
|
129
|
-
<SimpleMenu label="Small Menu" size="S" icon={<CarretDown />}>
|
|
130
|
-
<MenuItem>Home</MenuItem>
|
|
131
|
-
<MenuItem>Somewhere internal</MenuItem>
|
|
132
|
-
</SimpleMenu>
|
|
133
|
-
<SimpleMenu label="Medium Menu" icon={<CarretDown />}>
|
|
134
|
-
<MenuItem>Home</MenuItem>
|
|
135
|
-
<MenuItem>Somewhere internal</MenuItem>
|
|
136
|
-
</SimpleMenu>
|
|
137
|
-
</Stack>
|
|
138
|
-
</Story>
|
|
139
|
-
</Canvas>
|
|
140
|
-
|
|
141
|
-
### With Custom Label
|
|
142
|
-
|
|
143
|
-
<Canvas>
|
|
144
|
-
<Story
|
|
145
|
-
name="with-custom-label"
|
|
146
|
-
parameters={{
|
|
147
|
-
docs: {
|
|
148
|
-
source: {
|
|
149
|
-
code: `
|
|
150
|
-
const Label = <><span>2</span> special items</>;
|
|
151
|
-
return (
|
|
152
|
-
<SimpleMenu label={Label}>
|
|
153
|
-
<MenuItem>Home</MenuItem>
|
|
154
|
-
<MenuItem>Somewhere internal</MenuItem>
|
|
155
|
-
</SimpleMenu>
|
|
156
|
-
);
|
|
157
|
-
`,
|
|
158
|
-
},
|
|
159
|
-
},
|
|
160
|
-
}}
|
|
161
|
-
>
|
|
162
|
-
{() => {
|
|
163
|
-
const Label = (
|
|
164
|
-
<>
|
|
165
|
-
<span>2</span> special items
|
|
166
|
-
</>
|
|
167
|
-
);
|
|
168
|
-
return (
|
|
169
|
-
<SimpleMenu label={Label}>
|
|
170
|
-
<MenuItem>Home</MenuItem>
|
|
171
|
-
<MenuItem>Somewhere internal</MenuItem>
|
|
172
|
-
</SimpleMenu>
|
|
173
|
-
);
|
|
174
|
-
}}
|
|
175
|
-
</Story>
|
|
176
|
-
</Canvas>
|
|
177
|
-
|
|
178
|
-
### with other routing libraries
|
|
179
|
-
|
|
180
|
-
To use the SimpleMenu/MenuItem components with a routing library (e.g. react-router-dom), you'll need to pass the `NavLink` component to the `as` prop in order to replace the default HTML anchor `<a />`.
|
|
181
|
-
You'll also need to pass the `isLink` props to the `MenuItem` component.
|
|
182
|
-
|
|
183
|
-
```jsx
|
|
184
|
-
import { SimpleMenu, MenuItem } from '@strapi/design-system/SimpleMenu';
|
|
185
|
-
import { NavLink as RouterNavLink } from 'react-router-dom';
|
|
186
|
-
|
|
187
|
-
<SimpleMenu label={Label}>
|
|
188
|
-
<MenuItem as={RouterNavLink} to="/">
|
|
189
|
-
Home
|
|
190
|
-
</MenuItem>
|
|
191
|
-
</SimpleMenu>;
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
#### with NextJS
|
|
195
|
-
|
|
196
|
-
For NextJS, you'll need to wrap the `NavLink` with the `NextLink` component
|
|
197
|
-
|
|
198
|
-
```jsx
|
|
199
|
-
import { SimpleMenu, MenuItem } from '@strapi/design-system/SimpleMenu';
|
|
200
|
-
import NextLink from 'next/link';
|
|
201
|
-
|
|
202
|
-
<SimpleMenu label={Label}>
|
|
203
|
-
<NextLink href="/home" passHref>
|
|
204
|
-
<MenuItem>Home</MenuItem>
|
|
205
|
-
</NextLink>
|
|
206
|
-
</SimpleMenu>;
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
## Accessibility
|
|
210
|
-
|
|
211
|
-
- When the menu button has focus, `Space` or `Enter` opens or closes the menu.
|
|
212
|
-
- When the menu is open, the navigation between menu items can be done with the `ArrowDown` or `ArrowUp`
|
|
213
|
-
|
|
214
|
-
## SimpleMenu props
|
|
215
|
-
|
|
216
|
-
<ArgsTable of={SimpleMenu} />
|
|
217
|
-
|
|
218
|
-
## MenuItem props
|
|
219
|
-
|
|
220
|
-
<ArgsTable of={MenuItem} />
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { injectAxe, checkA11y, getViolations } from 'axe-playwright';
|
|
2
|
-
|
|
3
|
-
import { test, expect } from '@playwright/test';
|
|
4
|
-
|
|
5
|
-
test.describe.parallel('SimpleMenu', () => {
|
|
6
|
-
test.describe('light mode', () => {
|
|
7
|
-
test.describe('base', () => {
|
|
8
|
-
test.beforeEach(async ({ page }) => {
|
|
9
|
-
// This is the URL of the Storybook Iframe
|
|
10
|
-
await page.goto('/iframe.html?id=design-system-components-v2-simplemenu--base&viewMode=story');
|
|
11
|
-
await injectAxe(page);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
test('triggers axe on the document', async ({ page }) => {
|
|
15
|
-
await checkA11y(page);
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
test('triggers axe on the document when the menu is opened', async ({ page }) => {
|
|
19
|
-
await page.click('#root button');
|
|
20
|
-
|
|
21
|
-
await expect(page.locator('[role="menu"]')).toBeVisible();
|
|
22
|
-
|
|
23
|
-
const violations = await getViolations(page);
|
|
24
|
-
|
|
25
|
-
// Axe throws an error because the portal is not wrapped by a region.
|
|
26
|
-
const realViolations = violations
|
|
27
|
-
.filter((violation) => violation.id !== 'region')
|
|
28
|
-
.filter((violation) => violation.id !== 'aria-required-parent');
|
|
29
|
-
|
|
30
|
-
expect(realViolations.length).toBe(0);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
test('select the second value of the menu key=Enter', async ({ page }) => {
|
|
34
|
-
await page.focus('#root button');
|
|
35
|
-
await page.keyboard.press('Enter');
|
|
36
|
-
await page.keyboard.press('ArrowDown');
|
|
37
|
-
await page.keyboard.press('Enter');
|
|
38
|
-
|
|
39
|
-
const label = await page.textContent('#root button');
|
|
40
|
-
expect(label).toBe('February');
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
test('select the second value of the menu key=Space', async ({ page }) => {
|
|
44
|
-
await page.focus('#root button');
|
|
45
|
-
await page.keyboard.press('Space');
|
|
46
|
-
await page.keyboard.press('ArrowDown');
|
|
47
|
-
await page.keyboard.press('Space');
|
|
48
|
-
|
|
49
|
-
const label = await page.textContent('#root button');
|
|
50
|
-
expect(label).toBe('February');
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
test.describe('with links', () => {
|
|
55
|
-
test.beforeEach(async ({ page }) => {
|
|
56
|
-
// This is the URL of the Storybook Iframe
|
|
57
|
-
await page.goto('/iframe.html?id=design-system-components-v2-simplemenu--with-links&viewMode=story');
|
|
58
|
-
await injectAxe(page);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
test('triggers axe on the document', async ({ page }) => {
|
|
62
|
-
await checkA11y(page);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
test('triggers axe on the document when the menu is opened', async ({ page }) => {
|
|
66
|
-
await page.click('#root button');
|
|
67
|
-
|
|
68
|
-
await expect(page.locator('[role="menu"]')).toBeVisible();
|
|
69
|
-
|
|
70
|
-
const violations = await getViolations(page);
|
|
71
|
-
|
|
72
|
-
// Axe throws an error because the portal is not wrapped by a region.
|
|
73
|
-
const realViolations = violations
|
|
74
|
-
.filter((violation) => violation.id !== 'region')
|
|
75
|
-
.filter((violation) => violation.id !== 'aria-required-parent');
|
|
76
|
-
|
|
77
|
-
expect(realViolations.length).toBe(0);
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
test.describe('sizes', () => {
|
|
83
|
-
test('triggers axe on the document', async ({ page }) => {
|
|
84
|
-
await page.goto(
|
|
85
|
-
'http://localhost:6006/iframe.html?id=design-system-components-v2-simplemenu--sizes&viewMode=story',
|
|
86
|
-
);
|
|
87
|
-
await injectAxe(page);
|
|
88
|
-
await checkA11y(page);
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
test.describe('with links', () => {
|
|
93
|
-
test.beforeEach(async ({ page }) => {
|
|
94
|
-
// This is the URL of the Storybook Iframe
|
|
95
|
-
await page.goto('/iframe.html?id=design-system-components-v2-simplemenu--base&viewMode=story&theme=dark');
|
|
96
|
-
await injectAxe(page);
|
|
97
|
-
await checkA11y(page);
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
});
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
|
|
3
|
-
import { SimpleMenu, MenuItem } from '../../SimpleMenu';
|
|
4
|
-
import { ThemeProvider } from '../../../ThemeProvider';
|
|
5
|
-
import { lightTheme } from '../../../themes';
|
|
6
|
-
|
|
7
|
-
describe('SimpleMenu', () => {
|
|
8
|
-
it('display the menu on click on the menu button', async () => {
|
|
9
|
-
render(
|
|
10
|
-
<ThemeProvider theme={lightTheme}>
|
|
11
|
-
<SimpleMenu label="January">
|
|
12
|
-
<MenuItem onClick={() => {}}>January</MenuItem>
|
|
13
|
-
<MenuItem onClick={() => {}}>February</MenuItem>
|
|
14
|
-
<MenuItem href="https://strapi.io">Strapi website</MenuItem>
|
|
15
|
-
</SimpleMenu>
|
|
16
|
-
</ThemeProvider>,
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
const button = await waitFor(() => screen.getByText('January'));
|
|
20
|
-
fireEvent.mouseDown(button);
|
|
21
|
-
|
|
22
|
-
await waitFor(() => {
|
|
23
|
-
expect(screen.getByText('February')).toBeInTheDocument();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('display the menu and click on a menu item', async () => {
|
|
28
|
-
const onClickSpy = jest.fn();
|
|
29
|
-
|
|
30
|
-
render(
|
|
31
|
-
<ThemeProvider theme={lightTheme}>
|
|
32
|
-
<SimpleMenu label="January">
|
|
33
|
-
<MenuItem onClick={onClickSpy}>January</MenuItem>
|
|
34
|
-
<MenuItem onClick={onClickSpy}>February</MenuItem>
|
|
35
|
-
<MenuItem href="https://strapi.io">Strapi website</MenuItem>
|
|
36
|
-
</SimpleMenu>
|
|
37
|
-
</ThemeProvider>,
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
const button = await waitFor(() => screen.getByText('January'));
|
|
41
|
-
fireEvent.mouseDown(button);
|
|
42
|
-
|
|
43
|
-
const menuItemButton = await waitFor(() => screen.getByText('February'));
|
|
44
|
-
fireEvent.mouseDown(menuItemButton);
|
|
45
|
-
|
|
46
|
-
expect(onClickSpy).toBeCalled();
|
|
47
|
-
});
|
|
48
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './SimpleMenu';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export const getOptionStyle = ({ theme }) => `
|
|
2
|
-
text-align: left;
|
|
3
|
-
width: 100%;
|
|
4
|
-
color: ${theme.colors.neutral800};
|
|
5
|
-
border-radius: ${theme.borderRadius};
|
|
6
|
-
&:focus {
|
|
7
|
-
background-color: ${theme.colors.primary100};
|
|
8
|
-
}
|
|
9
|
-
&:not([aria-disabled]):hover {
|
|
10
|
-
background-color: ${theme.colors.primary100};
|
|
11
|
-
}
|
|
12
|
-
`;
|
package/src/v2/SubNav/SubNav.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import styled from 'styled-components';
|
|
3
|
-
import PropTypes from 'prop-types';
|
|
4
|
-
import { Grid } from '../../Grid';
|
|
5
|
-
|
|
6
|
-
export const subNavWidth = `${232 / 16}rem`;
|
|
7
|
-
|
|
8
|
-
const SubNavWrapper = styled(Grid)`
|
|
9
|
-
width: ${subNavWidth};
|
|
10
|
-
background: ${({ theme }) => theme.colors.neutral100};
|
|
11
|
-
position: sticky;
|
|
12
|
-
top: 0;
|
|
13
|
-
height: 100vh;
|
|
14
|
-
overflow-y: auto;
|
|
15
|
-
border-right: 1px solid ${({ theme }) => theme.colors.neutral200};
|
|
16
|
-
z-index: 1;
|
|
17
|
-
`;
|
|
18
|
-
|
|
19
|
-
export const SubNav = ({ ariaLabel, ...props }) => {
|
|
20
|
-
return <SubNavWrapper aria-label={ariaLabel} as="nav" {...props} />;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
SubNav.propTypes = {
|
|
24
|
-
ariaLabel: PropTypes.string.isRequired,
|
|
25
|
-
};
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
<!--- SubNav.stories.mdx --->
|
|
2
|
-
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import { Meta, Story, Canvas } from '@storybook/addon-docs';
|
|
5
|
-
import { ArgsTable } from '@storybook/addon-docs';
|
|
6
|
-
import Apps from '@strapi/icons/Apps';
|
|
7
|
-
import Plus from '@strapi/icons/Plus';
|
|
8
|
-
import ExclamationMarkCircle from '@strapi/icons/ExclamationMarkCircle';
|
|
9
|
-
import { SubNav } from './SubNav';
|
|
10
|
-
import { SubNavHeader } from './SubNavHeader';
|
|
11
|
-
import { SubNavSection } from './SubNavSection';
|
|
12
|
-
import { SubNavSections } from './SubNavSections';
|
|
13
|
-
import { SubNavLink } from './SubNavLink';
|
|
14
|
-
import { SubNavLinkSection } from './SubNavLinkSection';
|
|
15
|
-
import { Box } from '../../Box';
|
|
16
|
-
import { Flex } from '../../Flex';
|
|
17
|
-
import { TextButton } from '../../TextButton';
|
|
18
|
-
|
|
19
|
-
<Meta title="Design System/Components/v2/SubNav" component={SubNav} />
|
|
20
|
-
|
|
21
|
-
# SubNav
|
|
22
|
-
|
|
23
|
-
The Sub Navigation is available and displayed on predefined sections of the admin panel to access advanced options (i.e. Content Manager, Content-types Builder and Settings). Thanks to it the users can easily navigation from an entry or a page to another. The Sub Navigation cannot be collapsed.
|
|
24
|
-
|
|
25
|
-
**Best practices**
|
|
26
|
-
|
|
27
|
-
- It is not possible to have more than 2 navigation bars next to each others.
|
|
28
|
-
- Each page has its own icon taken from the iconography library.
|
|
29
|
-
- Do not use icons for headers.
|
|
30
|
-
- Use sentence case for page names and all caps for header labels.
|
|
31
|
-
- Each plugin should have its own new category and its own header.
|
|
32
|
-
|
|
33
|
-
## Usage
|
|
34
|
-
|
|
35
|
-
The Sub Navigation cannot be collapsed. A notification system can appear in the Sub Navigation, especially in the Settings section for the Application page.
|
|
36
|
-
|
|
37
|
-
A Text Button component can be found at the bottom of a pages gathering in the Sub Navigation.
|
|
38
|
-
|
|
39
|
-
## Hierarchy
|
|
40
|
-
|
|
41
|
-
Related pages are gathered under specific headers within the Sub Navigation. These headers are helpful to understand the section hierarchy. Moreover, each page gets its very own icon to make it distinctive.
|
|
42
|
-
|
|
43
|
-
[View source](https://github.com/strapi/design-system/tree/main/packages/strapi-design-system/src/v2/SubNav)
|
|
44
|
-
|
|
45
|
-
## Imports
|
|
46
|
-
|
|
47
|
-
```js
|
|
48
|
-
import {
|
|
49
|
-
SubNav,
|
|
50
|
-
SubNavHeader,
|
|
51
|
-
SubNavSection,
|
|
52
|
-
SubNavSections,
|
|
53
|
-
SubNavLink,
|
|
54
|
-
SubNavLinkSection,
|
|
55
|
-
} from '@strapi/design-system/v2/SubNav';
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Usage
|
|
59
|
-
|
|
60
|
-
<Canvas>
|
|
61
|
-
<Story name="base">
|
|
62
|
-
{() => {
|
|
63
|
-
const [search, setSearch] = useState('');
|
|
64
|
-
const links = [
|
|
65
|
-
{
|
|
66
|
-
id: 1,
|
|
67
|
-
label: 'Addresses',
|
|
68
|
-
icon: <ExclamationMarkCircle />,
|
|
69
|
-
to: '/address',
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
id: 2,
|
|
73
|
-
label: 'Categories',
|
|
74
|
-
to: '/category',
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
id: 3,
|
|
78
|
-
label: 'Cities',
|
|
79
|
-
icon: <Apps />,
|
|
80
|
-
to: '/city',
|
|
81
|
-
active: true,
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
id: 4,
|
|
85
|
-
label: 'Countries',
|
|
86
|
-
to: '/country',
|
|
87
|
-
},
|
|
88
|
-
];
|
|
89
|
-
return (
|
|
90
|
-
<Flex>
|
|
91
|
-
<Box padding={10} style={{ height: '100vh' }} background="neutral200">
|
|
92
|
-
<SubNav ariaLabel="Builder sub nav">
|
|
93
|
-
<SubNavHeader
|
|
94
|
-
searchable
|
|
95
|
-
value={search}
|
|
96
|
-
onClear={() => setSearch('')}
|
|
97
|
-
onChange={(e) => setSearch(e.target.value)}
|
|
98
|
-
label="Content-Type Builder"
|
|
99
|
-
searchLabel="Search..."
|
|
100
|
-
/>
|
|
101
|
-
<SubNavSections>
|
|
102
|
-
<SubNavSection label="Collection Type" collapsable badgeLabel={links.length.toString()}>
|
|
103
|
-
{links.map((link) => (
|
|
104
|
-
<SubNavLink to={link.to} active={link.active} key={link.id}>
|
|
105
|
-
{link.label}
|
|
106
|
-
</SubNavLink>
|
|
107
|
-
))}
|
|
108
|
-
</SubNavSection>
|
|
109
|
-
<Box paddingLeft={7} paddingBottom={3}>
|
|
110
|
-
<TextButton startIcon={<Plus />}>Click on me</TextButton>
|
|
111
|
-
</Box>
|
|
112
|
-
<SubNavSection label="Single Type" collapsable badgeLabel={links.length.toString()}>
|
|
113
|
-
<SubNavLinkSection label="Default">
|
|
114
|
-
{links.map((link) => (
|
|
115
|
-
<SubNavLink to={link.to} key={link.id} isSubSectionChild>
|
|
116
|
-
{link.label}
|
|
117
|
-
</SubNavLink>
|
|
118
|
-
))}
|
|
119
|
-
</SubNavLinkSection>
|
|
120
|
-
</SubNavSection>
|
|
121
|
-
<Box paddingLeft={7}>
|
|
122
|
-
<TextButton startIcon={<Plus />}>Click on me</TextButton>
|
|
123
|
-
</Box>
|
|
124
|
-
</SubNavSections>
|
|
125
|
-
</SubNav>
|
|
126
|
-
</Box>
|
|
127
|
-
<Box padding={10} style={{ height: '100vh' }} background="neutral200">
|
|
128
|
-
<SubNav ariaLabel="Settings sub nav">
|
|
129
|
-
<SubNavHeader label="Settings" />
|
|
130
|
-
<SubNavSections>
|
|
131
|
-
<SubNavLink to="/blabla" withBullet icon={<Apps />} className="active">
|
|
132
|
-
Application
|
|
133
|
-
</SubNavLink>
|
|
134
|
-
<SubNavSection label="Global Settings">
|
|
135
|
-
{links.map(
|
|
136
|
-
(link) =>
|
|
137
|
-
link.icon && (
|
|
138
|
-
<SubNavLink to={link.to} active={link.active} icon={link.icon} key={link.id} isSubSectionChild>
|
|
139
|
-
{link.label}
|
|
140
|
-
</SubNavLink>
|
|
141
|
-
),
|
|
142
|
-
)}
|
|
143
|
-
</SubNavSection>
|
|
144
|
-
<SubNavSection label="Permissions">
|
|
145
|
-
{links.map(
|
|
146
|
-
(link) =>
|
|
147
|
-
link.icon && (
|
|
148
|
-
<SubNavLink to={link.to} icon={link.icon} key={link.id}>
|
|
149
|
-
{link.label}
|
|
150
|
-
</SubNavLink>
|
|
151
|
-
),
|
|
152
|
-
)}
|
|
153
|
-
</SubNavSection>
|
|
154
|
-
</SubNavSections>
|
|
155
|
-
</SubNav>
|
|
156
|
-
</Box>
|
|
157
|
-
<Box padding={10} style={{ height: '100vh' }} background="neutral200">
|
|
158
|
-
<SubNav ariaLabel="Mixed sub nav">
|
|
159
|
-
<SubNavHeader label="Mixed" />
|
|
160
|
-
<SubNavSections>
|
|
161
|
-
<SubNavLink to="/blabla" withBullet icon={<Apps />}>
|
|
162
|
-
Application
|
|
163
|
-
</SubNavLink>
|
|
164
|
-
<SubNavSection label="Global Settings">
|
|
165
|
-
<SubNavLinkSection label="Sub section">
|
|
166
|
-
{links.map((link) => (
|
|
167
|
-
<SubNavLink to={link.to} active={link.active} icon={link.icon} key={link.id}>
|
|
168
|
-
{link.label}
|
|
169
|
-
</SubNavLink>
|
|
170
|
-
))}
|
|
171
|
-
</SubNavLinkSection>
|
|
172
|
-
</SubNavSection>
|
|
173
|
-
<SubNavSection label="Permissions">
|
|
174
|
-
{links.map((link) => (
|
|
175
|
-
<SubNavLink to={link.to} icon={link.icon} key={link.id}>
|
|
176
|
-
{link.label}
|
|
177
|
-
</SubNavLink>
|
|
178
|
-
))}
|
|
179
|
-
</SubNavSection>
|
|
180
|
-
</SubNavSections>
|
|
181
|
-
</SubNav>
|
|
182
|
-
</Box>
|
|
183
|
-
</Flex>
|
|
184
|
-
);
|
|
185
|
-
}}
|
|
186
|
-
</Story>
|
|
187
|
-
</Canvas>
|
|
188
|
-
|
|
189
|
-
### Usage with other routing libraries
|
|
190
|
-
|
|
191
|
-
To use the Strapi design system SubNavLink component with a routing library (e.g. react-router-dom), you'll need to pass the react-router-dom `NavLink` component to the `as` prop in order to replace the default HTML anchor `<a />`.
|
|
192
|
-
You'll now be able to pass all `NavLink` props.
|
|
193
|
-
|
|
194
|
-
```jsx
|
|
195
|
-
import { SubNavLink } from '@strapi/design-system/SubNavLink';
|
|
196
|
-
import { NavLink } from 'react-router-dom';
|
|
197
|
-
|
|
198
|
-
<SubNavLink as={NavLink} to="/home">
|
|
199
|
-
Home
|
|
200
|
-
</SubNavLink>;
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
#### NextJS usage
|
|
204
|
-
|
|
205
|
-
For NextJS, you'll need to wrap the `NavLink` with the `NextLink` component
|
|
206
|
-
|
|
207
|
-
```jsx
|
|
208
|
-
import { SubNavLink } from '@strapi/design-system/SubNavLink';
|
|
209
|
-
import NextLink from 'next/link';
|
|
210
|
-
|
|
211
|
-
<NextLink href="/home" passHref>
|
|
212
|
-
<SubNavLink>Home</SubNavLink>
|
|
213
|
-
</NextLink>;
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
## SubNav Props
|
|
217
|
-
|
|
218
|
-
<ArgsTable of={SubNav} />
|
|
219
|
-
|
|
220
|
-
## SubNavHeader Props
|
|
221
|
-
|
|
222
|
-
<ArgsTable of={SubNavHeader} />
|
|
223
|
-
|
|
224
|
-
## SubNavSection Props
|
|
225
|
-
|
|
226
|
-
<ArgsTable of={SubNavSection} />
|
|
227
|
-
|
|
228
|
-
## SubNavLinkSection Props
|
|
229
|
-
|
|
230
|
-
<ArgsTable of={SubNavLinkSection} />
|
|
231
|
-
|
|
232
|
-
## SubNavLink Props
|
|
233
|
-
|
|
234
|
-
<ArgsTable of={SubNavLink} />
|