@arbor-education/design-system.components 0.25.0 → 0.25.2
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 +14 -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/row/Row.d.ts +4 -4
- package/dist/components/row/Row.d.ts.map +1 -1
- package/dist/components/row/Row.stories.d.ts +3 -0
- package/dist/components/row/Row.stories.d.ts.map +1 -1
- package/dist/components/row/Row.stories.js +96 -6
- package/dist/components/row/Row.stories.js.map +1 -1
- package/dist/components/row/Row.test.js +20 -0
- package/dist/components/row/Row.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/toggleGroup/ToggleGroup.d.ts +29 -0
- package/dist/components/toggleGroup/ToggleGroup.d.ts.map +1 -0
- package/dist/components/toggleGroup/ToggleGroup.js +26 -0
- package/dist/components/toggleGroup/ToggleGroup.js.map +1 -0
- package/dist/components/toggleGroup/ToggleGroup.stories.d.ts +86 -0
- package/dist/components/toggleGroup/ToggleGroup.stories.d.ts.map +1 -0
- package/dist/components/toggleGroup/ToggleGroup.stories.js +342 -0
- package/dist/components/toggleGroup/ToggleGroup.stories.js.map +1 -0
- package/dist/components/toggleGroup/ToggleGroup.test.d.ts +2 -0
- package/dist/components/toggleGroup/ToggleGroup.test.d.ts.map +1 -0
- package/dist/components/toggleGroup/ToggleGroup.test.js +123 -0
- package/dist/components/toggleGroup/ToggleGroup.test.js.map +1 -0
- package/dist/components/toggleGroup/ToggleGroupItem.d.ts +10 -0
- package/dist/components/toggleGroup/ToggleGroupItem.d.ts.map +1 -0
- package/dist/components/toggleGroup/ToggleGroupItem.js +5 -0
- package/dist/components/toggleGroup/ToggleGroupItem.js.map +1 -0
- 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/index.css +33 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.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/row/Row.stories.tsx +141 -6
- package/src/components/row/Row.test.tsx +23 -0
- package/src/components/row/Row.tsx +4 -4
- 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/toggleGroup/ToggleGroup.stories.tsx +429 -0
- package/src/components/toggleGroup/ToggleGroup.test.tsx +155 -0
- package/src/components/toggleGroup/ToggleGroup.tsx +74 -0
- package/src/components/toggleGroup/ToggleGroupItem.tsx +24 -0
- package/src/components/toggleGroup/toggleGroup.scss +43 -0
- 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/index.scss +1 -0
- package/src/index.ts +1 -0
- 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
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
.ds-toggle-group {
|
|
2
|
+
display: inline-flex;
|
|
3
|
+
border-radius: var(--border-radius-round);
|
|
4
|
+
border: var(--toggle-weight-border) solid var(--color-grey-100);
|
|
5
|
+
padding: var(--border-radius-small);
|
|
6
|
+
gap: 8px;
|
|
7
|
+
align-items: center;
|
|
8
|
+
|
|
9
|
+
.ds-toggle-group__item {
|
|
10
|
+
&--red {
|
|
11
|
+
background-color: var(--color-semantic-destructive-100);
|
|
12
|
+
color: var(--color-semantic-destructive-700);
|
|
13
|
+
|
|
14
|
+
&:focus,
|
|
15
|
+
&:hover {
|
|
16
|
+
background-color: var(--color-semantic-destructive-100);
|
|
17
|
+
color: var(--color-semantic-destructive-700);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
&--yellow {
|
|
22
|
+
background-color: var(--color-semantic-caution-100);
|
|
23
|
+
color: var(--color-semantic-caution-700);
|
|
24
|
+
|
|
25
|
+
&:focus,
|
|
26
|
+
&:hover {
|
|
27
|
+
background-color: var(--color-semantic-caution-100);
|
|
28
|
+
color: var(--color-semantic-caution-700);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&--green {
|
|
33
|
+
background-color: var(--color-semantic-success-100);
|
|
34
|
+
color: var(--color-semantic-success-700);
|
|
35
|
+
|
|
36
|
+
&:focus,
|
|
37
|
+
&:hover {
|
|
38
|
+
background-color: var(--color-semantic-success-100);
|
|
39
|
+
color: var(--color-semantic-success-700);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -7,7 +7,9 @@ import { Icon } from 'Components/icon/Icon';
|
|
|
7
7
|
export const DepthContext = createContext(0);
|
|
8
8
|
|
|
9
9
|
export function getDepthPadding(depth: number): string {
|
|
10
|
-
if (depth === 0)
|
|
10
|
+
if (depth === 0) {
|
|
11
|
+
return 'var(--section-list-row-spacing-horizontal)';
|
|
12
|
+
}
|
|
11
13
|
return `calc(var(--spacing-xxlarge, 32px) * ${depth})`;
|
|
12
14
|
}
|
|
13
15
|
|
|
@@ -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}
|
package/src/index.scss
CHANGED
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
@use "components/row/row.scss";
|
|
54
54
|
@use "components/combobox/combobox.scss";
|
|
55
55
|
@use "components/toggle/toggle.scss";
|
|
56
|
+
@use "components/toggleGroup/toggleGroup.scss";
|
|
56
57
|
@use "components/dataViewCard/dataViewCard.scss";
|
|
57
58
|
@use "components/treeRow/treeRow.scss";
|
|
58
59
|
@use "components/sidebarNav/sidebarNav.scss";
|
package/src/index.ts
CHANGED
|
@@ -74,6 +74,7 @@ export { TagList } from 'Components/tagList/TagList';
|
|
|
74
74
|
export type { TagListItem, TagListOverflowRenderArgs, TagListOverflowTarget, TagListProps } from 'Components/tagList/TagList';
|
|
75
75
|
export { Toast } from 'Components/toast/Toast';
|
|
76
76
|
export { Toggle } from 'Components/toggle/Toggle';
|
|
77
|
+
export { ToggleGroup } from 'Components/toggleGroup/ToggleGroup';
|
|
77
78
|
export { Tooltip } from 'Components/tooltip/Tooltip';
|
|
78
79
|
export { TooltipWrapper } from 'Components/tooltip/TooltipWrapper';
|
|
79
80
|
export { GovhubLogo, KeyLogo, RobinLogo, SampeopleLogo, TimetablerLogo } from 'Components/userDropdown/assets/logos';
|
|
@@ -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
|
}
|