@dxc-technology/halstack-react 0.0.0-74c93cf → 0.0.0-74dd241
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 +2 -5
- package/HalstackContext.js +6 -6
- package/accordion/Accordion.accessibility.test.d.ts +1 -0
- package/accordion/Accordion.accessibility.test.js +71 -0
- package/accordion/Accordion.js +9 -10
- package/accordion/Accordion.stories.tsx +4 -15
- package/accordion/Accordion.test.d.ts +1 -0
- package/accordion/Accordion.test.js +3 -3
- 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/action-icon/ActionIcon.accessibility.test.d.ts +1 -0
- package/action-icon/ActionIcon.accessibility.test.js +63 -0
- package/action-icon/ActionIcon.test.d.ts +1 -0
- package/action-icon/ActionIcon.test.js +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/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 +16 -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 +1 -1
- 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.js +3 -3
- package/common/variables.d.ts +2 -5
- package/common/variables.js +68 -71
- package/container/Container.stories.tsx +3 -3
- 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 +89 -52
- package/contextual-menu/ContextualMenu.stories.tsx +115 -74
- 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 +50 -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 +50 -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.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 +16 -15
- package/dropdown/Dropdown.stories.tsx +11 -11
- 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 +2 -1
- 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/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 +2 -1
- package/main.js +8 -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 +1 -1
- package/number-input/NumberInput.stories.tsx +2 -16
- package/number-input/NumberInput.test.d.ts +1 -0
- package/number-input/NumberInput.test.js +6 -7
- package/package.json +31 -27
- 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 +7 -7
- package/password-input/PasswordInput.stories.tsx +1 -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.js +3 -2
- package/resultset-table/ResultsetTable.stories.tsx +13 -1
- package/resultset-table/ResultsetTable.test.d.ts +1 -0
- package/resultset-table/ResultsetTable.test.js +2 -4
- package/select/Listbox.js +24 -16
- package/select/Option.js +12 -10
- package/select/Select.accessibility.test.d.ts +1 -0
- package/select/Select.accessibility.test.js +227 -0
- package/select/Select.js +38 -28
- package/select/Select.stories.tsx +60 -112
- package/select/Select.test.d.ts +1 -0
- package/select/Select.test.js +371 -474
- 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.js +6 -2
- 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 +1 -1
- package/table/Table.stories.tsx +13 -1
- package/table/Table.test.d.ts +1 -0
- package/table/Table.test.js +2 -4
- 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 +34 -30
- package/text-input/TextInput.stories.tsx +10 -7
- 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/typography/Typography.accessibility.test.d.ts +1 -0
- package/typography/Typography.accessibility.test.js +339 -0
- package/typography/Typography.stories.tsx +1 -3
- package/useTheme.d.ts +2 -5
- package/utils/BaseTypography.js +1 -1
- package/utils/FocusLock.js +3 -2
- 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,92 @@
|
|
|
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 _Table = _interopRequireDefault(require("./Table"));
|
|
12
|
+
var _disabledRules = require("../../test/accessibility/rules/specific/table/disabledRules.js");
|
|
13
|
+
// TODO: REMOVE
|
|
14
|
+
|
|
15
|
+
var disabledRules = {
|
|
16
|
+
rules: _disabledRules.disabledRules.reduce(function (rulesObj, rule) {
|
|
17
|
+
rulesObj[rule] = {
|
|
18
|
+
enabled: false
|
|
19
|
+
};
|
|
20
|
+
return rulesObj;
|
|
21
|
+
}, {})
|
|
22
|
+
};
|
|
23
|
+
global.globalThis = global;
|
|
24
|
+
global.DOMRect = {
|
|
25
|
+
fromRect: function fromRect() {
|
|
26
|
+
return {
|
|
27
|
+
top: 0,
|
|
28
|
+
left: 0,
|
|
29
|
+
bottom: 0,
|
|
30
|
+
right: 0,
|
|
31
|
+
width: 0,
|
|
32
|
+
height: 0
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
global.ResizeObserver = /*#__PURE__*/function () {
|
|
37
|
+
function ResizeObserver() {
|
|
38
|
+
(0, _classCallCheck2["default"])(this, ResizeObserver);
|
|
39
|
+
}
|
|
40
|
+
return (0, _createClass2["default"])(ResizeObserver, [{
|
|
41
|
+
key: "observe",
|
|
42
|
+
value: function observe() {}
|
|
43
|
+
}, {
|
|
44
|
+
key: "unobserve",
|
|
45
|
+
value: function unobserve() {}
|
|
46
|
+
}, {
|
|
47
|
+
key: "disconnect",
|
|
48
|
+
value: function disconnect() {}
|
|
49
|
+
}]);
|
|
50
|
+
}();
|
|
51
|
+
describe("Table component accessibility tests", function () {
|
|
52
|
+
it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
53
|
+
var _render, container, results;
|
|
54
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
55
|
+
while (1) switch (_context.prev = _context.next) {
|
|
56
|
+
case 0:
|
|
57
|
+
_render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Table["default"], {
|
|
58
|
+
margin: "medium",
|
|
59
|
+
mode: "default"
|
|
60
|
+
}, /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", null, "header-1"), /*#__PURE__*/_react["default"].createElement("th", null, "header-2"), /*#__PURE__*/_react["default"].createElement("th", null, "header-3"))), /*#__PURE__*/_react["default"].createElement("tbody", null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-1"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-2"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-3")), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-4"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-5"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-6"))))), container = _render.container;
|
|
61
|
+
_context.next = 3;
|
|
62
|
+
return (0, _axeHelper.axe)(container, disabledRules);
|
|
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 reduced 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(_Table["default"], {
|
|
78
|
+
margin: "medium",
|
|
79
|
+
mode: "reduced"
|
|
80
|
+
}, /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", null, "header-1"), /*#__PURE__*/_react["default"].createElement("th", null, "header-2"), /*#__PURE__*/_react["default"].createElement("th", null, "header-3"))), /*#__PURE__*/_react["default"].createElement("tbody", null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-1"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-2"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-3")), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-4"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-5"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-6"))))), container = _render2.container;
|
|
81
|
+
_context2.next = 3;
|
|
82
|
+
return (0, _axeHelper.axe)(container, disabledRules);
|
|
83
|
+
case 3:
|
|
84
|
+
results = _context2.sent;
|
|
85
|
+
expect(results).toHaveNoViolations();
|
|
86
|
+
case 5:
|
|
87
|
+
case "end":
|
|
88
|
+
return _context2.stop();
|
|
89
|
+
}
|
|
90
|
+
}, _callee2);
|
|
91
|
+
})));
|
|
92
|
+
});
|
package/table/Table.js
CHANGED
|
@@ -20,7 +20,7 @@ var _HalstackContext = require("../HalstackContext");
|
|
|
20
20
|
var _ActionIcon = _interopRequireDefault(require("../action-icon/ActionIcon"));
|
|
21
21
|
var _templateObject, _templateObject2;
|
|
22
22
|
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); }
|
|
23
|
-
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 &&
|
|
23
|
+
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; }
|
|
24
24
|
var overwriteTheme = function overwriteTheme(theme) {
|
|
25
25
|
var newTheme = _DropdownTheme["default"];
|
|
26
26
|
newTheme.dropdown.buttonBackgroundColor = theme.table.actionBackgroundColor;
|
package/table/Table.stories.tsx
CHANGED
|
@@ -3,11 +3,23 @@ import DxcTable from "./Table";
|
|
|
3
3
|
import Title from "../../.storybook/components/Title";
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
5
|
import { HalstackProvider } from "../HalstackContext";
|
|
6
|
-
import { userEvent, within } from "@storybook/
|
|
6
|
+
import { userEvent, within } from "@storybook/test";
|
|
7
|
+
import { disabledRules } from "../../test/accessibility/rules/specific/table/disabledRules";
|
|
8
|
+
import preview from "../../.storybook/preview";
|
|
7
9
|
|
|
8
10
|
export default {
|
|
9
11
|
title: "Table",
|
|
10
12
|
component: DxcTable,
|
|
13
|
+
parameters: {
|
|
14
|
+
a11y: {
|
|
15
|
+
config: {
|
|
16
|
+
rules: [
|
|
17
|
+
...disabledRules.map((ruleId) => ({ id: ruleId, reviewOnFail: true })),
|
|
18
|
+
...preview?.parameters?.a11y?.config?.rules,
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
11
23
|
};
|
|
12
24
|
|
|
13
25
|
const opinionatedTheme = {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/table/Table.test.js
CHANGED
|
@@ -7,7 +7,7 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
7
7
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _react2 = require("@testing-library/react");
|
|
10
|
-
var _Table = _interopRequireDefault(require("./Table
|
|
10
|
+
var _Table = _interopRequireDefault(require("./Table"));
|
|
11
11
|
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
12
12
|
global.globalThis = global;
|
|
13
13
|
global.DOMRect = {
|
|
@@ -26,7 +26,7 @@ global.ResizeObserver = /*#__PURE__*/function () {
|
|
|
26
26
|
function ResizeObserver() {
|
|
27
27
|
(0, _classCallCheck2["default"])(this, ResizeObserver);
|
|
28
28
|
}
|
|
29
|
-
(0, _createClass2["default"])(ResizeObserver, [{
|
|
29
|
+
return (0, _createClass2["default"])(ResizeObserver, [{
|
|
30
30
|
key: "observe",
|
|
31
31
|
value: function observe() {}
|
|
32
32
|
}, {
|
|
@@ -36,7 +36,6 @@ global.ResizeObserver = /*#__PURE__*/function () {
|
|
|
36
36
|
key: "disconnect",
|
|
37
37
|
value: function disconnect() {}
|
|
38
38
|
}]);
|
|
39
|
-
return ResizeObserver;
|
|
40
39
|
}();
|
|
41
40
|
var icon = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
42
41
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -72,7 +71,6 @@ describe("Table component tests", function () {
|
|
|
72
71
|
onSelectOption = jest.fn();
|
|
73
72
|
onClick = jest.fn();
|
|
74
73
|
actions = [{
|
|
75
|
-
icon: icon,
|
|
76
74
|
title: "icon1",
|
|
77
75
|
onClick: onSelectOption,
|
|
78
76
|
options: [{
|
package/tabs/Tab.js
CHANGED
|
@@ -12,9 +12,10 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
|
12
12
|
var _Badge = _interopRequireDefault(require("../badge/Badge"));
|
|
13
13
|
var _BaseTypography = _interopRequireDefault(require("../utils/BaseTypography"));
|
|
14
14
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
15
|
+
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
15
16
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
16
17
|
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); }
|
|
17
|
-
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 &&
|
|
18
|
+
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; }
|
|
18
19
|
var Tab = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
19
20
|
var active = _ref.active,
|
|
20
21
|
tab = _ref.tab,
|
|
@@ -51,8 +52,8 @@ var Tab = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
51
52
|
}, tab.icon && /*#__PURE__*/_react["default"].createElement(TabIconContainer, {
|
|
52
53
|
hasLabelAndIcon: hasLabelAndIcon,
|
|
53
54
|
iconPosition: iconPosition
|
|
54
|
-
}, typeof tab.icon === "string" ? /*#__PURE__*/_react["default"].createElement("
|
|
55
|
-
|
|
55
|
+
}, typeof tab.icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
56
|
+
icon: tab.icon
|
|
56
57
|
}) : tab.icon), /*#__PURE__*/_react["default"].createElement(_BaseTypography["default"], {
|
|
57
58
|
color: tab.isDisabled ? colorsTheme.tabs.disabledFontColor : active ? colorsTheme.tabs.selectedFontColor : colorsTheme.tabs.unselectedFontColor,
|
|
58
59
|
fontFamily: colorsTheme.tabs.fontFamily,
|
|
@@ -71,7 +72,7 @@ var Tab = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
71
72
|
label: typeof tab.notificationNumber === "number" && tab.notificationNumber
|
|
72
73
|
})));
|
|
73
74
|
});
|
|
74
|
-
var TabContainer = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n text-transform: ", ";\n overflow: hidden;\n flex-shrink: 0;\n border: 0;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n user-select: none;\n vertical-align: middle;\n justify-content: center;\n min-width: 90px;\n max-width: 360px;\n padding: ", ";\n height: ", ";\n min-height: ", ";\n background-color: ", ";\n\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n }\n &:focus {\n outline: ", " solid 1px;\n outline-offset: -1px;\n }\n svg {\n color: ", ";\n }\n\n &[aria-selected=\"true\"] {\n background-color: ", ";\n svg {\n color: ", ";\n }\n opacity: 1;\n }\n\n &:disabled {\n background-color: ", " !important;\n cursor: not-allowed !important;\n pointer-events: all;\n font-style: ", ";\n outline: none !important;\n\n svg {\n color: ", ";\n }\n > div {\n opacity: 0.5;\n }\n }\n"])), function (props) {
|
|
75
|
+
var TabContainer = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n text-transform: ", ";\n overflow: hidden;\n flex-shrink: 0;\n border: 0;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n user-select: none;\n vertical-align: middle;\n justify-content: center;\n min-width: 90px;\n max-width: 360px;\n padding: ", ";\n height: ", ";\n min-height: ", ";\n background-color: ", ";\n\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n }\n &:focus {\n outline: ", " solid 1px;\n outline-offset: -1px;\n }\n\n svg,\n span:before {\n color: ", ";\n }\n\n &[aria-selected=\"true\"] {\n background-color: ", ";\n svg,\n span:before {\n color: ", ";\n }\n opacity: 1;\n }\n\n &:disabled {\n background-color: ", " !important;\n cursor: not-allowed !important;\n pointer-events: all;\n font-style: ", ";\n outline: none !important;\n\n svg,\n span:before {\n color: ", ";\n }\n > div {\n opacity: 0.5;\n }\n }\n"])), function (props) {
|
|
75
76
|
return props.theme.fontTextTransform;
|
|
76
77
|
}, function (props) {
|
|
77
78
|
return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "12px 16px" || "8px 16px";
|
|
@@ -108,7 +109,7 @@ var MainLabelContainer = _styledComponents["default"].div(_templateObject3 || (_
|
|
|
108
109
|
}, function (props) {
|
|
109
110
|
return props.notificationNumber && !props.disabled ? typeof props.notificationNumber === "number" ? "36px" : "18px" : "unset";
|
|
110
111
|
});
|
|
111
|
-
var TabIconContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n margin-bottom: ", ";\n margin-right: ", ";\n\n
|
|
112
|
+
var TabIconContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n margin-bottom: ", ";\n margin-right: ", ";\n font-size: 22px;\n\n svg {\n height: 22px;\n width: 22px;\n }\n"])), function (props) {
|
|
112
113
|
return props.hasLabelAndIcon && props.iconPosition === "top" && "8px" || "";
|
|
113
114
|
}, function (props) {
|
|
114
115
|
return props.hasLabelAndIcon && props.iconPosition === "left" && "12px" || "";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
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 _Tabs = _interopRequireDefault(require("./Tabs"));
|
|
10
|
+
var iconSVG = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
11
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
12
|
+
viewBox: "0 0 20 20",
|
|
13
|
+
height: "20",
|
|
14
|
+
width: "20",
|
|
15
|
+
fill: "currentColor"
|
|
16
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
17
|
+
d: "m10 17-1.042-.938q-2.083-1.854-3.437-3.177-1.354-1.323-2.136-2.354Q2.604 9.5 2.302 8.646 2 7.792 2 6.896q0-1.854 1.271-3.125T6.396 2.5q1.021 0 1.979.438.958.437 1.625 1.229.667-.792 1.625-1.229.958-.438 1.979-.438 1.854 0 3.125 1.271T18 6.896q0 .896-.292 1.729-.291.833-1.073 1.854-.781 1.021-2.145 2.365-1.365 1.344-3.49 3.26Zm0-2.021q1.938-1.729 3.188-2.948 1.25-1.219 1.989-2.125.74-.906 1.031-1.614.292-.709.292-1.396 0-1.229-.833-2.063Q14.833 4 13.604 4q-.729 0-1.364.302-.636.302-1.094.844L10.417 6h-.834l-.729-.854q-.458-.542-1.114-.844Q7.083 4 6.396 4q-1.229 0-2.063.833-.833.834-.833 2.063 0 .687.271 1.364.271.678.989 1.573.719.896 1.98 2.125Q8 13.188 10 14.979Zm0-5.5Z"
|
|
18
|
+
}));
|
|
19
|
+
var sampleTabs = [{
|
|
20
|
+
label: "Tab-1",
|
|
21
|
+
icon: iconSVG,
|
|
22
|
+
notificationNumber: 10
|
|
23
|
+
}, {
|
|
24
|
+
label: "Tab-2",
|
|
25
|
+
icon: iconSVG
|
|
26
|
+
}, {
|
|
27
|
+
label: "Tab-3",
|
|
28
|
+
notificationNumber: 20
|
|
29
|
+
}, {
|
|
30
|
+
label: "Tab-4",
|
|
31
|
+
isDisabled: true
|
|
32
|
+
}];
|
|
33
|
+
describe("Tabs component accessibility tests", function () {
|
|
34
|
+
it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
35
|
+
var _render, container, results;
|
|
36
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
37
|
+
while (1) switch (_context.prev = _context.next) {
|
|
38
|
+
case 0:
|
|
39
|
+
_render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
40
|
+
tabs: sampleTabs,
|
|
41
|
+
margin: "medium",
|
|
42
|
+
iconPosition: "left",
|
|
43
|
+
defaultActiveTabIndex: 0
|
|
44
|
+
})), container = _render.container;
|
|
45
|
+
_context.next = 3;
|
|
46
|
+
return (0, _axeHelper.axe)(container);
|
|
47
|
+
case 3:
|
|
48
|
+
results = _context.sent;
|
|
49
|
+
expect(results).toHaveNoViolations();
|
|
50
|
+
case 5:
|
|
51
|
+
case "end":
|
|
52
|
+
return _context.stop();
|
|
53
|
+
}
|
|
54
|
+
}, _callee);
|
|
55
|
+
})));
|
|
56
|
+
});
|
package/tabs/Tabs.js
CHANGED
|
@@ -15,25 +15,10 @@ var _variables = require("../common/variables");
|
|
|
15
15
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
16
16
|
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
17
17
|
var _Tab = _interopRequireDefault(require("./Tab"));
|
|
18
|
+
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
18
19
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
|
|
19
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); }
|
|
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 &&
|
|
21
|
-
var arrowIcons = {
|
|
22
|
-
left: /*#__PURE__*/_react["default"].createElement("svg", {
|
|
23
|
-
focusable: "false",
|
|
24
|
-
viewBox: "0 0 24 24",
|
|
25
|
-
"aria-hidden": "true"
|
|
26
|
-
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
27
|
-
d: "M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"
|
|
28
|
-
})),
|
|
29
|
-
right: /*#__PURE__*/_react["default"].createElement("svg", {
|
|
30
|
-
focusable: "false",
|
|
31
|
-
viewBox: "0 0 24 24",
|
|
32
|
-
"aria-hidden": "true"
|
|
33
|
-
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
34
|
-
d: "M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"
|
|
35
|
-
}))
|
|
36
|
-
};
|
|
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; }
|
|
37
22
|
var useResize = function useResize(refTabList) {
|
|
38
23
|
var _useState = (0, _react.useState)(0),
|
|
39
24
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
@@ -281,7 +266,9 @@ var DxcTabs = function DxcTabs(_ref) {
|
|
|
281
266
|
"aria-label": translatedLabels.tabs.scrollLeft,
|
|
282
267
|
tabIndex: scrollLeftEnabled ? tabIndex : -1,
|
|
283
268
|
minHeightTabs: minHeightTabs
|
|
284
|
-
},
|
|
269
|
+
}, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
270
|
+
icon: "keyboard_arrow_left"
|
|
271
|
+
})), /*#__PURE__*/_react["default"].createElement(TabsContent, null, /*#__PURE__*/_react["default"].createElement(TabsContentScroll, {
|
|
285
272
|
translateScroll: translateScroll,
|
|
286
273
|
ref: refTabList,
|
|
287
274
|
enabled: enabledIndicator
|
|
@@ -323,7 +310,9 @@ var DxcTabs = function DxcTabs(_ref) {
|
|
|
323
310
|
"aria-label": translatedLabels.tabs.scrollRight,
|
|
324
311
|
tabIndex: scrollRightEnabled ? tabIndex : -1,
|
|
325
312
|
minHeightTabs: minHeightTabs
|
|
326
|
-
},
|
|
313
|
+
}, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
314
|
+
icon: "keyboard_arrow_right"
|
|
315
|
+
})))));
|
|
327
316
|
};
|
|
328
317
|
var Underline = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: ", ";\n background-color: ", ";\n"])), function (props) {
|
|
329
318
|
return props.theme.dividerThickness;
|
|
@@ -348,7 +337,7 @@ var Tabs = _styledComponents["default"].div(_templateObject3 || (_templateObject
|
|
|
348
337
|
}, function (props) {
|
|
349
338
|
return props.theme.unselectedBackgroundColor;
|
|
350
339
|
});
|
|
351
|
-
var ScrollIndicator = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: ", ";\n justify-content: center;\n min-width: ", ";\n height: ", "px;\n padding: 0;\n border: none;\n background-color: #ffffff;\n font-size: 1.25rem;\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &:focus {\n outline: ", " solid 1px;\n outline-offset: -1px;\n }\n &:active {\n background-color: ", ";\n }\n &:disabled {\n cursor: default;\n display: none;\n svg {\n visibility: hidden;\n }\n &:focus {\n outline: none;\n }\n &:hover,\n &:active {\n background-color: transparent !important;\n }\n }\n\n
|
|
340
|
+
var ScrollIndicator = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: ", ";\n justify-content: center;\n min-width: ", ";\n height: ", "px;\n padding: 0;\n border: none;\n background-color: #ffffff;\n font-size: 1.25rem;\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &:focus {\n outline: ", " solid 1px;\n outline-offset: -1px;\n }\n &:active {\n background-color: ", ";\n }\n &:disabled {\n cursor: default;\n display: none;\n svg {\n visibility: hidden;\n }\n &:focus {\n outline: none;\n }\n &:hover,\n &:active {\n background-color: transparent !important;\n }\n }\n\n span {\n align-self: center;\n height: 20px;\n width: 20px;\n }\n\n span::before {\n color: ", ";\n }\n"])), function (props) {
|
|
352
341
|
return props.enabled ? "flex" : "none";
|
|
353
342
|
}, function (props) {
|
|
354
343
|
return props.theme.scrollButtonsWidth;
|
package/tabs/Tabs.stories.tsx
CHANGED
|
@@ -3,10 +3,16 @@ import DxcTabs from "./Tabs";
|
|
|
3
3
|
import Title from "../../.storybook/components/Title";
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
5
|
import { HalstackProvider } from "../HalstackContext";
|
|
6
|
+
import { INITIAL_VIEWPORTS } from "@storybook/addon-viewport";
|
|
6
7
|
|
|
7
8
|
export default {
|
|
8
9
|
title: "Tabs",
|
|
9
10
|
component: DxcTabs,
|
|
11
|
+
parameters: {
|
|
12
|
+
viewport: {
|
|
13
|
+
viewports: INITIAL_VIEWPORTS,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
10
16
|
};
|
|
11
17
|
|
|
12
18
|
const iconSVG = (
|
|
@@ -75,9 +81,7 @@ const tabsNotification = tabs.map((tab, index) => ({
|
|
|
75
81
|
}));
|
|
76
82
|
|
|
77
83
|
const tabsIcon = tabs.map((tab, index) =>
|
|
78
|
-
index <= tabs.length / 2
|
|
79
|
-
? { ...tab, icon: "https://cdn-icons-png.flaticon.com/512/5039/5039041.png" }
|
|
80
|
-
: { ...tab, icon: iconSVG }
|
|
84
|
+
index <= tabs.length / 2 ? { ...tab, icon: "mail" } : { ...tab, icon: iconSVG },
|
|
81
85
|
);
|
|
82
86
|
|
|
83
87
|
const tabsNotificationIcon = tabsNotification.map((tab) => ({ ...tab, icon: iconSVG }));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/tabs/Tabs.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 _Tabs = _interopRequireDefault(require("./Tabs
|
|
6
|
+
var _Tabs = _interopRequireDefault(require("./Tabs"));
|
|
7
7
|
var sampleTabs = [{
|
|
8
8
|
label: "Tab-1"
|
|
9
9
|
}, {
|
|
@@ -73,26 +73,8 @@ describe("Tabs component tests", function () {
|
|
|
73
73
|
expect(tabs[1].getAttribute("aria-selected")).toBe("false");
|
|
74
74
|
expect(tabs[2].getAttribute("aria-selected")).toBe("true");
|
|
75
75
|
});
|
|
76
|
-
test("Tabs render with correct icons", function () {
|
|
77
|
-
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
78
|
-
tabs: [{
|
|
79
|
-
label: "Tab-1",
|
|
80
|
-
icon: "/testIcon1.png"
|
|
81
|
-
}, {
|
|
82
|
-
label: "Tab-2",
|
|
83
|
-
icon: "/testIcon2.png"
|
|
84
|
-
}, {
|
|
85
|
-
label: "Tab-3",
|
|
86
|
-
icon: "/testIcon3.png"
|
|
87
|
-
}]
|
|
88
|
-
})),
|
|
89
|
-
getAllByRole = _render4.getAllByRole;
|
|
90
|
-
expect(getAllByRole("img")[0].getAttribute("src")).toBe("/testIcon1.png");
|
|
91
|
-
expect(getAllByRole("img")[1].getAttribute("src")).toBe("/testIcon2.png");
|
|
92
|
-
expect(getAllByRole("img")[2].getAttribute("src")).toBe("/testIcon3.png");
|
|
93
|
-
});
|
|
94
76
|
test("Tabs render with disabled tab", function () {
|
|
95
|
-
var
|
|
77
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
96
78
|
tabs: [{
|
|
97
79
|
label: "Tab-1",
|
|
98
80
|
isDisabled: true
|
|
@@ -100,18 +82,18 @@ describe("Tabs component tests", function () {
|
|
|
100
82
|
label: "Tab-2"
|
|
101
83
|
}]
|
|
102
84
|
})),
|
|
103
|
-
getAllByRole =
|
|
85
|
+
getAllByRole = _render4.getAllByRole;
|
|
104
86
|
expect(getAllByRole("tab")[0].hasAttribute("disabled")).toBeTruthy();
|
|
105
87
|
expect(getAllByRole("tab")[1].hasAttribute("disabled")).toBeFalsy();
|
|
106
88
|
});
|
|
107
89
|
test("Uncontrolled tabs", function () {
|
|
108
90
|
var onTabClick = jest.fn();
|
|
109
|
-
var
|
|
91
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
110
92
|
tabs: sampleTabs,
|
|
111
93
|
onTabClick: onTabClick
|
|
112
94
|
})),
|
|
113
|
-
getByText =
|
|
114
|
-
getAllByRole =
|
|
95
|
+
getByText = _render5.getByText,
|
|
96
|
+
getAllByRole = _render5.getAllByRole;
|
|
115
97
|
var tabs = getAllByRole("tab");
|
|
116
98
|
var tab1 = getByText("Tab-1");
|
|
117
99
|
var tab2 = getByText("Tab-2");
|
|
@@ -128,12 +110,12 @@ describe("Tabs component tests", function () {
|
|
|
128
110
|
});
|
|
129
111
|
test("Controlled tabs", function () {
|
|
130
112
|
var onTabClick = jest.fn();
|
|
131
|
-
var
|
|
113
|
+
var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
132
114
|
tabs: sampleTabs,
|
|
133
115
|
onTabClick: onTabClick,
|
|
134
116
|
activeTabIndex: 0
|
|
135
117
|
})),
|
|
136
|
-
getAllByRole =
|
|
118
|
+
getAllByRole = _render6.getAllByRole;
|
|
137
119
|
var tabs = getAllByRole("tab");
|
|
138
120
|
_react2.fireEvent.click(tabs[1]);
|
|
139
121
|
expect(onTabClick).toHaveBeenCalledWith(1);
|
|
@@ -148,11 +130,11 @@ describe("Tabs component tests", function () {
|
|
|
148
130
|
});
|
|
149
131
|
test("Uncontrolled tabs should have focus in the first non-disabled tab", function () {
|
|
150
132
|
var onTabClick = jest.fn();
|
|
151
|
-
var
|
|
133
|
+
var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
152
134
|
tabs: sampleTabsLastTabNonDisabled,
|
|
153
135
|
onTabClick: onTabClick
|
|
154
136
|
})),
|
|
155
|
-
getAllByRole =
|
|
137
|
+
getAllByRole = _render7.getAllByRole;
|
|
156
138
|
var tabs = getAllByRole("tab");
|
|
157
139
|
expect(tabs[0].hasAttribute("disabled")).toBeTruthy();
|
|
158
140
|
expect(tabs[1].hasAttribute("disabled")).toBeTruthy();
|
|
@@ -163,12 +145,12 @@ describe("Tabs component tests", function () {
|
|
|
163
145
|
});
|
|
164
146
|
test("Controlled tabs with active index in disabled tab should not change focus to the first available tab", function () {
|
|
165
147
|
var onTabClick = jest.fn();
|
|
166
|
-
var
|
|
148
|
+
var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
167
149
|
tabs: sampleTabsLastTabNonDisabled,
|
|
168
150
|
onTabClick: onTabClick,
|
|
169
151
|
activeTabIndex: 0
|
|
170
152
|
})),
|
|
171
|
-
getAllByRole =
|
|
153
|
+
getAllByRole = _render8.getAllByRole;
|
|
172
154
|
var tabs = getAllByRole("tab");
|
|
173
155
|
expect(tabs[0].getAttribute("aria-selected")).toBe("true");
|
|
174
156
|
expect(tabs[1].getAttribute("aria-selected")).toBe("false");
|
|
@@ -187,13 +169,13 @@ describe("Tabs component tests", function () {
|
|
|
187
169
|
});
|
|
188
170
|
test("Select tabs with keyboard event arrows", function () {
|
|
189
171
|
var onTabClick = jest.fn();
|
|
190
|
-
var
|
|
172
|
+
var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
191
173
|
tabs: sampleTabs,
|
|
192
174
|
onTabClick: onTabClick
|
|
193
175
|
})),
|
|
194
|
-
getByText =
|
|
195
|
-
getByRole =
|
|
196
|
-
getAllByRole =
|
|
176
|
+
getByText = _render9.getByText,
|
|
177
|
+
getByRole = _render9.getByRole,
|
|
178
|
+
getAllByRole = _render9.getAllByRole;
|
|
197
179
|
var tabList = getByRole("tablist");
|
|
198
180
|
var tab1 = getByText("Tab-1");
|
|
199
181
|
var tabs = getAllByRole("tab");
|
|
@@ -265,13 +247,13 @@ describe("Tabs component tests", function () {
|
|
|
265
247
|
});
|
|
266
248
|
test("Skip disabled tab with keyboard event arrows", function () {
|
|
267
249
|
var onTabClick = jest.fn();
|
|
268
|
-
var
|
|
250
|
+
var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
269
251
|
tabs: sampleTabsMiddleDisabled,
|
|
270
252
|
onTabClick: onTabClick
|
|
271
253
|
})),
|
|
272
|
-
getByText =
|
|
273
|
-
getByRole =
|
|
274
|
-
getAllByRole =
|
|
254
|
+
getByText = _render10.getByText,
|
|
255
|
+
getByRole = _render10.getByRole,
|
|
256
|
+
getAllByRole = _render10.getAllByRole;
|
|
275
257
|
var tabList = getByRole("tablist");
|
|
276
258
|
var tab1 = getByText("Tab-1");
|
|
277
259
|
var tabs = getAllByRole("tab");
|
package/tabs/types.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export type TabLabelProps = TabCommonProps & {
|
|
|
27
27
|
*/
|
|
28
28
|
label: string;
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
30
|
+
* Material Symbol name or SVG element used as the icon that will be displayed in the tab.
|
|
31
31
|
*/
|
|
32
32
|
icon?: string | SVG;
|
|
33
33
|
};
|
|
@@ -37,7 +37,7 @@ export type TabIconProps = TabCommonProps & {
|
|
|
37
37
|
*/
|
|
38
38
|
label?: string;
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
40
|
+
* Material Symbol name or SVG element used as the icon that will be displayed in the tab.
|
|
41
41
|
*/
|
|
42
42
|
icon: string | SVG;
|
|
43
43
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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"));
|
|
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
|
+
});
|