@dxc-technology/halstack-react 11.0.0 → 12.0.0
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 +3 -8
- package/HalstackContext.d.ts +32 -142
- package/HalstackContext.js +2 -2
- package/accordion/Accordion.accessibility.test.js +71 -0
- package/accordion/Accordion.js +13 -27
- package/accordion/Accordion.stories.tsx +7 -49
- package/accordion/types.d.ts +1 -1
- package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
- package/accordion-group/AccordionGroup.d.ts +2 -3
- package/accordion-group/AccordionGroup.js +4 -4
- package/accordion-group/AccordionGroup.stories.tsx +23 -23
- package/accordion-group/AccordionGroupAccordion.js +3 -3
- package/accordion-group/AccordionGroupContext.d.ts +3 -0
- package/accordion-group/AccordionGroupContext.js +8 -0
- package/accordion-group/types.d.ts +1 -1
- 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/action-icon/types.js +5 -0
- package/alert/Alert.accessibility.test.js +95 -0
- package/alert/Alert.js +21 -75
- package/badge/Badge.accessibility.test.js +129 -0
- package/badge/Badge.d.ts +1 -1
- package/badge/Badge.js +141 -28
- package/badge/Badge.stories.tsx +210 -0
- package/badge/Badge.test.js +30 -0
- package/badge/types.d.ts +52 -3
- package/box/Box.accessibility.test.js +33 -0
- package/box/Box.js +2 -5
- 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/breadcrumbs/types.js +5 -0
- package/bulleted-list/BulletedList.accessibility.test.js +119 -0
- package/bulleted-list/BulletedList.js +16 -23
- package/bulleted-list/BulletedList.stories.tsx +1 -2
- package/button/Button.accessibility.test.js +127 -0
- package/button/Button.js +16 -16
- package/button/Button.stories.tsx +34 -53
- package/button/Button.test.js +3 -1
- package/button/types.d.ts +1 -1
- package/card/Card.accessibility.test.js +36 -0
- package/card/Card.js +3 -2
- package/checkbox/Checkbox.accessibility.test.js +87 -0
- package/checkbox/Checkbox.js +31 -36
- package/chip/Chip.accessibility.test.js +67 -0
- package/chip/Chip.js +11 -6
- package/chip/Chip.stories.tsx +10 -25
- package/chip/Chip.test.js +4 -4
- package/common/coreTokens.d.ts +105 -14
- package/common/coreTokens.js +40 -22
- package/common/variables.d.ts +31 -138
- package/common/variables.js +103 -210
- 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/container/types.js +5 -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/contextual-menu/types.js +5 -0
- package/date-input/Calendar.js +1 -1
- package/date-input/DateInput.accessibility.test.js +228 -0
- package/date-input/DateInput.js +4 -5
- package/date-input/DateInput.stories.tsx +15 -8
- package/date-input/DatePicker.js +13 -7
- package/date-input/YearPicker.js +1 -1
- package/date-input/types.d.ts +2 -2
- package/dialog/Dialog.accessibility.test.js +69 -0
- package/dialog/Dialog.js +11 -25
- package/dialog/Dialog.stories.tsx +176 -0
- package/dialog/Dialog.test.js +1 -1
- 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/divider/types.js +5 -0
- package/dropdown/Dropdown.accessibility.test.js +180 -0
- package/dropdown/Dropdown.js +26 -39
- package/dropdown/Dropdown.stories.tsx +15 -26
- package/dropdown/Dropdown.test.js +18 -18
- package/dropdown/DropdownMenu.js +4 -4
- package/dropdown/DropdownMenuItem.js +8 -4
- package/dropdown/types.d.ts +3 -5
- package/file-input/FileInput.accessibility.test.js +160 -0
- package/file-input/FileInput.js +126 -141
- package/file-input/FileInput.test.js +84 -110
- package/file-input/FileItem.js +18 -28
- package/file-input/types.d.ts +1 -1
- package/footer/Footer.accessibility.test.js +125 -0
- package/footer/Footer.d.ts +1 -1
- package/footer/Footer.js +36 -31
- package/footer/Footer.stories.tsx +58 -2
- package/footer/Icons.d.ts +1 -0
- package/footer/Icons.js +52 -16
- package/footer/types.d.ts +8 -8
- package/header/Header.accessibility.test.js +93 -0
- package/header/Header.js +20 -41
- package/header/Header.stories.tsx +16 -0
- package/header/Icons.js +1 -6
- package/header/types.d.ts +4 -3
- package/heading/Heading.accessibility.test.js +33 -0
- package/heading/Heading.js +1 -1
- 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.js +1 -1
- package/image/Image.stories.tsx +3 -1
- package/layout/ApplicationLayout.d.ts +1 -1
- package/layout/ApplicationLayout.js +10 -7
- package/layout/Icons.d.ts +0 -1
- package/layout/Icons.js +1 -11
- package/link/Link.accessibility.test.js +108 -0
- package/link/Link.js +8 -6
- package/link/Link.stories.tsx +4 -4
- package/link/types.d.ts +1 -1
- package/main.d.ts +7 -3
- package/main.js +37 -9
- package/nav-tabs/NavTabs.accessibility.test.js +44 -0
- package/nav-tabs/NavTabs.d.ts +1 -2
- package/nav-tabs/NavTabs.js +10 -7
- package/nav-tabs/NavTabs.stories.tsx +29 -24
- package/nav-tabs/NavTabs.test.js +11 -9
- package/nav-tabs/NavTabsContext.d.ts +3 -0
- package/nav-tabs/NavTabsContext.js +8 -0
- package/nav-tabs/Tab.js +23 -23
- package/nav-tabs/types.d.ts +1 -1
- package/number-input/NumberInput.accessibility.test.js +228 -0
- package/number-input/NumberInput.d.ts +0 -7
- package/number-input/NumberInput.js +24 -5
- package/number-input/NumberInput.test.js +165 -6
- package/number-input/NumberInputContext.d.ts +3 -0
- package/number-input/NumberInputContext.js +8 -0
- package/number-input/types.d.ts +6 -0
- package/package.json +16 -14
- package/paginator/Paginator.accessibility.test.js +79 -0
- package/paginator/Paginator.js +14 -14
- package/paragraph/Paragraph.accessibility.test.js +28 -0
- package/paragraph/Paragraph.js +2 -7
- package/password-input/PasswordInput.accessibility.test.js +153 -0
- package/password-input/PasswordInput.js +7 -7
- package/password-input/PasswordInput.stories.tsx +0 -1
- package/password-input/PasswordInput.test.js +4 -4
- package/progress-bar/ProgressBar.accessibility.test.js +35 -0
- package/progress-bar/ProgressBar.js +11 -15
- package/quick-nav/QuickNav.accessibility.test.js +57 -0
- package/quick-nav/QuickNav.js +1 -1
- package/radio-group/Radio.js +1 -1
- package/radio-group/RadioGroup.accessibility.test.js +97 -0
- package/radio-group/RadioGroup.js +3 -2
- package/resultset-table/ResultsetTable.accessibility.test.js +285 -0
- package/resultset-table/ResultsetTable.d.ts +4 -1
- package/resultset-table/ResultsetTable.js +25 -13
- package/resultset-table/ResultsetTable.stories.tsx +118 -5
- package/resultset-table/ResultsetTable.test.js +76 -0
- package/resultset-table/types.d.ts +40 -7
- package/select/Listbox.js +28 -16
- package/select/Option.js +19 -10
- package/select/Select.accessibility.test.js +228 -0
- package/select/Select.js +57 -37
- package/select/Select.stories.tsx +59 -111
- package/select/Select.test.js +387 -456
- package/select/types.d.ts +3 -3
- package/sidenav/Sidenav.accessibility.test.js +59 -0
- package/sidenav/Sidenav.js +21 -19
- package/sidenav/Sidenav.stories.tsx +4 -9
- package/sidenav/types.d.ts +2 -2
- package/slider/Slider.accessibility.test.js +104 -0
- package/slider/Slider.js +40 -48
- package/spinner/Spinner.accessibility.test.js +96 -0
- package/spinner/Spinner.js +12 -16
- 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.js +24 -29
- package/switch/Switch.stories.tsx +12 -0
- 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 +74 -12
- package/table/Table.stories.tsx +309 -2
- package/table/Table.test.js +92 -0
- package/table/types.d.ts +28 -0
- package/tabs/Tab.js +13 -9
- package/tabs/Tabs.accessibility.test.js +56 -0
- package/tabs/Tabs.js +12 -24
- package/tabs/Tabs.stories.tsx +8 -4
- package/tabs/Tabs.test.js +19 -37
- package/tabs/types.d.ts +2 -2
- package/tag/Tag.accessibility.test.js +69 -0
- package/tag/Tag.js +7 -7
- package/tag/Tag.stories.tsx +4 -7
- package/tag/Tag.test.js +4 -12
- package/tag/types.d.ts +2 -2
- package/text-input/Suggestion.js +1 -1
- package/text-input/Suggestions.js +19 -14
- package/text-input/TextInput.accessibility.test.js +321 -0
- package/text-input/TextInput.js +84 -105
- package/text-input/TextInput.stories.tsx +17 -8
- package/text-input/TextInput.test.js +96 -79
- package/textarea/Textarea.accessibility.test.js +155 -0
- package/textarea/Textarea.js +12 -17
- package/textarea/Textarea.stories.tsx +0 -1
- package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
- package/toggle-group/ToggleGroup.js +6 -8
- package/toggle-group/ToggleGroup.stories.tsx +3 -3
- package/toggle-group/types.d.ts +2 -2
- package/typography/Typography.accessibility.test.js +339 -0
- package/useTheme.d.ts +31 -138
- package/utils/BaseTypography.js +1 -1
- package/utils/FocusLock.js +16 -6
- package/wizard/Wizard.accessibility.test.js +55 -0
- package/wizard/Wizard.js +14 -25
- package/wizard/Wizard.stories.tsx +19 -0
- package/wizard/types.d.ts +2 -2
- package/common/OpenSans.css +0 -69
- 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/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
- /package/{layout → sidenav}/SidenavContext.d.ts +0 -0
- /package/{layout → sidenav}/SidenavContext.js +0 -0
|
@@ -12,14 +12,15 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
14
14
|
var _variables = require("../common/variables");
|
|
15
|
-
var _Table = _interopRequireDefault(require("../table/Table"));
|
|
16
15
|
var _Paginator = _interopRequireDefault(require("../paginator/Paginator"));
|
|
16
|
+
var _Table = _interopRequireWildcard(require("../table/Table"));
|
|
17
17
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
18
18
|
var _Icons = _interopRequireDefault(require("./Icons"));
|
|
19
19
|
var _utils = require("../common/utils");
|
|
20
|
+
var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
|
|
20
21
|
var _templateObject, _templateObject2, _templateObject3;
|
|
21
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); }
|
|
22
|
-
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; }
|
|
23
24
|
var normalizeSortValue = function normalizeSortValue(sortValue) {
|
|
24
25
|
return typeof sortValue === "string" ? sortValue.toUpperCase() : sortValue;
|
|
25
26
|
};
|
|
@@ -49,6 +50,8 @@ var getMaxItemsPerPageIndex = function getMaxItemsPerPageIndex(minItemsPerPageIn
|
|
|
49
50
|
var DxcResultsetTable = function DxcResultsetTable(_ref) {
|
|
50
51
|
var columns = _ref.columns,
|
|
51
52
|
rows = _ref.rows,
|
|
53
|
+
_ref$hidePaginator = _ref.hidePaginator,
|
|
54
|
+
hidePaginator = _ref$hidePaginator === void 0 ? false : _ref$hidePaginator,
|
|
52
55
|
_ref$showGoToPage = _ref.showGoToPage,
|
|
53
56
|
showGoToPage = _ref$showGoToPage === void 0 ? true : _ref$showGoToPage,
|
|
54
57
|
_ref$itemsPerPage = _ref.itemsPerPage,
|
|
@@ -57,7 +60,9 @@ var DxcResultsetTable = function DxcResultsetTable(_ref) {
|
|
|
57
60
|
itemsPerPageFunction = _ref.itemsPerPageFunction,
|
|
58
61
|
margin = _ref.margin,
|
|
59
62
|
_ref$tabIndex = _ref.tabIndex,
|
|
60
|
-
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex
|
|
63
|
+
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex,
|
|
64
|
+
_ref$mode = _ref.mode,
|
|
65
|
+
mode = _ref$mode === void 0 ? "default" : _ref$mode;
|
|
61
66
|
var colorsTheme = (0, _useTheme["default"])();
|
|
62
67
|
var _useState = (0, _react.useState)(1),
|
|
63
68
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
@@ -92,13 +97,17 @@ var DxcResultsetTable = function DxcResultsetTable(_ref) {
|
|
|
92
97
|
changeSortOrder(sortColumnIndex === -1 || sortColumnIndex !== columnIndex ? "ascending" : sortOrder === "ascending" ? "descending" : "ascending");
|
|
93
98
|
};
|
|
94
99
|
(0, _react.useEffect)(function () {
|
|
95
|
-
|
|
100
|
+
if (!hidePaginator) {
|
|
101
|
+
rows.length > 0 ? changePage(1) : changePage(0);
|
|
102
|
+
}
|
|
96
103
|
}, [rows]);
|
|
97
104
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
98
105
|
theme: colorsTheme.table
|
|
99
106
|
}, /*#__PURE__*/_react["default"].createElement(DxcResultsetTableContainer, {
|
|
100
107
|
margin: margin
|
|
101
|
-
}, /*#__PURE__*/_react["default"].createElement(_Table["default"],
|
|
108
|
+
}, /*#__PURE__*/_react["default"].createElement(_Table["default"], {
|
|
109
|
+
mode: mode
|
|
110
|
+
}, /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", null, columns.map(function (column, index) {
|
|
102
111
|
return /*#__PURE__*/_react["default"].createElement("th", {
|
|
103
112
|
key: "tableHeader_".concat(index),
|
|
104
113
|
"aria-sort": column.isSortable ? sortColumnIndex === index ? sortOrder : "none" : undefined
|
|
@@ -109,17 +118,19 @@ var DxcResultsetTable = function DxcResultsetTable(_ref) {
|
|
|
109
118
|
column.isSortable && changeSorting(index);
|
|
110
119
|
},
|
|
111
120
|
tabIndex: column.isSortable ? tabIndex : -1,
|
|
112
|
-
isSortable: column.isSortable
|
|
121
|
+
isSortable: column.isSortable,
|
|
122
|
+
mode: mode,
|
|
123
|
+
"aria-label": column.isSortable ? "Sort column" : undefined
|
|
113
124
|
}, /*#__PURE__*/_react["default"].createElement("span", null, column.displayValue), column.isSortable && /*#__PURE__*/_react["default"].createElement(SortIcon, null, sortColumnIndex === index ? sortOrder === "ascending" ? _Icons["default"].arrowUp : _Icons["default"].arrowDown : _Icons["default"].bothArrows)));
|
|
114
|
-
}))), /*#__PURE__*/_react["default"].createElement("tbody", null, filteredResultset.map(function (cells,
|
|
125
|
+
}))), /*#__PURE__*/_react["default"].createElement("tbody", null, filteredResultset.map(function (cells, rowIndex) {
|
|
115
126
|
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
116
|
-
key: "resultSetTableCell_".concat(
|
|
117
|
-
}, cells.map(function (cellContent,
|
|
127
|
+
key: "resultSetTableCell_".concat(page, "_").concat(rowIndex)
|
|
128
|
+
}, cells.map(function (cellContent, cellIndex) {
|
|
118
129
|
return /*#__PURE__*/_react["default"].createElement("td", {
|
|
119
|
-
key: "resultSetTableCellContent_".concat(
|
|
130
|
+
key: "resultSetTableCellContent_".concat(cellIndex)
|
|
120
131
|
}, cellContent.displayValue);
|
|
121
132
|
}));
|
|
122
|
-
}))), /*#__PURE__*/_react["default"].createElement(_Paginator["default"], {
|
|
133
|
+
}))), !hidePaginator && /*#__PURE__*/_react["default"].createElement(_Paginator["default"], {
|
|
123
134
|
totalItems: rows.length,
|
|
124
135
|
itemsPerPage: itemsPerPage,
|
|
125
136
|
itemsPerPageOptions: itemsPerPageOptions,
|
|
@@ -146,9 +157,9 @@ var DxcResultsetTableContainer = _styledComponents["default"].div(_templateObjec
|
|
|
146
157
|
}, function (props) {
|
|
147
158
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
|
|
148
159
|
});
|
|
149
|
-
var HeaderContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: ", ";\n gap:
|
|
160
|
+
var HeaderContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: ", ";\n gap: ", ";\n width: fit-content;\n border: 1px solid transparent;\n border-radius: 2px;\n cursor: ", ";\n\n ", "\n"])), function (props) {
|
|
150
161
|
return props.theme.headerTextAlign === "center" ? "center" : props.theme.headerTextAlign === "right" ? "flex-end" : "flex-start";
|
|
151
|
-
}, function (props) {
|
|
162
|
+
}, _coreTokens["default"].spacing_8, function (props) {
|
|
152
163
|
return props.isSortable ? "pointer" : "default";
|
|
153
164
|
}, function (props) {
|
|
154
165
|
return props.isSortable && "&:focus {\n outline: #0095ff solid 2px;\n }";
|
|
@@ -156,4 +167,5 @@ var HeaderContainer = _styledComponents["default"].span(_templateObject2 || (_te
|
|
|
156
167
|
var SortIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 14px;\n width: 14px;\n color: ", ";\n\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
|
|
157
168
|
return props.theme.sortIconColor;
|
|
158
169
|
});
|
|
170
|
+
DxcResultsetTable.ActionsCell = _Table.DxcActionsCell;
|
|
159
171
|
var _default = exports["default"] = DxcResultsetTable;
|
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import DxcResultsetTable from "./ResultsetTable";
|
|
3
|
-
import DxcButton from "../button/Button";
|
|
4
3
|
import Title from "../../.storybook/components/Title";
|
|
5
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
6
5
|
import { userEvent, within } from "@storybook/testing-library";
|
|
7
6
|
import styled from "styled-components";
|
|
7
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
8
|
+
import { disabledRules } from "../../test/accessibility/rules/specific/resultset-table/disabledRules";
|
|
9
|
+
import preview from "../../.storybook/preview";
|
|
8
10
|
|
|
9
11
|
export default {
|
|
10
12
|
title: "Resultset Table",
|
|
11
13
|
component: DxcResultsetTable,
|
|
14
|
+
parameters: {
|
|
15
|
+
a11y: {
|
|
16
|
+
config: {
|
|
17
|
+
rules: [
|
|
18
|
+
...disabledRules.map((ruleId) => ({ id: ruleId, reviewOnFail: true })),
|
|
19
|
+
...preview?.parameters?.a11y?.config?.rules,
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
12
24
|
};
|
|
13
25
|
|
|
14
26
|
const deleteIcon = (
|
|
15
27
|
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24">
|
|
16
|
-
<path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" />
|
|
28
|
+
<path fill="currentColor" d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" />
|
|
17
29
|
<path d="M0 0h24v24H0z" fill="none" />
|
|
18
30
|
</svg>
|
|
19
31
|
);
|
|
@@ -29,17 +41,77 @@ const rows = [
|
|
|
29
41
|
[{ displayValue: "006" }, { displayValue: "Cris" }, { displayValue: "Paris" }],
|
|
30
42
|
];
|
|
31
43
|
|
|
44
|
+
const advancedTheme = {
|
|
45
|
+
table: {
|
|
46
|
+
actionIconColor: "#1B75BB",
|
|
47
|
+
hoverActionIconColor: "#1B75BB",
|
|
48
|
+
activeActionIconColor: "#1B75BB",
|
|
49
|
+
focusActionIconColor: "#1B75BB",
|
|
50
|
+
disabledActionIconColor: "#666666",
|
|
51
|
+
hoverButtonBackgroundColor: "#cccccc",
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const actions = [
|
|
56
|
+
{
|
|
57
|
+
title: "icon",
|
|
58
|
+
onClick: (value?) => {
|
|
59
|
+
console.log(value);
|
|
60
|
+
},
|
|
61
|
+
options: [
|
|
62
|
+
{
|
|
63
|
+
value: "1",
|
|
64
|
+
label: "Amazon with a very long text",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
value: "2",
|
|
68
|
+
label: "Ebay",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
value: "3",
|
|
72
|
+
label: "Apple",
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
icon: "filled_edit",
|
|
78
|
+
title: "icon",
|
|
79
|
+
onClick: () => {},
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
icon: deleteIcon,
|
|
83
|
+
title: "icon",
|
|
84
|
+
onClick: () => {},
|
|
85
|
+
disabled: true,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
icon: deleteIcon,
|
|
89
|
+
title: "icon",
|
|
90
|
+
onClick: () => {},
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
|
|
32
94
|
const rowsIcon = [
|
|
33
95
|
[
|
|
34
96
|
{ displayValue: "001", sortValue: "001" },
|
|
35
97
|
{ displayValue: "Peter" },
|
|
36
|
-
{
|
|
98
|
+
{
|
|
99
|
+
displayValue: <DxcResultsetTable.ActionsCell actions={actions} />,
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
[
|
|
103
|
+
{ displayValue: "002", sortValue: "002" },
|
|
104
|
+
{ displayValue: "Louis" },
|
|
105
|
+
{
|
|
106
|
+
displayValue: <DxcResultsetTable.ActionsCell actions={actions} />,
|
|
107
|
+
},
|
|
37
108
|
],
|
|
38
|
-
[{ displayValue: "002", sortValue: "002" }, { displayValue: "Louis" }, { displayValue: "" }],
|
|
39
109
|
[
|
|
40
110
|
{ displayValue: "003", sortValue: "003" },
|
|
41
111
|
{ displayValue: "Mark" },
|
|
42
|
-
{
|
|
112
|
+
{
|
|
113
|
+
displayValue: <DxcResultsetTable.ActionsCell actions={actions} />,
|
|
114
|
+
},
|
|
43
115
|
],
|
|
44
116
|
];
|
|
45
117
|
|
|
@@ -200,12 +272,35 @@ export const Chromatic = () => (
|
|
|
200
272
|
<Title title="Scroll resultset table" theme="light" level={4} />
|
|
201
273
|
<DxcResultsetTable columns={longColumns} rows={longRows} />
|
|
202
274
|
</ExampleContainer>
|
|
275
|
+
<ExampleContainer>
|
|
276
|
+
<Title title="Without paginator" theme="light" level={4} />
|
|
277
|
+
<DxcResultsetTable columns={columns} rows={rows} hidePaginator />
|
|
278
|
+
</ExampleContainer>
|
|
203
279
|
<ExampleContainer>
|
|
204
280
|
<SmallContainer>
|
|
205
281
|
<Title title="Small container and text overflow" theme="light" level={4} />
|
|
206
282
|
<DxcResultsetTable columns={columnsSortable} rows={longValues} />
|
|
207
283
|
</SmallContainer>
|
|
208
284
|
</ExampleContainer>
|
|
285
|
+
<ExampleContainer>
|
|
286
|
+
<Title title="Reduced sortable table" theme="light" level={4} />
|
|
287
|
+
<DxcResultsetTable columns={columnsSortable} rows={rowsSortable} mode="reduced" />
|
|
288
|
+
</ExampleContainer>
|
|
289
|
+
{/* PENDING SMALL ICON VERSION */}
|
|
290
|
+
<ExampleContainer>
|
|
291
|
+
<Title title="Reduced with items per page option" theme="light" level={4} />
|
|
292
|
+
<DxcResultsetTable columns={columns} rows={rows} itemsPerPage={2} itemsPerPageOptions={[2, 3]} mode="reduced" />
|
|
293
|
+
</ExampleContainer>
|
|
294
|
+
<ExampleContainer>
|
|
295
|
+
<Title title="Reduced scroll resultset table" theme="light" level={4} />
|
|
296
|
+
<DxcResultsetTable columns={longColumns} rows={longRows} mode="reduced" />
|
|
297
|
+
</ExampleContainer>
|
|
298
|
+
<ExampleContainer>
|
|
299
|
+
<SmallContainer>
|
|
300
|
+
<Title title="Reduced small container and text overflow" theme="light" level={4} />
|
|
301
|
+
<DxcResultsetTable columns={columnsSortable} rows={longValues} mode="reduced" />
|
|
302
|
+
</SmallContainer>
|
|
303
|
+
</ExampleContainer>
|
|
209
304
|
<Title title="Margins" theme="light" level={2} />
|
|
210
305
|
<ExampleContainer>
|
|
211
306
|
<Title title="Xxsmall" theme="light" level={4} />
|
|
@@ -298,3 +393,21 @@ LastPage.play = async ({ canvasElement }) => {
|
|
|
298
393
|
const nextButton = canvas.getAllByRole("button")[3];
|
|
299
394
|
await userEvent.click(nextButton);
|
|
300
395
|
};
|
|
396
|
+
|
|
397
|
+
const ResultsetActionsCellDropdown = () => (
|
|
398
|
+
<ExampleContainer>
|
|
399
|
+
<Title title="Dropdown Action" theme="light" level={4} />
|
|
400
|
+
<DxcResultsetTable columns={columns} rows={rowsIcon} itemsPerPage={2} />
|
|
401
|
+
<Title title="Custom theme actions cell" theme="light" level={4} />
|
|
402
|
+
<HalstackProvider advancedTheme={advancedTheme}>
|
|
403
|
+
<DxcResultsetTable columns={columns} rows={rowsIcon} itemsPerPage={2} />
|
|
404
|
+
</HalstackProvider>
|
|
405
|
+
</ExampleContainer>
|
|
406
|
+
);
|
|
407
|
+
|
|
408
|
+
export const DropdownAction = ResultsetActionsCellDropdown.bind({});
|
|
409
|
+
DropdownAction.play = async ({ canvasElement }) => {
|
|
410
|
+
const canvas = within(canvasElement);
|
|
411
|
+
const dropdown = canvas.getAllByRole("button")[5];
|
|
412
|
+
await userEvent.click(dropdown);
|
|
413
|
+
};
|
|
@@ -39,6 +39,18 @@ global.ResizeObserver = /*#__PURE__*/function () {
|
|
|
39
39
|
}]);
|
|
40
40
|
return ResizeObserver;
|
|
41
41
|
}();
|
|
42
|
+
var icon = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
43
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
44
|
+
height: "24px",
|
|
45
|
+
viewBox: "0 0 24 24",
|
|
46
|
+
width: "24px",
|
|
47
|
+
fill: "currentColor"
|
|
48
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
49
|
+
d: "M0 0h24v24H0V0zm0 0h24v24H0V0z",
|
|
50
|
+
fill: "none"
|
|
51
|
+
}), /*#__PURE__*/_react["default"].createElement("path", {
|
|
52
|
+
d: "M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13z"
|
|
53
|
+
}));
|
|
42
54
|
var columns = [{
|
|
43
55
|
displayValue: "Id",
|
|
44
56
|
isSortable: false
|
|
@@ -302,4 +314,68 @@ describe("Resultset table component tests", function () {
|
|
|
302
314
|
_react2.fireEvent.click(lastButton);
|
|
303
315
|
expect(getAllByRole("row").length - 1).toEqual(1);
|
|
304
316
|
});
|
|
317
|
+
test("Resultset table may not use the paginator", function () {
|
|
318
|
+
var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
|
|
319
|
+
columns: columns,
|
|
320
|
+
rows: rows,
|
|
321
|
+
hidePaginator: true
|
|
322
|
+
})),
|
|
323
|
+
getAllByRole = _render8.getAllByRole;
|
|
324
|
+
var nextButton = getAllByRole("button")[3];
|
|
325
|
+
expect(nextButton).not.toBeTruthy();
|
|
326
|
+
});
|
|
327
|
+
test("Resultset table with ActionsCell", function () {
|
|
328
|
+
var onSelectOption = jest.fn();
|
|
329
|
+
var onClick = jest.fn();
|
|
330
|
+
var actions = [{
|
|
331
|
+
icon: icon,
|
|
332
|
+
title: "icon1",
|
|
333
|
+
onClick: onSelectOption,
|
|
334
|
+
options: [{
|
|
335
|
+
value: "1",
|
|
336
|
+
label: "Amazon"
|
|
337
|
+
}, {
|
|
338
|
+
value: "2",
|
|
339
|
+
label: "Ebay"
|
|
340
|
+
}, {
|
|
341
|
+
value: "3",
|
|
342
|
+
label: "Aliexpress"
|
|
343
|
+
}]
|
|
344
|
+
}, {
|
|
345
|
+
icon: icon,
|
|
346
|
+
title: "icon2",
|
|
347
|
+
onClick: onClick
|
|
348
|
+
}];
|
|
349
|
+
var actionRows = [[{
|
|
350
|
+
displayValue: "001",
|
|
351
|
+
sortValue: "001"
|
|
352
|
+
}, {
|
|
353
|
+
displayValue: "Peter",
|
|
354
|
+
sortValue: "Peter"
|
|
355
|
+
}, {
|
|
356
|
+
displayValue: /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"].ActionsCell, {
|
|
357
|
+
actions: actions
|
|
358
|
+
}),
|
|
359
|
+
sortValue: "Actions"
|
|
360
|
+
}]];
|
|
361
|
+
var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
|
|
362
|
+
columns: columns,
|
|
363
|
+
rows: actionRows,
|
|
364
|
+
itemsPerPage: 3
|
|
365
|
+
})),
|
|
366
|
+
getAllByRole = _render9.getAllByRole,
|
|
367
|
+
getByRole = _render9.getByRole,
|
|
368
|
+
getByText = _render9.getByText;
|
|
369
|
+
var dropdown = getAllByRole("button")[2];
|
|
370
|
+
(0, _react2.act)(function () {
|
|
371
|
+
_userEvent["default"].click(dropdown);
|
|
372
|
+
});
|
|
373
|
+
expect(getByRole("menu")).toBeTruthy();
|
|
374
|
+
var option = getByText("Aliexpress");
|
|
375
|
+
_userEvent["default"].click(option);
|
|
376
|
+
expect(onSelectOption).toHaveBeenCalledWith("3");
|
|
377
|
+
var action = getAllByRole("button")[1];
|
|
378
|
+
_userEvent["default"].click(action);
|
|
379
|
+
expect(onClick).toHaveBeenCalled();
|
|
380
|
+
});
|
|
305
381
|
});
|
|
@@ -16,7 +16,7 @@ export type Column = {
|
|
|
16
16
|
*/
|
|
17
17
|
isSortable?: boolean;
|
|
18
18
|
};
|
|
19
|
-
type Row = {
|
|
19
|
+
export type Row = {
|
|
20
20
|
/**
|
|
21
21
|
* Value to be displayed in the cell.
|
|
22
22
|
*/
|
|
@@ -27,7 +27,7 @@ type Row = {
|
|
|
27
27
|
*/
|
|
28
28
|
sortValue?: string;
|
|
29
29
|
};
|
|
30
|
-
type
|
|
30
|
+
type CommonProps = {
|
|
31
31
|
/**
|
|
32
32
|
* An array of objects representing the columns of the table.
|
|
33
33
|
*/
|
|
@@ -37,6 +37,24 @@ type Props = {
|
|
|
37
37
|
* as many objects as columns in the table.
|
|
38
38
|
*/
|
|
39
39
|
rows: Row[][];
|
|
40
|
+
/**
|
|
41
|
+
* Size of the margin to be applied to the component. You can pass an object with 'top',
|
|
42
|
+
* 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
|
|
43
|
+
*/
|
|
44
|
+
margin?: Space | Margin;
|
|
45
|
+
/**
|
|
46
|
+
* Value of the tabindex attribute applied to the sortable icon.
|
|
47
|
+
*/
|
|
48
|
+
tabIndex?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Determines the visual style and layout
|
|
51
|
+
* - "default": The default mode with big spacing
|
|
52
|
+
* - "reduced": A reduced mode with minimal spacing for dense tables
|
|
53
|
+
*/
|
|
54
|
+
mode?: "default" | "reduced";
|
|
55
|
+
};
|
|
56
|
+
type PaginatedProps = CommonProps & {
|
|
57
|
+
hidePaginator?: false;
|
|
40
58
|
/**
|
|
41
59
|
* If true, a select component for navigation between pages will be displayed.
|
|
42
60
|
*/
|
|
@@ -54,14 +72,29 @@ type Props = {
|
|
|
54
72
|
* option. The value selected will be passed as a parameter.
|
|
55
73
|
*/
|
|
56
74
|
itemsPerPageFunction?: (value: number) => void;
|
|
75
|
+
};
|
|
76
|
+
type NonPaginatedProps = CommonProps & {
|
|
57
77
|
/**
|
|
58
|
-
*
|
|
59
|
-
* 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
|
|
78
|
+
* If true, paginator will not be displayed.
|
|
60
79
|
*/
|
|
61
|
-
|
|
80
|
+
hidePaginator: true;
|
|
62
81
|
/**
|
|
63
|
-
*
|
|
82
|
+
* If true, a select component for navigation between pages will be displayed.
|
|
64
83
|
*/
|
|
65
|
-
|
|
84
|
+
showGoToPage?: never;
|
|
85
|
+
/**
|
|
86
|
+
* Number of items per page.
|
|
87
|
+
*/
|
|
88
|
+
itemsPerPage?: never;
|
|
89
|
+
/**
|
|
90
|
+
* An array of numbers representing the items per page options.
|
|
91
|
+
*/
|
|
92
|
+
itemsPerPageOptions?: never;
|
|
93
|
+
/**
|
|
94
|
+
* This function will be called when the user selects an item per page
|
|
95
|
+
* option. The value selected will be passed as a parameter.
|
|
96
|
+
*/
|
|
97
|
+
itemsPerPageFunction?: never;
|
|
66
98
|
};
|
|
99
|
+
type Props = PaginatedProps | NonPaginatedProps;
|
|
67
100
|
export default Props;
|
package/select/Listbox.js
CHANGED
|
@@ -7,14 +7,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
9
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
12
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
12
13
|
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
13
14
|
var _Option = _interopRequireDefault(require("./Option"));
|
|
14
|
-
var
|
|
15
|
+
var _uuid = require("uuid");
|
|
16
|
+
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
15
17
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
16
18
|
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 &&
|
|
19
|
+
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
20
|
var groupsHaveOptions = function groupsHaveOptions(options) {
|
|
19
21
|
return options !== null && options !== void 0 && options[0].options ? options.some(function (groupOption) {
|
|
20
22
|
var _groupOption$options;
|
|
@@ -35,14 +37,17 @@ var Listbox = function Listbox(_ref) {
|
|
|
35
37
|
styles = _ref.styles;
|
|
36
38
|
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
37
39
|
var listboxRef = (0, _react.useRef)(null);
|
|
40
|
+
var _useState = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
|
|
41
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 1),
|
|
42
|
+
listBoxId = _useState2[0];
|
|
38
43
|
var globalIndex = optional && !multiple ? 0 : -1;
|
|
39
44
|
var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
|
|
45
|
+
var groupId = "".concat(listBoxId, "-group-").concat(mapIndex);
|
|
40
46
|
if (option.options) {
|
|
41
|
-
var groupId = "group-".concat(mapIndex);
|
|
42
47
|
return option.options.length > 0 && /*#__PURE__*/_react["default"].createElement("li", {
|
|
43
|
-
key:
|
|
48
|
+
key: groupId
|
|
44
49
|
}, /*#__PURE__*/_react["default"].createElement(GroupList, {
|
|
45
|
-
role: "
|
|
50
|
+
role: "listbox",
|
|
46
51
|
"aria-labelledby": groupId
|
|
47
52
|
}, /*#__PURE__*/_react["default"].createElement(GroupLabel, {
|
|
48
53
|
role: "presentation",
|
|
@@ -50,8 +55,8 @@ var Listbox = function Listbox(_ref) {
|
|
|
50
55
|
}, option.label), option.options.map(function (singleOption) {
|
|
51
56
|
globalIndex++;
|
|
52
57
|
return /*#__PURE__*/_react["default"].createElement(_Option["default"], {
|
|
53
|
-
key: "option-".concat(singleOption.value),
|
|
54
|
-
id: "option-".concat(globalIndex),
|
|
58
|
+
key: "".concat(listBoxId, "-option-").concat(singleOption.value),
|
|
59
|
+
id: "".concat(listBoxId, "-option-").concat(globalIndex),
|
|
55
60
|
option: singleOption,
|
|
56
61
|
onClick: handleOptionOnClick,
|
|
57
62
|
multiple: multiple,
|
|
@@ -64,8 +69,8 @@ var Listbox = function Listbox(_ref) {
|
|
|
64
69
|
} else {
|
|
65
70
|
globalIndex++;
|
|
66
71
|
return /*#__PURE__*/_react["default"].createElement(_Option["default"], {
|
|
67
|
-
key: "option-".concat(option.value),
|
|
68
|
-
id: "option-".concat(globalIndex),
|
|
72
|
+
key: "".concat(listBoxId, "-option-").concat(option.value),
|
|
73
|
+
id: "".concat(listBoxId, "-option-").concat(globalIndex),
|
|
69
74
|
option: option,
|
|
70
75
|
onClick: handleOptionOnClick,
|
|
71
76
|
multiple: multiple,
|
|
@@ -93,6 +98,10 @@ var Listbox = function Listbox(_ref) {
|
|
|
93
98
|
inline: "start"
|
|
94
99
|
});
|
|
95
100
|
}, [visualFocusIndex]);
|
|
101
|
+
var hasOptionGroups = options.some(function (option) {
|
|
102
|
+
var _option$options;
|
|
103
|
+
return ((_option$options = option.options) === null || _option$options === void 0 ? void 0 : _option$options.length) > 0;
|
|
104
|
+
});
|
|
96
105
|
return /*#__PURE__*/_react["default"].createElement(ListboxContainer, {
|
|
97
106
|
id: id,
|
|
98
107
|
onClick: function onClick(event) {
|
|
@@ -102,12 +111,15 @@ var Listbox = function Listbox(_ref) {
|
|
|
102
111
|
event.preventDefault();
|
|
103
112
|
},
|
|
104
113
|
ref: listboxRef,
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
114
|
+
"aria-multiselectable": !hasOptionGroups ? multiple : undefined,
|
|
115
|
+
style: styles,
|
|
116
|
+
role: hasOptionGroups ? "list" : "listbox",
|
|
117
|
+
"aria-label": "List of options"
|
|
118
|
+
}, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
119
|
+
icon: "search_off"
|
|
120
|
+
})), translatedLabels.select.noMatchesErrorMessage) : optional && !multiple && /*#__PURE__*/_react["default"].createElement(_Option["default"], {
|
|
121
|
+
key: "".concat(id, "-option-").concat(optionalItem.value),
|
|
122
|
+
id: "".concat(id, "-option-", 0),
|
|
111
123
|
option: optionalItem,
|
|
112
124
|
onClick: handleOptionOnClick,
|
|
113
125
|
multiple: multiple,
|
|
@@ -135,7 +147,7 @@ var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_temp
|
|
|
135
147
|
var OptionsSystemMessage = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 4px 16px;\n color: ", ";\n font-size: 0.875rem;\n line-height: 1.715em;\n"])), function (props) {
|
|
136
148
|
return props.theme.systemMessageFontColor;
|
|
137
149
|
});
|
|
138
|
-
var NoMatchesFoundIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 16px;\n width: 16px;\n padding: 4px;\n margin-right: 0.25rem;\n"])));
|
|
150
|
+
var NoMatchesFoundIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 16px;\n width: 16px;\n padding: 4px;\n margin-right: 0.25rem;\n font-size: 16px;\n"])));
|
|
139
151
|
var GroupList = _styledComponents["default"].ul(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0;\n"])));
|
|
140
152
|
var GroupLabel = _styledComponents["default"].li(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 4px 16px;\n font-weight: ", ";\n line-height: 1.715em;\n"])), function (props) {
|
|
141
153
|
return props.theme.listGroupLabelFontWeight;
|
package/select/Option.js
CHANGED
|
@@ -9,7 +9,7 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
|
|
|
9
9
|
var _react = _interopRequireDefault(require("react"));
|
|
10
10
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
11
|
var _Checkbox = _interopRequireDefault(require("../checkbox/Checkbox"));
|
|
12
|
-
var
|
|
12
|
+
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
13
13
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
14
14
|
var Option = function Option(_ref) {
|
|
15
15
|
var id = _ref.id,
|
|
@@ -21,6 +21,11 @@ var Option = function Option(_ref) {
|
|
|
21
21
|
isGroupedOption = _ref$isGroupedOption === void 0 ? false : _ref$isGroupedOption,
|
|
22
22
|
isLastOption = _ref.isLastOption,
|
|
23
23
|
isSelected = _ref.isSelected;
|
|
24
|
+
var handleOnMouseEnter = function handleOnMouseEnter(event) {
|
|
25
|
+
var label = event.currentTarget;
|
|
26
|
+
var optionElement = document.getElementById(id);
|
|
27
|
+
if (optionElement.title === "" && label.scrollWidth > label.clientWidth) optionElement.title = option.label;
|
|
28
|
+
};
|
|
24
29
|
return /*#__PURE__*/_react["default"].createElement(OptionItem, {
|
|
25
30
|
id: id,
|
|
26
31
|
onClick: function onClick() {
|
|
@@ -29,7 +34,8 @@ var Option = function Option(_ref) {
|
|
|
29
34
|
visualFocused: visualFocused,
|
|
30
35
|
selected: isSelected,
|
|
31
36
|
role: "option",
|
|
32
|
-
"aria-selected": isSelected
|
|
37
|
+
"aria-selected": !multiple ? isSelected : undefined,
|
|
38
|
+
tabIndex: 0
|
|
33
39
|
}, /*#__PURE__*/_react["default"].createElement(StyledOption, {
|
|
34
40
|
visualFocused: visualFocused,
|
|
35
41
|
selected: isSelected,
|
|
@@ -41,15 +47,18 @@ var Option = function Option(_ref) {
|
|
|
41
47
|
tabIndex: -1
|
|
42
48
|
}), option.icon && /*#__PURE__*/_react["default"].createElement(OptionIcon, {
|
|
43
49
|
grouped: isGroupedOption,
|
|
44
|
-
multiple: multiple
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
src: option.icon
|
|
50
|
+
multiple: multiple
|
|
51
|
+
}, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
52
|
+
icon: option.icon
|
|
48
53
|
}) : option.icon), /*#__PURE__*/_react["default"].createElement(OptionContent, {
|
|
49
54
|
grouped: isGroupedOption,
|
|
50
55
|
hasIcon: option.icon ? true : false,
|
|
51
56
|
multiple: multiple
|
|
52
|
-
}, /*#__PURE__*/_react["default"].createElement(OptionLabel,
|
|
57
|
+
}, /*#__PURE__*/_react["default"].createElement(OptionLabel, {
|
|
58
|
+
onMouseEnter: handleOnMouseEnter
|
|
59
|
+
}, option.label), !multiple && isSelected && /*#__PURE__*/_react["default"].createElement(OptionSelectedIndicator, null, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
60
|
+
icon: "done"
|
|
61
|
+
})))));
|
|
53
62
|
};
|
|
54
63
|
var OptionItem = _styledComponents["default"].li(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0 0.5rem;\n box-shadow: inset 0 0 0 2px transparent;\n ", "\n ", ";\n line-height: 1.715em;\n cursor: pointer;\n\n &:hover {\n ", ";\n }\n &:active {\n ", ";\n }\n"])), function (props) {
|
|
55
64
|
return props.visualFocused && "box-shadow: inset 0 0 0 2px ".concat(props.theme.focusListOptionBorderColor, ";");
|
|
@@ -60,12 +69,12 @@ var OptionItem = _styledComponents["default"].li(_templateObject || (_templateOb
|
|
|
60
69
|
}, function (props) {
|
|
61
70
|
return props.selected ? "background-color: ".concat(props.theme.selectedActiveListOptionBackgroundColor, ";") : "background-color: ".concat(props.theme.unselectedActiveListOptionBackgroundColor, ";");
|
|
62
71
|
});
|
|
63
|
-
var StyledOption = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 0.5rem 0.188rem 0;\n min-height: 24px;\n ", "\n ", ";\n"])), function (props) {
|
|
72
|
+
var StyledOption = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 0.5rem 0.188rem 0;\n min-height: 24px;\n align-items: center;\n ", "\n ", ";\n"])), function (props) {
|
|
64
73
|
return props.grouped && props.multiple && "padding-left: 16px;";
|
|
65
74
|
}, function (props) {
|
|
66
75
|
return props.last || props.visualFocused || props.selected ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listOptionDividerColor);
|
|
67
76
|
});
|
|
68
|
-
var OptionIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.125rem;\n margin-left: ", ";\n color: ", ";\n\n svg
|
|
77
|
+
var OptionIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.125rem;\n margin-left: ", ";\n color: ", ";\n\n svg {\n height: 24px;\n width: 24px;\n }\n font-size: 24px;\n"])), function (props) {
|
|
69
78
|
return props.grouped && !props.multiple ? "16px" : "8px";
|
|
70
79
|
}, function (props) {
|
|
71
80
|
return props.theme.listOptionIconColor;
|
|
@@ -74,7 +83,7 @@ var OptionContent = _styledComponents["default"].span(_templateObject4 || (_temp
|
|
|
74
83
|
return props.grouped && !props.multiple && !props.hasIcon ? "16px" : "8px";
|
|
75
84
|
});
|
|
76
85
|
var OptionLabel = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
|
|
77
|
-
var OptionSelectedIndicator = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n
|
|
86
|
+
var OptionSelectedIndicator = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n font-size: 16px;\n"])), function (props) {
|
|
78
87
|
return props.theme.selectedListOptionIconColor;
|
|
79
88
|
});
|
|
80
89
|
var _default = exports["default"] = /*#__PURE__*/_react["default"].memo(Option);
|