@dxc-technology/halstack-react 0.0.0-4e1277a → 0.0.0-4e3dbad
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.js +1 -1
- package/HalstackContext.d.ts +42 -5
- package/HalstackContext.js +28 -18
- package/accordion/Accordion.accessibility.test.d.ts +1 -0
- package/accordion/Accordion.accessibility.test.js +71 -0
- package/accordion/Accordion.js +16 -30
- package/accordion/Accordion.stories.tsx +7 -49
- package/accordion/Accordion.test.d.ts +1 -0
- package/accordion/Accordion.test.js +3 -3
- package/accordion/types.d.ts +1 -1
- package/accordion-group/AccordionGroup.accessibility.test.d.ts +1 -0
- package/accordion-group/AccordionGroup.accessibility.test.js +82 -0
- package/accordion-group/AccordionGroup.js +1 -1
- package/accordion-group/AccordionGroup.stories.tsx +23 -23
- package/accordion-group/AccordionGroup.test.d.ts +1 -0
- package/accordion-group/AccordionGroup.test.js +5 -9
- package/accordion-group/AccordionGroupAccordion.js +1 -1
- package/accordion-group/types.d.ts +1 -1
- package/action-icon/ActionIcon.accessibility.test.d.ts +1 -0
- package/action-icon/ActionIcon.accessibility.test.js +63 -0
- package/action-icon/ActionIcon.js +4 -3
- package/action-icon/ActionIcon.stories.tsx +3 -3
- package/action-icon/ActionIcon.test.d.ts +1 -0
- package/action-icon/ActionIcon.test.js +1 -1
- package/action-icon/types.d.ts +1 -1
- package/alert/Alert.accessibility.test.d.ts +1 -0
- package/alert/Alert.accessibility.test.js +95 -0
- package/alert/Alert.js +21 -72
- package/alert/Alert.test.d.ts +1 -0
- package/alert/Alert.test.js +1 -1
- package/badge/Badge.accessibility.test.d.ts +1 -0
- package/badge/Badge.accessibility.test.js +129 -0
- package/badge/Badge.js +6 -4
- package/badge/Badge.stories.tsx +11 -11
- package/badge/Badge.test.d.ts +1 -0
- package/badge/Badge.test.js +2 -2
- package/badge/types.d.ts +1 -1
- package/bar-chart/BarChart.d.ts +4 -0
- package/bar-chart/BarChart.js +152 -0
- package/bar-chart/BarChart.stories.tsx +281 -0
- package/bar-chart/BarChart.test.d.ts +1 -0
- package/bar-chart/BarChart.test.js +194 -0
- package/bar-chart/theme.d.ts +3 -0
- package/bar-chart/theme.js +31 -0
- package/bar-chart/types.d.ts +118 -0
- package/bar-chart/types.js +5 -0
- package/bleed/Bleed.stories.tsx +0 -1
- package/box/Box.accessibility.test.d.ts +1 -0
- package/box/Box.accessibility.test.js +33 -0
- package/box/Box.js +1 -1
- package/box/Box.test.d.ts +1 -0
- package/box/Box.test.js +1 -1
- package/breadcrumbs/Breadcrumbs.accessibility.test.d.ts +1 -0
- package/breadcrumbs/Breadcrumbs.accessibility.test.js +96 -0
- package/breadcrumbs/Breadcrumbs.d.ts +4 -0
- package/breadcrumbs/Breadcrumbs.js +79 -0
- package/breadcrumbs/Breadcrumbs.stories.tsx +194 -0
- package/breadcrumbs/Breadcrumbs.test.d.ts +1 -0
- package/breadcrumbs/Breadcrumbs.test.js +168 -0
- package/breadcrumbs/Item.d.ts +4 -0
- package/breadcrumbs/Item.js +52 -0
- package/breadcrumbs/dropdownTheme.d.ts +53 -0
- package/breadcrumbs/dropdownTheme.js +62 -0
- package/breadcrumbs/types.d.ts +40 -0
- package/breadcrumbs/types.js +5 -0
- package/bulleted-list/BulletedList.accessibility.test.d.ts +1 -0
- package/bulleted-list/BulletedList.accessibility.test.js +119 -0
- package/bulleted-list/BulletedList.js +7 -4
- package/bulleted-list/BulletedList.stories.tsx +1 -1
- package/button/Button.accessibility.test.d.ts +1 -0
- package/button/Button.accessibility.test.js +127 -0
- package/button/Button.js +2 -2
- package/button/Button.stories.tsx +3 -4
- package/button/Button.test.d.ts +1 -0
- package/button/Button.test.js +1 -1
- package/card/Card.accessibility.test.d.ts +1 -0
- package/card/Card.accessibility.test.js +36 -0
- package/card/Card.js +3 -2
- package/card/Card.stories.tsx +1 -1
- package/card/Card.test.d.ts +1 -0
- package/card/Card.test.js +1 -1
- package/checkbox/Checkbox.accessibility.test.d.ts +1 -0
- package/checkbox/Checkbox.accessibility.test.js +87 -0
- package/checkbox/Checkbox.js +10 -13
- package/checkbox/Checkbox.test.d.ts +1 -0
- package/checkbox/Checkbox.test.js +1 -1
- package/chip/Chip.accessibility.test.d.ts +1 -0
- package/chip/Chip.accessibility.test.js +67 -0
- package/chip/Chip.js +11 -6
- package/chip/Chip.stories.tsx +6 -25
- package/chip/Chip.test.d.ts +1 -0
- package/chip/Chip.test.js +5 -5
- package/common/coreTokens.d.ts +0 -1
- package/common/coreTokens.js +3 -4
- package/common/variables.d.ts +48 -5
- package/common/variables.js +110 -73
- package/container/Container.stories.tsx +3 -3
- package/container/types.d.ts +113 -11
- package/contextual-menu/ContextualMenu.accessibility.test.d.ts +1 -0
- package/contextual-menu/ContextualMenu.accessibility.test.js +98 -0
- package/contextual-menu/ContextualMenu.d.ts +3 -5
- package/contextual-menu/ContextualMenu.js +118 -53
- package/contextual-menu/ContextualMenu.stories.tsx +124 -75
- package/contextual-menu/ContextualMenu.test.d.ts +1 -0
- package/contextual-menu/ContextualMenu.test.js +200 -24
- package/contextual-menu/GroupItem.d.ts +4 -0
- package/contextual-menu/GroupItem.js +67 -0
- package/contextual-menu/ItemAction.d.ts +4 -0
- package/contextual-menu/ItemAction.js +88 -0
- package/contextual-menu/MenuItem.d.ts +4 -0
- package/contextual-menu/MenuItem.js +29 -0
- package/contextual-menu/SingleItem.d.ts +4 -0
- package/contextual-menu/SingleItem.js +38 -0
- package/contextual-menu/types.d.ts +54 -11
- package/date-input/Calendar.js +47 -31
- package/date-input/DateInput.accessibility.test.d.ts +1 -0
- package/date-input/DateInput.accessibility.test.js +229 -0
- package/date-input/DateInput.js +28 -23
- package/date-input/DateInput.stories.tsx +18 -12
- package/date-input/DateInput.test.d.ts +1 -0
- package/date-input/DateInput.test.js +39 -39
- package/date-input/DatePicker.js +13 -7
- package/date-input/YearPicker.js +10 -5
- package/dialog/Dialog.accessibility.test.d.ts +1 -0
- package/dialog/Dialog.accessibility.test.js +69 -0
- package/dialog/Dialog.js +9 -20
- package/dialog/Dialog.stories.tsx +8 -4
- package/dialog/Dialog.test.d.ts +1 -0
- package/dialog/Dialog.test.js +112 -49
- package/divider/Divider.accessibility.test.d.ts +1 -0
- package/divider/Divider.accessibility.test.js +33 -0
- package/divider/Divider.stories.tsx +2 -1
- package/divider/Divider.test.d.ts +1 -0
- package/dropdown/Dropdown.accessibility.test.d.ts +1 -0
- package/dropdown/Dropdown.accessibility.test.js +183 -0
- package/dropdown/Dropdown.js +31 -66
- package/dropdown/Dropdown.stories.tsx +16 -27
- package/dropdown/Dropdown.test.d.ts +1 -0
- package/dropdown/Dropdown.test.js +101 -72
- package/dropdown/DropdownMenu.js +4 -4
- package/dropdown/DropdownMenuItem.js +8 -4
- package/dropdown/types.d.ts +2 -4
- package/file-input/FileInput.accessibility.test.d.ts +1 -0
- package/file-input/FileInput.accessibility.test.js +167 -0
- package/file-input/FileInput.js +6 -47
- package/file-input/FileInput.test.d.ts +1 -0
- package/file-input/FileInput.test.js +51 -106
- package/file-input/FileItem.js +18 -28
- package/file-input/types.d.ts +0 -4
- package/footer/Footer.accessibility.test.d.ts +1 -0
- package/footer/Footer.accessibility.test.js +125 -0
- package/footer/Footer.js +8 -6
- package/footer/Footer.stories.tsx +40 -3
- package/footer/Footer.test.d.ts +1 -0
- package/footer/Footer.test.js +1 -1
- package/footer/Icons.js +2 -30
- package/footer/types.d.ts +1 -1
- package/grid/Grid.stories.tsx +3 -1
- package/header/Header.accessibility.test.d.ts +1 -0
- package/header/Header.accessibility.test.js +94 -0
- package/header/Header.js +12 -22
- package/header/Header.stories.tsx +17 -1
- package/header/Header.test.d.ts +1 -0
- package/header/Header.test.js +1 -1
- package/header/Icons.js +1 -6
- package/heading/Heading.accessibility.test.d.ts +1 -0
- package/heading/Heading.accessibility.test.js +33 -0
- package/heading/Heading.js +1 -1
- package/heading/Heading.test.d.ts +1 -0
- package/heading/Heading.test.js +1 -14
- package/icon/Icon.accessibility.test.d.ts +1 -0
- package/icon/Icon.accessibility.test.js +30 -0
- package/icon/Icon.js +1 -1
- package/icon/Icon.stories.tsx +6 -4
- package/image/Image.accessibility.test.d.ts +1 -0
- package/image/Image.accessibility.test.js +56 -0
- package/image/Image.js +1 -1
- package/layout/ApplicationLayout.js +9 -6
- package/layout/Icons.d.ts +0 -1
- package/layout/Icons.js +1 -11
- package/link/Link.accessibility.test.d.ts +1 -0
- package/link/Link.accessibility.test.js +108 -0
- package/link/Link.js +8 -6
- package/link/Link.stories.tsx +4 -4
- package/link/Link.test.d.ts +1 -0
- package/link/Link.test.js +1 -1
- package/link/types.d.ts +1 -1
- package/main.d.ts +3 -1
- package/main.js +15 -1
- package/nav-tabs/NavTabs.accessibility.test.d.ts +1 -0
- package/nav-tabs/NavTabs.accessibility.test.js +44 -0
- package/nav-tabs/NavTabs.js +19 -4
- package/nav-tabs/NavTabs.stories.tsx +41 -23
- package/nav-tabs/NavTabs.test.d.ts +1 -0
- package/nav-tabs/NavTabs.test.js +10 -9
- package/nav-tabs/Tab.js +17 -18
- package/nav-tabs/types.d.ts +1 -1
- package/number-input/NumberInput.accessibility.test.d.ts +1 -0
- package/number-input/NumberInput.accessibility.test.js +227 -0
- package/number-input/NumberInput.js +6 -3
- package/number-input/NumberInput.stories.tsx +11 -16
- package/number-input/NumberInput.test.d.ts +1 -0
- package/number-input/NumberInput.test.js +6 -7
- package/package.json +34 -28
- package/paginator/Paginator.accessibility.test.d.ts +1 -0
- package/paginator/Paginator.accessibility.test.js +78 -0
- package/paginator/Paginator.js +13 -10
- package/paginator/Paginator.test.d.ts +1 -0
- package/paginator/Paginator.test.js +2 -3
- package/paragraph/Paragraph.accessibility.test.d.ts +1 -0
- package/paragraph/Paragraph.accessibility.test.js +28 -0
- package/password-input/PasswordInput.accessibility.test.d.ts +1 -0
- package/password-input/PasswordInput.accessibility.test.js +152 -0
- package/password-input/PasswordInput.js +11 -8
- package/password-input/PasswordInput.stories.tsx +10 -1
- package/password-input/PasswordInput.test.d.ts +1 -0
- package/password-input/PasswordInput.test.js +6 -7
- package/progress-bar/ProgressBar.accessibility.test.d.ts +1 -0
- package/progress-bar/ProgressBar.accessibility.test.js +35 -0
- package/progress-bar/ProgressBar.js +6 -4
- package/progress-bar/ProgressBar.test.d.ts +1 -0
- package/progress-bar/ProgressBar.test.js +1 -1
- package/quick-nav/QuickNav.accessibility.test.d.ts +1 -0
- package/quick-nav/QuickNav.accessibility.test.js +57 -0
- package/quick-nav/QuickNav.js +1 -1
- package/radio-group/Radio.js +6 -9
- package/radio-group/RadioGroup.accessibility.test.d.ts +1 -0
- package/radio-group/RadioGroup.accessibility.test.js +97 -0
- package/radio-group/RadioGroup.js +14 -16
- package/radio-group/RadioGroup.test.d.ts +1 -0
- package/radio-group/RadioGroup.test.js +3 -5
- package/resultset-table/ResultsetTable.accessibility.test.d.ts +1 -0
- package/resultset-table/ResultsetTable.accessibility.test.js +284 -0
- package/resultset-table/ResultsetTable.d.ts +1 -1
- package/resultset-table/ResultsetTable.js +47 -15
- package/resultset-table/ResultsetTable.stories.tsx +19 -3
- package/resultset-table/ResultsetTable.test.d.ts +1 -0
- package/resultset-table/ResultsetTable.test.js +111 -32
- package/resultset-table/types.d.ts +41 -13
- package/select/Listbox.d.ts +3 -3
- package/select/Listbox.js +33 -29
- package/select/Option.d.ts +3 -3
- package/select/Option.js +21 -15
- package/select/Select.accessibility.test.d.ts +1 -0
- package/select/Select.accessibility.test.js +227 -0
- package/select/Select.js +85 -192
- package/select/Select.stories.tsx +74 -117
- package/select/Select.test.d.ts +1 -0
- package/select/Select.test.js +348 -550
- package/select/selectUtils.d.ts +41 -0
- package/select/selectUtils.js +129 -0
- package/select/types.d.ts +1 -1
- package/sidenav/Sidenav.accessibility.test.d.ts +1 -0
- package/sidenav/Sidenav.accessibility.test.js +59 -0
- package/sidenav/Sidenav.js +16 -12
- package/sidenav/Sidenav.stories.tsx +5 -10
- package/sidenav/Sidenav.test.d.ts +1 -0
- package/sidenav/Sidenav.test.js +1 -1
- package/sidenav/types.d.ts +2 -2
- package/slider/Slider.accessibility.test.d.ts +1 -0
- package/slider/Slider.accessibility.test.js +103 -0
- package/slider/Slider.js +11 -13
- package/slider/Slider.stories.tsx +180 -0
- package/slider/Slider.test.d.ts +1 -0
- package/slider/Slider.test.js +13 -11
- package/spinner/Spinner.accessibility.test.d.ts +1 -0
- package/spinner/Spinner.accessibility.test.js +96 -0
- package/spinner/Spinner.d.ts +1 -1
- package/spinner/Spinner.js +32 -47
- package/spinner/Spinner.test.d.ts +1 -0
- package/spinner/Spinner.test.js +1 -1
- package/status-light/StatusLight.accessibility.test.d.ts +1 -0
- package/status-light/StatusLight.accessibility.test.js +157 -0
- package/status-light/StatusLight.test.d.ts +1 -0
- package/status-light/StatusLight.test.js +1 -1
- package/switch/Switch.accessibility.test.d.ts +1 -0
- package/switch/Switch.accessibility.test.js +98 -0
- package/switch/Switch.js +6 -9
- package/switch/Switch.stories.tsx +12 -0
- package/switch/Switch.test.d.ts +1 -0
- package/switch/Switch.test.js +1 -1
- package/table/Table.accessibility.test.d.ts +1 -0
- package/table/Table.accessibility.test.js +92 -0
- package/table/Table.js +2 -11
- package/table/Table.stories.tsx +15 -10
- package/table/Table.test.d.ts +1 -0
- package/table/Table.test.js +2 -4
- package/table/types.d.ts +1 -15
- package/tabs/Tab.js +6 -5
- package/tabs/Tabs.accessibility.test.d.ts +1 -0
- package/tabs/Tabs.accessibility.test.js +56 -0
- package/tabs/Tabs.js +9 -20
- package/tabs/Tabs.stories.tsx +7 -3
- package/tabs/Tabs.test.d.ts +1 -0
- package/tabs/Tabs.test.js +20 -38
- package/tabs/types.d.ts +2 -2
- package/tag/Tag.accessibility.test.d.ts +1 -0
- package/tag/Tag.accessibility.test.js +69 -0
- package/tag/Tag.js +7 -7
- package/tag/Tag.stories.tsx +5 -8
- package/tag/Tag.test.d.ts +1 -0
- package/tag/Tag.test.js +5 -13
- package/tag/types.d.ts +2 -2
- package/text-input/Suggestion.js +1 -1
- package/text-input/Suggestions.js +17 -7
- package/text-input/TextInput.accessibility.test.d.ts +1 -0
- package/text-input/TextInput.accessibility.test.js +320 -0
- package/text-input/TextInput.js +56 -73
- package/text-input/TextInput.stories.tsx +20 -8
- package/text-input/TextInput.test.d.ts +1 -0
- package/text-input/TextInput.test.js +2 -3
- package/textarea/Textarea.accessibility.test.d.ts +1 -0
- package/textarea/Textarea.accessibility.test.js +155 -0
- package/textarea/Textarea.js +14 -13
- package/textarea/Textarea.test.d.ts +1 -0
- package/textarea/Textarea.test.js +1 -1
- package/toggle-group/ToggleGroup.accessibility.test.d.ts +1 -0
- package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
- package/toggle-group/ToggleGroup.js +10 -12
- package/toggle-group/ToggleGroup.stories.tsx +4 -4
- package/toggle-group/ToggleGroup.test.d.ts +1 -0
- package/toggle-group/ToggleGroup.test.js +1 -1
- package/toggle-group/types.d.ts +2 -2
- package/tooltip/Tooltip.accessibility.test.d.ts +1 -0
- package/tooltip/Tooltip.accessibility.test.js +144 -0
- package/tooltip/Tooltip.d.ts +4 -0
- package/tooltip/Tooltip.js +50 -0
- package/tooltip/Tooltip.stories.tsx +111 -0
- package/tooltip/Tooltip.test.d.ts +1 -0
- package/tooltip/Tooltip.test.js +112 -0
- package/tooltip/types.d.ts +16 -0
- package/tooltip/types.js +5 -0
- package/typography/Typography.accessibility.test.d.ts +1 -0
- package/typography/Typography.accessibility.test.js +339 -0
- package/typography/Typography.stories.tsx +1 -3
- package/typography/Typography.test.js +23 -0
- package/useTheme.d.ts +31 -5
- package/useTranslatedLabels.d.ts +11 -0
- package/utils/BaseTypography.js +45 -41
- package/utils/FocusLock.js +3 -2
- package/utils/useWidth.d.ts +2 -0
- package/utils/useWidth.js +30 -0
- package/wizard/Wizard.accessibility.test.d.ts +1 -0
- package/wizard/Wizard.accessibility.test.js +55 -0
- package/wizard/Wizard.js +14 -25
- package/wizard/Wizard.stories.tsx +20 -1
- package/wizard/Wizard.test.d.ts +1 -0
- package/wizard/Wizard.test.js +1 -1
- package/wizard/types.d.ts +1 -1
- package/contextual-menu/MenuItemAction.d.ts +0 -4
- package/contextual-menu/MenuItemAction.js +0 -46
- package/date-input/Icons.d.ts +0 -6
- package/date-input/Icons.js +0 -58
- package/paginator/Icons.d.ts +0 -5
- package/paginator/Icons.js +0 -40
- package/password-input/Icons.d.ts +0 -6
- package/password-input/Icons.js +0 -35
- package/select/Icons.d.ts +0 -10
- package/select/Icons.js +0 -89
- package/sidenav/Icons.d.ts +0 -7
- package/sidenav/Icons.js +0 -47
- package/text-input/Icons.d.ts +0 -8
- package/text-input/Icons.js +0 -56
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Option, OptionGroup } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Check if the value is not optional and is empty.
|
|
4
|
+
*/
|
|
5
|
+
declare const notOptionalCheck: (value: string | string[], multiple: boolean, optional: boolean) => boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Checks if the option is a group.
|
|
8
|
+
*/
|
|
9
|
+
declare const isOptionGroup: (option: Option | OptionGroup) => option is OptionGroup;
|
|
10
|
+
/**
|
|
11
|
+
* Checks if the options are an array of groups.
|
|
12
|
+
*/
|
|
13
|
+
declare const isArrayOfOptionGroups: (options: Option[] | OptionGroup[]) => options is OptionGroup[];
|
|
14
|
+
/**
|
|
15
|
+
* Checks if the groups have options.
|
|
16
|
+
*/
|
|
17
|
+
declare const groupsHaveOptions: (options: Option[] | OptionGroup[]) => boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Checks if the listbox can be opened.
|
|
20
|
+
*/
|
|
21
|
+
declare const canOpenListbox: (options: Option[] | OptionGroup[], disabled: boolean) => boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Filters the options by the search value.
|
|
24
|
+
*/
|
|
25
|
+
declare const filterOptionsBySearchValue: (options: Option[] | OptionGroup[], searchValue: string) => Option[] | OptionGroup[];
|
|
26
|
+
/**
|
|
27
|
+
* Returns the index of the last option, depending on several conditions.
|
|
28
|
+
*/
|
|
29
|
+
declare const getLastOptionIndex: (options: Option[] | OptionGroup[], filteredOptions: Option[] | OptionGroup[], searchable: boolean, optional: boolean, multiple: boolean) => number;
|
|
30
|
+
/**
|
|
31
|
+
* Return the current selection.
|
|
32
|
+
*/
|
|
33
|
+
declare const getSelectedOption: (value: string | string[], options: Option[] | OptionGroup[], multiple: boolean, optional: boolean, optionalItem: Option) => {
|
|
34
|
+
selectedOption: Option | Option[];
|
|
35
|
+
singleSelectionIndex: number;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Return the label or labels of the selected option(s) for the internal input.
|
|
39
|
+
*/
|
|
40
|
+
declare const getSelectedOptionLabel: (placeholder: string, selectedOption: Option | Option[]) => string;
|
|
41
|
+
export { isOptionGroup, isArrayOfOptionGroups, notOptionalCheck, groupsHaveOptions, canOpenListbox as canOpenOptions, filterOptionsBySearchValue, getLastOptionIndex, getSelectedOption, getSelectedOptionLabel, };
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.notOptionalCheck = exports.isOptionGroup = exports.isArrayOfOptionGroups = exports.groupsHaveOptions = exports.getSelectedOptionLabel = exports.getSelectedOption = exports.getLastOptionIndex = exports.filterOptionsBySearchValue = exports.canOpenOptions = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Check if the value is not optional and is empty.
|
|
9
|
+
*/
|
|
10
|
+
var notOptionalCheck = exports.notOptionalCheck = function notOptionalCheck(value, multiple, optional) {
|
|
11
|
+
return !optional && (multiple ? value.length === 0 : value === "");
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Checks if the option is a group.
|
|
16
|
+
*/
|
|
17
|
+
var isOptionGroup = exports.isOptionGroup = function isOptionGroup(option) {
|
|
18
|
+
return "options" in option && option.options != null;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Checks if the options are an array of groups.
|
|
23
|
+
*/
|
|
24
|
+
var isArrayOfOptionGroups = exports.isArrayOfOptionGroups = function isArrayOfOptionGroups(options) {
|
|
25
|
+
return isOptionGroup(options[0]);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Checks if the groups have options.
|
|
30
|
+
*/
|
|
31
|
+
var groupsHaveOptions = exports.groupsHaveOptions = function groupsHaveOptions(options) {
|
|
32
|
+
return isArrayOfOptionGroups(options) ? options.some(function (groupOption) {
|
|
33
|
+
var _groupOption$options;
|
|
34
|
+
return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
|
|
35
|
+
}) : true;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Checks if the listbox can be opened.
|
|
40
|
+
*/
|
|
41
|
+
var canOpenListbox = exports.canOpenOptions = function canOpenListbox(options, disabled) {
|
|
42
|
+
return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Filters the options by the search value.
|
|
47
|
+
*/
|
|
48
|
+
var filterOptionsBySearchValue = exports.filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
|
|
49
|
+
if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
|
|
50
|
+
if (isArrayOfOptionGroups(options)) return options.map(function (optionGroup) {
|
|
51
|
+
var group = {
|
|
52
|
+
label: optionGroup.label,
|
|
53
|
+
options: optionGroup.options.filter(function (option) {
|
|
54
|
+
return option.label.toUpperCase().includes(searchValue.toUpperCase());
|
|
55
|
+
})
|
|
56
|
+
};
|
|
57
|
+
return group;
|
|
58
|
+
});else return options.filter(function (option) {
|
|
59
|
+
return option.label.toUpperCase().includes(searchValue.toUpperCase());
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Returns the index of the last option, depending on several conditions.
|
|
66
|
+
*/
|
|
67
|
+
var getLastOptionIndex = exports.getLastOptionIndex = function getLastOptionIndex(options, filteredOptions, searchable, optional, multiple) {
|
|
68
|
+
var last = 0;
|
|
69
|
+
var reducer = function reducer(acc, current) {
|
|
70
|
+
var _current$options;
|
|
71
|
+
return acc + ((_current$options = current.options) === null || _current$options === void 0 ? void 0 : _current$options.length);
|
|
72
|
+
};
|
|
73
|
+
if (searchable && (filteredOptions === null || filteredOptions === void 0 ? void 0 : filteredOptions.length) > 0) isArrayOfOptionGroups(filteredOptions) ? last = filteredOptions.reduce(reducer, 0) - 1 : last = filteredOptions.length - 1;else if ((options === null || options === void 0 ? void 0 : options.length) > 0) isArrayOfOptionGroups(options) ? last = options.reduce(reducer, 0) - 1 : last = options.length - 1;
|
|
74
|
+
return optional && !multiple ? last + 1 : last;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Return the current selection.
|
|
79
|
+
*/
|
|
80
|
+
var getSelectedOption = exports.getSelectedOption = function getSelectedOption(value, options, multiple, optional, optionalItem) {
|
|
81
|
+
var selectedOption = multiple ? [] : {};
|
|
82
|
+
var singleSelectionIndex;
|
|
83
|
+
if (multiple) {
|
|
84
|
+
if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
|
|
85
|
+
options.forEach(function (option) {
|
|
86
|
+
if (isOptionGroup(option)) option.options.forEach(function (singleOption) {
|
|
87
|
+
if (value.includes(singleOption.value) && Array.isArray(selectedOption)) selectedOption.push(singleOption);
|
|
88
|
+
});else if (value.includes(option.value) && Array.isArray(selectedOption)) selectedOption.push(option);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
} else {
|
|
92
|
+
if (optional && value === "") {
|
|
93
|
+
selectedOption = optionalItem;
|
|
94
|
+
singleSelectionIndex = 0;
|
|
95
|
+
} else if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
|
|
96
|
+
var group_index = 0;
|
|
97
|
+
options.some(function (option, index) {
|
|
98
|
+
if (isOptionGroup(option)) {
|
|
99
|
+
option.options.some(function (singleOption) {
|
|
100
|
+
if (singleOption.value === value) {
|
|
101
|
+
selectedOption = singleOption;
|
|
102
|
+
singleSelectionIndex = optional ? group_index + 1 : group_index;
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
group_index++;
|
|
106
|
+
});
|
|
107
|
+
} else if (option.value === value) {
|
|
108
|
+
selectedOption = option;
|
|
109
|
+
singleSelectionIndex = optional ? index + 1 : index;
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
selectedOption: selectedOption,
|
|
117
|
+
singleSelectionIndex: singleSelectionIndex
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Return the label or labels of the selected option(s) for the internal input.
|
|
123
|
+
*/
|
|
124
|
+
var getSelectedOptionLabel = exports.getSelectedOptionLabel = function getSelectedOptionLabel(placeholder, selectedOption) {
|
|
125
|
+
var _selectedOption$label;
|
|
126
|
+
return Array.isArray(selectedOption) ? selectedOption.length === 0 ? placeholder : selectedOption.map(function (option) {
|
|
127
|
+
return option.label;
|
|
128
|
+
}).join(", ") : (_selectedOption$label = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _selectedOption$label !== void 0 ? _selectedOption$label : placeholder;
|
|
129
|
+
};
|
package/select/types.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export type OptionGroup = {
|
|
|
20
20
|
export type Option = {
|
|
21
21
|
/**
|
|
22
22
|
* Element used as the icon that will be placed before the option label.
|
|
23
|
-
* It can be
|
|
23
|
+
* It can be an inline SVG or Material Symbol name. If the url option
|
|
24
24
|
* is the chosen one, take into account that the component's
|
|
25
25
|
* color styling tokens will not be applied to the image.
|
|
26
26
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
var _axeHelper = require("../../test/accessibility/axe-helper.js");
|
|
9
|
+
var _Sidenav = _interopRequireDefault(require("./Sidenav"));
|
|
10
|
+
var iconSVG = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
11
|
+
version: "1.1",
|
|
12
|
+
x: "0px",
|
|
13
|
+
y: "0px",
|
|
14
|
+
width: "438.536px",
|
|
15
|
+
height: "438.536px",
|
|
16
|
+
viewBox: "0 0 438.536 438.536",
|
|
17
|
+
fill: "currentColor"
|
|
18
|
+
}, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
|
|
19
|
+
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\nC8.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\nh274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225\nC438.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\nc0-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\nc-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"
|
|
20
|
+
})));
|
|
21
|
+
describe("Sidenav component accessibility tests", function () {
|
|
22
|
+
it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
23
|
+
var _render, container, results;
|
|
24
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
25
|
+
while (1) switch (_context.prev = _context.next) {
|
|
26
|
+
case 0:
|
|
27
|
+
_render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Sidenav["default"], {
|
|
28
|
+
title: "Title"
|
|
29
|
+
}, /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Section, null, /*#__PURE__*/_react["default"].createElement("p", null, "nav-content-test"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
|
|
30
|
+
href: "#",
|
|
31
|
+
icon: iconSVG,
|
|
32
|
+
selected: true
|
|
33
|
+
}, "Link")), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Section, null, /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Group, {
|
|
34
|
+
title: "Collapsable",
|
|
35
|
+
icon: iconSVG,
|
|
36
|
+
collapsable: true
|
|
37
|
+
}, /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
|
|
38
|
+
href: "#"
|
|
39
|
+
}, "Lorem ipsum"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
|
|
40
|
+
href: "#"
|
|
41
|
+
}, "Lorem ipsum"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
|
|
42
|
+
href: "#"
|
|
43
|
+
}, "Lorem ipsum"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
|
|
44
|
+
href: "#"
|
|
45
|
+
}, "Lorem ipsum"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
|
|
46
|
+
href: "#"
|
|
47
|
+
}, "Lorem ipsum"))))), container = _render.container;
|
|
48
|
+
_context.next = 3;
|
|
49
|
+
return (0, _axeHelper.axe)(container);
|
|
50
|
+
case 3:
|
|
51
|
+
results = _context.sent;
|
|
52
|
+
expect(results).toHaveNoViolations();
|
|
53
|
+
case 5:
|
|
54
|
+
case "end":
|
|
55
|
+
return _context.stop();
|
|
56
|
+
}
|
|
57
|
+
}, _callee);
|
|
58
|
+
})));
|
|
59
|
+
});
|
package/sidenav/Sidenav.js
CHANGED
|
@@ -17,12 +17,12 @@ var _SidenavContext = require("./SidenavContext");
|
|
|
17
17
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
18
18
|
var _Flex = _interopRequireDefault(require("../flex/Flex"));
|
|
19
19
|
var _Bleed = _interopRequireDefault(require("../bleed/Bleed"));
|
|
20
|
-
var _Icons = _interopRequireDefault(require("./Icons"));
|
|
21
20
|
var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
|
|
21
|
+
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
22
22
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
|
|
23
23
|
var _excluded = ["href", "newWindow", "selected", "icon", "onClick", "tabIndex", "children"];
|
|
24
24
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
25
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
|
25
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
26
26
|
var DxcSidenav = function DxcSidenav(_ref) {
|
|
27
27
|
var title = _ref.title,
|
|
28
28
|
children = _ref.children;
|
|
@@ -74,10 +74,12 @@ var Group = function Group(_ref4) {
|
|
|
74
74
|
}, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
|
|
75
75
|
alignItems: "center",
|
|
76
76
|
gap: "0.5rem"
|
|
77
|
-
}, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("
|
|
78
|
-
|
|
79
|
-
}) : icon, title),
|
|
80
|
-
|
|
77
|
+
}, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
78
|
+
icon: icon
|
|
79
|
+
}) : icon, title), /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
80
|
+
icon: collapsed ? "expand_more" : "expand_less"
|
|
81
|
+
})) : title && /*#__PURE__*/_react["default"].createElement(SidenavGroupTitle, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
82
|
+
icon: icon
|
|
81
83
|
}) : icon, title), !collapsed && children));
|
|
82
84
|
};
|
|
83
85
|
var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
|
|
@@ -113,9 +115,11 @@ var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
|
|
|
113
115
|
}, otherProps), /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
|
|
114
116
|
alignItems: "center",
|
|
115
117
|
gap: "0.5rem"
|
|
116
|
-
}, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("
|
|
117
|
-
|
|
118
|
-
}) : icon, children), newWindow &&
|
|
118
|
+
}, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
119
|
+
icon: icon
|
|
120
|
+
}) : icon, children), newWindow && /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
121
|
+
icon: "open_in_new"
|
|
122
|
+
}));
|
|
119
123
|
});
|
|
120
124
|
var SidenavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: 280px;\n @media (max-width: ", "rem) {\n width: 100vw;\n }\n padding: 2rem 1rem;\n background-color: ", ";\n\n overflow-y: auto;\n overflow-x: hidden;\n ::-webkit-scrollbar {\n width: 2px;\n }\n ::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 3px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 3px;\n }\n"])), _variables.responsiveSizes.medium, function (props) {
|
|
121
125
|
return props.theme.backgroundColor;
|
|
@@ -141,7 +145,7 @@ var SidenavTitle = _styledComponents["default"].div(_templateObject2 || (_templa
|
|
|
141
145
|
});
|
|
142
146
|
var Divider = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n height: 1px;\n background-color: ", ";\n\n &:last-child {\n display: none;\n }\n"])), _coreTokens["default"].color_grey_400);
|
|
143
147
|
var SidenavGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n a {\n padding: 0.5rem 1.2rem 0.5rem 2.25rem;\n }\n"])));
|
|
144
|
-
var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n\n
|
|
148
|
+
var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n span::before {\n font-size: 16px;\n }\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
|
|
145
149
|
return props.theme.groupTitleFontFamily;
|
|
146
150
|
}, function (props) {
|
|
147
151
|
return props.theme.groupTitleFontStyle;
|
|
@@ -150,7 +154,7 @@ var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_
|
|
|
150
154
|
}, function (props) {
|
|
151
155
|
return props.theme.groupTitleFontSize;
|
|
152
156
|
});
|
|
153
|
-
var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n all: unset;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n cursor: pointer;\n\n ", "\n\n &:focus, &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n color: #fff;\n background-color: ", ";\n }\n\n
|
|
157
|
+
var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n all: unset;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n cursor: pointer;\n\n ", "\n\n &:focus, &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n color: #fff;\n background-color: ", ";\n }\n span::before {\n font-size: 16px;\n }\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
|
|
154
158
|
return props.theme.groupTitleFontFamily;
|
|
155
159
|
}, function (props) {
|
|
156
160
|
return props.theme.groupTitleFontStyle;
|
|
@@ -167,7 +171,7 @@ var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObjec
|
|
|
167
171
|
}, function (props) {
|
|
168
172
|
return props.selectedGroup ? "#333" : props.theme.groupTitleActiveBackgroundColor;
|
|
169
173
|
});
|
|
170
|
-
var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n box-shadow: 0 0 0 2px transparent;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n text-decoration: ", ";\n cursor: pointer;\n\n ", "\n\n &:focus, &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n color: #fff;\n background-color: ", ";\n outline: 2px solid #0095ff;\n outline-offset: -2px;\n }\n\n
|
|
174
|
+
var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n box-shadow: 0 0 0 2px transparent;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n text-decoration: ", ";\n cursor: pointer;\n\n ", "\n\n &:focus, &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n color: #fff;\n background-color: ", ";\n outline: 2px solid #0095ff;\n outline-offset: -2px;\n }\n span::before {\n font-size: 16px;\n }\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
|
|
171
175
|
return props.theme.linkFontFamily;
|
|
172
176
|
}, function (props) {
|
|
173
177
|
return props.theme.linkFontStyle;
|
|
@@ -4,7 +4,7 @@ import DxcSelect from "../select/Select";
|
|
|
4
4
|
import DxcInset from "../inset/Inset";
|
|
5
5
|
import Title from "../../.storybook/components/Title";
|
|
6
6
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
7
|
-
import { userEvent, within } from "@storybook/
|
|
7
|
+
import { userEvent, within } from "@storybook/test";
|
|
8
8
|
import { HalstackProvider } from "../HalstackContext";
|
|
9
9
|
|
|
10
10
|
export default {
|
|
@@ -15,7 +15,6 @@ export default {
|
|
|
15
15
|
const iconSVG = (
|
|
16
16
|
<svg
|
|
17
17
|
version="1.1"
|
|
18
|
-
id="Capa_1"
|
|
19
18
|
x="0px"
|
|
20
19
|
y="0px"
|
|
21
20
|
width="438.536px"
|
|
@@ -67,15 +66,11 @@ export const Chromatic = () => (
|
|
|
67
66
|
</DxcSidenav.Group>
|
|
68
67
|
</DxcSidenav.Section>
|
|
69
68
|
<DxcSidenav.Section>
|
|
70
|
-
<DxcSidenav.Group
|
|
71
|
-
collapsable={true}
|
|
72
|
-
title="Section Group"
|
|
73
|
-
icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png"
|
|
74
|
-
>
|
|
69
|
+
<DxcSidenav.Group collapsable={true} title="Section Group" icon="filled_bottom_app_bar">
|
|
75
70
|
<DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
|
|
76
71
|
<DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
|
|
77
72
|
</DxcSidenav.Group>
|
|
78
|
-
<DxcSidenav.Link icon="
|
|
73
|
+
<DxcSidenav.Link icon="filled_bottom_app_bar" newWindow>
|
|
79
74
|
Single Link
|
|
80
75
|
</DxcSidenav.Link>
|
|
81
76
|
<DxcSidenav.Link newWindow>Single Link</DxcSidenav.Link>
|
|
@@ -99,7 +94,7 @@ export const Chromatic = () => (
|
|
|
99
94
|
<DxcSidenav.Section>
|
|
100
95
|
<DxcSidenav.Link>Single Link</DxcSidenav.Link>
|
|
101
96
|
<DxcSidenav.Group collapsable={true} title="Collapsable Group">
|
|
102
|
-
<DxcSidenav.Link icon="
|
|
97
|
+
<DxcSidenav.Link icon="filled_bottom_app_bar">Group Link</DxcSidenav.Link>
|
|
103
98
|
</DxcSidenav.Group>
|
|
104
99
|
</DxcSidenav.Section>
|
|
105
100
|
<DxcSidenav.Section>
|
|
@@ -279,4 +274,4 @@ CollapsedActiveGroup.play = async ({ canvasElement }) => {
|
|
|
279
274
|
const canvas = within(canvasElement);
|
|
280
275
|
const collapsableGroups = canvas.getAllByText("Collapsed Group");
|
|
281
276
|
userEvent.click(collapsableGroups[0]);
|
|
282
|
-
};
|
|
277
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/sidenav/Sidenav.test.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
var _react = _interopRequireDefault(require("react"));
|
|
5
5
|
var _react2 = require("@testing-library/react");
|
|
6
|
-
var _Sidenav = _interopRequireDefault(require("./Sidenav
|
|
6
|
+
var _Sidenav = _interopRequireDefault(require("./Sidenav"));
|
|
7
7
|
describe("Sidenav component tests", function () {
|
|
8
8
|
test("Sidenav renders anchors and Section correctly", function () {
|
|
9
9
|
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Sidenav["default"], null, /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Section, null, /*#__PURE__*/_react["default"].createElement("p", null, "nav-content-test"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
|
package/sidenav/types.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export type SidenavGroupPropsType = {
|
|
|
23
23
|
*/
|
|
24
24
|
collapsable?: boolean;
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* Material Symbol name or SVG icon to be displayed next to the title of the group.
|
|
27
27
|
*/
|
|
28
28
|
icon?: string | SVG;
|
|
29
29
|
/**
|
|
@@ -41,7 +41,7 @@ export type SidenavLinkPropsType = {
|
|
|
41
41
|
*/
|
|
42
42
|
newWindow?: boolean;
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
44
|
+
* The Material symbol or SVG element used as the icon that will be placed to the left of the link text.
|
|
45
45
|
*/
|
|
46
46
|
icon?: string | SVG;
|
|
47
47
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
6
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
7
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _react2 = require("@testing-library/react");
|
|
10
|
+
var _axeHelper = require("../../test/accessibility/axe-helper.js");
|
|
11
|
+
var _Slider = _interopRequireDefault(require("./Slider"));
|
|
12
|
+
// Mocking DOMRect for Radix Primitive Popover
|
|
13
|
+
global.globalThis = global;
|
|
14
|
+
global.DOMRect = {
|
|
15
|
+
fromRect: function fromRect() {
|
|
16
|
+
return {
|
|
17
|
+
top: 0,
|
|
18
|
+
left: 0,
|
|
19
|
+
bottom: 0,
|
|
20
|
+
right: 0,
|
|
21
|
+
width: 0,
|
|
22
|
+
height: 0
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
global.ResizeObserver = /*#__PURE__*/function () {
|
|
27
|
+
function ResizeObserver() {
|
|
28
|
+
(0, _classCallCheck2["default"])(this, ResizeObserver);
|
|
29
|
+
}
|
|
30
|
+
return (0, _createClass2["default"])(ResizeObserver, [{
|
|
31
|
+
key: "observe",
|
|
32
|
+
value: function observe() {}
|
|
33
|
+
}, {
|
|
34
|
+
key: "unobserve",
|
|
35
|
+
value: function unobserve() {}
|
|
36
|
+
}, {
|
|
37
|
+
key: "disconnect",
|
|
38
|
+
value: function disconnect() {}
|
|
39
|
+
}]);
|
|
40
|
+
}();
|
|
41
|
+
describe("Slider component accessibility tests", function () {
|
|
42
|
+
it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
43
|
+
var _render, container, results;
|
|
44
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
45
|
+
while (1) switch (_context.prev = _context.next) {
|
|
46
|
+
case 0:
|
|
47
|
+
_render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
48
|
+
helperText: "Helper Text",
|
|
49
|
+
margin: "medium",
|
|
50
|
+
name: "Name",
|
|
51
|
+
size: "medium",
|
|
52
|
+
label: "label",
|
|
53
|
+
step: 10,
|
|
54
|
+
minValue: 0,
|
|
55
|
+
maxValue: 100,
|
|
56
|
+
value: 50,
|
|
57
|
+
showLimitsValues: true,
|
|
58
|
+
showInput: true,
|
|
59
|
+
marks: true
|
|
60
|
+
})), container = _render.container;
|
|
61
|
+
_context.next = 3;
|
|
62
|
+
return (0, _axeHelper.axe)(container);
|
|
63
|
+
case 3:
|
|
64
|
+
results = _context.sent;
|
|
65
|
+
expect(results).toHaveNoViolations();
|
|
66
|
+
case 5:
|
|
67
|
+
case "end":
|
|
68
|
+
return _context.stop();
|
|
69
|
+
}
|
|
70
|
+
}, _callee);
|
|
71
|
+
})));
|
|
72
|
+
it("Should not have basic accessibility issues for disabled mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
73
|
+
var _render2, container, results;
|
|
74
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
75
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
76
|
+
case 0:
|
|
77
|
+
_render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
78
|
+
helperText: "Helper Text",
|
|
79
|
+
margin: "medium",
|
|
80
|
+
name: "Name",
|
|
81
|
+
size: "medium",
|
|
82
|
+
label: "label",
|
|
83
|
+
step: 10,
|
|
84
|
+
minValue: 0,
|
|
85
|
+
maxValue: 100,
|
|
86
|
+
value: 50,
|
|
87
|
+
showLimitsValues: true,
|
|
88
|
+
showInput: true,
|
|
89
|
+
marks: true,
|
|
90
|
+
disabled: true
|
|
91
|
+
})), container = _render2.container;
|
|
92
|
+
_context2.next = 3;
|
|
93
|
+
return (0, _axeHelper.axe)(container);
|
|
94
|
+
case 3:
|
|
95
|
+
results = _context2.sent;
|
|
96
|
+
expect(results).toHaveNoViolations();
|
|
97
|
+
case 5:
|
|
98
|
+
case "end":
|
|
99
|
+
return _context2.stop();
|
|
100
|
+
}
|
|
101
|
+
}, _callee2);
|
|
102
|
+
})));
|
|
103
|
+
});
|
package/slider/Slider.js
CHANGED
|
@@ -15,10 +15,9 @@ var _TextInput = _interopRequireDefault(require("../text-input/TextInput"));
|
|
|
15
15
|
var _variables = require("../common/variables");
|
|
16
16
|
var _utils = require("../common/utils");
|
|
17
17
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
18
|
-
var _uuid = require("uuid");
|
|
19
18
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
|
|
20
19
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
21
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
|
20
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
22
21
|
var DxcSlider = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
23
22
|
var _navigator;
|
|
24
23
|
var _ref$label = _ref.label,
|
|
@@ -49,17 +48,15 @@ var DxcSlider = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
49
48
|
margin = _ref.margin,
|
|
50
49
|
_ref$size = _ref.size,
|
|
51
50
|
size = _ref$size === void 0 ? "fillParent" : _ref$size;
|
|
52
|
-
var
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
var labelId = "label-".concat((0, _react.useId)());
|
|
52
|
+
var _useState = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : 0),
|
|
53
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
54
|
+
innerValue = _useState2[0],
|
|
55
|
+
setInnerValue = _useState2[1];
|
|
56
|
+
var _useState3 = (0, _react.useState)(false),
|
|
56
57
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
var _useState5 = (0, _react.useState)(false),
|
|
60
|
-
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
61
|
-
dragging = _useState6[0],
|
|
62
|
-
setDragging = _useState6[1];
|
|
58
|
+
dragging = _useState4[0],
|
|
59
|
+
setDragging = _useState4[1];
|
|
63
60
|
var colorsTheme = (0, _useTheme["default"])();
|
|
64
61
|
var isFirefox = ((_navigator = navigator) === null || _navigator === void 0 ? void 0 : _navigator.userAgent.indexOf("Firefox")) !== -1;
|
|
65
62
|
var minLabel = (0, _react.useMemo)(function () {
|
|
@@ -78,7 +75,8 @@ var DxcSlider = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
78
75
|
ticks.push( /*#__PURE__*/_react["default"].createElement(TickMark, {
|
|
79
76
|
disabled: disabled,
|
|
80
77
|
stepPosition: step * index / range,
|
|
81
|
-
stepValue: (value !== null && value !== void 0 ? value : innerValue) / maxValue
|
|
78
|
+
stepValue: (value !== null && value !== void 0 ? value : innerValue) / maxValue,
|
|
79
|
+
key: "tickmark-".concat(index, "-").concat(labelId)
|
|
82
80
|
}));
|
|
83
81
|
index++;
|
|
84
82
|
}
|