@dxc-technology/halstack-react 0.0.0-c2834c3 → 0.0.0-c293b72
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/BackgroundColorContext.d.ts +1 -10
- package/BackgroundColorContext.js +5 -22
- package/HalstackContext.d.ts +1243 -6
- package/HalstackContext.js +126 -114
- package/README.md +47 -0
- package/accordion/Accordion.accessibility.test.js +71 -0
- package/accordion/Accordion.d.ts +1 -1
- package/accordion/Accordion.js +104 -161
- package/accordion/Accordion.stories.tsx +84 -140
- package/accordion/Accordion.test.js +25 -41
- package/accordion/types.d.ts +6 -17
- package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
- package/accordion-group/AccordionGroup.d.ts +2 -2
- package/accordion-group/AccordionGroup.js +31 -98
- package/accordion-group/AccordionGroup.stories.tsx +94 -67
- package/accordion-group/AccordionGroup.test.js +52 -105
- package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
- package/accordion-group/AccordionGroupAccordion.js +31 -0
- package/accordion-group/AccordionGroupContext.d.ts +3 -0
- package/accordion-group/AccordionGroupContext.js +8 -0
- package/accordion-group/types.d.ts +12 -17
- package/action-icon/ActionIcon.accessibility.test.js +63 -0
- package/action-icon/ActionIcon.d.ts +4 -0
- package/action-icon/ActionIcon.js +48 -0
- package/action-icon/ActionIcon.stories.tsx +41 -0
- package/action-icon/ActionIcon.test.js +64 -0
- package/action-icon/types.d.ts +26 -0
- package/alert/Alert.accessibility.test.js +95 -0
- package/alert/Alert.js +32 -125
- package/alert/Alert.stories.tsx +28 -0
- package/alert/Alert.test.js +29 -46
- package/alert/types.d.ts +5 -5
- package/badge/Badge.accessibility.test.js +129 -0
- package/badge/Badge.d.ts +1 -1
- package/badge/Badge.js +142 -40
- package/badge/Badge.stories.tsx +210 -0
- package/badge/Badge.test.js +30 -0
- package/badge/types.d.ts +52 -2
- package/bleed/Bleed.js +14 -55
- package/bleed/Bleed.stories.tsx +95 -95
- package/bleed/types.d.ts +2 -2
- package/box/Box.accessibility.test.js +33 -0
- package/box/Box.d.ts +1 -1
- package/box/Box.js +30 -81
- package/box/Box.stories.tsx +38 -51
- package/box/Box.test.js +2 -7
- package/box/types.d.ts +3 -14
- package/bulleted-list/BulletedList.accessibility.test.js +107 -0
- package/bulleted-list/BulletedList.d.ts +7 -0
- package/bulleted-list/BulletedList.js +92 -0
- package/bulleted-list/BulletedList.stories.tsx +115 -0
- package/bulleted-list/types.d.ts +38 -0
- package/button/Button.accessibility.test.js +127 -0
- package/button/Button.d.ts +1 -1
- package/button/Button.js +64 -117
- package/button/Button.stories.tsx +151 -100
- package/button/Button.test.js +20 -17
- package/button/types.d.ts +12 -8
- package/card/Card.accessibility.test.js +36 -0
- package/card/Card.d.ts +1 -1
- package/card/Card.js +64 -107
- package/card/Card.stories.tsx +12 -42
- package/card/Card.test.js +11 -22
- package/card/types.d.ts +6 -11
- package/checkbox/Checkbox.accessibility.test.js +87 -0
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +140 -182
- package/checkbox/Checkbox.stories.tsx +128 -94
- package/checkbox/Checkbox.test.js +160 -39
- package/checkbox/types.d.ts +11 -3
- package/chip/Chip.accessibility.test.js +67 -0
- package/chip/Chip.js +43 -80
- package/chip/Chip.stories.tsx +102 -26
- package/chip/Chip.test.js +18 -33
- package/chip/types.d.ts +4 -4
- package/common/coreTokens.d.ts +237 -0
- package/common/coreTokens.js +184 -0
- package/common/utils.d.ts +1 -0
- package/common/utils.js +6 -12
- package/common/variables.d.ts +1395 -0
- package/common/variables.js +942 -1159
- package/container/Container.d.ts +4 -0
- package/container/Container.js +194 -0
- package/container/Container.stories.tsx +214 -0
- package/container/types.d.ts +74 -0
- package/contextual-menu/ContextualMenu.accessibility.test.js +86 -0
- package/contextual-menu/ContextualMenu.d.ts +7 -0
- package/contextual-menu/ContextualMenu.js +71 -0
- package/contextual-menu/ContextualMenu.stories.tsx +182 -0
- package/contextual-menu/ContextualMenu.test.js +71 -0
- package/contextual-menu/MenuItemAction.d.ts +4 -0
- package/contextual-menu/MenuItemAction.js +46 -0
- package/contextual-menu/types.d.ts +22 -0
- package/date-input/Calendar.d.ts +4 -0
- package/date-input/Calendar.js +214 -0
- package/date-input/DateInput.accessibility.test.js +216 -0
- package/date-input/DateInput.js +149 -299
- package/date-input/DateInput.stories.tsx +203 -56
- package/date-input/DateInput.test.js +700 -371
- package/date-input/DatePicker.d.ts +4 -0
- package/date-input/DatePicker.js +121 -0
- package/date-input/YearPicker.d.ts +4 -0
- package/date-input/YearPicker.js +100 -0
- package/date-input/types.d.ts +72 -15
- package/dialog/Dialog.accessibility.test.js +69 -0
- package/dialog/Dialog.d.ts +1 -1
- package/dialog/Dialog.js +73 -107
- package/dialog/Dialog.stories.tsx +320 -167
- package/dialog/Dialog.test.js +287 -20
- package/dialog/types.d.ts +18 -25
- package/divider/Divider.accessibility.test.js +33 -0
- package/divider/Divider.d.ts +4 -0
- package/divider/Divider.js +36 -0
- package/divider/Divider.stories.tsx +223 -0
- package/divider/Divider.test.js +38 -0
- package/divider/types.d.ts +21 -0
- package/dropdown/Dropdown.accessibility.test.js +180 -0
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +231 -303
- package/dropdown/Dropdown.stories.tsx +235 -57
- package/dropdown/Dropdown.test.js +575 -165
- package/dropdown/DropdownMenu.d.ts +4 -0
- package/dropdown/DropdownMenu.js +63 -0
- package/dropdown/DropdownMenuItem.d.ts +4 -0
- package/dropdown/DropdownMenuItem.js +70 -0
- package/dropdown/types.d.ts +35 -19
- package/file-input/FileInput.accessibility.test.js +160 -0
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +241 -391
- package/file-input/FileInput.stories.tsx +123 -12
- package/file-input/FileInput.test.js +292 -367
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +52 -117
- package/file-input/types.d.ts +25 -8
- package/flex/Flex.d.ts +4 -0
- package/flex/Flex.js +57 -0
- package/flex/Flex.stories.tsx +112 -0
- package/flex/types.d.ts +97 -0
- package/footer/Footer.accessibility.test.js +117 -0
- package/footer/Footer.d.ts +1 -1
- package/footer/Footer.js +73 -118
- package/footer/Footer.stories.tsx +87 -21
- package/footer/Footer.test.js +33 -57
- package/footer/Icons.d.ts +3 -2
- package/footer/Icons.js +67 -8
- package/footer/types.d.ts +26 -27
- package/grid/Grid.d.ts +7 -0
- package/grid/Grid.js +76 -0
- package/grid/Grid.stories.tsx +219 -0
- package/grid/types.d.ts +115 -0
- package/grid/types.js +5 -0
- package/header/Header.accessibility.test.js +84 -0
- package/header/Header.d.ts +4 -3
- package/header/Header.js +88 -182
- package/header/Header.stories.tsx +118 -39
- package/header/Header.test.js +13 -26
- package/header/Icons.d.ts +2 -2
- package/header/Icons.js +4 -9
- package/header/types.d.ts +7 -21
- package/heading/Heading.accessibility.test.js +33 -0
- package/heading/Heading.js +10 -32
- package/heading/Heading.test.js +71 -88
- package/heading/types.d.ts +7 -7
- package/icon/Icon.accessibility.test.js +30 -0
- package/icon/Icon.d.ts +4 -0
- package/icon/Icon.js +33 -0
- package/icon/Icon.stories.tsx +28 -0
- package/icon/types.d.ts +4 -0
- package/icon/types.js +5 -0
- package/image/Image.accessibility.test.js +56 -0
- package/image/Image.d.ts +4 -0
- package/image/Image.js +70 -0
- package/image/Image.stories.tsx +129 -0
- package/image/types.d.ts +72 -0
- package/image/types.js +5 -0
- package/inset/Inset.js +14 -55
- package/inset/Inset.stories.tsx +37 -36
- package/inset/types.d.ts +2 -2
- package/layout/ApplicationLayout.d.ts +16 -6
- package/layout/ApplicationLayout.js +82 -166
- package/layout/ApplicationLayout.stories.tsx +85 -94
- package/layout/Icons.d.ts +8 -0
- package/layout/Icons.js +49 -48
- package/layout/types.d.ts +19 -35
- package/link/Link.accessibility.test.js +112 -0
- package/link/Link.d.ts +2 -2
- package/link/Link.js +46 -91
- package/link/Link.stories.tsx +74 -7
- package/link/Link.test.js +24 -44
- package/link/types.d.ts +14 -15
- package/main.d.ts +14 -12
- package/main.js +65 -101
- package/nav-tabs/NavTabs.accessibility.test.js +44 -0
- package/nav-tabs/NavTabs.d.ts +7 -0
- package/nav-tabs/NavTabs.js +93 -0
- package/nav-tabs/NavTabs.stories.tsx +279 -0
- package/nav-tabs/NavTabs.test.js +75 -0
- package/nav-tabs/NavTabsContext.d.ts +3 -0
- package/nav-tabs/NavTabsContext.js +8 -0
- package/nav-tabs/Tab.d.ts +4 -0
- package/nav-tabs/Tab.js +117 -0
- package/nav-tabs/types.d.ts +52 -0
- package/nav-tabs/types.js +5 -0
- package/number-input/NumberInput.accessibility.test.js +228 -0
- package/number-input/NumberInput.js +46 -36
- package/number-input/NumberInput.stories.tsx +42 -26
- package/number-input/NumberInput.test.js +860 -377
- package/number-input/NumberInputContext.d.ts +3 -4
- package/number-input/NumberInputContext.js +3 -14
- package/number-input/types.d.ts +17 -5
- package/package.json +49 -51
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +21 -47
- package/paginator/Paginator.accessibility.test.js +79 -0
- package/paginator/Paginator.js +23 -59
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +280 -211
- package/paginator/types.d.ts +3 -3
- package/paragraph/Paragraph.accessibility.test.js +28 -0
- package/paragraph/Paragraph.d.ts +5 -0
- package/paragraph/Paragraph.js +22 -0
- package/paragraph/Paragraph.stories.tsx +27 -0
- package/password-input/PasswordInput.accessibility.test.js +153 -0
- package/password-input/PasswordInput.js +56 -126
- package/password-input/PasswordInput.stories.tsx +1 -33
- package/password-input/PasswordInput.test.js +160 -142
- package/password-input/types.d.ts +8 -7
- package/progress-bar/ProgressBar.accessibility.test.js +35 -0
- package/progress-bar/ProgressBar.js +65 -91
- package/progress-bar/ProgressBar.stories.tsx +93 -0
- package/progress-bar/ProgressBar.test.js +72 -44
- package/progress-bar/types.d.ts +3 -3
- package/quick-nav/QuickNav.accessibility.test.js +57 -0
- package/quick-nav/QuickNav.js +34 -56
- package/quick-nav/QuickNav.stories.tsx +146 -27
- package/quick-nav/types.d.ts +10 -10
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +59 -76
- package/radio-group/RadioGroup.accessibility.test.js +97 -0
- package/radio-group/RadioGroup.js +67 -114
- package/radio-group/RadioGroup.stories.tsx +132 -18
- package/radio-group/RadioGroup.test.js +518 -457
- package/radio-group/types.d.ts +10 -10
- package/resultset-table/Icons.d.ts +7 -0
- package/resultset-table/Icons.js +47 -0
- package/resultset-table/ResultsetTable.accessibility.test.js +274 -0
- package/resultset-table/ResultsetTable.d.ts +7 -0
- package/resultset-table/ResultsetTable.js +170 -0
- package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +156 -30
- package/resultset-table/ResultsetTable.test.js +381 -0
- package/{resultsetTable → resultset-table}/types.d.ts +44 -11
- package/resultset-table/types.js +5 -0
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +47 -54
- package/select/Option.js +33 -55
- package/select/Select.accessibility.test.js +217 -0
- package/select/Select.js +186 -242
- package/select/Select.stories.tsx +503 -190
- package/select/Select.test.js +1962 -1743
- package/select/types.d.ts +17 -21
- package/sidenav/Sidenav.accessibility.test.js +59 -0
- package/sidenav/Sidenav.d.ts +6 -5
- package/sidenav/Sidenav.js +136 -71
- package/sidenav/Sidenav.stories.tsx +246 -151
- package/sidenav/Sidenav.test.js +26 -45
- package/sidenav/SidenavContext.d.ts +5 -0
- package/sidenav/SidenavContext.js +13 -0
- package/sidenav/types.d.ts +52 -26
- package/slider/Slider.accessibility.test.js +104 -0
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +148 -181
- package/slider/Slider.test.js +185 -81
- package/slider/types.d.ts +7 -3
- package/spinner/Spinner.accessibility.test.js +96 -0
- package/spinner/Spinner.js +31 -75
- package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
- package/spinner/Spinner.test.js +26 -35
- package/spinner/types.d.ts +3 -3
- package/status-light/StatusLight.accessibility.test.js +157 -0
- package/status-light/StatusLight.d.ts +4 -0
- package/status-light/StatusLight.js +51 -0
- package/status-light/StatusLight.stories.tsx +74 -0
- package/status-light/StatusLight.test.js +25 -0
- package/status-light/types.d.ts +17 -0
- package/status-light/types.js +5 -0
- package/switch/Switch.accessibility.test.js +89 -0
- package/switch/Switch.d.ts +2 -2
- package/switch/Switch.js +145 -126
- package/switch/Switch.stories.tsx +37 -60
- package/switch/Switch.test.js +138 -56
- package/switch/types.d.ts +7 -3
- package/table/DropdownTheme.js +62 -0
- package/table/Table.accessibility.test.js +82 -0
- package/table/Table.d.ts +6 -2
- package/table/Table.js +78 -35
- package/table/Table.stories.tsx +651 -0
- package/table/Table.test.js +95 -8
- package/table/types.d.ts +34 -6
- package/tabs/Tab.d.ts +4 -0
- package/tabs/Tab.js +117 -0
- package/tabs/Tabs.accessibility.test.js +56 -0
- package/tabs/Tabs.js +303 -141
- package/tabs/Tabs.stories.tsx +118 -6
- package/tabs/Tabs.test.js +213 -77
- package/tabs/types.d.ts +30 -20
- package/tag/Tag.accessibility.test.js +69 -0
- package/tag/Tag.js +35 -67
- package/tag/Tag.stories.tsx +18 -8
- package/tag/Tag.test.js +18 -37
- package/tag/types.d.ts +9 -9
- package/text-input/Suggestion.js +40 -28
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +86 -0
- package/text-input/TextInput.accessibility.test.js +321 -0
- package/text-input/TextInput.js +311 -514
- package/text-input/TextInput.stories.tsx +266 -275
- package/text-input/TextInput.test.js +1419 -1375
- package/text-input/types.d.ts +43 -16
- package/textarea/Textarea.accessibility.test.js +155 -0
- package/textarea/Textarea.js +70 -113
- package/textarea/Textarea.stories.tsx +174 -0
- package/textarea/Textarea.test.js +152 -183
- package/textarea/types.d.ts +9 -5
- package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
- package/toggle-group/ToggleGroup.d.ts +2 -2
- package/toggle-group/ToggleGroup.js +94 -107
- package/toggle-group/ToggleGroup.stories.tsx +52 -7
- package/toggle-group/ToggleGroup.test.js +69 -88
- package/toggle-group/types.d.ts +28 -19
- package/typography/Typography.accessibility.test.js +339 -0
- package/typography/Typography.d.ts +4 -0
- package/typography/Typography.js +23 -0
- package/typography/Typography.stories.tsx +198 -0
- package/typography/types.d.ts +18 -0
- package/typography/types.js +5 -0
- package/useTheme.d.ts +1147 -1
- package/useTheme.js +2 -9
- package/useTranslatedLabels.d.ts +84 -1
- package/useTranslatedLabels.js +1 -7
- package/utils/BaseTypography.d.ts +21 -0
- package/utils/BaseTypography.js +94 -0
- package/utils/FocusLock.d.ts +13 -0
- package/utils/FocusLock.js +124 -0
- package/wizard/Wizard.accessibility.test.js +55 -0
- package/wizard/Wizard.js +34 -79
- package/wizard/Wizard.stories.tsx +59 -1
- package/wizard/Wizard.test.js +54 -81
- package/wizard/types.d.ts +9 -9
- package/card/ice-cream.jpg +0 -0
- package/common/OpenSans.css +0 -81
- package/common/RequiredComponent.js +0 -32
- package/common/fonts/OpenSans-Bold.ttf +0 -0
- package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
- package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
- package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- package/common/fonts/OpenSans-Italic.ttf +0 -0
- package/common/fonts/OpenSans-Light.ttf +0 -0
- package/common/fonts/OpenSans-LightItalic.ttf +0 -0
- package/common/fonts/OpenSans-Regular.ttf +0 -0
- package/common/fonts/OpenSans-SemiBold.ttf +0 -0
- package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
- package/list/List.d.ts +0 -4
- package/list/List.js +0 -47
- package/list/List.stories.tsx +0 -95
- package/list/types.d.ts +0 -7
- package/number-input/numberInputContextTypes.d.ts +0 -19
- package/progress-bar/ProgressBar.stories.jsx +0 -58
- package/radio/Radio.d.ts +0 -4
- package/radio/Radio.js +0 -173
- package/radio/Radio.stories.tsx +0 -192
- package/radio/Radio.test.js +0 -71
- package/radio/types.d.ts +0 -54
- package/resultsetTable/ResultsetTable.d.ts +0 -4
- package/resultsetTable/ResultsetTable.js +0 -254
- package/resultsetTable/ResultsetTable.test.js +0 -306
- package/row/Row.d.ts +0 -3
- package/row/Row.js +0 -127
- package/row/Row.stories.tsx +0 -237
- package/row/types.d.ts +0 -28
- package/select/Icons.d.ts +0 -10
- package/select/Icons.js +0 -93
- package/slider/Slider.stories.tsx +0 -177
- package/stack/Stack.d.ts +0 -3
- package/stack/Stack.js +0 -97
- package/stack/Stack.stories.tsx +0 -164
- package/stack/types.d.ts +0 -24
- package/table/Table.stories.jsx +0 -277
- package/text/Text.d.ts +0 -7
- package/text/Text.js +0 -30
- package/text/Text.stories.tsx +0 -19
- package/textarea/Textarea.stories.jsx +0 -157
- /package/{list → action-icon}/types.js +0 -0
- /package/{radio → bulleted-list}/types.js +0 -0
- /package/{resultsetTable → container}/types.js +0 -0
- /package/{row → contextual-menu}/types.js +0 -0
- /package/{stack → divider}/types.js +0 -0
- /package/{number-input/numberInputContextTypes.js → flex/types.js} +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
|
|
3
|
-
import { userEvent, within, waitFor } from "@storybook/testing-library";
|
|
4
|
-
import { fireEvent } from "@testing-library/react";
|
|
5
|
-
|
|
2
|
+
import { userEvent, within } from "@storybook/testing-library";
|
|
6
3
|
import Title from "../../.storybook/components/Title";
|
|
7
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
8
|
-
|
|
9
5
|
import DxcSelect from "./Select";
|
|
6
|
+
import Listbox from "./Listbox";
|
|
7
|
+
import { ThemeProvider } from "styled-components";
|
|
8
|
+
import useTheme from "../useTheme";
|
|
9
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
10
10
|
|
|
11
11
|
export default {
|
|
12
12
|
title: "Select",
|
|
@@ -14,12 +14,14 @@ export default {
|
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
const one_option = [{ label: "Option 01", value: "1" }];
|
|
17
|
+
|
|
17
18
|
const single_options = [
|
|
18
19
|
{ label: "Option 01", value: "1" },
|
|
19
20
|
{ label: "Option 02", value: "2" },
|
|
20
21
|
{ label: "Option 03", value: "3" },
|
|
21
22
|
{ label: "Option 04", value: "4" },
|
|
22
23
|
];
|
|
24
|
+
|
|
23
25
|
const group_options = [
|
|
24
26
|
{
|
|
25
27
|
label: "Group 001",
|
|
@@ -62,25 +64,15 @@ const group_options = [
|
|
|
62
64
|
],
|
|
63
65
|
},
|
|
64
66
|
];
|
|
65
|
-
|
|
67
|
+
|
|
68
|
+
const icon_options_grouped_material = [
|
|
66
69
|
{
|
|
67
70
|
label: "Group 001",
|
|
68
71
|
options: [
|
|
69
72
|
{
|
|
70
73
|
label: "3G Mobile",
|
|
71
74
|
value: "1",
|
|
72
|
-
icon:
|
|
73
|
-
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
|
|
74
|
-
<g>
|
|
75
|
-
<path d="M0,0h24v24H0V0z" fill="none" />
|
|
76
|
-
</g>
|
|
77
|
-
<g>
|
|
78
|
-
<g>
|
|
79
|
-
<path d="M3,7v2h5v2H4v2h4v2H3v2h5c1.1,0,2-0.9,2-2v-1.5c0-0.83-0.67-1.5-1.5-1.5c0.83,0,1.5-0.67,1.5-1.5V9c0-1.1-0.9-2-2-2H3z M21,11v4c0,1.1-0.9,2-2,2h-5c-1.1,0-2-0.9-2-2V9c0-1.1,0.9-2,2-2h5c1.1,0,2,0.9,2,2h-7v6h5v-2h-2.5v-2H21z" />
|
|
80
|
-
</g>
|
|
81
|
-
</g>
|
|
82
|
-
</svg>
|
|
83
|
-
),
|
|
75
|
+
icon: "3g_mobiledata",
|
|
84
76
|
},
|
|
85
77
|
],
|
|
86
78
|
},
|
|
@@ -90,12 +82,7 @@ const icon_options_grouped = [
|
|
|
90
82
|
{
|
|
91
83
|
label: "Ethernet",
|
|
92
84
|
value: "2",
|
|
93
|
-
icon:
|
|
94
|
-
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
|
|
95
|
-
<path d="M0 0h24v24H0V0z" fill="none" />
|
|
96
|
-
<path d="M7.77 6.76L6.23 5.48.82 12l5.41 6.52 1.54-1.28L3.42 12l4.35-5.24zM7 13h2v-2H7v2zm10-2h-2v2h2v-2zm-6 2h2v-2h-2v2zm6.77-7.52l-1.54 1.28L20.58 12l-4.35 5.24 1.54 1.28L23.18 12l-5.41-6.52z" />
|
|
97
|
-
</svg>
|
|
98
|
-
),
|
|
85
|
+
icon: "settings_ethernet",
|
|
99
86
|
},
|
|
100
87
|
],
|
|
101
88
|
},
|
|
@@ -105,26 +92,17 @@ const icon_options_grouped = [
|
|
|
105
92
|
{
|
|
106
93
|
label: "Wi-fi",
|
|
107
94
|
value: "3",
|
|
108
|
-
icon:
|
|
109
|
-
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
|
|
110
|
-
<path d="M0 0h24v24H0V0zm0 0h24v24H0V0z" fill="none" />
|
|
111
|
-
<path d="M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13z" />
|
|
112
|
-
</svg>
|
|
113
|
-
),
|
|
95
|
+
icon: "wifi",
|
|
114
96
|
},
|
|
115
97
|
{
|
|
116
98
|
label: "Settings backup restore (just for previous configuration)",
|
|
117
99
|
value: "4",
|
|
118
|
-
icon:
|
|
119
|
-
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
|
|
120
|
-
<path d="M0 0h24v24H0V0z" fill="none" />
|
|
121
|
-
<path d="M14 12c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2zm-2-9c-4.97 0-9 4.03-9 9H0l4 4 4-4H5c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.51 0-2.91-.49-4.06-1.3l-1.42 1.44C8.04 20.3 9.94 21 12 21c4.97 0 9-4.03 9-9s-4.03-9-9-9z" />
|
|
122
|
-
</svg>
|
|
123
|
-
),
|
|
100
|
+
icon: "settings_backup_restore",
|
|
124
101
|
},
|
|
125
102
|
],
|
|
126
103
|
},
|
|
127
104
|
];
|
|
105
|
+
|
|
128
106
|
const icon_options = [
|
|
129
107
|
{
|
|
130
108
|
label: "3G Mobile",
|
|
@@ -173,60 +151,70 @@ const icon_options = [
|
|
|
173
151
|
),
|
|
174
152
|
},
|
|
175
153
|
];
|
|
176
|
-
|
|
154
|
+
|
|
155
|
+
const options_material = [
|
|
177
156
|
{
|
|
178
|
-
label: "
|
|
157
|
+
label: "Transport",
|
|
179
158
|
options: [
|
|
180
159
|
{
|
|
181
|
-
label: "
|
|
182
|
-
value: "
|
|
183
|
-
icon: "
|
|
160
|
+
label: "Electric Car",
|
|
161
|
+
value: "car",
|
|
162
|
+
icon: "electric_car",
|
|
184
163
|
},
|
|
185
164
|
{
|
|
186
|
-
label: "
|
|
187
|
-
value: "
|
|
188
|
-
icon: "
|
|
165
|
+
label: "Motorcycle",
|
|
166
|
+
value: "motorcycle",
|
|
167
|
+
icon: "Motorcycle",
|
|
189
168
|
},
|
|
190
169
|
{
|
|
191
|
-
label: "
|
|
192
|
-
value: "
|
|
193
|
-
icon: "
|
|
170
|
+
label: "Train",
|
|
171
|
+
value: "train",
|
|
172
|
+
icon: "train",
|
|
194
173
|
},
|
|
195
174
|
{
|
|
196
|
-
label: "
|
|
197
|
-
value: "
|
|
198
|
-
icon: "
|
|
175
|
+
label: "Bike",
|
|
176
|
+
value: "bike",
|
|
177
|
+
icon: "pedal_bike",
|
|
199
178
|
},
|
|
200
179
|
],
|
|
201
180
|
},
|
|
202
181
|
{
|
|
203
|
-
label: "
|
|
182
|
+
label: "Entertainment",
|
|
204
183
|
options: [
|
|
205
184
|
{
|
|
206
|
-
label: "
|
|
207
|
-
value: "
|
|
208
|
-
icon: "
|
|
185
|
+
label: "Movie",
|
|
186
|
+
value: "movie",
|
|
187
|
+
icon: "movie",
|
|
209
188
|
},
|
|
210
189
|
{
|
|
211
|
-
label: "
|
|
212
|
-
value: "
|
|
213
|
-
icon: "
|
|
190
|
+
label: "Music",
|
|
191
|
+
value: "music",
|
|
192
|
+
icon: "music_note",
|
|
214
193
|
},
|
|
215
194
|
{
|
|
216
|
-
label: "
|
|
217
|
-
value: "
|
|
218
|
-
icon: "
|
|
195
|
+
label: "Games",
|
|
196
|
+
value: "games",
|
|
197
|
+
icon: "joystick",
|
|
219
198
|
},
|
|
220
199
|
],
|
|
221
200
|
},
|
|
222
201
|
];
|
|
202
|
+
|
|
223
203
|
const optionsWithEllipsisMedium = [
|
|
224
204
|
{ label: "Optiond1234567890123456789012345678901234", value: "1" },
|
|
225
205
|
{ label: "Optiond12345678901234567890123456789012345", value: "2" },
|
|
226
206
|
{ label: "Option 031111111111111111111111111111222", value: "3" },
|
|
227
|
-
{ label: "Option 03111111111111111111111111111222", value: "4" },
|
|
228
207
|
];
|
|
229
208
|
|
|
209
|
+
const opinionatedTheme = {
|
|
210
|
+
select: {
|
|
211
|
+
selectedOptionBackgroundColor: "#e6f4ff",
|
|
212
|
+
fontColor: "#000000",
|
|
213
|
+
optionFontColor: "#000000",
|
|
214
|
+
hoverBorderColor: "#a46ede",
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
|
|
230
218
|
const Select = () => (
|
|
231
219
|
<>
|
|
232
220
|
<Title title="States" theme="light" level={2} />
|
|
@@ -339,36 +327,365 @@ const Select = () => (
|
|
|
339
327
|
<Title title="Multiple selection with ellipsis" theme="light" level={4} />
|
|
340
328
|
<DxcSelect label="Label" options={single_options} multiple defaultValue={["1", "2", "3", "4"]} />
|
|
341
329
|
<Title title="Value with ellipsis" theme="light" level={4} />
|
|
342
|
-
<DxcSelect label="Label" options={optionsWithEllipsisMedium} defaultValue="1"
|
|
343
|
-
<Title title="
|
|
330
|
+
<DxcSelect label="Label" options={optionsWithEllipsisMedium} defaultValue="1" />
|
|
331
|
+
<Title title="Options with ellipsis" theme="light" level={4} />
|
|
344
332
|
<DxcSelect
|
|
345
333
|
label="Label"
|
|
346
334
|
placeholder="Choose an option"
|
|
347
335
|
defaultValue="1"
|
|
348
336
|
options={optionsWithEllipsisMedium}
|
|
349
|
-
|
|
337
|
+
margin={{ top: "xxlarge" }}
|
|
350
338
|
/>
|
|
351
339
|
</ExampleContainer>
|
|
340
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
341
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
342
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
343
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
344
|
+
<DxcSelect label="Hovered" options={single_options} />
|
|
345
|
+
</HalstackProvider>
|
|
346
|
+
</ExampleContainer>
|
|
347
|
+
<ExampleContainer pseudoState="pseudo-focus-within">
|
|
348
|
+
<Title title="Focused" theme="light" level={4} />
|
|
349
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
350
|
+
<DxcSelect label="Focused" options={single_options} />
|
|
351
|
+
</HalstackProvider>
|
|
352
|
+
</ExampleContainer>
|
|
353
|
+
<ExampleContainer>
|
|
354
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
355
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
356
|
+
<DxcSelect label="Disabled" placeholder="Placeholder" disabled options={single_options} />
|
|
357
|
+
</HalstackProvider>
|
|
358
|
+
</ExampleContainer>
|
|
359
|
+
<ExampleContainer>
|
|
360
|
+
<Title title="Disabled with value" theme="light" level={4} />
|
|
361
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
362
|
+
<DxcSelect label="Disabled with value" disabled options={single_options} defaultValue="1" />
|
|
363
|
+
</HalstackProvider>
|
|
364
|
+
</ExampleContainer>
|
|
365
|
+
<ExampleContainer>
|
|
366
|
+
<Title title="Error" theme="light" level={4} />
|
|
367
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
368
|
+
<DxcSelect
|
|
369
|
+
label="Label"
|
|
370
|
+
options={single_options}
|
|
371
|
+
error="Error message."
|
|
372
|
+
helperText="Helper text"
|
|
373
|
+
placeholder="Placeholder"
|
|
374
|
+
/>
|
|
375
|
+
<ExampleContainer>
|
|
376
|
+
<Title title="Multiple selection" theme="light" level={4} />
|
|
377
|
+
<DxcSelect label="Multiple select" searchable options={single_options} multiple defaultValue={["1", "2"]} />
|
|
378
|
+
</ExampleContainer>
|
|
379
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
380
|
+
<Title title="Multiple clear hovered" theme="light" level={4} />
|
|
381
|
+
<DxcSelect label="Multiple select" options={single_options} multiple defaultValue={["1", "2"]} />
|
|
382
|
+
</ExampleContainer>
|
|
383
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
384
|
+
<Title title="Multiple clear actived" theme="light" level={4} />
|
|
385
|
+
<DxcSelect label="Multiple select" options={single_options} multiple defaultValue={["1", "2"]} />
|
|
386
|
+
</ExampleContainer>
|
|
387
|
+
</HalstackProvider>
|
|
388
|
+
</ExampleContainer>
|
|
352
389
|
</>
|
|
353
390
|
);
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
const
|
|
357
|
-
|
|
391
|
+
|
|
392
|
+
const SelectListbox = () => {
|
|
393
|
+
const colorsTheme: any = useTheme();
|
|
394
|
+
|
|
395
|
+
return (
|
|
396
|
+
<>
|
|
397
|
+
<ThemeProvider theme={colorsTheme.select}>
|
|
398
|
+
<Title title="Listbox" theme="light" level={2} />
|
|
399
|
+
<ExampleContainer>
|
|
400
|
+
<Title
|
|
401
|
+
title="List dialog uses a Radix Popover to appear over elements with a certain z-index"
|
|
402
|
+
theme="light"
|
|
403
|
+
level={3}
|
|
404
|
+
/>
|
|
405
|
+
<div
|
|
406
|
+
style={{
|
|
407
|
+
position: "relative",
|
|
408
|
+
display: "flex",
|
|
409
|
+
flexDirection: "column",
|
|
410
|
+
gap: "20px",
|
|
411
|
+
height: "150px",
|
|
412
|
+
width: "min-content",
|
|
413
|
+
marginBottom: "100px",
|
|
414
|
+
padding: "20px",
|
|
415
|
+
border: "1px solid black",
|
|
416
|
+
borderRadius: "4px",
|
|
417
|
+
overflow: "auto",
|
|
418
|
+
zIndex: "1300",
|
|
419
|
+
}}
|
|
420
|
+
>
|
|
421
|
+
<DxcSelect label="Label" options={single_options} optional placeholder="Choose an option" />
|
|
422
|
+
<button style={{ zIndex: "1", width: "100px" }}>Submit</button>
|
|
423
|
+
</div>
|
|
424
|
+
</ExampleContainer>
|
|
425
|
+
<Title title="Listbox option states" theme="light" level={3} />
|
|
426
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
427
|
+
<Title title="Hovered option" theme="light" level={4} />
|
|
428
|
+
<Listbox
|
|
429
|
+
id="x"
|
|
430
|
+
currentValue=""
|
|
431
|
+
options={one_option}
|
|
432
|
+
visualFocusIndex={-1}
|
|
433
|
+
lastOptionIndex={0}
|
|
434
|
+
multiple={false}
|
|
435
|
+
optional={false}
|
|
436
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
437
|
+
searchable={false}
|
|
438
|
+
handleOptionOnClick={() => {}}
|
|
439
|
+
styles={{ width: 360 }}
|
|
440
|
+
/>
|
|
441
|
+
</ExampleContainer>
|
|
442
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
443
|
+
<Title title="Active option" theme="light" level={4} />
|
|
444
|
+
<Listbox
|
|
445
|
+
id="x"
|
|
446
|
+
currentValue=""
|
|
447
|
+
options={one_option}
|
|
448
|
+
visualFocusIndex={-1}
|
|
449
|
+
lastOptionIndex={0}
|
|
450
|
+
multiple={false}
|
|
451
|
+
optional={false}
|
|
452
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
453
|
+
searchable={false}
|
|
454
|
+
handleOptionOnClick={() => {}}
|
|
455
|
+
styles={{ width: 360 }}
|
|
456
|
+
/>
|
|
457
|
+
</ExampleContainer>
|
|
458
|
+
<ExampleContainer>
|
|
459
|
+
<Title title="Focused option" theme="light" level={4} />
|
|
460
|
+
<Listbox
|
|
461
|
+
id="x"
|
|
462
|
+
currentValue=""
|
|
463
|
+
options={one_option}
|
|
464
|
+
visualFocusIndex={0}
|
|
465
|
+
lastOptionIndex={0}
|
|
466
|
+
multiple={false}
|
|
467
|
+
optional={false}
|
|
468
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
469
|
+
searchable={false}
|
|
470
|
+
handleOptionOnClick={() => {}}
|
|
471
|
+
styles={{ width: 360 }}
|
|
472
|
+
/>
|
|
473
|
+
</ExampleContainer>
|
|
474
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
475
|
+
<Title title="Hovered selected option" theme="light" level={4} />
|
|
476
|
+
<Listbox
|
|
477
|
+
id="x"
|
|
478
|
+
currentValue="1"
|
|
479
|
+
options={single_options}
|
|
480
|
+
visualFocusIndex={-1}
|
|
481
|
+
lastOptionIndex={3}
|
|
482
|
+
multiple={false}
|
|
483
|
+
optional={false}
|
|
484
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
485
|
+
searchable={false}
|
|
486
|
+
handleOptionOnClick={() => {}}
|
|
487
|
+
styles={{ width: 360 }}
|
|
488
|
+
/>
|
|
489
|
+
</ExampleContainer>
|
|
490
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
491
|
+
<Title title="Active selected option" theme="light" level={4} />
|
|
492
|
+
<Listbox
|
|
493
|
+
id="x"
|
|
494
|
+
currentValue="2"
|
|
495
|
+
options={single_options}
|
|
496
|
+
visualFocusIndex={0}
|
|
497
|
+
lastOptionIndex={3}
|
|
498
|
+
multiple={false}
|
|
499
|
+
optional={false}
|
|
500
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
501
|
+
searchable={false}
|
|
502
|
+
handleOptionOnClick={() => {}}
|
|
503
|
+
styles={{ width: 360 }}
|
|
504
|
+
/>
|
|
505
|
+
</ExampleContainer>
|
|
506
|
+
<Title title="Listbox with icons" theme="light" level={3} />
|
|
507
|
+
<ExampleContainer>
|
|
508
|
+
<Title title="Icons (SVGs)" theme="light" level={4} />
|
|
509
|
+
<Listbox
|
|
510
|
+
id="x"
|
|
511
|
+
currentValue="3"
|
|
512
|
+
options={icon_options}
|
|
513
|
+
visualFocusIndex={-1}
|
|
514
|
+
lastOptionIndex={3}
|
|
515
|
+
multiple={false}
|
|
516
|
+
optional={false}
|
|
517
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
518
|
+
searchable={false}
|
|
519
|
+
handleOptionOnClick={() => {}}
|
|
520
|
+
styles={{ width: 360 }}
|
|
521
|
+
/>
|
|
522
|
+
</ExampleContainer>
|
|
523
|
+
<ExampleContainer>
|
|
524
|
+
<Title title="Grouped icons (Material Symbols)" theme="light" level={4} />
|
|
525
|
+
<Listbox
|
|
526
|
+
id="x"
|
|
527
|
+
currentValue={["0", "3"]}
|
|
528
|
+
options={icon_options_grouped_material}
|
|
529
|
+
visualFocusIndex={-1}
|
|
530
|
+
lastOptionIndex={3}
|
|
531
|
+
multiple={false}
|
|
532
|
+
optional={false}
|
|
533
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
534
|
+
searchable={false}
|
|
535
|
+
handleOptionOnClick={() => {}}
|
|
536
|
+
styles={{ width: 360 }}
|
|
537
|
+
/>
|
|
538
|
+
</ExampleContainer>
|
|
539
|
+
<ExampleContainer>
|
|
540
|
+
<Title title="Grouped icons (Material)" theme="light" level={4} />
|
|
541
|
+
<Listbox
|
|
542
|
+
id="x"
|
|
543
|
+
currentValue={["facebook", "figma"]}
|
|
544
|
+
options={options_material}
|
|
545
|
+
visualFocusIndex={-1}
|
|
546
|
+
lastOptionIndex={6}
|
|
547
|
+
multiple={true}
|
|
548
|
+
optional={false}
|
|
549
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
550
|
+
searchable={false}
|
|
551
|
+
handleOptionOnClick={() => {}}
|
|
552
|
+
styles={{ width: 360 }}
|
|
553
|
+
/>
|
|
554
|
+
</ExampleContainer>
|
|
555
|
+
</ThemeProvider>
|
|
556
|
+
<ThemeProvider theme={colorsTheme.select}>
|
|
557
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
558
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
559
|
+
<Title title="Hovered option" theme="light" level={4} />
|
|
560
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
561
|
+
<Listbox
|
|
562
|
+
id="x"
|
|
563
|
+
currentValue=""
|
|
564
|
+
options={one_option}
|
|
565
|
+
visualFocusIndex={-1}
|
|
566
|
+
lastOptionIndex={0}
|
|
567
|
+
multiple={false}
|
|
568
|
+
optional={false}
|
|
569
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
570
|
+
searchable={false}
|
|
571
|
+
handleOptionOnClick={() => {}}
|
|
572
|
+
styles={{ width: 360 }}
|
|
573
|
+
/>
|
|
574
|
+
</HalstackProvider>
|
|
575
|
+
</ExampleContainer>
|
|
576
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
577
|
+
<Title title="Active option" theme="light" level={4} />{" "}
|
|
578
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
579
|
+
<Listbox
|
|
580
|
+
id="x"
|
|
581
|
+
currentValue=""
|
|
582
|
+
options={one_option}
|
|
583
|
+
visualFocusIndex={-1}
|
|
584
|
+
lastOptionIndex={0}
|
|
585
|
+
multiple={false}
|
|
586
|
+
optional={false}
|
|
587
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
588
|
+
searchable={false}
|
|
589
|
+
handleOptionOnClick={() => {}}
|
|
590
|
+
styles={{ width: 360 }}
|
|
591
|
+
/>
|
|
592
|
+
</HalstackProvider>
|
|
593
|
+
</ExampleContainer>
|
|
594
|
+
<ExampleContainer>
|
|
595
|
+
<Title title="Focused option" theme="light" level={4} />{" "}
|
|
596
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
597
|
+
<Listbox
|
|
598
|
+
id="x"
|
|
599
|
+
currentValue=""
|
|
600
|
+
options={one_option}
|
|
601
|
+
visualFocusIndex={0}
|
|
602
|
+
lastOptionIndex={0}
|
|
603
|
+
multiple={false}
|
|
604
|
+
optional={false}
|
|
605
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
606
|
+
searchable={false}
|
|
607
|
+
handleOptionOnClick={() => {}}
|
|
608
|
+
styles={{ width: 360 }}
|
|
609
|
+
/>
|
|
610
|
+
</HalstackProvider>
|
|
611
|
+
</ExampleContainer>
|
|
612
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
613
|
+
<Title title="Hovered selected option" theme="light" level={4} />{" "}
|
|
614
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
615
|
+
<Listbox
|
|
616
|
+
id="x"
|
|
617
|
+
currentValue="1"
|
|
618
|
+
options={single_options}
|
|
619
|
+
visualFocusIndex={-1}
|
|
620
|
+
lastOptionIndex={3}
|
|
621
|
+
multiple={false}
|
|
622
|
+
optional={false}
|
|
623
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
624
|
+
searchable={false}
|
|
625
|
+
handleOptionOnClick={() => {}}
|
|
626
|
+
styles={{ width: 360 }}
|
|
627
|
+
/>
|
|
628
|
+
</HalstackProvider>
|
|
629
|
+
</ExampleContainer>
|
|
630
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
631
|
+
<Title title="Active selected option" theme="light" level={4} />{" "}
|
|
632
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
633
|
+
<Listbox
|
|
634
|
+
id="x"
|
|
635
|
+
currentValue="2"
|
|
636
|
+
options={single_options}
|
|
637
|
+
visualFocusIndex={0}
|
|
638
|
+
lastOptionIndex={3}
|
|
639
|
+
multiple={false}
|
|
640
|
+
optional={false}
|
|
641
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
642
|
+
searchable={false}
|
|
643
|
+
handleOptionOnClick={() => {}}
|
|
644
|
+
styles={{ width: 360 }}
|
|
645
|
+
/>
|
|
646
|
+
</HalstackProvider>
|
|
647
|
+
</ExampleContainer>
|
|
648
|
+
<Title title="Listbox with icons" theme="light" level={3} />
|
|
649
|
+
<ExampleContainer>
|
|
650
|
+
<Title title="Icons (SVGs)" theme="light" level={4} />{" "}
|
|
651
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
652
|
+
<Listbox
|
|
653
|
+
id="x"
|
|
654
|
+
currentValue="3"
|
|
655
|
+
options={icon_options}
|
|
656
|
+
visualFocusIndex={-1}
|
|
657
|
+
lastOptionIndex={3}
|
|
658
|
+
multiple={false}
|
|
659
|
+
optional={false}
|
|
660
|
+
optionalItem={{ label: "Empty", value: "" }}
|
|
661
|
+
searchable={false}
|
|
662
|
+
handleOptionOnClick={() => {}}
|
|
663
|
+
styles={{ width: 360 }}
|
|
664
|
+
/>
|
|
665
|
+
</HalstackProvider>
|
|
666
|
+
</ExampleContainer>
|
|
667
|
+
</ThemeProvider>
|
|
668
|
+
</>
|
|
669
|
+
);
|
|
358
670
|
};
|
|
359
|
-
|
|
671
|
+
|
|
672
|
+
const SearchableSelect = () => (
|
|
360
673
|
<ExampleContainer expanded>
|
|
361
|
-
<Title title="
|
|
362
|
-
<DxcSelect label="Select
|
|
674
|
+
<Title title="Searchable select" theme="light" level={4} />
|
|
675
|
+
<DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
|
|
363
676
|
</ExampleContainer>
|
|
364
677
|
);
|
|
365
|
-
|
|
678
|
+
|
|
679
|
+
const SearchableSelectOpinionated = () => (
|
|
366
680
|
<ExampleContainer expanded>
|
|
367
681
|
<Title title="Searchable select" theme="light" level={4} />
|
|
368
|
-
<
|
|
682
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
683
|
+
<DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
|
|
684
|
+
</HalstackProvider>
|
|
369
685
|
</ExampleContainer>
|
|
370
686
|
);
|
|
371
|
-
|
|
687
|
+
|
|
688
|
+
const SearchValue = () => (
|
|
372
689
|
<ExampleContainer expanded>
|
|
373
690
|
<Title title="Searchable select with value" theme="light" level={4} />
|
|
374
691
|
<DxcSelect
|
|
@@ -381,6 +698,21 @@ const SearchableWithValue = () => (
|
|
|
381
698
|
</ExampleContainer>
|
|
382
699
|
);
|
|
383
700
|
|
|
701
|
+
const SearchValueOpinionated = () => (
|
|
702
|
+
<ExampleContainer expanded>
|
|
703
|
+
<Title title="Searchable select with value" theme="light" level={4} />
|
|
704
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
705
|
+
<DxcSelect
|
|
706
|
+
label="Select Label"
|
|
707
|
+
searchable
|
|
708
|
+
defaultValue="1"
|
|
709
|
+
options={single_options}
|
|
710
|
+
placeholder="Choose an option"
|
|
711
|
+
/>
|
|
712
|
+
</HalstackProvider>
|
|
713
|
+
</ExampleContainer>
|
|
714
|
+
);
|
|
715
|
+
|
|
384
716
|
const MultipleSelect = () => (
|
|
385
717
|
<>
|
|
386
718
|
<ExampleContainer expanded>
|
|
@@ -395,12 +727,38 @@ const MultipleSelect = () => (
|
|
|
395
727
|
</ExampleContainer>
|
|
396
728
|
</>
|
|
397
729
|
);
|
|
730
|
+
|
|
731
|
+
const MultipleSelectOpinioated = () => (
|
|
732
|
+
<ExampleContainer expanded>
|
|
733
|
+
<Title title="Multiple select" theme="light" level={4} />
|
|
734
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
735
|
+
<DxcSelect
|
|
736
|
+
label="Select label"
|
|
737
|
+
options={single_options}
|
|
738
|
+
defaultValue={["1", "4"]}
|
|
739
|
+
multiple
|
|
740
|
+
placeholder="Choose an option"
|
|
741
|
+
/>
|
|
742
|
+
</HalstackProvider>
|
|
743
|
+
</ExampleContainer>
|
|
744
|
+
);
|
|
745
|
+
|
|
398
746
|
const DefaultGroupedOptionsSelect = () => (
|
|
399
747
|
<ExampleContainer expanded>
|
|
400
748
|
<Title title="Grouped options simple select" theme="light" level={4} />
|
|
401
749
|
<DxcSelect label="Label" options={group_options} defaultValue="9" placeholder="Choose an option" />
|
|
402
750
|
</ExampleContainer>
|
|
403
751
|
);
|
|
752
|
+
|
|
753
|
+
const DefaultGroupedOptionsSelectOpinionated = () => (
|
|
754
|
+
<ExampleContainer expanded>
|
|
755
|
+
<Title title="Grouped options simple select" theme="light" level={4} />
|
|
756
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
757
|
+
<DxcSelect label="Label" options={group_options} defaultValue="9" placeholder="Choose an option" />
|
|
758
|
+
</HalstackProvider>
|
|
759
|
+
</ExampleContainer>
|
|
760
|
+
);
|
|
761
|
+
|
|
404
762
|
const MultipleGroupedOptionsSelect = () => (
|
|
405
763
|
<ExampleContainer expanded>
|
|
406
764
|
<Title title="Grouped options multiple select" theme="light" level={4} />
|
|
@@ -413,66 +771,22 @@ const MultipleGroupedOptionsSelect = () => (
|
|
|
413
771
|
/>
|
|
414
772
|
</ExampleContainer>
|
|
415
773
|
);
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
<Title title="Rescaled icons displayed" theme="light" level={4} />
|
|
419
|
-
<DxcSelect label="Label" options={url_options} defaultValue="facebook" placeholder="Choose an option" />
|
|
420
|
-
</ExampleContainer>
|
|
421
|
-
);
|
|
422
|
-
const SelectWithIcons = () => (
|
|
423
|
-
<ExampleContainer expanded>
|
|
424
|
-
<Title title="Normal icons displayed" theme="light" level={4} />
|
|
425
|
-
<DxcSelect label="Label" options={icon_options} defaultValue="3" placeholder="Choose an option" />
|
|
426
|
-
</ExampleContainer>
|
|
427
|
-
);
|
|
428
|
-
const SelectMultipleWithIcons = () => (
|
|
429
|
-
<ExampleContainer expanded>
|
|
430
|
-
<Title title="Multiple select with icons" theme="light" level={4} />
|
|
431
|
-
<DxcSelect label="Label" options={icon_options} multiple defaultValue={["1", "3"]} placeholder="Choose an option" />
|
|
432
|
-
</ExampleContainer>
|
|
433
|
-
);
|
|
434
|
-
const MultipleGroupedOptionsSelectWithIcons = () => (
|
|
774
|
+
|
|
775
|
+
const MultipleGroupedOptionsSelectOpinionated = () => (
|
|
435
776
|
<ExampleContainer expanded>
|
|
436
|
-
<Title title="
|
|
437
|
-
<
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
const OnlyOneOptionHovered = () => (
|
|
447
|
-
<ExampleContainer pseudoState="pseudo-hover" expanded>
|
|
448
|
-
<Title title="Hovered Option" theme="light" level={4} />
|
|
449
|
-
<DxcSelect label="Hovered" options={one_option} placeholder="Choose an option" />
|
|
450
|
-
</ExampleContainer>
|
|
451
|
-
);
|
|
452
|
-
const OnlyOneOptionFocused = () => (
|
|
453
|
-
<ExampleContainer pseudoState="pseudo-focus" expanded>
|
|
454
|
-
<Title title="Focused Option" theme="light" level={4} />
|
|
455
|
-
<DxcSelect label="Focused" options={one_option} placeholder="Choose an option" />
|
|
456
|
-
</ExampleContainer>
|
|
457
|
-
);
|
|
458
|
-
const OnlyOneOptionActived = () => (
|
|
459
|
-
<ExampleContainer pseudoState="pseudo-active" expanded>
|
|
460
|
-
<Title title="Actived Option" theme="light" level={4} />
|
|
461
|
-
<DxcSelect label="Actived" options={one_option} placeholder="Choose an option" />
|
|
462
|
-
</ExampleContainer>
|
|
463
|
-
);
|
|
464
|
-
const SelectedOptionHovered = () => (
|
|
465
|
-
<ExampleContainer pseudoState="pseudo-hover" expanded>
|
|
466
|
-
<Title title="Hovered Selected Option" theme="light" level={4} />
|
|
467
|
-
<DxcSelect label="Hovered" defaultValue="1" options={one_option} placeholder="Choose an option" />
|
|
468
|
-
</ExampleContainer>
|
|
469
|
-
);
|
|
470
|
-
const SelectedOptionActived = () => (
|
|
471
|
-
<ExampleContainer pseudoState="pseudo-active" expanded>
|
|
472
|
-
<Title title="Actived Selected Option" theme="light" level={4} />
|
|
473
|
-
<DxcSelect label="Actived" defaultValue="1" options={one_option} placeholder="Choose an option" />
|
|
777
|
+
<Title title="Grouped options multiple select" theme="light" level={4} />
|
|
778
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
779
|
+
<DxcSelect
|
|
780
|
+
label="Label"
|
|
781
|
+
options={group_options}
|
|
782
|
+
defaultValue={["0", "2"]}
|
|
783
|
+
multiple
|
|
784
|
+
placeholder="Choose an option"
|
|
785
|
+
/>
|
|
786
|
+
</HalstackProvider>
|
|
474
787
|
</ExampleContainer>
|
|
475
788
|
);
|
|
789
|
+
|
|
476
790
|
const MultipleSearchable = () => (
|
|
477
791
|
<ExampleContainer expanded>
|
|
478
792
|
<Title title="Searchable multiple select with value" theme="light" level={4} />
|
|
@@ -486,108 +800,107 @@ const MultipleSearchable = () => (
|
|
|
486
800
|
/>
|
|
487
801
|
</ExampleContainer>
|
|
488
802
|
);
|
|
489
|
-
|
|
490
|
-
|
|
803
|
+
|
|
804
|
+
const MultipleSearchableOpinionated = () => (
|
|
805
|
+
<ExampleContainer expanded>
|
|
806
|
+
<Title title="Searchable multiple select with value" theme="light" level={4} />
|
|
807
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
808
|
+
<DxcSelect
|
|
809
|
+
label="Select Label"
|
|
810
|
+
searchable
|
|
811
|
+
multiple
|
|
812
|
+
defaultValue={["1", "4"]}
|
|
813
|
+
options={single_options}
|
|
814
|
+
placeholder="Choose an option"
|
|
815
|
+
/>
|
|
816
|
+
</HalstackProvider>
|
|
817
|
+
</ExampleContainer>
|
|
818
|
+
);
|
|
819
|
+
|
|
820
|
+
export const Chromatic = Select.bind({});
|
|
821
|
+
Chromatic.play = async ({ canvasElement }) => {
|
|
822
|
+
const canvas = within(canvasElement);
|
|
823
|
+
await userEvent.click(canvas.getAllByRole("combobox")[24]);
|
|
824
|
+
};
|
|
825
|
+
|
|
826
|
+
export const ListboxStates = SelectListbox.bind({});
|
|
827
|
+
ListboxStates.play = async ({ canvasElement }) => {
|
|
491
828
|
const canvas = within(canvasElement);
|
|
492
829
|
const select = canvas.getByRole("combobox");
|
|
493
830
|
await userEvent.click(select);
|
|
494
831
|
};
|
|
832
|
+
|
|
495
833
|
export const Searchable = SearchableSelect.bind({});
|
|
496
834
|
Searchable.play = async ({ canvasElement }) => {
|
|
497
835
|
const canvas = within(canvasElement);
|
|
498
|
-
await userEvent.
|
|
499
|
-
await waitFor(async () => {
|
|
500
|
-
userEvent.type(canvas.getByRole("combobox"), "r");
|
|
501
|
-
});
|
|
836
|
+
await userEvent.type(canvas.getByRole("combobox"), "r");
|
|
502
837
|
};
|
|
503
|
-
|
|
504
|
-
|
|
838
|
+
|
|
839
|
+
export const SearchableOpinionated = SearchableSelectOpinionated.bind({});
|
|
840
|
+
SearchableOpinionated.play = async ({ canvasElement }) => {
|
|
505
841
|
const canvas = within(canvasElement);
|
|
506
|
-
await userEvent.
|
|
842
|
+
await userEvent.type(canvas.getByRole("combobox"), "r");
|
|
507
843
|
};
|
|
508
844
|
|
|
509
|
-
export const
|
|
510
|
-
|
|
845
|
+
export const SearchableWithValue = SearchValue.bind({});
|
|
846
|
+
SearchableWithValue.play = async ({ canvasElement }) => {
|
|
511
847
|
const canvas = within(canvasElement);
|
|
512
|
-
await userEvent.click(canvas.
|
|
848
|
+
await userEvent.click(canvas.getByRole("combobox"));
|
|
513
849
|
};
|
|
514
850
|
|
|
515
|
-
export const
|
|
516
|
-
|
|
851
|
+
export const SearchableWithValueOpinionated = SearchValueOpinionated.bind({});
|
|
852
|
+
SearchableWithValueOpinionated.play = async ({ canvasElement }) => {
|
|
517
853
|
const canvas = within(canvasElement);
|
|
518
|
-
|
|
519
|
-
await userEvent.click(select);
|
|
854
|
+
await userEvent.click(canvas.getByRole("combobox"));
|
|
520
855
|
};
|
|
521
856
|
|
|
522
|
-
export const
|
|
523
|
-
|
|
857
|
+
export const MultipleSearchableWithValue = MultipleSearchable.bind({});
|
|
858
|
+
MultipleSearchableWithValue.play = async ({ canvasElement }) => {
|
|
524
859
|
const canvas = within(canvasElement);
|
|
525
860
|
await userEvent.click(canvas.getAllByRole("combobox")[0]);
|
|
526
861
|
};
|
|
527
862
|
|
|
528
|
-
export const
|
|
529
|
-
|
|
863
|
+
export const MultipleSearchableWithValueOpinionated = MultipleSearchableOpinionated.bind({});
|
|
864
|
+
MultipleSearchableWithValueOpinionated.play = async ({ canvasElement }) => {
|
|
530
865
|
const canvas = within(canvasElement);
|
|
531
|
-
|
|
532
|
-
await userEvent.click(select);
|
|
533
|
-
};
|
|
534
|
-
export const SelectWithIconsDisplayed = SelectWithIcons.bind({});
|
|
535
|
-
SelectWithIconsDisplayed.play = async ({ canvasElement }) => {
|
|
536
|
-
const canvas = within(canvasElement);
|
|
537
|
-
const select = canvas.getByRole("combobox");
|
|
538
|
-
await userEvent.click(select);
|
|
866
|
+
await userEvent.click(canvas.getAllByRole("combobox")[0]);
|
|
539
867
|
};
|
|
540
868
|
|
|
541
|
-
export const
|
|
542
|
-
|
|
543
|
-
const canvas = within(canvasElement);
|
|
544
|
-
const select = canvas.getByRole("combobox");
|
|
545
|
-
await userEvent.click(select);
|
|
546
|
-
};
|
|
547
|
-
export const SelectMultipleWithIconsDisplayed = SelectMultipleWithIcons.bind({});
|
|
548
|
-
SelectMultipleWithIconsDisplayed.play = async ({ canvasElement }) => {
|
|
869
|
+
export const GroupOptionsDisplayed = DefaultGroupedOptionsSelect.bind({});
|
|
870
|
+
GroupOptionsDisplayed.play = async ({ canvasElement }) => {
|
|
549
871
|
const canvas = within(canvasElement);
|
|
550
872
|
const select = canvas.getByRole("combobox");
|
|
551
873
|
await userEvent.click(select);
|
|
552
874
|
};
|
|
553
875
|
|
|
554
|
-
export const
|
|
555
|
-
|
|
876
|
+
export const GroupOptionsDisplayedOpinionated = DefaultGroupedOptionsSelectOpinionated.bind({});
|
|
877
|
+
GroupOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
|
|
556
878
|
const canvas = within(canvasElement);
|
|
557
879
|
const select = canvas.getByRole("combobox");
|
|
558
880
|
await userEvent.click(select);
|
|
559
881
|
};
|
|
560
882
|
|
|
561
|
-
export const
|
|
562
|
-
|
|
883
|
+
export const MultipleOptionsDisplayed = MultipleSelect.bind({});
|
|
884
|
+
MultipleOptionsDisplayed.play = async ({ canvasElement }) => {
|
|
563
885
|
const canvas = within(canvasElement);
|
|
564
|
-
|
|
565
|
-
await userEvent.click(select);
|
|
886
|
+
await userEvent.click(canvas.getAllByRole("combobox")[0]);
|
|
566
887
|
};
|
|
567
888
|
|
|
568
|
-
export const
|
|
569
|
-
|
|
889
|
+
export const MultipleOptionsDisplayedOpinionated = MultipleSelectOpinioated.bind({});
|
|
890
|
+
MultipleOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
|
|
570
891
|
const canvas = within(canvasElement);
|
|
571
|
-
|
|
572
|
-
await userEvent.click(select);
|
|
573
|
-
await waitFor(async () => {
|
|
574
|
-
fireEvent.keyDown(select, { key: "ArrowDown", code: "ArrowDown", keyCode: 40, charCode: 40 });
|
|
575
|
-
});
|
|
576
|
-
};
|
|
577
|
-
export const OptionActived = OnlyOneOptionActived.bind({});
|
|
578
|
-
OptionActived.play = async ({ canvasElement }) => {
|
|
579
|
-
const canvas = within(canvasElement);
|
|
580
|
-
const select = canvas.getByRole("combobox");
|
|
581
|
-
await userEvent.click(select);
|
|
892
|
+
await userEvent.click(canvas.getAllByRole("combobox")[0]);
|
|
582
893
|
};
|
|
583
|
-
|
|
584
|
-
|
|
894
|
+
|
|
895
|
+
export const MultipleGroupedOptionsDisplayed = MultipleGroupedOptionsSelect.bind({});
|
|
896
|
+
MultipleGroupedOptionsDisplayed.play = async ({ canvasElement }) => {
|
|
585
897
|
const canvas = within(canvasElement);
|
|
586
898
|
const select = canvas.getByRole("combobox");
|
|
587
899
|
await userEvent.click(select);
|
|
588
900
|
};
|
|
589
|
-
|
|
590
|
-
|
|
901
|
+
|
|
902
|
+
export const MultipleGroupedOptionsDisplayedOpinionated = MultipleGroupedOptionsSelectOpinionated.bind({});
|
|
903
|
+
MultipleGroupedOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
|
|
591
904
|
const canvas = within(canvasElement);
|
|
592
905
|
const select = canvas.getByRole("combobox");
|
|
593
906
|
await userEvent.click(select);
|