@dxc-technology/halstack-react 0.0.0-d3554d7 → 0.0.0-d3624d0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BackgroundColorContext.d.ts +1 -10
- package/BackgroundColorContext.js +5 -22
- package/HalstackContext.d.ts +1246 -0
- package/HalstackContext.js +310 -0
- package/README.md +47 -0
- package/accordion/Accordion.accessibility.test.js +71 -0
- package/accordion/Accordion.d.ts +1 -1
- package/accordion/Accordion.js +105 -181
- package/accordion/Accordion.stories.tsx +83 -149
- package/accordion/Accordion.test.js +32 -33
- package/accordion/types.d.ts +10 -17
- package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
- package/accordion-group/AccordionGroup.d.ts +3 -3
- package/accordion-group/AccordionGroup.js +38 -107
- package/accordion-group/AccordionGroup.stories.tsx +95 -68
- package/accordion-group/AccordionGroup.test.js +55 -90
- package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
- package/accordion-group/AccordionGroupAccordion.js +31 -0
- package/accordion-group/AccordionGroupContext.d.ts +3 -0
- package/accordion-group/AccordionGroupContext.js +8 -0
- package/accordion-group/types.d.ts +16 -17
- package/action-icon/ActionIcon.accessibility.test.js +63 -0
- package/action-icon/ActionIcon.d.ts +4 -0
- package/action-icon/ActionIcon.js +48 -0
- package/action-icon/ActionIcon.stories.tsx +41 -0
- package/action-icon/ActionIcon.test.js +64 -0
- package/action-icon/types.d.ts +26 -0
- package/alert/Alert.accessibility.test.js +95 -0
- package/alert/Alert.js +40 -127
- package/alert/Alert.stories.tsx +28 -0
- package/alert/Alert.test.js +29 -46
- package/alert/types.d.ts +5 -5
- package/badge/Badge.accessibility.test.js +129 -0
- package/badge/Badge.d.ts +1 -1
- package/badge/Badge.js +142 -40
- package/badge/Badge.stories.tsx +210 -0
- package/badge/Badge.test.js +30 -0
- package/badge/types.d.ts +52 -2
- package/bleed/Bleed.js +14 -55
- package/bleed/Bleed.stories.tsx +95 -95
- package/bleed/types.d.ts +26 -2
- package/box/Box.accessibility.test.js +33 -0
- package/box/Box.d.ts +1 -1
- package/box/Box.js +30 -81
- package/box/Box.stories.tsx +38 -51
- package/box/Box.test.js +2 -7
- package/box/types.d.ts +3 -14
- package/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 +169 -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 +16 -0
- package/bulleted-list/BulletedList.accessibility.test.js +119 -0
- package/bulleted-list/BulletedList.d.ts +7 -0
- package/bulleted-list/BulletedList.js +92 -0
- package/bulleted-list/BulletedList.stories.tsx +115 -0
- package/bulleted-list/types.d.ts +38 -0
- package/button/Button.accessibility.test.js +127 -0
- package/button/Button.d.ts +1 -1
- package/button/Button.js +63 -113
- package/button/Button.stories.tsx +151 -100
- package/button/Button.test.js +20 -17
- package/button/types.d.ts +12 -8
- package/card/Card.accessibility.test.js +36 -0
- package/card/Card.d.ts +1 -1
- package/card/Card.js +59 -102
- package/card/Card.stories.tsx +12 -42
- package/card/Card.test.js +11 -22
- package/card/types.d.ts +6 -11
- package/checkbox/Checkbox.accessibility.test.js +87 -0
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +143 -181
- package/checkbox/Checkbox.stories.tsx +166 -136
- package/checkbox/Checkbox.test.js +163 -29
- package/checkbox/types.d.ts +18 -6
- package/chip/Chip.accessibility.test.js +67 -0
- package/chip/Chip.js +45 -80
- package/chip/Chip.stories.tsx +107 -27
- package/chip/Chip.test.js +18 -33
- package/chip/types.d.ts +4 -4
- package/common/coreTokens.d.ts +237 -0
- package/common/coreTokens.js +184 -0
- package/common/utils.d.ts +1 -0
- package/common/utils.js +6 -12
- package/common/variables.d.ts +1392 -0
- package/common/variables.js +1081 -1190
- package/container/Container.d.ts +4 -0
- package/container/Container.js +194 -0
- package/container/Container.stories.tsx +214 -0
- package/container/types.d.ts +74 -0
- package/contextual-menu/ContextualMenu.accessibility.test.js +97 -0
- package/contextual-menu/ContextualMenu.d.ts +5 -0
- package/contextual-menu/ContextualMenu.js +88 -0
- package/contextual-menu/ContextualMenu.stories.tsx +232 -0
- package/contextual-menu/ContextualMenu.test.js +205 -0
- 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 +51 -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 +58 -0
- package/date-input/Calendar.d.ts +4 -0
- package/date-input/Calendar.js +214 -0
- package/date-input/DateInput.accessibility.test.js +228 -0
- package/date-input/DateInput.js +170 -306
- package/date-input/DateInput.stories.tsx +210 -56
- package/date-input/DateInput.test.js +708 -369
- package/date-input/DatePicker.d.ts +4 -0
- package/date-input/DatePicker.js +121 -0
- package/date-input/YearPicker.d.ts +4 -0
- package/date-input/YearPicker.js +100 -0
- package/date-input/types.d.ts +86 -22
- package/dialog/Dialog.accessibility.test.js +69 -0
- package/dialog/Dialog.d.ts +1 -1
- package/dialog/Dialog.js +56 -129
- package/dialog/Dialog.stories.tsx +326 -167
- package/dialog/Dialog.test.js +287 -20
- package/dialog/types.d.ts +18 -25
- package/divider/Divider.accessibility.test.js +33 -0
- package/divider/Divider.d.ts +4 -0
- package/divider/Divider.js +36 -0
- package/divider/Divider.stories.tsx +223 -0
- package/divider/Divider.test.js +38 -0
- package/divider/types.d.ts +21 -0
- package/dropdown/Dropdown.accessibility.test.js +180 -0
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +233 -307
- package/dropdown/Dropdown.stories.tsx +235 -57
- package/dropdown/Dropdown.test.js +575 -165
- package/dropdown/DropdownMenu.d.ts +4 -0
- package/dropdown/DropdownMenu.js +63 -0
- package/dropdown/DropdownMenuItem.d.ts +4 -0
- package/dropdown/DropdownMenuItem.js +71 -0
- package/dropdown/types.d.ts +35 -19
- package/file-input/FileInput.accessibility.test.js +160 -0
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +246 -393
- package/file-input/FileInput.stories.tsx +123 -12
- package/file-input/FileInput.test.js +292 -367
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +61 -120
- package/file-input/types.d.ts +25 -8
- package/flex/Flex.d.ts +4 -0
- package/flex/Flex.js +57 -0
- package/flex/Flex.stories.tsx +112 -0
- package/flex/types.d.ts +97 -0
- package/flex/types.js +5 -0
- package/footer/Footer.accessibility.test.js +125 -0
- package/footer/Footer.d.ts +1 -1
- package/footer/Footer.js +73 -191
- package/footer/Footer.stories.tsx +99 -21
- package/footer/Footer.test.js +33 -57
- package/footer/Icons.d.ts +3 -2
- package/footer/Icons.js +54 -23
- package/footer/types.d.ts +26 -27
- package/grid/Grid.d.ts +7 -0
- package/grid/Grid.js +76 -0
- package/grid/Grid.stories.tsx +219 -0
- package/grid/types.d.ts +115 -0
- package/grid/types.js +5 -0
- package/header/Header.accessibility.test.js +93 -0
- package/header/Header.d.ts +4 -3
- package/header/Header.js +104 -218
- package/header/Header.stories.tsx +168 -63
- package/header/Header.test.js +31 -28
- package/header/Icons.d.ts +2 -2
- package/header/Icons.js +5 -15
- package/header/types.d.ts +7 -21
- package/heading/Heading.accessibility.test.js +33 -0
- package/heading/Heading.js +10 -32
- package/heading/Heading.test.js +71 -88
- package/heading/types.d.ts +7 -7
- package/icon/Icon.accessibility.test.js +30 -0
- package/icon/Icon.d.ts +4 -0
- package/icon/Icon.js +33 -0
- package/icon/Icon.stories.tsx +28 -0
- package/icon/types.d.ts +4 -0
- package/icon/types.js +5 -0
- package/image/Image.accessibility.test.js +56 -0
- package/image/Image.d.ts +4 -0
- package/image/Image.js +70 -0
- package/image/Image.stories.tsx +129 -0
- package/image/types.d.ts +72 -0
- package/image/types.js +5 -0
- package/inset/Inset.js +14 -55
- package/inset/Inset.stories.tsx +37 -36
- package/inset/types.d.ts +26 -2
- package/layout/ApplicationLayout.d.ts +16 -6
- package/layout/ApplicationLayout.js +88 -182
- package/layout/ApplicationLayout.stories.tsx +85 -94
- package/layout/Icons.d.ts +7 -0
- package/layout/Icons.js +41 -48
- package/layout/types.d.ts +19 -35
- package/link/Link.accessibility.test.js +108 -0
- package/link/Link.d.ts +3 -2
- package/link/Link.js +65 -101
- package/link/Link.stories.tsx +157 -55
- package/link/Link.test.js +25 -53
- package/link/types.d.ts +15 -31
- package/main.d.ts +17 -13
- package/main.js +86 -101
- package/nav-tabs/NavTabs.accessibility.test.js +44 -0
- package/nav-tabs/NavTabs.d.ts +7 -0
- package/nav-tabs/NavTabs.js +93 -0
- package/nav-tabs/NavTabs.stories.tsx +279 -0
- package/nav-tabs/NavTabs.test.js +77 -0
- package/nav-tabs/NavTabsContext.d.ts +3 -0
- package/nav-tabs/NavTabsContext.js +8 -0
- package/nav-tabs/Tab.d.ts +4 -0
- package/nav-tabs/Tab.js +117 -0
- package/nav-tabs/types.d.ts +52 -0
- package/nav-tabs/types.js +5 -0
- package/number-input/NumberInput.accessibility.test.js +228 -0
- package/number-input/NumberInput.js +47 -44
- package/number-input/NumberInput.stories.tsx +44 -28
- package/number-input/NumberInput.test.js +862 -381
- package/number-input/NumberInputContext.d.ts +3 -4
- package/number-input/NumberInputContext.js +3 -14
- package/number-input/types.d.ts +34 -15
- package/package.json +54 -53
- package/paginator/Paginator.accessibility.test.js +79 -0
- package/paginator/Paginator.js +46 -100
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +280 -211
- package/paginator/types.d.ts +3 -3
- package/paragraph/Paragraph.accessibility.test.js +28 -0
- package/paragraph/Paragraph.d.ts +5 -0
- package/paragraph/Paragraph.js +22 -0
- package/paragraph/Paragraph.stories.tsx +27 -0
- package/password-input/PasswordInput.accessibility.test.js +153 -0
- package/password-input/PasswordInput.js +58 -124
- package/password-input/PasswordInput.stories.tsx +1 -33
- package/password-input/PasswordInput.test.js +162 -147
- package/password-input/types.d.ts +21 -17
- package/progress-bar/ProgressBar.accessibility.test.js +35 -0
- package/progress-bar/ProgressBar.js +68 -92
- package/progress-bar/ProgressBar.stories.tsx +93 -0
- package/progress-bar/ProgressBar.test.js +72 -44
- package/progress-bar/types.d.ts +3 -3
- package/quick-nav/QuickNav.accessibility.test.js +57 -0
- package/quick-nav/QuickNav.d.ts +4 -0
- package/quick-nav/QuickNav.js +94 -0
- package/quick-nav/QuickNav.stories.tsx +356 -0
- package/quick-nav/types.d.ts +21 -0
- package/quick-nav/types.js +5 -0
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +59 -76
- package/radio-group/RadioGroup.accessibility.test.js +97 -0
- package/radio-group/RadioGroup.js +73 -116
- package/radio-group/RadioGroup.stories.tsx +135 -17
- package/radio-group/RadioGroup.test.js +529 -467
- package/radio-group/types.d.ts +86 -9
- package/resultset-table/Icons.d.ts +7 -0
- package/resultset-table/Icons.js +47 -0
- package/resultset-table/ResultsetTable.accessibility.test.js +285 -0
- package/resultset-table/ResultsetTable.d.ts +7 -0
- package/resultset-table/ResultsetTable.js +171 -0
- package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +168 -30
- package/resultset-table/ResultsetTable.test.js +381 -0
- package/{resultsetTable → resultset-table}/types.d.ts +44 -11
- package/resultset-table/types.js +5 -0
- package/select/Listbox.d.ts +4 -0
- package/select/Listbox.js +155 -0
- package/select/Option.d.ts +4 -0
- package/select/Option.js +89 -0
- package/select/Select.accessibility.test.js +228 -0
- package/select/Select.js +237 -504
- package/select/Select.stories.tsx +533 -196
- package/select/Select.test.js +1953 -1588
- package/select/types.d.ts +65 -26
- package/sidenav/Sidenav.accessibility.test.js +59 -0
- package/sidenav/Sidenav.d.ts +6 -5
- package/sidenav/Sidenav.js +136 -71
- package/sidenav/Sidenav.stories.tsx +246 -151
- package/sidenav/Sidenav.test.js +26 -45
- package/sidenav/SidenavContext.d.ts +5 -0
- package/sidenav/SidenavContext.js +13 -0
- package/sidenav/types.d.ts +52 -26
- package/slider/Slider.accessibility.test.js +104 -0
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +149 -180
- package/slider/Slider.test.js +198 -73
- package/slider/types.d.ts +11 -3
- package/spinner/Spinner.accessibility.test.js +96 -0
- package/spinner/Spinner.js +34 -74
- package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
- package/spinner/Spinner.test.js +26 -35
- package/spinner/types.d.ts +3 -3
- package/status-light/StatusLight.accessibility.test.js +157 -0
- package/status-light/StatusLight.d.ts +4 -0
- package/status-light/StatusLight.js +51 -0
- package/status-light/StatusLight.stories.tsx +74 -0
- package/status-light/StatusLight.test.js +25 -0
- package/status-light/types.d.ts +17 -0
- package/status-light/types.js +5 -0
- package/switch/Switch.accessibility.test.js +98 -0
- package/switch/Switch.d.ts +2 -2
- package/switch/Switch.js +149 -114
- package/switch/Switch.stories.tsx +56 -67
- package/switch/Switch.test.js +146 -39
- package/switch/types.d.ts +13 -5
- package/table/DropdownTheme.js +62 -0
- package/table/Table.accessibility.test.js +93 -0
- package/table/Table.d.ts +6 -2
- package/table/Table.js +78 -35
- package/table/Table.stories.tsx +663 -0
- package/table/Table.test.js +95 -8
- package/table/types.d.ts +34 -6
- package/tabs/Tab.d.ts +4 -0
- package/tabs/Tab.js +117 -0
- package/tabs/Tabs.accessibility.test.js +56 -0
- package/tabs/Tabs.d.ts +1 -1
- package/tabs/Tabs.js +305 -145
- package/tabs/Tabs.stories.tsx +124 -14
- package/tabs/Tabs.test.js +220 -67
- package/tabs/types.d.ts +31 -17
- package/tag/Tag.accessibility.test.js +69 -0
- package/tag/Tag.js +42 -79
- package/tag/Tag.stories.tsx +24 -10
- package/tag/Tag.test.js +18 -37
- package/tag/types.d.ts +9 -9
- package/text-input/Suggestion.d.ts +4 -0
- package/text-input/Suggestion.js +67 -0
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +94 -0
- package/text-input/TextInput.accessibility.test.js +321 -0
- package/text-input/TextInput.js +332 -557
- package/text-input/TextInput.stories.tsx +282 -282
- package/text-input/TextInput.test.js +1442 -1377
- package/text-input/types.d.ts +70 -24
- package/textarea/Textarea.accessibility.test.js +155 -0
- package/textarea/Textarea.js +83 -134
- package/textarea/Textarea.stories.tsx +174 -0
- package/textarea/Textarea.test.js +168 -198
- package/textarea/types.d.ts +27 -16
- package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
- package/toggle-group/ToggleGroup.d.ts +2 -2
- package/toggle-group/ToggleGroup.js +94 -106
- package/toggle-group/ToggleGroup.stories.tsx +56 -11
- package/toggle-group/ToggleGroup.test.js +78 -66
- package/toggle-group/types.d.ts +36 -19
- package/typography/Typography.accessibility.test.js +339 -0
- package/typography/Typography.d.ts +4 -0
- package/typography/Typography.js +23 -0
- package/typography/Typography.stories.tsx +198 -0
- package/typography/types.d.ts +18 -0
- package/typography/types.js +5 -0
- package/useTheme.d.ts +1144 -1
- package/useTheme.js +4 -11
- package/useTranslatedLabels.d.ts +85 -0
- package/useTranslatedLabels.js +14 -0
- package/utils/BaseTypography.d.ts +21 -0
- package/utils/BaseTypography.js +94 -0
- package/utils/FocusLock.d.ts +13 -0
- package/utils/FocusLock.js +124 -0
- package/wizard/Wizard.accessibility.test.js +55 -0
- package/wizard/Wizard.d.ts +1 -1
- package/wizard/Wizard.js +78 -120
- package/wizard/Wizard.stories.tsx +67 -19
- package/wizard/Wizard.test.js +73 -87
- package/wizard/types.d.ts +14 -10
- package/ThemeContext.d.ts +0 -10
- package/ThemeContext.js +0 -243
- package/card/ice-cream.jpg +0 -0
- package/common/OpenSans.css +0 -81
- package/common/RequiredComponent.js +0 -32
- package/common/fonts/OpenSans-Bold.ttf +0 -0
- package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
- package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
- package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- package/common/fonts/OpenSans-Italic.ttf +0 -0
- package/common/fonts/OpenSans-Light.ttf +0 -0
- package/common/fonts/OpenSans-LightItalic.ttf +0 -0
- package/common/fonts/OpenSans-Regular.ttf +0 -0
- package/common/fonts/OpenSans-SemiBold.ttf +0 -0
- package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
- package/list/List.d.ts +0 -4
- package/list/List.js +0 -47
- package/list/List.stories.tsx +0 -95
- package/list/types.d.ts +0 -7
- package/number-input/numberInputContextTypes.d.ts +0 -19
- package/paginator/Icons.js +0 -66
- package/progress-bar/ProgressBar.stories.jsx +0 -58
- package/radio/Radio.d.ts +0 -4
- package/radio/Radio.js +0 -174
- package/radio/Radio.stories.tsx +0 -192
- package/radio/Radio.test.js +0 -71
- package/radio/types.d.ts +0 -54
- package/resultsetTable/ResultsetTable.d.ts +0 -4
- package/resultsetTable/ResultsetTable.js +0 -254
- package/resultsetTable/ResultsetTable.test.js +0 -306
- package/row/Row.d.ts +0 -3
- package/row/Row.js +0 -127
- package/row/Row.stories.tsx +0 -237
- package/row/types.d.ts +0 -10
- package/slider/Slider.stories.tsx +0 -177
- package/stack/Stack.d.ts +0 -3
- package/stack/Stack.js +0 -97
- package/stack/Stack.stories.tsx +0 -164
- package/stack/types.d.ts +0 -9
- package/table/Table.stories.jsx +0 -277
- package/text/Text.d.ts +0 -7
- package/text/Text.js +0 -30
- package/text/Text.stories.tsx +0 -19
- package/textarea/Textarea.stories.jsx +0 -157
- /package/{list → action-icon}/types.js +0 -0
- /package/{radio → breadcrumbs}/types.js +0 -0
- /package/{resultsetTable → bulleted-list}/types.js +0 -0
- /package/{row → container}/types.js +0 -0
- /package/{stack → contextual-menu}/types.js +0 -0
- /package/{number-input/numberInputContextTypes.js → divider/types.js} +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
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 _Tag = _interopRequireDefault(require("./Tag.tsx"));
|
|
10
|
+
var icon = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
11
|
+
viewBox: "0 0 24 24",
|
|
12
|
+
fill: "currentColor"
|
|
13
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
14
|
+
d: "M0 0h24v24H0z",
|
|
15
|
+
fill: "none"
|
|
16
|
+
}), /*#__PURE__*/_react["default"].createElement("path", {
|
|
17
|
+
d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
|
|
18
|
+
}));
|
|
19
|
+
describe("Tag component accessibility tests", function () {
|
|
20
|
+
it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
21
|
+
var _render, container, results;
|
|
22
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
23
|
+
while (1) switch (_context.prev = _context.next) {
|
|
24
|
+
case 0:
|
|
25
|
+
_render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
26
|
+
label: "tag-test",
|
|
27
|
+
icon: icon,
|
|
28
|
+
iconBgColor: "#fabada",
|
|
29
|
+
margin: "medium",
|
|
30
|
+
size: "medium",
|
|
31
|
+
labelPosition: "before"
|
|
32
|
+
})), container = _render.container;
|
|
33
|
+
_context.next = 3;
|
|
34
|
+
return (0, _axeHelper.axe)(container);
|
|
35
|
+
case 3:
|
|
36
|
+
results = _context.sent;
|
|
37
|
+
expect(results).toHaveNoViolations();
|
|
38
|
+
case 5:
|
|
39
|
+
case "end":
|
|
40
|
+
return _context.stop();
|
|
41
|
+
}
|
|
42
|
+
}, _callee);
|
|
43
|
+
})));
|
|
44
|
+
it("Should not have basic accessibility issues for new-window mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
45
|
+
var _render2, container, results;
|
|
46
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
47
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
48
|
+
case 0:
|
|
49
|
+
_render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
50
|
+
label: "tag-test",
|
|
51
|
+
icon: icon,
|
|
52
|
+
iconBgColor: "#fabada",
|
|
53
|
+
margin: "medium",
|
|
54
|
+
size: "medium",
|
|
55
|
+
labelPosition: "before",
|
|
56
|
+
newWindow: true
|
|
57
|
+
})), container = _render2.container;
|
|
58
|
+
_context2.next = 3;
|
|
59
|
+
return (0, _axeHelper.axe)(container);
|
|
60
|
+
case 3:
|
|
61
|
+
results = _context2.sent;
|
|
62
|
+
expect(results).toHaveNoViolations();
|
|
63
|
+
case 5:
|
|
64
|
+
case "end":
|
|
65
|
+
return _context2.stop();
|
|
66
|
+
}
|
|
67
|
+
}, _callee2);
|
|
68
|
+
})));
|
|
69
|
+
});
|
package/tag/Tag.js
CHANGED
|
@@ -1,77 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports["default"] = void 0;
|
|
11
|
-
|
|
12
9
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
-
|
|
14
10
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
15
|
-
|
|
16
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
-
|
|
18
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
-
|
|
20
13
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
21
|
-
|
|
22
|
-
var _variables = require("../common/variables.js");
|
|
23
|
-
|
|
14
|
+
var _variables = require("../common/variables");
|
|
24
15
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
|
-
|
|
26
|
-
var _utils = require("../common/utils.js");
|
|
27
|
-
|
|
16
|
+
var _utils = require("../common/utils");
|
|
28
17
|
var _Box = _interopRequireDefault(require("../box/Box"));
|
|
29
|
-
|
|
30
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6
|
|
31
|
-
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
35
|
-
|
|
18
|
+
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
19
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
20
|
+
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 && {}.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; }
|
|
36
22
|
var DxcTag = function DxcTag(_ref) {
|
|
37
23
|
var icon = _ref.icon,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
24
|
+
_ref$label = _ref.label,
|
|
25
|
+
label = _ref$label === void 0 ? "" : _ref$label,
|
|
26
|
+
linkHref = _ref.linkHref,
|
|
27
|
+
onClick = _ref.onClick,
|
|
28
|
+
_ref$iconBgColor = _ref.iconBgColor,
|
|
29
|
+
iconBgColor = _ref$iconBgColor === void 0 ? "#5f249f" : _ref$iconBgColor,
|
|
30
|
+
_ref$labelPosition = _ref.labelPosition,
|
|
31
|
+
labelPosition = _ref$labelPosition === void 0 ? "after" : _ref$labelPosition,
|
|
32
|
+
_ref$newWindow = _ref.newWindow,
|
|
33
|
+
newWindow = _ref$newWindow === void 0 ? false : _ref$newWindow,
|
|
34
|
+
margin = _ref.margin,
|
|
35
|
+
_ref$size = _ref.size,
|
|
36
|
+
size = _ref$size === void 0 ? "fitContent" : _ref$size,
|
|
37
|
+
_ref$tabIndex = _ref.tabIndex,
|
|
38
|
+
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
53
39
|
var colorsTheme = (0, _useTheme["default"])();
|
|
54
|
-
|
|
55
40
|
var _useState = (0, _react.useState)(false),
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
41
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
42
|
+
isHovered = _useState2[0],
|
|
43
|
+
changeIsHovered = _useState2[1];
|
|
60
44
|
var clickHandler = function clickHandler() {
|
|
61
45
|
onClick && onClick();
|
|
62
46
|
};
|
|
63
|
-
|
|
64
47
|
var tagContent = /*#__PURE__*/_react["default"].createElement(_Box["default"], {
|
|
65
48
|
size: size,
|
|
66
49
|
shadowDepth: isHovered && (onClick || linkHref) && 2 || 1
|
|
67
|
-
}, /*#__PURE__*/_react["default"].createElement(TagContent, {
|
|
68
|
-
labelPosition: labelPosition
|
|
69
|
-
}, /*#__PURE__*/_react["default"].createElement(IconContainer, {
|
|
50
|
+
}, /*#__PURE__*/_react["default"].createElement(TagContent, null, labelPosition === "before" && size !== "small" && label && /*#__PURE__*/_react["default"].createElement(TagLabel, null, label), icon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
|
|
70
51
|
iconBgColor: iconBgColor
|
|
71
|
-
},
|
|
72
|
-
|
|
73
|
-
}) : icon)
|
|
74
|
-
|
|
52
|
+
}, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
53
|
+
icon: icon
|
|
54
|
+
}) : icon), labelPosition === "after" && size !== "small" && label && /*#__PURE__*/_react["default"].createElement(TagLabel, null, label)));
|
|
75
55
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
76
56
|
theme: colorsTheme.tag
|
|
77
57
|
}, /*#__PURE__*/_react["default"].createElement(StyledDxcTag, {
|
|
@@ -93,19 +73,16 @@ var DxcTag = function DxcTag(_ref) {
|
|
|
93
73
|
target: newWindow ? "_blank" : "_self"
|
|
94
74
|
}, tagContent) : tagContent));
|
|
95
75
|
};
|
|
96
|
-
|
|
97
76
|
var sizes = {
|
|
98
77
|
small: "42px",
|
|
99
78
|
medium: "240px",
|
|
100
79
|
large: "480px",
|
|
101
80
|
fillParent: "100%",
|
|
102
|
-
fitContent: "
|
|
81
|
+
fitContent: "fit-content"
|
|
103
82
|
};
|
|
104
|
-
|
|
105
83
|
var calculateWidth = function calculateWidth(margin, size) {
|
|
106
84
|
return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
|
|
107
85
|
};
|
|
108
|
-
|
|
109
86
|
var StyledDxcTag = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n cursor: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n width: ", ";\n height: ", ";\n"])), function (_ref2) {
|
|
110
87
|
var hasAction = _ref2.hasAction;
|
|
111
88
|
return hasAction && "pointer" || "unset";
|
|
@@ -114,47 +91,32 @@ var StyledDxcTag = _styledComponents["default"].div(_templateObject || (_templat
|
|
|
114
91
|
return margin && (0, _typeof2["default"])(margin) !== "object" ? _variables.spaces[margin] : "0px";
|
|
115
92
|
}, function (_ref4) {
|
|
116
93
|
var margin = _ref4.margin;
|
|
117
|
-
return margin && margin.top ? _variables.spaces[margin.top] : "";
|
|
94
|
+
return margin && (0, _typeof2["default"])(margin) === "object" && margin.top ? _variables.spaces[margin.top] : "";
|
|
118
95
|
}, function (_ref5) {
|
|
119
96
|
var margin = _ref5.margin;
|
|
120
|
-
return margin && margin.right ? _variables.spaces[margin.right] : "";
|
|
97
|
+
return margin && (0, _typeof2["default"])(margin) === "object" && margin.right ? _variables.spaces[margin.right] : "";
|
|
121
98
|
}, function (_ref6) {
|
|
122
99
|
var margin = _ref6.margin;
|
|
123
|
-
return margin && margin.bottom ? _variables.spaces[margin.bottom] : "";
|
|
100
|
+
return margin && (0, _typeof2["default"])(margin) === "object" && margin.bottom ? _variables.spaces[margin.bottom] : "";
|
|
124
101
|
}, function (_ref7) {
|
|
125
102
|
var margin = _ref7.margin;
|
|
126
|
-
return margin && margin.left ? _variables.spaces[margin.left] : "";
|
|
103
|
+
return margin && (0, _typeof2["default"])(margin) === "object" && margin.left ? _variables.spaces[margin.left] : "";
|
|
127
104
|
}, function (props) {
|
|
128
105
|
return calculateWidth(props.margin, props.size);
|
|
129
106
|
}, function (props) {
|
|
130
107
|
return props.theme.height;
|
|
131
108
|
});
|
|
132
|
-
|
|
133
|
-
var TagContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n flex-direction: ", ";\n width: 100%;\n height: ", ";\n"])), function (_ref8) {
|
|
134
|
-
var labelPosition = _ref8.labelPosition;
|
|
135
|
-
return labelPosition === "before" && "row-reverse" || "row";
|
|
136
|
-
}, function (props) {
|
|
109
|
+
var TagContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n width: 100%;\n height: ", ";\n"])), function (props) {
|
|
137
110
|
return props.theme.height;
|
|
138
111
|
});
|
|
139
|
-
|
|
140
112
|
var StyledLink = _styledComponents["default"].a(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n text-decoration: none;\n border-radius: 4px;\n width: 100%;\n :focus {\n outline: 2px solid ", ";\n outline-offset: 0px;\n }\n"])), function (props) {
|
|
141
113
|
return props.theme.focusColor;
|
|
142
114
|
});
|
|
143
|
-
|
|
144
115
|
var StyledButton = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n background: none;\n border-radius: 4px;\n border: none;\n padding: 0;\n cursor: pointer;\n font-family: inherit;\n width: 100%;\n :focus {\n outline: 2px solid ", ";\n }\n"])), function (props) {
|
|
145
116
|
return props.theme.focusColor;
|
|
146
117
|
});
|
|
147
|
-
|
|
148
|
-
var
|
|
149
|
-
|
|
150
|
-
var TagIconContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
|
|
151
|
-
return props.theme.iconWidth;
|
|
152
|
-
}, function (props) {
|
|
153
|
-
return props.theme.iconHeight;
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
var IconContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n background: ", ";\n width: ", ";\n height: 100%;\n justify-content: center;\n align-items: center;\n color: ", ";\n min-width: ", ";\n"])), function (_ref9) {
|
|
157
|
-
var iconBgColor = _ref9.iconBgColor;
|
|
118
|
+
var IconContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n background: ", ";\n width: ", ";\n height: 100%;\n justify-content: center;\n align-items: center;\n color: ", ";\n min-width: ", ";\n overflow: hidden;\n font-size: 24px;\n\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (_ref8) {
|
|
119
|
+
var iconBgColor = _ref8.iconBgColor;
|
|
158
120
|
return iconBgColor;
|
|
159
121
|
}, function (props) {
|
|
160
122
|
return props.theme.iconSectionWidth;
|
|
@@ -162,9 +124,12 @@ var IconContainer = _styledComponents["default"].div(_templateObject7 || (_templ
|
|
|
162
124
|
return props.theme.iconColor;
|
|
163
125
|
}, function (props) {
|
|
164
126
|
return props.theme.iconSectionWidth;
|
|
127
|
+
}, function (props) {
|
|
128
|
+
return props.theme.iconWidth;
|
|
129
|
+
}, function (props) {
|
|
130
|
+
return props.theme.iconHeight;
|
|
165
131
|
});
|
|
166
|
-
|
|
167
|
-
var TagLabel = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n flex-grow: 1;\n text-align: center;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n"])), function (props) {
|
|
132
|
+
var TagLabel = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n flex-grow: 1;\n text-align: center;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n"])), function (props) {
|
|
168
133
|
return props.theme.fontFamily;
|
|
169
134
|
}, function (props) {
|
|
170
135
|
return props.theme.fontSize;
|
|
@@ -183,6 +148,4 @@ var TagLabel = _styledComponents["default"].div(_templateObject8 || (_templateOb
|
|
|
183
148
|
}, function (props) {
|
|
184
149
|
return props.theme.labelPaddingRight;
|
|
185
150
|
});
|
|
186
|
-
|
|
187
|
-
var _default = DxcTag;
|
|
188
|
-
exports["default"] = _default;
|
|
151
|
+
var _default = exports["default"] = DxcTag;
|
package/tag/Tag.stories.tsx
CHANGED
|
@@ -3,6 +3,7 @@ import { userEvent, within } from "@storybook/testing-library";
|
|
|
3
3
|
import Title from "../../.storybook/components/Title";
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
5
|
import DxcTag from "./Tag";
|
|
6
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
6
7
|
|
|
7
8
|
export default {
|
|
8
9
|
title: "Tag",
|
|
@@ -23,6 +24,13 @@ const largeIcon = (
|
|
|
23
24
|
</svg>
|
|
24
25
|
);
|
|
25
26
|
|
|
27
|
+
const opinionatedTheme = {
|
|
28
|
+
tag: {
|
|
29
|
+
fontColor: "#000000",
|
|
30
|
+
iconColor: "#ffffff",
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
26
34
|
export const Chromatic = () => (
|
|
27
35
|
<>
|
|
28
36
|
<ExampleContainer>
|
|
@@ -39,11 +47,11 @@ export const Chromatic = () => (
|
|
|
39
47
|
</ExampleContainer>
|
|
40
48
|
<ExampleContainer>
|
|
41
49
|
<Title title="With label and icon" theme="light" level={4} />
|
|
42
|
-
<DxcTag label="Tag" icon="
|
|
50
|
+
<DxcTag label="Tag" icon="person" />
|
|
43
51
|
</ExampleContainer>
|
|
44
52
|
<ExampleContainer>
|
|
45
53
|
<Title title="With right icon" theme="light" level={4} />
|
|
46
|
-
<DxcTag label="Tag" icon=
|
|
54
|
+
<DxcTag label="Tag" icon="group" labelPosition="before" />
|
|
47
55
|
</ExampleContainer>
|
|
48
56
|
<ExampleContainer>
|
|
49
57
|
<Title title="Icon background color" theme="light" level={4} />
|
|
@@ -56,7 +64,7 @@ export const Chromatic = () => (
|
|
|
56
64
|
<ExampleContainer pseudoState="pseudo-focus">
|
|
57
65
|
<Title title="With action focused" theme="light" level={4} />
|
|
58
66
|
<DxcTag
|
|
59
|
-
icon=
|
|
67
|
+
icon="done"
|
|
60
68
|
label="Tag"
|
|
61
69
|
onClick={() => {
|
|
62
70
|
console.log("click");
|
|
@@ -95,31 +103,37 @@ export const Chromatic = () => (
|
|
|
95
103
|
<Title title="Sizes" theme="light" level={2} />
|
|
96
104
|
<ExampleContainer>
|
|
97
105
|
<Title title="Small size" theme="light" level={4} />
|
|
98
|
-
<DxcTag label="Small" size="small" />
|
|
106
|
+
<DxcTag label="Small" size="small" icon={icon} />
|
|
99
107
|
</ExampleContainer>
|
|
100
108
|
<ExampleContainer>
|
|
101
109
|
<Title title="Medium size" theme="light" level={4} />
|
|
102
|
-
<DxcTag label="Medium size medium s" size="medium" />
|
|
110
|
+
<DxcTag label="Medium size medium s" size="medium" icon="person" />
|
|
103
111
|
</ExampleContainer>
|
|
104
112
|
<ExampleContainer>
|
|
105
113
|
<Title title="Medium size with ellipsis" theme="light" level={4} />
|
|
106
|
-
<DxcTag label="Medium size medium si medium" size="medium" />
|
|
114
|
+
<DxcTag label="Medium size medium si medium" size="medium" icon={icon} />
|
|
107
115
|
</ExampleContainer>
|
|
108
116
|
<ExampleContainer>
|
|
109
117
|
<Title title="Large size" theme="light" level={4} />
|
|
110
|
-
<DxcTag label="Large size large size large size large size large size" size="large" />
|
|
118
|
+
<DxcTag label="Large size large size large size large size large size" size="large" icon={icon} />
|
|
111
119
|
</ExampleContainer>
|
|
112
120
|
<ExampleContainer>
|
|
113
121
|
<Title title="Large size with ellipsis" theme="light" level={4} />
|
|
114
|
-
<DxcTag label="Large size large size large size large size large size large size" size="large" />
|
|
122
|
+
<DxcTag label="Large size large size large size large size large size large size" size="large" icon={icon} />
|
|
115
123
|
</ExampleContainer>
|
|
116
124
|
<ExampleContainer>
|
|
117
125
|
<Title title="FillParent size" theme="light" level={4} />
|
|
118
|
-
<DxcTag label="FillParent" size="fillParent" />
|
|
126
|
+
<DxcTag label="FillParent" size="fillParent" icon={icon} />
|
|
119
127
|
</ExampleContainer>
|
|
120
128
|
<ExampleContainer>
|
|
121
129
|
<Title title="FitContent size" theme="light" level={4} />
|
|
122
|
-
<DxcTag label="FitContent" size="fitContent" />
|
|
130
|
+
<DxcTag label="FitContent" size="fitContent" icon={icon} />
|
|
131
|
+
</ExampleContainer>
|
|
132
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
133
|
+
<ExampleContainer>
|
|
134
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
135
|
+
<DxcTag label="Tag" icon={icon} />
|
|
136
|
+
</HalstackProvider>
|
|
123
137
|
</ExampleContainer>
|
|
124
138
|
</>
|
|
125
139
|
);
|
package/tag/Tag.test.js
CHANGED
|
@@ -1,60 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _react = _interopRequireDefault(require("react"));
|
|
6
|
-
|
|
7
5
|
var _react2 = require("@testing-library/react");
|
|
8
|
-
|
|
9
|
-
var _Tag = _interopRequireDefault(require("./Tag"));
|
|
10
|
-
|
|
6
|
+
var _Tag = _interopRequireDefault(require("./Tag.tsx"));
|
|
11
7
|
describe("Tag component tests", function () {
|
|
12
8
|
test("Tag renders with correct label", function () {
|
|
13
9
|
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
label: "tag-test"
|
|
11
|
+
})),
|
|
12
|
+
getByText = _render.getByText;
|
|
18
13
|
expect(getByText("tag-test")).toBeTruthy();
|
|
19
14
|
});
|
|
20
15
|
test("Tag renders with correct label before", function () {
|
|
21
16
|
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
label: "tag-test",
|
|
18
|
+
labelPosition: "before"
|
|
19
|
+
})),
|
|
20
|
+
getByText = _render2.getByText;
|
|
27
21
|
expect(getByText("tag-test")).toBeTruthy();
|
|
28
22
|
});
|
|
29
|
-
test("Tag renders with correct icon", function () {
|
|
30
|
-
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
31
|
-
label: "tag-test",
|
|
32
|
-
icon: "/test-icon.jpg"
|
|
33
|
-
})),
|
|
34
|
-
getByRole = _render3.getByRole;
|
|
35
|
-
|
|
36
|
-
expect(getByRole("img").getAttribute("src")).toBe("/test-icon.jpg");
|
|
37
|
-
});
|
|
38
23
|
test("Tag renders with link href", function () {
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
24
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
25
|
+
label: "tag-test",
|
|
26
|
+
linkHref: "/test/page"
|
|
27
|
+
})),
|
|
28
|
+
getByRole = _render3.getByRole;
|
|
45
29
|
expect(getByRole("link").getAttribute("href")).toBe("/test/page");
|
|
46
30
|
});
|
|
47
31
|
test("Call correct function on click", function () {
|
|
48
32
|
var onClick = jest.fn();
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
getByText = _render5.getByText;
|
|
55
|
-
|
|
33
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
34
|
+
label: "tag-test",
|
|
35
|
+
onClick: onClick
|
|
36
|
+
})),
|
|
37
|
+
getByText = _render4.getByText;
|
|
56
38
|
_react2.fireEvent.click(getByText("tag-test"));
|
|
57
|
-
|
|
58
39
|
expect(onClick).toHaveBeenCalled();
|
|
59
40
|
});
|
|
60
41
|
});
|
package/tag/types.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
|
|
3
|
+
type Margin = {
|
|
4
4
|
top?: Space;
|
|
5
5
|
bottom?: Space;
|
|
6
6
|
left?: Space;
|
|
7
7
|
right?: Space;
|
|
8
8
|
};
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
|
|
10
|
+
type TagCommonProps = {
|
|
11
11
|
/**
|
|
12
12
|
* If defined, the tag will be displayed as an anchor, using this prop as "href".
|
|
13
13
|
* Component will show some visual feedback on hover.
|
|
@@ -45,9 +45,9 @@ declare type TagCommonProps = {
|
|
|
45
45
|
*/
|
|
46
46
|
tabIndex?: number;
|
|
47
47
|
};
|
|
48
|
-
|
|
48
|
+
type TagLabelProps = TagCommonProps & {
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
50
|
+
* Material Symbol name or SVG element used as the icon that will be placed next to the label.
|
|
51
51
|
*/
|
|
52
52
|
icon?: string | SVG;
|
|
53
53
|
/**
|
|
@@ -55,9 +55,9 @@ declare type TagLabelProps = TagCommonProps & {
|
|
|
55
55
|
*/
|
|
56
56
|
label: string;
|
|
57
57
|
};
|
|
58
|
-
|
|
58
|
+
type TagIconProps = TagCommonProps & {
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
60
|
+
* Material Symbol name or SVG element used as the icon that will be placed next to the label.
|
|
61
61
|
*/
|
|
62
62
|
icon: string | SVG;
|
|
63
63
|
/**
|
|
@@ -65,5 +65,5 @@ declare type TagIconProps = TagCommonProps & {
|
|
|
65
65
|
*/
|
|
66
66
|
label?: string;
|
|
67
67
|
};
|
|
68
|
-
|
|
68
|
+
type Props = TagLabelProps | TagIconProps;
|
|
69
69
|
export default Props;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
12
|
+
var _templateObject, _templateObject2;
|
|
13
|
+
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); }
|
|
14
|
+
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; }
|
|
15
|
+
var transformSpecialChars = function transformSpecialChars(str) {
|
|
16
|
+
var specialCharsRegex = /[\\*()\[\]{}+?/]/;
|
|
17
|
+
var value = str;
|
|
18
|
+
if (specialCharsRegex.test(value)) {
|
|
19
|
+
var regexAsString = specialCharsRegex.toString().split("");
|
|
20
|
+
var uniqueSpecialChars = regexAsString.filter(function (item, index) {
|
|
21
|
+
return regexAsString.indexOf(item) === index;
|
|
22
|
+
});
|
|
23
|
+
uniqueSpecialChars.forEach(function (specialChar) {
|
|
24
|
+
if (str.includes(specialChar)) value = value.replace(specialChar, "\\" + specialChar);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return value;
|
|
28
|
+
};
|
|
29
|
+
var Suggestion = function Suggestion(_ref) {
|
|
30
|
+
var id = _ref.id,
|
|
31
|
+
value = _ref.value,
|
|
32
|
+
_onClick = _ref.onClick,
|
|
33
|
+
suggestion = _ref.suggestion,
|
|
34
|
+
isLast = _ref.isLast,
|
|
35
|
+
visuallyFocused = _ref.visuallyFocused,
|
|
36
|
+
highlighted = _ref.highlighted;
|
|
37
|
+
var matchedSuggestion = (0, _react.useMemo)(function () {
|
|
38
|
+
var regEx = new RegExp(transformSpecialChars(value), "i");
|
|
39
|
+
return {
|
|
40
|
+
matchedWords: suggestion.match(regEx),
|
|
41
|
+
noMatchedWords: suggestion.replace(regEx, "")
|
|
42
|
+
};
|
|
43
|
+
}, [value, suggestion]);
|
|
44
|
+
return /*#__PURE__*/_react["default"].createElement(SuggestionContainer, {
|
|
45
|
+
id: id,
|
|
46
|
+
onClick: function onClick() {
|
|
47
|
+
_onClick(suggestion);
|
|
48
|
+
},
|
|
49
|
+
visuallyFocused: visuallyFocused,
|
|
50
|
+
role: "option",
|
|
51
|
+
"aria-selected": visuallyFocused ? true : undefined
|
|
52
|
+
}, /*#__PURE__*/_react["default"].createElement(StyledSuggestion, {
|
|
53
|
+
isLast: isLast,
|
|
54
|
+
visuallyFocused: visuallyFocused
|
|
55
|
+
}, highlighted ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("strong", null, matchedSuggestion.matchedWords), matchedSuggestion.noMatchedWords) : suggestion));
|
|
56
|
+
};
|
|
57
|
+
var SuggestionContainer = _styledComponents["default"].li(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0 0.5rem;\n line-height: 1.715em;\n cursor: pointer;\n box-shadow: inset 0 0 0 2px\n ", ";\n\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
|
|
58
|
+
return props.visuallyFocused ? props.theme.focusListOptionBorderColor : "transparent";
|
|
59
|
+
}, function (props) {
|
|
60
|
+
return props.theme.hoverListOptionBackgroundColor;
|
|
61
|
+
}, function (props) {
|
|
62
|
+
return props.theme.activeListOptionBackgroundColor;
|
|
63
|
+
});
|
|
64
|
+
var StyledSuggestion = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding: 0.25rem 0.5rem 0.188rem 0.5rem;\n ", ";\n"])), function (props) {
|
|
65
|
+
return props.isLast || props.visuallyFocused ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listOptionDividerColor);
|
|
66
|
+
});
|
|
67
|
+
var _default = exports["default"] = /*#__PURE__*/_react["default"].memo(Suggestion);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { SuggestionsProps } from "./types";
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ id, value, suggestions, visualFocusIndex, highlightedSuggestions, searchHasErrors, isSearching, suggestionOnClick, styles, }: SuggestionsProps) => JSX.Element>;
|
|
4
|
+
export default _default;
|