@arbor-education/design-system.components 0.24.3 → 0.25.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/.gather/instructions/changesets.md +12 -0
- package/.gather/instructions/read-contributing.md +14 -0
- package/.storybook/DocsTemplate.tsx +3 -1
- package/.storybook/preview.ts +6 -2
- package/CHANGELOG.md +12 -0
- package/CONTRIBUTING.md +20 -0
- package/dist/components/avatarGroup/AvatarGroup.stories.d.ts.map +1 -1
- package/dist/components/avatarGroup/AvatarGroup.stories.js +4 -2
- package/dist/components/avatarGroup/AvatarGroup.stories.js.map +1 -1
- package/dist/components/card/Card.d.ts.map +1 -1
- package/dist/components/card/Card.js +2 -1
- package/dist/components/card/Card.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.js +10 -5
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/combobox/Combobox.stories.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.stories.js +2 -1
- package/dist/components/combobox/Combobox.stories.js.map +1 -1
- package/dist/components/combobox/Combobox.test.js +18 -9
- package/dist/components/combobox/Combobox.test.js.map +1 -1
- package/dist/components/combobox/ComboboxButtonTrigger.d.ts.map +1 -1
- package/dist/components/combobox/ComboboxButtonTrigger.js +3 -1
- package/dist/components/combobox/ComboboxButtonTrigger.js.map +1 -1
- package/dist/components/combobox/ComboboxListbox.d.ts.map +1 -1
- package/dist/components/combobox/ComboboxListbox.js +8 -4
- package/dist/components/combobox/ComboboxListbox.js.map +1 -1
- package/dist/components/combobox/buildListboxDisplayOptions.d.ts.map +1 -1
- package/dist/components/combobox/buildListboxDisplayOptions.js +4 -2
- package/dist/components/combobox/buildListboxDisplayOptions.js.map +1 -1
- package/dist/components/combobox/highlightLabel.d.ts.map +1 -1
- package/dist/components/combobox/highlightLabel.js +2 -1
- package/dist/components/combobox/highlightLabel.js.map +1 -1
- package/dist/components/combobox/useChipSelection.d.ts.map +1 -1
- package/dist/components/combobox/useChipSelection.js +2 -1
- package/dist/components/combobox/useChipSelection.js.map +1 -1
- package/dist/components/combobox/useComboboxListboxKeyboard.d.ts.map +1 -1
- package/dist/components/combobox/useComboboxListboxKeyboard.js +8 -4
- package/dist/components/combobox/useComboboxListboxKeyboard.js.map +1 -1
- package/dist/components/combobox/useComboboxPopoverBehavior.d.ts.map +1 -1
- package/dist/components/combobox/useComboboxPopoverBehavior.js +16 -8
- package/dist/components/combobox/useComboboxPopoverBehavior.js.map +1 -1
- package/dist/components/combobox/useComboboxState.d.ts.map +1 -1
- package/dist/components/combobox/useComboboxState.js +22 -11
- package/dist/components/combobox/useComboboxState.js.map +1 -1
- package/dist/components/datePicker/DatePickerCalendarHeader.d.ts.map +1 -1
- package/dist/components/datePicker/DatePickerCalendarHeader.js +4 -2
- package/dist/components/datePicker/DatePickerCalendarHeader.js.map +1 -1
- package/dist/components/dateTimePicker/DateTimePicker.d.ts.map +1 -1
- package/dist/components/dateTimePicker/DateTimePicker.js +2 -1
- package/dist/components/dateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/dateTimePicker/DateTimePicker.test.js.map +1 -1
- package/dist/components/dropdown/Dropdown.stories.d.ts.map +1 -1
- package/dist/components/dropdown/Dropdown.stories.js +10 -5
- package/dist/components/dropdown/Dropdown.stories.js.map +1 -1
- package/dist/components/filterBar/FilterBar.d.ts.map +1 -1
- package/dist/components/filterBar/FilterBar.js +4 -2
- package/dist/components/filterBar/FilterBar.js.map +1 -1
- package/dist/components/filterBar/FilterBar.stories.d.ts.map +1 -1
- package/dist/components/filterBar/FilterBar.stories.js +6 -3
- package/dist/components/filterBar/FilterBar.stories.js.map +1 -1
- package/dist/components/filterBar/FilterBar.test.js +6 -3
- package/dist/components/filterBar/FilterBar.test.js.map +1 -1
- package/dist/components/formField/fieldset/Fieldset.stories.d.ts.map +1 -1
- package/dist/components/formField/fieldset/Fieldset.stories.js.map +1 -1
- package/dist/components/formField/inputs/radio/RadioButtonGroup.d.ts +1 -1
- package/dist/components/formField/inputs/radio/RadioButtonGroup.d.ts.map +1 -1
- package/dist/components/formField/inputs/radio/RadioButtonGroup.js +1 -1
- package/dist/components/formField/inputs/radio/RadioButtonGroup.js.map +1 -1
- package/dist/components/formField/inputs/selectDropdown/SelectDropdown.d.ts.map +1 -1
- package/dist/components/formField/inputs/selectDropdown/SelectDropdown.js +2 -1
- package/dist/components/formField/inputs/selectDropdown/SelectDropdown.js.map +1 -1
- package/dist/components/formField/inputs/textArea/TextArea.stories.d.ts.map +1 -1
- package/dist/components/formField/inputs/textArea/TextArea.stories.js +10 -5
- package/dist/components/formField/inputs/textArea/TextArea.stories.js.map +1 -1
- package/dist/components/formField/inputs/time/TimeInput.js +3 -4
- package/dist/components/formField/inputs/time/TimeInput.js.map +1 -1
- package/dist/components/formField/inputs/time/TimeInput.test.js.map +1 -1
- package/dist/components/heading/Heading.stories.d.ts.map +1 -1
- package/dist/components/heading/Heading.stories.js.map +1 -1
- package/dist/components/modal/Modal.stories.d.ts.map +1 -1
- package/dist/components/modal/Modal.stories.js.map +1 -1
- package/dist/components/progress/Progress.stories.d.ts.map +1 -1
- package/dist/components/progress/Progress.stories.js +2 -1
- package/dist/components/progress/Progress.stories.js.map +1 -1
- package/dist/components/section/Section.d.ts +3 -6
- package/dist/components/section/Section.d.ts.map +1 -1
- package/dist/components/section/Section.js +2 -2
- package/dist/components/section/Section.js.map +1 -1
- package/dist/components/section/Section.stories.d.ts +1 -0
- package/dist/components/section/Section.stories.d.ts.map +1 -1
- package/dist/components/section/Section.stories.js +125 -52
- package/dist/components/section/Section.stories.js.map +1 -1
- package/dist/components/section/Section.test.js +13 -2
- package/dist/components/section/Section.test.js.map +1 -1
- package/dist/components/sidebarNav/SidebarNavItem.d.ts.map +1 -1
- package/dist/components/sidebarNav/SidebarNavItem.js +12 -11
- package/dist/components/sidebarNav/SidebarNavItem.js.map +1 -1
- package/dist/components/sidebarNav/SidebarNavRailItem.d.ts.map +1 -1
- package/dist/components/sidebarNav/SidebarNavRailItem.js +11 -10
- package/dist/components/sidebarNav/SidebarNavRailItem.js.map +1 -1
- package/dist/components/sidebarNav/useControllableBoolean.d.ts.map +1 -1
- package/dist/components/sidebarNav/useControllableBoolean.js +2 -1
- package/dist/components/sidebarNav/useControllableBoolean.js.map +1 -1
- package/dist/components/table/Table.d.ts.map +1 -1
- package/dist/components/table/Table.js +11 -1
- package/dist/components/table/Table.js.map +1 -1
- package/dist/components/table/Table.stories.d.ts.map +1 -1
- package/dist/components/table/Table.stories.js +6 -2
- package/dist/components/table/Table.stories.js.map +1 -1
- package/dist/components/table/Table.test.js +9 -3
- package/dist/components/table/Table.test.js.map +1 -1
- package/dist/components/table/cellRenderers/ComboboxCellRenderer.d.ts.map +1 -1
- package/dist/components/table/cellRenderers/ComboboxCellRenderer.js +16 -8
- package/dist/components/table/cellRenderers/ComboboxCellRenderer.js.map +1 -1
- package/dist/components/table/columnFilters/TimeFilter/TimeFilter.d.ts.map +1 -1
- package/dist/components/table/columnFilters/TimeFilter/TimeFilter.js +2 -1
- package/dist/components/table/columnFilters/TimeFilter/TimeFilter.js.map +1 -1
- package/dist/components/table/tableControls/HideColumnsDropdown.d.ts.map +1 -1
- package/dist/components/table/tableControls/HideColumnsDropdown.js +2 -1
- package/dist/components/table/tableControls/HideColumnsDropdown.js.map +1 -1
- package/dist/components/table/tableControls/TableControls.d.ts.map +1 -1
- package/dist/components/table/tableControls/TableControls.js +2 -1
- package/dist/components/table/tableControls/TableControls.js.map +1 -1
- package/dist/components/tag/Tag.test.js.map +1 -1
- package/dist/components/tagList/TagList.d.ts.map +1 -1
- package/dist/components/tagList/TagList.js +8 -4
- package/dist/components/tagList/TagList.js.map +1 -1
- package/dist/components/tagList/TagList.test.js +6 -3
- package/dist/components/tagList/TagList.test.js.map +1 -1
- package/dist/components/treeRow/TreeRowSection.d.ts.map +1 -1
- package/dist/components/treeRow/TreeRowSection.js +2 -1
- package/dist/components/treeRow/TreeRowSection.js.map +1 -1
- package/dist/components/userDropdown/UserDropdown.stories.d.ts.map +1 -1
- package/dist/components/userDropdown/UserDropdown.stories.js +66 -22
- package/dist/components/userDropdown/UserDropdown.stories.js.map +1 -1
- package/dist/components/userDropdown/internal/UserDropdownCollapsibleSection.d.ts.map +1 -1
- package/dist/components/userDropdown/internal/UserDropdownCollapsibleSection.js +3 -1
- package/dist/components/userDropdown/internal/UserDropdownCollapsibleSection.js.map +1 -1
- package/dist/utils/getTextContrast.d.ts.map +1 -1
- package/dist/utils/getTextContrast.js +4 -2
- package/dist/utils/getTextContrast.js.map +1 -1
- package/dist/utils/hooks/useElementWidth.d.ts.map +1 -1
- package/dist/utils/hooks/useElementWidth.js +2 -1
- package/dist/utils/hooks/useElementWidth.js.map +1 -1
- package/dist/utils/hooks/useMeasuredChildWidths.d.ts.map +1 -1
- package/dist/utils/hooks/useMeasuredChildWidths.js +4 -2
- package/dist/utils/hooks/useMeasuredChildWidths.js.map +1 -1
- package/dist/utils/hooks/useRovingFocus.d.ts.map +1 -1
- package/dist/utils/hooks/useRovingFocus.js +8 -4
- package/dist/utils/hooks/useRovingFocus.js.map +1 -1
- package/dist/utils/spacedWidths.d.ts.map +1 -1
- package/dist/utils/spacedWidths.js +6 -3
- package/dist/utils/spacedWidths.js.map +1 -1
- package/eslint.config.mts +32 -1
- package/package.json +1 -1
- package/src/components/avatarGroup/AvatarGroup.stories.tsx +6 -2
- package/src/components/card/Card.tsx +3 -1
- package/src/components/combobox/Combobox.stories.tsx +3 -1
- package/src/components/combobox/Combobox.test.tsx +39 -11
- package/src/components/combobox/Combobox.tsx +15 -5
- package/src/components/combobox/ComboboxButtonTrigger.tsx +3 -1
- package/src/components/combobox/ComboboxListbox.tsx +12 -4
- package/src/components/combobox/buildListboxDisplayOptions.ts +6 -2
- package/src/components/combobox/highlightLabel.tsx +2 -1
- package/src/components/combobox/useChipSelection.ts +3 -1
- package/src/components/combobox/useComboboxListboxKeyboard.ts +12 -4
- package/src/components/combobox/useComboboxPopoverBehavior.ts +24 -8
- package/src/components/combobox/useComboboxState.ts +28 -11
- package/src/components/datePicker/DatePickerCalendarHeader.tsx +6 -2
- package/src/components/dateTimePicker/DateTimePicker.test.tsx +2 -0
- package/src/components/dateTimePicker/DateTimePicker.tsx +3 -1
- package/src/components/dropdown/Dropdown.stories.tsx +19 -8
- package/src/components/filterBar/FilterBar.stories.tsx +9 -3
- package/src/components/filterBar/FilterBar.test.tsx +9 -3
- package/src/components/filterBar/FilterBar.tsx +6 -2
- package/src/components/formField/fieldset/Fieldset.stories.tsx +18 -3
- package/src/components/formField/inputs/radio/RadioButtonGroup.tsx +1 -1
- package/src/components/formField/inputs/selectDropdown/SelectDropdown.tsx +3 -1
- package/src/components/formField/inputs/textArea/TextArea.stories.tsx +10 -5
- package/src/components/formField/inputs/time/TimeInput.test.tsx +2 -0
- package/src/components/formField/inputs/time/TimeInput.tsx +4 -4
- package/src/components/heading/Heading.stories.tsx +12 -3
- package/src/components/modal/Modal.stories.tsx +15 -5
- package/src/components/progress/Progress.stories.tsx +3 -1
- package/src/components/section/Section.stories.tsx +198 -70
- package/src/components/section/Section.test.tsx +14 -8
- package/src/components/section/Section.tsx +7 -15
- package/src/components/sidebarNav/SidebarNavItem.tsx +27 -25
- package/src/components/sidebarNav/SidebarNavRailItem.tsx +34 -35
- package/src/components/sidebarNav/useControllableBoolean.ts +3 -1
- package/src/components/table/Table.stories.tsx +16 -12
- package/src/components/table/Table.test.tsx +10 -4
- package/src/components/table/Table.tsx +15 -5
- package/src/components/table/cellRenderers/ComboboxCellRenderer.tsx +19 -8
- package/src/components/table/columnFilters/TimeFilter/TimeFilter.tsx +3 -1
- package/src/components/table/tableControls/HideColumnsDropdown.tsx +3 -1
- package/src/components/table/tableControls/TableControls.tsx +3 -1
- package/src/components/tag/Tag.test.tsx +40 -8
- package/src/components/tagList/TagList.test.tsx +9 -3
- package/src/components/tagList/TagList.tsx +12 -4
- package/src/components/treeRow/TreeRowSection.tsx +3 -1
- package/src/components/userDropdown/UserDropdown.stories.tsx +66 -22
- package/src/components/userDropdown/internal/UserDropdownCollapsibleSection.tsx +3 -1
- package/src/utils/getTextContrast.ts +6 -2
- package/src/utils/hooks/useElementWidth.ts +3 -1
- package/src/utils/hooks/useMeasuredChildWidths.ts +6 -2
- package/src/utils/hooks/useRovingFocus.ts +12 -4
- package/src/utils/spacedWidths.ts +9 -3
|
@@ -45,17 +45,23 @@ export const Default: Story = {
|
|
|
45
45
|
{
|
|
46
46
|
logo: <AppLogo src={logoArborWorkflows} alt="Arbor Workflows" />,
|
|
47
47
|
name: 'Arbor Workflows',
|
|
48
|
-
onClick: () => {
|
|
48
|
+
onClick: () => {
|
|
49
|
+
console.log('Open Arbor Workflows');
|
|
50
|
+
},
|
|
49
51
|
},
|
|
50
52
|
{
|
|
51
53
|
logo: <AppLogo src={logoGovernorHub} alt="GovernorHub" />,
|
|
52
54
|
name: 'GovernorHub',
|
|
53
|
-
onClick: () => {
|
|
55
|
+
onClick: () => {
|
|
56
|
+
console.log('Open GovernorHub');
|
|
57
|
+
},
|
|
54
58
|
},
|
|
55
59
|
{
|
|
56
60
|
logo: <AppLogo src={logoTheKey} alt="The Key" />,
|
|
57
61
|
name: 'The Key',
|
|
58
|
-
onClick: () => {
|
|
62
|
+
onClick: () => {
|
|
63
|
+
console.log('Open The Key');
|
|
64
|
+
},
|
|
59
65
|
},
|
|
60
66
|
],
|
|
61
67
|
},
|
|
@@ -68,30 +74,42 @@ export const Default: Story = {
|
|
|
68
74
|
logo: <AppLogo src={logoArborWorkflows} alt="Arbor Finance" />,
|
|
69
75
|
name: 'Arbor Finance',
|
|
70
76
|
description: 'Cloud-based accounting',
|
|
71
|
-
onClick: () => {
|
|
77
|
+
onClick: () => {
|
|
78
|
+
console.log('Open Arbor Finance');
|
|
79
|
+
},
|
|
72
80
|
},
|
|
73
81
|
{
|
|
74
82
|
logo: <AppLogo src={logoRobin} alt="Robin" />,
|
|
75
83
|
name: 'Robin',
|
|
76
84
|
description: 'AI website compliance checks',
|
|
77
|
-
onClick: () => {
|
|
85
|
+
onClick: () => {
|
|
86
|
+
console.log('Open Robin');
|
|
87
|
+
},
|
|
78
88
|
},
|
|
79
89
|
{
|
|
80
90
|
logo: <AppLogo src={logoSamPeople} alt="SAMPeople" />,
|
|
81
91
|
name: 'SAMPeople',
|
|
82
92
|
description: 'HR and recruitment',
|
|
83
|
-
onClick: () => {
|
|
93
|
+
onClick: () => {
|
|
94
|
+
console.log('Open SAMPeople');
|
|
95
|
+
},
|
|
84
96
|
},
|
|
85
97
|
{
|
|
86
98
|
logo: <AppLogo src={logoTimetabler} alt="Timetabler" />,
|
|
87
99
|
name: 'Timetabler',
|
|
88
100
|
description: 'Schedule timetables and more',
|
|
89
|
-
onClick: () => {
|
|
101
|
+
onClick: () => {
|
|
102
|
+
console.log('Open Timetabler');
|
|
103
|
+
},
|
|
90
104
|
},
|
|
91
105
|
],
|
|
92
106
|
},
|
|
93
|
-
userInfoAction: { type: 'link', onClick: () => {
|
|
94
|
-
|
|
107
|
+
userInfoAction: { type: 'link', onClick: () => {
|
|
108
|
+
console.log('View profile');
|
|
109
|
+
} },
|
|
110
|
+
onSignOut: () => {
|
|
111
|
+
console.log('Sign out');
|
|
112
|
+
},
|
|
95
113
|
signOutLabel: 'Sign out of Arbor',
|
|
96
114
|
},
|
|
97
115
|
};
|
|
@@ -107,12 +125,18 @@ export const WithApps: Story = {
|
|
|
107
125
|
{
|
|
108
126
|
label: 'Quick Actions',
|
|
109
127
|
apps: [
|
|
110
|
-
{ name: 'Settings', onClick: () => {
|
|
111
|
-
|
|
128
|
+
{ name: 'Settings', onClick: () => {
|
|
129
|
+
console.log('Settings');
|
|
130
|
+
} },
|
|
131
|
+
{ name: 'Help', onClick: () => {
|
|
132
|
+
console.log('Help');
|
|
133
|
+
} },
|
|
112
134
|
],
|
|
113
135
|
},
|
|
114
136
|
],
|
|
115
|
-
onSignOut: () => {
|
|
137
|
+
onSignOut: () => {
|
|
138
|
+
console.log('Sign out');
|
|
139
|
+
},
|
|
116
140
|
},
|
|
117
141
|
};
|
|
118
142
|
|
|
@@ -123,7 +147,9 @@ export const Minimal: Story = {
|
|
|
123
147
|
avatarInitials: 'CM',
|
|
124
148
|
avatarAlt: 'Christine Montgomery',
|
|
125
149
|
},
|
|
126
|
-
onSignOut: () => {
|
|
150
|
+
onSignOut: () => {
|
|
151
|
+
console.log('Sign out');
|
|
152
|
+
},
|
|
127
153
|
},
|
|
128
154
|
};
|
|
129
155
|
|
|
@@ -144,7 +170,9 @@ export const WithMenu: Story = {
|
|
|
144
170
|
{
|
|
145
171
|
logo: <AppLogo src={logoArborWorkflows} alt="Arbor Workflows" />,
|
|
146
172
|
name: 'Arbor Workflows',
|
|
147
|
-
onClick: () => {
|
|
173
|
+
onClick: () => {
|
|
174
|
+
console.log('Open Arbor Workflows');
|
|
175
|
+
},
|
|
148
176
|
},
|
|
149
177
|
],
|
|
150
178
|
},
|
|
@@ -152,12 +180,20 @@ export const WithMenu: Story = {
|
|
|
152
180
|
userInfoAction: {
|
|
153
181
|
type: 'menu',
|
|
154
182
|
items: [
|
|
155
|
-
{ label: 'Help centre', onClick: () => {
|
|
156
|
-
|
|
157
|
-
|
|
183
|
+
{ label: 'Help centre', onClick: () => {
|
|
184
|
+
console.log('Help centre');
|
|
185
|
+
} },
|
|
186
|
+
{ label: 'About', onClick: () => {
|
|
187
|
+
console.log('About');
|
|
188
|
+
} },
|
|
189
|
+
{ label: 'Leave feedback', onClick: () => {
|
|
190
|
+
console.log('Leave feedback');
|
|
191
|
+
} },
|
|
158
192
|
],
|
|
159
193
|
},
|
|
160
|
-
onSignOut: () => {
|
|
194
|
+
onSignOut: () => {
|
|
195
|
+
console.log('Sign out');
|
|
196
|
+
},
|
|
161
197
|
signOutLabel: 'Sign out of Arbor',
|
|
162
198
|
},
|
|
163
199
|
};
|
|
@@ -180,12 +216,16 @@ export const DarkVariant: Story = {
|
|
|
180
216
|
{
|
|
181
217
|
logo: <AppLogo src={logoArborWorkflows} alt="Arbor Workflows" />,
|
|
182
218
|
name: 'Arbor Workflows',
|
|
183
|
-
onClick: () => {
|
|
219
|
+
onClick: () => {
|
|
220
|
+
console.log('Open Arbor Workflows');
|
|
221
|
+
},
|
|
184
222
|
},
|
|
185
223
|
],
|
|
186
224
|
},
|
|
187
225
|
],
|
|
188
|
-
onSignOut: () => {
|
|
226
|
+
onSignOut: () => {
|
|
227
|
+
console.log('Sign out');
|
|
228
|
+
},
|
|
189
229
|
signOutLabel: 'Sign out of Arbor',
|
|
190
230
|
},
|
|
191
231
|
parameters: {
|
|
@@ -216,12 +256,16 @@ export const LightVariant: Story = {
|
|
|
216
256
|
{
|
|
217
257
|
logo: <AppLogo src={logoArborWorkflows} alt="Arbor Workflows" />,
|
|
218
258
|
name: 'Arbor Workflows',
|
|
219
|
-
onClick: () => {
|
|
259
|
+
onClick: () => {
|
|
260
|
+
console.log('Open Arbor Workflows');
|
|
261
|
+
},
|
|
220
262
|
},
|
|
221
263
|
],
|
|
222
264
|
},
|
|
223
265
|
],
|
|
224
|
-
onSignOut: () => {
|
|
266
|
+
onSignOut: () => {
|
|
267
|
+
console.log('Sign out');
|
|
268
|
+
},
|
|
225
269
|
signOutLabel: 'Sign out of Arbor',
|
|
226
270
|
},
|
|
227
271
|
parameters: {
|
|
@@ -18,7 +18,9 @@ export const UserDropdownCollapsibleSection = (props: UserDropdownCollapsibleSec
|
|
|
18
18
|
<div className="ds-user-dropdown__collapsible-section">
|
|
19
19
|
<div
|
|
20
20
|
className="ds-user-dropdown__collapsible-section-header"
|
|
21
|
-
onClick={() => {
|
|
21
|
+
onClick={() => {
|
|
22
|
+
setIsOpen(!isOpen);
|
|
23
|
+
}}
|
|
22
24
|
role="button"
|
|
23
25
|
tabIndex={0}
|
|
24
26
|
aria-expanded={isOpen}
|
|
@@ -4,8 +4,12 @@ export const getTextContrast = (color: string): TextContrast => {
|
|
|
4
4
|
const CONTRAST_THRESHOLD = 128;
|
|
5
5
|
|
|
6
6
|
let hex = color.trim().replace('#', '');
|
|
7
|
-
if (hex.length === 3)
|
|
8
|
-
|
|
7
|
+
if (hex.length === 3) {
|
|
8
|
+
hex = hex.split('').map(c => c + c).join('');
|
|
9
|
+
}
|
|
10
|
+
if (hex.length !== 6 || /[^0-9a-f]/i.test(hex)) {
|
|
11
|
+
return 'dark';
|
|
12
|
+
}
|
|
9
13
|
const r = parseInt(hex.slice(0, 2), 16);
|
|
10
14
|
const g = parseInt(hex.slice(2, 4), 16);
|
|
11
15
|
const b = parseInt(hex.slice(4, 6), 16);
|
|
@@ -7,7 +7,9 @@ type MeasuredChildWidths = {
|
|
|
7
7
|
};
|
|
8
8
|
|
|
9
9
|
const getTrackGap = (trackElement: HTMLElement | null): number => {
|
|
10
|
-
if (!trackElement)
|
|
10
|
+
if (!trackElement) {
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
11
13
|
|
|
12
14
|
const styles = getComputedStyle(trackElement);
|
|
13
15
|
const parsedGap = Number.parseFloat(styles.columnGap || styles.gap || '0');
|
|
@@ -15,7 +17,9 @@ const getTrackGap = (trackElement: HTMLElement | null): number => {
|
|
|
15
17
|
};
|
|
16
18
|
|
|
17
19
|
const getChildWidths = (trackElement: HTMLElement | null): number[] => {
|
|
18
|
-
if (!trackElement)
|
|
20
|
+
if (!trackElement) {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
19
23
|
|
|
20
24
|
return Array.from(trackElement.children).map((child) => {
|
|
21
25
|
const width = (child as HTMLElement).getBoundingClientRect().width;
|
|
@@ -49,7 +49,9 @@ export const useRovingFocus = <Target extends string>({
|
|
|
49
49
|
|
|
50
50
|
const queueFocusRecovery = useCallback((target: Target) => {
|
|
51
51
|
const targetIndex = targets.indexOf(target);
|
|
52
|
-
if (targetIndex < 0)
|
|
52
|
+
if (targetIndex < 0) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
53
55
|
|
|
54
56
|
pendingFocusRecoveryRef.current = { targetIndex };
|
|
55
57
|
}, [targets]);
|
|
@@ -69,7 +71,9 @@ export const useRovingFocus = <Target extends string>({
|
|
|
69
71
|
|
|
70
72
|
useLayoutEffect(() => {
|
|
71
73
|
const pendingFocusRecovery = pendingFocusRecoveryRef.current;
|
|
72
|
-
if (!pendingFocusRecovery)
|
|
74
|
+
if (!pendingFocusRecovery) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
73
77
|
|
|
74
78
|
pendingFocusRecoveryRef.current = null;
|
|
75
79
|
|
|
@@ -87,7 +91,9 @@ export const useRovingFocus = <Target extends string>({
|
|
|
87
91
|
}, [moveFocus, returnFocusRef, setActiveTarget, targets]);
|
|
88
92
|
|
|
89
93
|
useLayoutEffect(() => () => {
|
|
90
|
-
if (!pendingFocusRecoveryRef.current)
|
|
94
|
+
if (!pendingFocusRecoveryRef.current) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
91
97
|
|
|
92
98
|
pendingFocusRecoveryRef.current = null;
|
|
93
99
|
returnFocusRefRef.current?.current?.focus();
|
|
@@ -95,7 +101,9 @@ export const useRovingFocus = <Target extends string>({
|
|
|
95
101
|
|
|
96
102
|
const handleTargetKeyDown = useCallback((event: React.KeyboardEvent<HTMLElement>, target: Target) => {
|
|
97
103
|
const targetIndex = targets.indexOf(target);
|
|
98
|
-
if (targetIndex < 0)
|
|
104
|
+
if (targetIndex < 0) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
99
107
|
|
|
100
108
|
switch (event.key) {
|
|
101
109
|
case 'ArrowLeft':
|
|
@@ -4,7 +4,9 @@ export const sumSpacedWidths = (
|
|
|
4
4
|
visibleCount: number = widths.length,
|
|
5
5
|
): number => {
|
|
6
6
|
const boundedCount = Math.max(0, Math.min(visibleCount, widths.length));
|
|
7
|
-
if (boundedCount === 0)
|
|
7
|
+
if (boundedCount === 0) {
|
|
8
|
+
return 0;
|
|
9
|
+
}
|
|
8
10
|
|
|
9
11
|
let usedWidth = 0;
|
|
10
12
|
for (let index = 0; index < boundedCount; index += 1) {
|
|
@@ -22,13 +24,17 @@ export const fitSpacedWidths = (
|
|
|
22
24
|
widths: number[],
|
|
23
25
|
gap: number,
|
|
24
26
|
): number => {
|
|
25
|
-
if (availableWidth <= 0 || widths.length === 0)
|
|
27
|
+
if (availableWidth <= 0 || widths.length === 0) {
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
26
30
|
|
|
27
31
|
let usedWidth = 0;
|
|
28
32
|
let visibleCount = 0;
|
|
29
33
|
for (let index = 0; index < widths.length; index += 1) {
|
|
30
34
|
const requiredWidth = (widths[index] ?? 0) + (index > 0 ? gap : 0);
|
|
31
|
-
if (usedWidth + requiredWidth > availableWidth)
|
|
35
|
+
if (usedWidth + requiredWidth > availableWidth) {
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
32
38
|
usedWidth += requiredWidth;
|
|
33
39
|
visibleCount += 1;
|
|
34
40
|
}
|