@dxc-technology/halstack-react 8.0.0 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BackgroundColorContext.d.ts +2 -2
- package/BackgroundColorContext.js +1 -1
- package/HalstackContext.d.ts +1329 -5
- package/HalstackContext.js +114 -73
- package/accordion/Accordion.js +13 -24
- package/accordion/Accordion.stories.tsx +102 -13
- package/accordion/Accordion.test.js +1 -1
- package/accordion/types.d.ts +3 -3
- package/accordion-group/AccordionGroup.js +2 -2
- package/accordion-group/AccordionGroup.test.js +1 -1
- package/accordion-group/types.d.ts +2 -2
- package/alert/Alert.js +3 -5
- package/alert/Alert.stories.tsx +28 -0
- package/alert/Alert.test.js +1 -1
- package/box/Box.js +3 -5
- package/box/Box.stories.tsx +15 -0
- package/box/Box.test.js +1 -1
- package/button/Button.js +13 -15
- package/button/Button.stories.tsx +150 -8
- package/button/Button.test.js +1 -1
- package/button/types.d.ts +3 -3
- package/card/Card.js +12 -13
- package/card/Card.stories.tsx +12 -13
- package/card/Card.test.js +1 -1
- package/checkbox/Checkbox.js +3 -3
- package/checkbox/Checkbox.stories.tsx +52 -0
- package/checkbox/Checkbox.test.js +1 -1
- package/checkbox/types.d.ts +2 -2
- package/chip/Chip.js +18 -26
- package/chip/Chip.stories.tsx +96 -9
- package/chip/Chip.test.js +3 -5
- package/common/utils.d.ts +1 -0
- package/common/utils.js +4 -4
- package/common/variables.d.ts +1625 -0
- package/common/variables.js +280 -288
- package/date-input/Calendar.d.ts +1 -1
- package/date-input/Calendar.js +43 -43
- package/date-input/DateInput.js +74 -32
- package/date-input/DateInput.stories.tsx +183 -30
- package/date-input/DateInput.test.js +120 -37
- package/date-input/DatePicker.js +38 -52
- package/date-input/Icons.d.ts +6 -0
- package/date-input/Icons.js +75 -0
- package/date-input/YearPicker.d.ts +1 -1
- package/date-input/YearPicker.js +23 -12
- package/date-input/types.d.ts +6 -8
- package/dialog/Dialog.js +61 -74
- package/dialog/Dialog.stories.tsx +211 -159
- package/dialog/Dialog.test.js +302 -3
- package/dialog/types.d.ts +2 -2
- package/dropdown/Dropdown.js +5 -8
- package/dropdown/Dropdown.stories.tsx +210 -84
- package/dropdown/Dropdown.test.js +3 -2
- package/dropdown/DropdownMenu.js +8 -18
- package/dropdown/DropdownMenuItem.js +4 -17
- package/dropdown/types.d.ts +3 -3
- package/file-input/FileInput.js +4 -8
- package/file-input/FileInput.stories.tsx +85 -2
- package/file-input/FileInput.test.js +1 -42
- package/file-input/FileItem.js +1 -0
- package/footer/Footer.js +6 -8
- package/footer/Footer.stories.tsx +91 -0
- package/footer/Footer.test.js +14 -26
- package/header/Header.d.ts +3 -2
- package/header/Header.js +21 -23
- package/header/Header.stories.tsx +149 -6
- package/header/Header.test.js +2 -2
- package/header/types.d.ts +2 -2
- package/heading/Heading.js +1 -1
- package/heading/Heading.test.js +1 -1
- package/layout/ApplicationLayout.d.ts +1 -1
- package/layout/ApplicationLayout.js +1 -1
- package/link/Link.js +2 -2
- package/link/Link.stories.tsx +60 -0
- package/link/Link.test.js +2 -4
- package/link/types.d.ts +2 -2
- package/main.d.ts +1 -1
- package/main.js +1 -1
- package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
- package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
- package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
- package/{tabs-nav → nav-tabs}/Tab.js +37 -17
- package/number-input/NumberInput.test.js +1 -1
- package/package.json +2 -2
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +16 -28
- package/paginator/Paginator.js +6 -14
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +44 -47
- package/paragraph/Paragraph.d.ts +3 -4
- package/paragraph/Paragraph.js +5 -5
- package/password-input/PasswordInput.test.js +1 -1
- package/progress-bar/ProgressBar.d.ts +2 -2
- package/progress-bar/ProgressBar.js +5 -5
- package/progress-bar/ProgressBar.stories.jsx +35 -2
- package/progress-bar/ProgressBar.test.js +1 -1
- package/progress-bar/types.d.ts +4 -3
- package/quick-nav/QuickNav.stories.tsx +14 -0
- package/radio-group/RadioGroup.stories.tsx +131 -18
- package/radio-group/RadioGroup.test.js +1 -1
- package/resultsetTable/ResultsetTable.js +2 -2
- package/resultsetTable/ResultsetTable.test.js +18 -23
- package/resultsetTable/types.d.ts +3 -3
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +5 -34
- package/select/Option.js +11 -24
- package/select/Select.js +56 -35
- package/select/Select.stories.tsx +492 -145
- package/select/Select.test.js +76 -81
- package/select/types.d.ts +2 -2
- package/sidenav/Sidenav.js +9 -11
- package/sidenav/Sidenav.stories.tsx +148 -46
- package/slider/Slider.js +6 -7
- package/slider/Slider.stories.tsx +57 -0
- package/slider/Slider.test.js +1 -1
- package/slider/types.d.ts +2 -2
- package/spinner/Spinner.js +17 -23
- package/spinner/Spinner.stories.jsx +53 -27
- package/spinner/Spinner.test.js +1 -1
- package/switch/Switch.js +3 -3
- package/switch/Switch.stories.tsx +33 -0
- package/switch/Switch.test.js +1 -1
- package/switch/types.d.ts +2 -2
- package/table/Table.js +2 -2
- package/table/Table.stories.jsx +80 -1
- package/table/Table.test.js +1 -1
- package/tabs/Tab.js +12 -14
- package/tabs/Tabs.js +4 -6
- package/tabs/Tabs.stories.tsx +45 -5
- package/tabs/Tabs.test.js +4 -5
- package/tabs/types.d.ts +2 -2
- package/tag/Tag.js +7 -9
- package/tag/Tag.stories.tsx +14 -1
- package/tag/Tag.test.js +1 -1
- package/text-input/Suggestion.js +34 -7
- package/text-input/TextInput.js +10 -14
- package/text-input/TextInput.stories.tsx +92 -4
- package/text-input/TextInput.test.js +125 -26
- package/textarea/Textarea.js +3 -3
- package/textarea/Textarea.stories.jsx +60 -1
- package/textarea/Textarea.test.js +1 -1
- package/toggle-group/ToggleGroup.js +7 -4
- package/toggle-group/ToggleGroup.stories.tsx +42 -0
- package/toggle-group/ToggleGroup.test.js +1 -1
- package/toggle-group/types.d.ts +1 -1
- package/typography/Typography.d.ts +2 -2
- package/typography/Typography.js +14 -113
- package/typography/Typography.stories.tsx +1 -1
- package/useTheme.d.ts +1234 -1
- package/useTheme.js +1 -1
- package/useTranslatedLabels.d.ts +84 -1
- package/utils/BaseTypography.d.ts +21 -0
- package/utils/BaseTypography.js +108 -0
- package/utils/FocusLock.d.ts +13 -0
- package/utils/FocusLock.js +139 -0
- package/wizard/Wizard.js +2 -2
- package/wizard/Wizard.stories.tsx +20 -0
- package/wizard/Wizard.test.js +1 -1
- package/wizard/types.d.ts +5 -6
- /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
- /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
- /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
- /package/{tabs-nav → nav-tabs}/types.js +0 -0
|
@@ -3,6 +3,7 @@ import DxcSidenav from "./Sidenav";
|
|
|
3
3
|
import Title from "../../.storybook/components/Title";
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
5
|
import { userEvent, within } from "@storybook/testing-library";
|
|
6
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
6
7
|
|
|
7
8
|
export default {
|
|
8
9
|
title: "Sidenav",
|
|
@@ -10,9 +11,26 @@ export default {
|
|
|
10
11
|
};
|
|
11
12
|
|
|
12
13
|
const iconSVG = (
|
|
13
|
-
<svg
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
<svg
|
|
15
|
+
version="1.1"
|
|
16
|
+
id="Capa_1"
|
|
17
|
+
x="0px"
|
|
18
|
+
y="0px"
|
|
19
|
+
width="438.536px"
|
|
20
|
+
height="438.536px"
|
|
21
|
+
viewBox="0 0 438.536 438.536"
|
|
22
|
+
fill="currentColor"
|
|
23
|
+
>
|
|
24
|
+
<g>
|
|
25
|
+
<path
|
|
26
|
+
d="M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123
|
|
27
|
+
C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126
|
|
28
|
+
h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
|
|
29
|
+
C438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402
|
|
30
|
+
c0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401
|
|
31
|
+
c-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
|
|
32
|
+
/>
|
|
33
|
+
</g>
|
|
16
34
|
</svg>
|
|
17
35
|
);
|
|
18
36
|
|
|
@@ -20,11 +38,17 @@ const TitleComponent = () => {
|
|
|
20
38
|
return <DxcSidenav.Title>Dxc technology</DxcSidenav.Title>;
|
|
21
39
|
};
|
|
22
40
|
|
|
41
|
+
const opinionatedTheme = {
|
|
42
|
+
sidenav: {
|
|
43
|
+
baseColor: "#f2f2f2",
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
|
|
23
47
|
export const Chromatic = () => (
|
|
24
48
|
<>
|
|
25
49
|
<ExampleContainer>
|
|
26
50
|
<Title title="Default sidenav" theme="light" level={4} />
|
|
27
|
-
<DxcSidenav title={<
|
|
51
|
+
<DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
|
|
28
52
|
<DxcSidenav.Section>
|
|
29
53
|
<p>
|
|
30
54
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
|
|
@@ -41,12 +65,18 @@ export const Chromatic = () => (
|
|
|
41
65
|
</DxcSidenav.Group>
|
|
42
66
|
</DxcSidenav.Section>
|
|
43
67
|
<DxcSidenav.Section>
|
|
44
|
-
<DxcSidenav.Group
|
|
68
|
+
<DxcSidenav.Group
|
|
69
|
+
collapsable={true}
|
|
70
|
+
title="Section Group"
|
|
71
|
+
icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png"
|
|
72
|
+
>
|
|
45
73
|
<DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
|
|
46
74
|
<DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
|
|
47
75
|
</DxcSidenav.Group>
|
|
48
|
-
<DxcSidenav.Link icon=
|
|
49
|
-
|
|
76
|
+
<DxcSidenav.Link icon="https://upload.wikimedia.org/wikipedia/commons/7/73/Flat_tick_icon.svg" newWindow>
|
|
77
|
+
Single Link
|
|
78
|
+
</DxcSidenav.Link>
|
|
79
|
+
<DxcSidenav.Link newWindow>Single Link</DxcSidenav.Link>
|
|
50
80
|
<DxcSidenav.Group collapsable={false} title="Section Group">
|
|
51
81
|
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
52
82
|
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
@@ -55,51 +85,76 @@ export const Chromatic = () => (
|
|
|
55
85
|
</DxcSidenav.Section>
|
|
56
86
|
</DxcSidenav>
|
|
57
87
|
</ExampleContainer>
|
|
88
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
89
|
+
<Title title="Focused options sidenav" theme="light" level={4} />
|
|
90
|
+
<DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
|
|
91
|
+
<DxcSidenav.Section>
|
|
92
|
+
<p>
|
|
93
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
|
|
94
|
+
vitae lacinia libero.
|
|
95
|
+
</p>
|
|
96
|
+
</DxcSidenav.Section>
|
|
97
|
+
<DxcSidenav.Section>
|
|
98
|
+
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
99
|
+
<DxcSidenav.Group collapsable={true} title="Collapsable Group">
|
|
100
|
+
<DxcSidenav.Link icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png">Group Link</DxcSidenav.Link>
|
|
101
|
+
</DxcSidenav.Group>
|
|
102
|
+
</DxcSidenav.Section>
|
|
103
|
+
<DxcSidenav.Section>
|
|
104
|
+
<DxcSidenav.Group collapsable={true} title="Collapsable Group">
|
|
105
|
+
<DxcSidenav.Link selected icon={iconSVG}>
|
|
106
|
+
Group Link
|
|
107
|
+
</DxcSidenav.Link>
|
|
108
|
+
</DxcSidenav.Group>
|
|
109
|
+
<DxcSidenav.Group collapsable={false} title="Section Group">
|
|
110
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
111
|
+
</DxcSidenav.Group>
|
|
112
|
+
</DxcSidenav.Section>
|
|
113
|
+
</DxcSidenav>
|
|
114
|
+
</ExampleContainer>
|
|
115
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
116
|
+
<ExampleContainer>
|
|
117
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
118
|
+
<DxcSidenav title={<TitleComponent />}>
|
|
119
|
+
<DxcSidenav.Section>
|
|
120
|
+
<p>
|
|
121
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
|
|
122
|
+
vitae lacinia libero.
|
|
123
|
+
</p>
|
|
124
|
+
</DxcSidenav.Section>
|
|
125
|
+
<DxcSidenav.Section>
|
|
126
|
+
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
127
|
+
<DxcSidenav.Group collapsable={false} title="Single Group" icon={iconSVG}>
|
|
128
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
129
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
130
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
131
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
132
|
+
</DxcSidenav.Group>
|
|
133
|
+
</DxcSidenav.Section>
|
|
134
|
+
<DxcSidenav.Section>
|
|
135
|
+
<DxcSidenav.Group collapsable={true} title="Section Group" icon={iconSVG}>
|
|
136
|
+
<DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
|
|
137
|
+
<DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
|
|
138
|
+
</DxcSidenav.Group>
|
|
139
|
+
<DxcSidenav.Link icon={iconSVG}>Single Link</DxcSidenav.Link>
|
|
140
|
+
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
141
|
+
<DxcSidenav.Group collapsable={false} title="Section Group">
|
|
142
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
143
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
144
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
145
|
+
</DxcSidenav.Group>
|
|
146
|
+
</DxcSidenav.Section>
|
|
147
|
+
</DxcSidenav>
|
|
148
|
+
</HalstackProvider>
|
|
149
|
+
</ExampleContainer>
|
|
58
150
|
</>
|
|
59
151
|
);
|
|
60
152
|
|
|
61
|
-
export const FocusedSidenav = () => (
|
|
62
|
-
<ExampleContainer pseudoState="pseudo-focus">
|
|
63
|
-
<Title title="Default sidenav" theme="light" level={4} />
|
|
64
|
-
<DxcSidenav title={<TitleComponent />}>
|
|
65
|
-
<DxcSidenav.Section>
|
|
66
|
-
<p>
|
|
67
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse vitae
|
|
68
|
-
lacinia libero.
|
|
69
|
-
</p>
|
|
70
|
-
</DxcSidenav.Section>
|
|
71
|
-
<DxcSidenav.Section>
|
|
72
|
-
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
73
|
-
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
74
|
-
<DxcSidenav.Group collapsable={true} title="Collapsable Group">
|
|
75
|
-
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
76
|
-
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
77
|
-
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
78
|
-
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
79
|
-
</DxcSidenav.Group>
|
|
80
|
-
</DxcSidenav.Section>
|
|
81
|
-
<DxcSidenav.Section>
|
|
82
|
-
<DxcSidenav.Group collapsable={true} title="Collapsable Group">
|
|
83
|
-
<DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
|
|
84
|
-
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
85
|
-
</DxcSidenav.Group>
|
|
86
|
-
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
87
|
-
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
88
|
-
<DxcSidenav.Group collapsable={false} title="Section Group">
|
|
89
|
-
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
90
|
-
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
91
|
-
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
92
|
-
</DxcSidenav.Group>
|
|
93
|
-
</DxcSidenav.Section>
|
|
94
|
-
</DxcSidenav>
|
|
95
|
-
</ExampleContainer>
|
|
96
|
-
);
|
|
97
|
-
|
|
98
153
|
const CollapsedGroup = () => (
|
|
99
154
|
<>
|
|
100
155
|
<ExampleContainer>
|
|
101
156
|
<Title title="Default sidenav" theme="light" level={4} />
|
|
102
|
-
<DxcSidenav title={<
|
|
157
|
+
<DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
|
|
103
158
|
<DxcSidenav.Section>
|
|
104
159
|
<DxcSidenav.Group collapsable={true} title="Collapsable Group" icon={iconSVG}>
|
|
105
160
|
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
@@ -127,7 +182,7 @@ const CollapsedGroup = () => (
|
|
|
127
182
|
const HoverSidenav = () => (
|
|
128
183
|
<ExampleContainer pseudoState="pseudo-hover">
|
|
129
184
|
<Title title="Default sidenav" theme="light" level={4} />
|
|
130
|
-
<DxcSidenav title={<
|
|
185
|
+
<DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
|
|
131
186
|
<DxcSidenav.Section>
|
|
132
187
|
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
133
188
|
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
@@ -161,6 +216,44 @@ const HoverSidenav = () => (
|
|
|
161
216
|
</ExampleContainer>
|
|
162
217
|
);
|
|
163
218
|
|
|
219
|
+
const HoverSidenavOpinionated = () => (
|
|
220
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
221
|
+
<Title title="Default sidenav" theme="light" level={4} />
|
|
222
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
223
|
+
<DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
|
|
224
|
+
<DxcSidenav.Section>
|
|
225
|
+
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
226
|
+
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
227
|
+
<DxcSidenav.Group collapsable={true} title="Collapsable Group">
|
|
228
|
+
<DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
|
|
229
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
230
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
231
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
232
|
+
</DxcSidenav.Group>
|
|
233
|
+
</DxcSidenav.Section>
|
|
234
|
+
<DxcSidenav.Section>
|
|
235
|
+
<DxcSidenav.Group collapsable={true} title="Not Collapsed Group">
|
|
236
|
+
<DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
|
|
237
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
238
|
+
</DxcSidenav.Group>
|
|
239
|
+
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
240
|
+
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
241
|
+
<DxcSidenav.Group collapsable={true} title="Collapsable Group">
|
|
242
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
243
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
244
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
245
|
+
</DxcSidenav.Group>
|
|
246
|
+
<DxcSidenav.Group collapsable={true} title="Collapsable Group">
|
|
247
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
248
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
249
|
+
<DxcSidenav.Link>Group Link</DxcSidenav.Link>
|
|
250
|
+
</DxcSidenav.Group>
|
|
251
|
+
</DxcSidenav.Section>
|
|
252
|
+
</DxcSidenav>
|
|
253
|
+
</HalstackProvider>
|
|
254
|
+
</ExampleContainer>
|
|
255
|
+
);
|
|
256
|
+
|
|
164
257
|
export const CollapseGroup = CollapsedGroup.bind({});
|
|
165
258
|
CollapseGroup.play = async ({ canvasElement }) => {
|
|
166
259
|
const canvas = within(canvasElement);
|
|
@@ -178,3 +271,12 @@ CollapseHoverGroup.play = async ({ canvasElement }) => {
|
|
|
178
271
|
userEvent.click(group);
|
|
179
272
|
});
|
|
180
273
|
};
|
|
274
|
+
|
|
275
|
+
export const CollapseHoverGroupOpinionated = HoverSidenavOpinionated.bind({});
|
|
276
|
+
CollapseHoverGroupOpinionated.play = async ({ canvasElement }) => {
|
|
277
|
+
const canvas = within(canvasElement);
|
|
278
|
+
const collapsableGroups = canvas.getAllByText("Collapsable Group");
|
|
279
|
+
collapsableGroups.forEach((group) => {
|
|
280
|
+
userEvent.click(group);
|
|
281
|
+
});
|
|
282
|
+
};
|
package/slider/Slider.js
CHANGED
|
@@ -21,9 +21,9 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
|
21
21
|
|
|
22
22
|
var _TextInput = _interopRequireDefault(require("../text-input/TextInput"));
|
|
23
23
|
|
|
24
|
-
var _variables = require("../common/variables
|
|
24
|
+
var _variables = require("../common/variables");
|
|
25
25
|
|
|
26
|
-
var _utils = require("../common/utils
|
|
26
|
+
var _utils = require("../common/utils");
|
|
27
27
|
|
|
28
28
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
29
29
|
|
|
@@ -166,7 +166,6 @@ var DxcSlider = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
166
166
|
min: minValue,
|
|
167
167
|
max: maxValue,
|
|
168
168
|
step: step,
|
|
169
|
-
marks: marks,
|
|
170
169
|
disabled: disabled,
|
|
171
170
|
"aria-labelledby": labelId,
|
|
172
171
|
"aria-orientation": "horizontal",
|
|
@@ -252,7 +251,7 @@ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templat
|
|
|
252
251
|
return props.theme.helperTextLineHeight;
|
|
253
252
|
});
|
|
254
253
|
|
|
255
|
-
var SliderInput = _styledComponents["default"].input(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n min-width: 240px;\n height: ", ";\n display: inline-block;\n vertical-align: middle;\n -webkit-appearance: none;\n background-color: ", ";\n background-image: ", ";\n background-repeat: no-repeat;\n background-size: ", ";\n border-radius: 5px;\n
|
|
254
|
+
var SliderInput = _styledComponents["default"].input(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n min-width: 240px;\n height: ", ";\n display: inline-block;\n vertical-align: middle;\n -webkit-appearance: none;\n background-color: ", ";\n background-image: ", ";\n background-repeat: no-repeat;\n background-size: ", ";\n border-radius: 5px;\n cursor: ", ";\n &::-webkit-slider-runnable-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n margin: 0px -8px;\n }\n\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n ", "\n }\n &:hover {\n ", "\n }\n }\n &::-moz-range-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n }\n &::-moz-range-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n background: ", ";\n transform: scale(1.16667);\n }\n &:hover {\n ", "\n }\n }\n &:focus {\n outline: none;\n &::-webkit-slider-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n &::-moz-range-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n }\n"])), function (props) {
|
|
256
255
|
return props.theme.trackLineThickness;
|
|
257
256
|
}, function (props) {
|
|
258
257
|
return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledTotalLineColorOnDark + "61" : props.theme.disabledTotalLineColor + "61" : props.backgroundType === "dark" ? props.theme.totalLineColorOnDark + "61" : props.theme.totalLineColor;
|
|
@@ -317,13 +316,13 @@ var MaxLabelContainer = (0, _styledComponents["default"])(LimitLabelContainer)(_
|
|
|
317
316
|
return props.step === 1 ? props.theme.ceilLabelMarginLeft : "1.25rem";
|
|
318
317
|
});
|
|
319
318
|
|
|
320
|
-
var SliderInputContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n width: 100%;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: -2px;\n padding-top: 1px;\n"])));
|
|
319
|
+
var SliderInputContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n width: 100%;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: -2px;\n padding-top: 1px;\n z-index: 0;\n"])));
|
|
321
320
|
|
|
322
321
|
var MarksContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n position: absolute;\n pointer-events: none;\n height: 100%;\n display: flex;\n align-items: center;\n"])), function (props) {
|
|
323
322
|
return props.isFirefox ? getFireFoxStyles() : getChromeStyles();
|
|
324
323
|
});
|
|
325
324
|
|
|
326
|
-
var TickMark = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n background: ", ";\n height: ", ";\n width: ", ";\n border-radius: 18px;\n left: ", ";\n ", ";\n"])), function (props) {
|
|
325
|
+
var TickMark = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n background: ", ";\n height: ", ";\n width: ", ";\n border-radius: 18px;\n left: ", ";\n z-index: ", ";\n"])), function (props) {
|
|
327
326
|
return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledTickBackgroundColorOnDark : props.theme.disabledTickBackgroundColor : props.backgroundType === "dark" ? props.theme.tickBackgroundColorOnDark : props.theme.tickBackgroundColor;
|
|
328
327
|
}, function (props) {
|
|
329
328
|
return props.theme.tickHeight;
|
|
@@ -332,7 +331,7 @@ var TickMark = _styledComponents["default"].span(_templateObject11 || (_template
|
|
|
332
331
|
}, function (props) {
|
|
333
332
|
return "calc(".concat(props.stepPosition, " * 100%)");
|
|
334
333
|
}, function (props) {
|
|
335
|
-
return
|
|
334
|
+
return "".concat(props.stepPosition <= props.stepValue ? "-1" : "0");
|
|
336
335
|
});
|
|
337
336
|
|
|
338
337
|
var StyledTextInput = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n max-width: 70px;\n"])), function (props) {
|
|
@@ -4,6 +4,7 @@ import { BackgroundColorProvider } from "../BackgroundColorContext";
|
|
|
4
4
|
import Title from "../../.storybook/components/Title";
|
|
5
5
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
6
6
|
import DarkContainer from "../../.storybook/components/DarkSection";
|
|
7
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
7
8
|
|
|
8
9
|
export default {
|
|
9
10
|
title: "Slider",
|
|
@@ -12,6 +13,14 @@ export default {
|
|
|
12
13
|
|
|
13
14
|
const labelFormat = (value) => `${value}E100000000000000000000000`;
|
|
14
15
|
|
|
16
|
+
const opinionatedTheme = {
|
|
17
|
+
slider: {
|
|
18
|
+
baseColor: "#0067b3",
|
|
19
|
+
fontColor: "#000000",
|
|
20
|
+
totalLineColor: "#e6e6e6",
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
|
|
15
24
|
export const Chromatic = () => (
|
|
16
25
|
<>
|
|
17
26
|
<Title title="States" theme="light" level={2} />
|
|
@@ -179,5 +188,53 @@ export const Chromatic = () => (
|
|
|
179
188
|
size="large"
|
|
180
189
|
/>
|
|
181
190
|
</ExampleContainer>
|
|
191
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
192
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
193
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
194
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
195
|
+
<DxcSlider label="Slider" helperText="Help message" showLimitsValues />
|
|
196
|
+
</HalstackProvider>
|
|
197
|
+
</ExampleContainer>
|
|
198
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
199
|
+
<Title title="Active" theme="light" level={4} />
|
|
200
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
201
|
+
<DxcSlider label="Slider" helperText="Help message" showLimitsValues />
|
|
202
|
+
</HalstackProvider>
|
|
203
|
+
</ExampleContainer>
|
|
204
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
205
|
+
<Title title="Focused" theme="light" level={4} />
|
|
206
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
207
|
+
<DxcSlider label="Slider" helperText="Help message" showLimitsValues />
|
|
208
|
+
</HalstackProvider>
|
|
209
|
+
</ExampleContainer>
|
|
210
|
+
<ExampleContainer>
|
|
211
|
+
<Title title="Disabled discrete slider with input" theme="light" level={4} />{" "}
|
|
212
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
213
|
+
<DxcSlider
|
|
214
|
+
label="Slider"
|
|
215
|
+
helperText="Help message"
|
|
216
|
+
disabled
|
|
217
|
+
defaultValue={40}
|
|
218
|
+
minValue={0}
|
|
219
|
+
maxValue={50}
|
|
220
|
+
showLimitsValues
|
|
221
|
+
showInput
|
|
222
|
+
marks
|
|
223
|
+
step={10}
|
|
224
|
+
/>
|
|
225
|
+
</HalstackProvider>
|
|
226
|
+
</ExampleContainer>
|
|
227
|
+
<ExampleContainer>
|
|
228
|
+
<Title title="Continuous slider" theme="light" level={4} />
|
|
229
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
230
|
+
<DxcSlider defaultValue={65} label="Slider" helperText="Help message" showLimitsValues />
|
|
231
|
+
</HalstackProvider>
|
|
232
|
+
</ExampleContainer>
|
|
233
|
+
<ExampleContainer>
|
|
234
|
+
<Title title="Discrete slider" theme="light" level={4} />
|
|
235
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
236
|
+
<DxcSlider defaultValue={20} label="Slider" helperText="Help message" showLimitsValues marks step={5} />
|
|
237
|
+
</HalstackProvider>
|
|
238
|
+
</ExampleContainer>
|
|
182
239
|
</>
|
|
183
240
|
);
|
package/slider/Slider.test.js
CHANGED
|
@@ -8,7 +8,7 @@ var _react2 = require("@testing-library/react");
|
|
|
8
8
|
|
|
9
9
|
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
10
10
|
|
|
11
|
-
var _Slider = _interopRequireDefault(require("./Slider"));
|
|
11
|
+
var _Slider = _interopRequireDefault(require("./Slider.tsx"));
|
|
12
12
|
|
|
13
13
|
describe("Slider component tests", function () {
|
|
14
14
|
test("Slider renders with correct text and label id", function () {
|
package/slider/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
|
|
2
|
+
declare type Margin = {
|
|
3
3
|
top?: Space;
|
|
4
4
|
bottom?: Space;
|
|
5
5
|
left?: Space;
|
package/spinner/Spinner.js
CHANGED
|
@@ -17,7 +17,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
17
17
|
|
|
18
18
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
19
19
|
|
|
20
|
-
var _variables = require("../common/variables
|
|
20
|
+
var _variables = require("../common/variables");
|
|
21
21
|
|
|
22
22
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
23
23
|
|
|
@@ -46,11 +46,8 @@ var DxcSpinner = function DxcSpinner(_ref) {
|
|
|
46
46
|
margin: margin,
|
|
47
47
|
mode: mode
|
|
48
48
|
}, /*#__PURE__*/_react["default"].createElement(SpinnerContainer, {
|
|
49
|
-
backgroundType: backgroundType,
|
|
50
|
-
mode: mode
|
|
51
|
-
}, mode === "overlay" && /*#__PURE__*/_react["default"].createElement(BackOverlay, null), /*#__PURE__*/_react["default"].createElement(BackgroundSpinner, {
|
|
52
49
|
mode: mode
|
|
53
|
-
}, mode !== "small" && /*#__PURE__*/_react["default"].createElement(SVGBackground, {
|
|
50
|
+
}, mode === "overlay" && /*#__PURE__*/_react["default"].createElement(BackOverlay, null), /*#__PURE__*/_react["default"].createElement(BackgroundSpinner, null, mode !== "small" && /*#__PURE__*/_react["default"].createElement(SVGBackground, {
|
|
54
51
|
viewBox: "0 0 140 140"
|
|
55
52
|
}, /*#__PURE__*/_react["default"].createElement(CircleBackground, {
|
|
56
53
|
cx: "70",
|
|
@@ -65,8 +62,7 @@ var DxcSpinner = function DxcSpinner(_ref) {
|
|
|
65
62
|
r: "6",
|
|
66
63
|
mode: mode
|
|
67
64
|
}))), value >= 0 && value <= 100 ? /*#__PURE__*/_react["default"].createElement(Spinner, {
|
|
68
|
-
role: "progressbar"
|
|
69
|
-
mode: mode
|
|
65
|
+
role: "progressbar"
|
|
70
66
|
}, mode !== "small" && /*#__PURE__*/_react["default"].createElement(SVGSpinner, {
|
|
71
67
|
viewBox: "0 0 140 140",
|
|
72
68
|
isDeterminated: true
|
|
@@ -90,8 +86,7 @@ var DxcSpinner = function DxcSpinner(_ref) {
|
|
|
90
86
|
isDeterminated: true,
|
|
91
87
|
value: value
|
|
92
88
|
}))) : /*#__PURE__*/_react["default"].createElement(Spinner, {
|
|
93
|
-
role: "progressbar"
|
|
94
|
-
mode: mode
|
|
89
|
+
role: "progressbar"
|
|
95
90
|
}, mode !== "small" && /*#__PURE__*/_react["default"].createElement(SVGSpinner, {
|
|
96
91
|
viewBox: "0 0 140 140",
|
|
97
92
|
isDeterminated: false
|
|
@@ -101,7 +96,8 @@ var DxcSpinner = function DxcSpinner(_ref) {
|
|
|
101
96
|
r: "65",
|
|
102
97
|
backgroundType: backgroundType,
|
|
103
98
|
mode: mode,
|
|
104
|
-
isDeterminated: false
|
|
99
|
+
isDeterminated: false,
|
|
100
|
+
value: value
|
|
105
101
|
})), mode === "small" && /*#__PURE__*/_react["default"].createElement(SVGSpinner, {
|
|
106
102
|
viewBox: "0 0 16 16",
|
|
107
103
|
isDeterminated: false
|
|
@@ -111,26 +107,24 @@ var DxcSpinner = function DxcSpinner(_ref) {
|
|
|
111
107
|
r: "6",
|
|
112
108
|
backgroundType: backgroundType,
|
|
113
109
|
mode: mode,
|
|
114
|
-
isDeterminated: false
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
value: value,
|
|
118
|
-
showValue: showValue
|
|
119
|
-
}, /*#__PURE__*/_react["default"].createElement(SpinnerLabel, {
|
|
110
|
+
isDeterminated: false,
|
|
111
|
+
value: value
|
|
112
|
+
}))), mode !== "small" && /*#__PURE__*/_react["default"].createElement(LabelsContainer, null, /*#__PURE__*/_react["default"].createElement(SpinnerLabel, {
|
|
120
113
|
backgroundType: backgroundType,
|
|
121
114
|
mode: mode
|
|
122
115
|
}, label), (value || value === 0) && showValue && /*#__PURE__*/_react["default"].createElement(SpinnerProgress, {
|
|
116
|
+
value: value,
|
|
123
117
|
backgroundType: backgroundType,
|
|
124
118
|
mode: mode,
|
|
125
119
|
showValue: showValue
|
|
126
120
|
}, value, "%")))));
|
|
127
121
|
};
|
|
128
122
|
|
|
129
|
-
var determinatedValue = function determinatedValue(
|
|
123
|
+
var determinatedValue = function determinatedValue(value, strokeDashArray) {
|
|
130
124
|
var val = 0;
|
|
131
125
|
|
|
132
|
-
if (
|
|
133
|
-
val = strokeDashArray * (1 -
|
|
126
|
+
if (value >= 0 && value <= 100) {
|
|
127
|
+
val = strokeDashArray * (1 - value / 100);
|
|
134
128
|
}
|
|
135
129
|
|
|
136
130
|
return val;
|
|
@@ -178,7 +172,7 @@ var BackOverlay = _styledComponents["default"].div(_templateObject3 || (_templat
|
|
|
178
172
|
return "".concat(props.theme.overlayOpacity);
|
|
179
173
|
});
|
|
180
174
|
|
|
181
|
-
var BackgroundSpinner = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: absolute;\n
|
|
175
|
+
var BackgroundSpinner = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: absolute;\n"])));
|
|
182
176
|
|
|
183
177
|
var SVGBackground = _styledComponents["default"].svg(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n"])));
|
|
184
178
|
|
|
@@ -190,7 +184,7 @@ var CircleBackground = _styledComponents["default"].circle(_templateObject6 || (
|
|
|
190
184
|
return props.mode !== "small" ? "8.5px" : "2px";
|
|
191
185
|
});
|
|
192
186
|
|
|
193
|
-
var Spinner = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: relative;\n
|
|
187
|
+
var Spinner = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: relative;\n"])));
|
|
194
188
|
|
|
195
189
|
var SVGSpinner = _styledComponents["default"].svg(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n transform: rotate(-90deg);\n top: 0;\n left: 0;\n transform-origin: center;\n overflow: visible;\n animation: ", ";\n"])), function (props) {
|
|
196
190
|
return !props.isDeterminated ? "1.4s linear infinite both spinner-svg" : "";
|
|
@@ -207,7 +201,7 @@ var CircleSpinner = _styledComponents["default"].circle(_templateObject9 || (_te
|
|
|
207
201
|
}, function (props) {
|
|
208
202
|
return props.mode !== "small" ? "8.5px" : "2px";
|
|
209
203
|
}, function (props) {
|
|
210
|
-
return props.isDeterminated ? props.mode !== "small" ? determinatedValue(props, 409) : determinatedValue(props, 38) : "";
|
|
204
|
+
return props.isDeterminated ? props.mode !== "small" ? determinatedValue(props.value, 409) : determinatedValue(props.value, 38) : "";
|
|
211
205
|
});
|
|
212
206
|
|
|
213
207
|
var LabelsContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: block;\n margin: 0 auto;\n position: absolute;\n text-align: center;\n width: 110px;\n"])));
|
|
@@ -229,7 +223,7 @@ var SpinnerLabel = _styledComponents["default"].p(_templateObject11 || (_templat
|
|
|
229
223
|
});
|
|
230
224
|
|
|
231
225
|
var SpinnerProgress = _styledComponents["default"].p(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n margin: 0;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: ", ";\n font-family: ", ";\n font-weight: ", ";\n font-size: ", ";\n font-style: ", ";\n color: ", ";\n text-align: ", ";\n letter-spacing: ", ";\n"])), function (props) {
|
|
232
|
-
return props.value
|
|
226
|
+
return props.value && props.showValue === true && "block" || "none";
|
|
233
227
|
}, function (props) {
|
|
234
228
|
return props.mode === "overlay" ? props.theme.overlayProgressValueFontFamily : props.theme.progressValueFontFamily;
|
|
235
229
|
}, function (props) {
|