@dxc-technology/halstack-react 12.0.1 → 12.1.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/HalstackContext.d.ts +3 -0
- package/HalstackContext.js +5 -1
- package/breadcrumbs/Breadcrumbs.stories.tsx +1 -1
- package/breadcrumbs/Breadcrumbs.test.js +1 -2
- package/card/Card.stories.tsx +1 -1
- package/chip/Chip.accessibility.test.js +0 -2
- package/chip/Chip.js +21 -10
- package/chip/Chip.stories.tsx +43 -79
- package/chip/types.d.ts +12 -35
- package/common/variables.d.ts +3 -0
- package/common/variables.js +4 -1
- package/contextual-menu/ContextualMenu.js +24 -4
- package/contextual-menu/ContextualMenu.stories.tsx +5 -14
- package/contextual-menu/ContextualMenu.test.js +108 -66
- package/contextual-menu/GroupItem.js +9 -9
- package/contextual-menu/ItemAction.d.ts +1 -1
- package/contextual-menu/ItemAction.js +8 -9
- package/contextual-menu/SingleItem.d.ts +1 -1
- package/contextual-menu/SingleItem.js +14 -14
- package/contextual-menu/types.d.ts +9 -6
- package/date-input/Calendar.js +46 -30
- package/date-input/DateInput.accessibility.test.js +12 -13
- package/date-input/DateInput.js +9 -3
- package/date-input/DateInput.stories.tsx +5 -6
- package/date-input/DateInput.test.js +30 -31
- package/date-input/YearPicker.js +9 -4
- package/dialog/Dialog.stories.tsx +2 -3
- package/dialog/Dialog.test.js +1 -2
- package/dropdown/Dropdown.accessibility.test.js +1 -2
- package/dropdown/Dropdown.stories.tsx +1 -1
- package/dropdown/Dropdown.test.js +1 -2
- package/file-input/FileInput.js +1 -3
- package/file-input/types.d.ts +0 -4
- package/grid/Grid.stories.tsx +3 -1
- package/header/Header.stories.tsx +1 -1
- package/icon/Icon.js +1 -1
- package/main.d.ts +0 -1
- package/main.js +0 -1
- package/number-input/NumberInput.accessibility.test.js +1 -2
- package/number-input/NumberInput.stories.tsx +2 -16
- package/number-input/NumberInput.test.js +1 -2
- package/package.json +17 -15
- package/paginator/Paginator.accessibility.test.js +1 -2
- package/paginator/Paginator.test.js +1 -2
- package/password-input/PasswordInput.accessibility.test.js +1 -2
- package/password-input/PasswordInput.stories.tsx +1 -1
- package/password-input/PasswordInput.test.js +1 -2
- package/resultset-table/ResultsetTable.accessibility.test.js +1 -2
- package/resultset-table/ResultsetTable.stories.tsx +1 -1
- package/resultset-table/ResultsetTable.test.js +1 -2
- package/select/Select.accessibility.test.js +1 -2
- package/select/Select.stories.tsx +1 -1
- package/select/Select.test.js +1 -2
- package/sidenav/Sidenav.stories.tsx +1 -1
- package/slider/Slider.accessibility.test.js +1 -2
- package/slider/Slider.test.js +1 -2
- package/table/Table.accessibility.test.js +1 -2
- package/table/Table.stories.tsx +1 -1
- package/table/Table.test.js +1 -2
- package/tabs/Tabs.stories.tsx +2 -2
- package/tag/Tag.stories.tsx +1 -1
- package/text-input/TextInput.accessibility.test.js +1 -2
- package/text-input/TextInput.stories.tsx +2 -8
- package/text-input/TextInput.test.js +1 -2
- package/textarea/Textarea.js +11 -8
- package/toggle-group/ToggleGroup.stories.tsx +1 -1
- package/typography/Typography.stories.tsx +1 -3
- package/useTheme.d.ts +3 -0
- package/utils/FocusLock.js +2 -1
- package/wizard/Wizard.stories.tsx +1 -1
- package/common/fonts.css +0 -2
|
@@ -60,144 +60,186 @@ var groups = [{
|
|
|
60
60
|
label: "Item 8"
|
|
61
61
|
}];
|
|
62
62
|
describe("Contextual menu component tests", function () {
|
|
63
|
-
test("
|
|
64
|
-
var _render
|
|
65
|
-
items: items
|
|
66
|
-
})),
|
|
67
|
-
getAllByRole = _render.getAllByRole,
|
|
68
|
-
getByRole = _render.getByRole;
|
|
69
|
-
expect(getAllByRole("menuitem").length).toBe(4);
|
|
70
|
-
var actions = getAllByRole("button");
|
|
71
|
-
expect(actions[0].getAttribute("aria-selected")).toBeTruthy();
|
|
72
|
-
expect(getByRole("menu")).toBeTruthy();
|
|
73
|
-
});
|
|
74
|
-
test("Group - Group items collapse when clicked", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
75
|
-
var _render2, queryByText, getByText, getAllByRole, group1;
|
|
63
|
+
test("Single - Renders with correct aria attributes", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
64
|
+
var _render, getAllByRole, getByRole, actions;
|
|
76
65
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
77
66
|
while (1) switch (_context.prev = _context.next) {
|
|
78
67
|
case 0:
|
|
79
|
-
|
|
68
|
+
_render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ContextualMenu["default"], {
|
|
69
|
+
items: items
|
|
70
|
+
})), getAllByRole = _render.getAllByRole, getByRole = _render.getByRole;
|
|
71
|
+
expect(getAllByRole("menuitem").length).toBe(4);
|
|
72
|
+
actions = getAllByRole("button");
|
|
73
|
+
_context.next = 5;
|
|
74
|
+
return _userEvent["default"].click(actions[0]);
|
|
75
|
+
case 5:
|
|
76
|
+
expect(actions[0].getAttribute("aria-selected")).toBeTruthy();
|
|
77
|
+
expect(getByRole("menu")).toBeTruthy();
|
|
78
|
+
case 7:
|
|
79
|
+
case "end":
|
|
80
|
+
return _context.stop();
|
|
81
|
+
}
|
|
82
|
+
}, _callee);
|
|
83
|
+
})));
|
|
84
|
+
test("Single - An item can appear as selected by default by using the attribute selectedByDefault", function () {
|
|
85
|
+
var test = [{
|
|
86
|
+
label: "Tested item",
|
|
87
|
+
selectedByDefault: true
|
|
88
|
+
}];
|
|
89
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ContextualMenu["default"], {
|
|
90
|
+
items: test
|
|
91
|
+
})),
|
|
92
|
+
getByRole = _render2.getByRole;
|
|
93
|
+
var item = getByRole("button");
|
|
94
|
+
expect(item.getAttribute("aria-selected")).toBeTruthy();
|
|
95
|
+
});
|
|
96
|
+
test("Group - Group items collapse when clicked", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
97
|
+
var _render3, queryByText, getByText;
|
|
98
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
99
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
100
|
+
case 0:
|
|
101
|
+
_render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ContextualMenu["default"], {
|
|
80
102
|
items: groups
|
|
81
|
-
})), queryByText =
|
|
82
|
-
|
|
83
|
-
_context.next = 4;
|
|
103
|
+
})), queryByText = _render3.queryByText, getByText = _render3.getByText;
|
|
104
|
+
_context2.next = 3;
|
|
84
105
|
return _userEvent["default"].click(getByText("Grouped Item 1"));
|
|
85
|
-
case
|
|
106
|
+
case 3:
|
|
86
107
|
expect(getByText("Item 1")).toBeTruthy();
|
|
87
108
|
expect(getByText("Grouped Item 2")).toBeTruthy();
|
|
88
|
-
|
|
109
|
+
_context2.next = 7;
|
|
89
110
|
return _userEvent["default"].click(getByText("Grouped Item 2"));
|
|
90
|
-
case
|
|
111
|
+
case 7:
|
|
91
112
|
expect(getByText("Item 2")).toBeTruthy();
|
|
92
113
|
expect(getByText("Item 3")).toBeTruthy();
|
|
93
|
-
|
|
114
|
+
_context2.next = 11;
|
|
94
115
|
return _userEvent["default"].click(getByText("Grouped Item 1"));
|
|
95
|
-
case
|
|
116
|
+
case 11:
|
|
96
117
|
expect(queryByText("Item 1")).toBeFalsy();
|
|
97
118
|
expect(queryByText("Item 2")).toBeFalsy();
|
|
98
119
|
expect(queryByText("Item 3")).toBeFalsy();
|
|
99
|
-
case
|
|
120
|
+
case 14:
|
|
100
121
|
case "end":
|
|
101
|
-
return
|
|
122
|
+
return _context2.stop();
|
|
102
123
|
}
|
|
103
|
-
},
|
|
124
|
+
}, _callee2);
|
|
104
125
|
})));
|
|
105
|
-
test("Group - Renders with correct aria attributes", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
106
|
-
var
|
|
107
|
-
return _regenerator["default"].wrap(function
|
|
108
|
-
while (1) switch (
|
|
126
|
+
test("Group - Renders with correct aria attributes", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
127
|
+
var _render4, getAllByRole, group1, optionToBeClicked;
|
|
128
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
129
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
109
130
|
case 0:
|
|
110
|
-
|
|
131
|
+
_render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ContextualMenu["default"], {
|
|
111
132
|
items: groups
|
|
112
|
-
})),
|
|
133
|
+
})), getAllByRole = _render4.getAllByRole;
|
|
113
134
|
group1 = getAllByRole("button")[0];
|
|
114
|
-
|
|
135
|
+
_context3.next = 4;
|
|
115
136
|
return _userEvent["default"].click(group1);
|
|
116
137
|
case 4:
|
|
117
138
|
expect(group1.getAttribute("aria-expanded")).toBeTruthy();
|
|
118
139
|
expect(group1.getAttribute("aria-controls")).toBe(getAllByRole("list")[0].id);
|
|
119
|
-
|
|
120
|
-
return _userEvent["default"].click(
|
|
140
|
+
_context3.next = 8;
|
|
141
|
+
return _userEvent["default"].click(getAllByRole("button")[2]);
|
|
121
142
|
case 8:
|
|
122
|
-
|
|
123
|
-
return _userEvent["default"].click(
|
|
143
|
+
_context3.next = 10;
|
|
144
|
+
return _userEvent["default"].click(getAllByRole("button")[6]);
|
|
124
145
|
case 10:
|
|
125
146
|
expect(getAllByRole("menuitem").length).toBe(10);
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
147
|
+
optionToBeClicked = getAllByRole("button")[4];
|
|
148
|
+
_context3.next = 14;
|
|
149
|
+
return _userEvent["default"].click(optionToBeClicked);
|
|
150
|
+
case 14:
|
|
151
|
+
expect(optionToBeClicked.getAttribute("aria-selected")).toBeTruthy();
|
|
152
|
+
case 15:
|
|
129
153
|
case "end":
|
|
130
|
-
return
|
|
154
|
+
return _context3.stop();
|
|
131
155
|
}
|
|
132
|
-
},
|
|
156
|
+
}, _callee3);
|
|
133
157
|
})));
|
|
134
|
-
test("Group -
|
|
135
|
-
var
|
|
136
|
-
|
|
137
|
-
|
|
158
|
+
test("Group - A grouped item, selected by default, must be visible (expanded group) in the first render of the component", function () {
|
|
159
|
+
var test = [{
|
|
160
|
+
label: "Grouped item",
|
|
161
|
+
items: [{
|
|
162
|
+
label: "Tested item",
|
|
163
|
+
selectedByDefault: true
|
|
164
|
+
}]
|
|
165
|
+
}];
|
|
166
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ContextualMenu["default"], {
|
|
167
|
+
items: test
|
|
168
|
+
})),
|
|
169
|
+
getByText = _render5.getByText,
|
|
170
|
+
getAllByRole = _render5.getAllByRole;
|
|
171
|
+
expect(getByText("Tested item")).toBeTruthy();
|
|
172
|
+
expect(getAllByRole("button")[1].getAttribute("aria-selected")).toBeTruthy();
|
|
173
|
+
});
|
|
174
|
+
test("Group - Collapsed groups render as selected when containing a selected item", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
175
|
+
var _render6, getAllByRole, group1, group2, item;
|
|
176
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
177
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
138
178
|
case 0:
|
|
139
|
-
|
|
179
|
+
_render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ContextualMenu["default"], {
|
|
140
180
|
items: groups
|
|
141
|
-
})), getAllByRole =
|
|
181
|
+
})), getAllByRole = _render6.getAllByRole;
|
|
142
182
|
group1 = getAllByRole("button")[0];
|
|
143
|
-
|
|
183
|
+
_context4.next = 4;
|
|
144
184
|
return _userEvent["default"].click(group1);
|
|
145
185
|
case 4:
|
|
146
186
|
group2 = getAllByRole("button")[2];
|
|
147
|
-
|
|
187
|
+
_context4.next = 7;
|
|
148
188
|
return _userEvent["default"].click(group2);
|
|
149
189
|
case 7:
|
|
150
190
|
item = getAllByRole("button")[3];
|
|
151
|
-
|
|
191
|
+
_context4.next = 10;
|
|
152
192
|
return _userEvent["default"].click(item);
|
|
153
193
|
case 10:
|
|
154
194
|
expect(item.getAttribute("aria-selected")).toBeTruthy();
|
|
155
195
|
expect(group1.getAttribute("aria-selected")).toBe("false");
|
|
156
196
|
expect(group2.getAttribute("aria-selected")).toBe("false");
|
|
157
|
-
|
|
197
|
+
_context4.next = 15;
|
|
158
198
|
return _userEvent["default"].click(group2);
|
|
159
199
|
case 15:
|
|
160
200
|
expect(group2.getAttribute("aria-selected")).toBe("true");
|
|
161
|
-
|
|
201
|
+
_context4.next = 18;
|
|
162
202
|
return _userEvent["default"].click(group1);
|
|
163
203
|
case 18:
|
|
164
204
|
expect(group1.getAttribute("aria-selected")).toBe("true");
|
|
165
205
|
case 19:
|
|
166
206
|
case "end":
|
|
167
|
-
return
|
|
207
|
+
return _context4.stop();
|
|
168
208
|
}
|
|
169
|
-
},
|
|
209
|
+
}, _callee4);
|
|
170
210
|
})));
|
|
171
|
-
test("Sections - Renders with correct aria attributes", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
172
|
-
var
|
|
173
|
-
return _regenerator["default"].wrap(function
|
|
174
|
-
while (1) switch (
|
|
211
|
+
test("Sections - Renders with correct aria attributes", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
212
|
+
var _render7, getAllByRole, actions, section;
|
|
213
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
214
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
175
215
|
case 0:
|
|
176
|
-
|
|
216
|
+
_render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ContextualMenu["default"], {
|
|
177
217
|
items: sections
|
|
178
|
-
})), getAllByRole =
|
|
218
|
+
})), getAllByRole = _render7.getAllByRole;
|
|
179
219
|
expect(getAllByRole("menuitem").length).toBe(6);
|
|
180
220
|
actions = getAllByRole("button");
|
|
181
|
-
|
|
221
|
+
_context5.next = 5;
|
|
182
222
|
return _userEvent["default"].click(actions[0]);
|
|
183
223
|
case 5:
|
|
184
224
|
expect(actions[0].getAttribute("aria-selected")).toBeTruthy();
|
|
185
225
|
expect(getAllByRole("group").length).toBe(2);
|
|
186
|
-
|
|
226
|
+
section = getAllByRole("group")[0];
|
|
227
|
+
expect(section.getAttribute("aria-labelledby")).toBe("Team repositories");
|
|
228
|
+
case 9:
|
|
187
229
|
case "end":
|
|
188
|
-
return
|
|
230
|
+
return _context5.stop();
|
|
189
231
|
}
|
|
190
|
-
},
|
|
232
|
+
}, _callee5);
|
|
191
233
|
})));
|
|
192
234
|
test("The onSelect event from each item is called correctly", function () {
|
|
193
235
|
var test = [{
|
|
194
236
|
label: "Tested item",
|
|
195
237
|
onSelect: jest.fn()
|
|
196
238
|
}];
|
|
197
|
-
var
|
|
239
|
+
var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ContextualMenu["default"], {
|
|
198
240
|
items: test
|
|
199
241
|
})),
|
|
200
|
-
getByRole =
|
|
242
|
+
getByRole = _render8.getByRole;
|
|
201
243
|
var item = getByRole("button");
|
|
202
244
|
_react2.fireEvent.click(item);
|
|
203
245
|
expect(test[0].onSelect).toHaveBeenCalled();
|
|
@@ -23,26 +23,26 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
|
|
|
23
23
|
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; }
|
|
24
24
|
var isGroupSelected = function isGroupSelected(items, selectedItemId) {
|
|
25
25
|
return items.some(function (item) {
|
|
26
|
-
|
|
26
|
+
if ("items" in item) return isGroupSelected(item.items, selectedItemId);else if (selectedItemId !== -1) return item.id === selectedItemId;else return item.selectedByDefault;
|
|
27
27
|
});
|
|
28
28
|
};
|
|
29
29
|
var GroupItem = function GroupItem(_ref) {
|
|
30
30
|
var items = _ref.items,
|
|
31
31
|
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
|
32
32
|
var groupMenuId = "group-menu-".concat(props.label);
|
|
33
|
-
var
|
|
33
|
+
var _useContext = (0, _react.useContext)(_ContextualMenu.ContextualMenuContext),
|
|
34
|
+
selectedItemId = _useContext.selectedItemId;
|
|
35
|
+
var groupSelected = (0, _react.useMemo)(function () {
|
|
36
|
+
return isGroupSelected(items, selectedItemId);
|
|
37
|
+
}, [items, selectedItemId]);
|
|
38
|
+
var _useState = (0, _react.useState)(groupSelected && selectedItemId === -1 ? true : false),
|
|
34
39
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
35
40
|
isOpen = _useState2[0],
|
|
36
41
|
setIsOpen = _useState2[1];
|
|
37
|
-
var _useContext = (0, _react.useContext)(_ContextualMenu.ContextualMenuContext),
|
|
38
|
-
selectedItemId = _useContext.selectedItemId;
|
|
39
|
-
var selected = (0, _react.useMemo)(function () {
|
|
40
|
-
return !isOpen && isGroupSelected(items, selectedItemId);
|
|
41
|
-
}, [isOpen, items, selectedItemId]);
|
|
42
42
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_ItemAction["default"], (0, _extends2["default"])({
|
|
43
43
|
"aria-controls": groupMenuId,
|
|
44
44
|
"aria-expanded": isOpen ? true : undefined,
|
|
45
|
-
"aria-selected":
|
|
45
|
+
"aria-selected": groupSelected && !isOpen,
|
|
46
46
|
collapseIcon: isOpen ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
47
47
|
icon: "filled_expand_less"
|
|
48
48
|
}) : /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
@@ -53,7 +53,7 @@ var GroupItem = function GroupItem(_ref) {
|
|
|
53
53
|
return !isOpen;
|
|
54
54
|
});
|
|
55
55
|
},
|
|
56
|
-
selected:
|
|
56
|
+
selected: groupSelected && !isOpen
|
|
57
57
|
}, props)), isOpen && /*#__PURE__*/_react["default"].createElement(ItemsList, {
|
|
58
58
|
id: groupMenuId
|
|
59
59
|
}, items.map(function (item) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { ItemActionProps } from "./types";
|
|
3
|
-
declare const ItemAction: ({ badge, collapseIcon, icon, label, depthLevel,
|
|
3
|
+
declare const ItemAction: ({ badge, collapseIcon, icon, label, depthLevel, ...props }: ItemActionProps) => React.JSX.Element;
|
|
4
4
|
export default ItemAction;
|
|
@@ -12,23 +12,21 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
12
12
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
13
|
var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
|
|
14
14
|
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
15
|
-
var _templateObject, _templateObject2, _templateObject3;
|
|
16
|
-
var _excluded = ["badge", "collapseIcon", "icon", "label", "depthLevel"
|
|
15
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
16
|
+
var _excluded = ["badge", "collapseIcon", "icon", "label", "depthLevel"];
|
|
17
17
|
var ItemAction = function ItemAction(_ref) {
|
|
18
18
|
var badge = _ref.badge,
|
|
19
19
|
collapseIcon = _ref.collapseIcon,
|
|
20
20
|
icon = _ref.icon,
|
|
21
21
|
label = _ref.label,
|
|
22
22
|
depthLevel = _ref.depthLevel,
|
|
23
|
-
selected = _ref.selected,
|
|
24
23
|
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
|
25
24
|
var modifiedBadge = badge && /*#__PURE__*/_react["default"].cloneElement(badge, {
|
|
26
25
|
size: "small"
|
|
27
26
|
});
|
|
28
27
|
return /*#__PURE__*/_react["default"].createElement(Action, (0, _extends2["default"])({
|
|
29
|
-
depthLevel: depthLevel
|
|
30
|
-
|
|
31
|
-
}, props), /*#__PURE__*/_react["default"].createElement(Label, null, collapseIcon, icon && depthLevel === 0 && (typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
28
|
+
depthLevel: depthLevel
|
|
29
|
+
}, props), /*#__PURE__*/_react["default"].createElement(Label, null, collapseIcon, icon && depthLevel === 0 && /*#__PURE__*/_react["default"].createElement(Icon, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
32
30
|
icon: icon
|
|
33
31
|
}) : icon), /*#__PURE__*/_react["default"].createElement(Text, {
|
|
34
32
|
onMouseEnter: function onMouseEnter(event) {
|
|
@@ -37,7 +35,7 @@ var ItemAction = function ItemAction(_ref) {
|
|
|
37
35
|
}
|
|
38
36
|
}, label)), modifiedBadge);
|
|
39
37
|
};
|
|
40
|
-
var Action = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n border: none;\n border-radius: 4px;\n width: 100%;\n padding: ", ";\n box-shadow: inset 0 0 0 2px transparent;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ", ";\n ", ";\n cursor: pointer;\n overflow: hidden;\n\n &:hover {\n ", ";\n }\n &:active {\n ", ";\n }\n &:focus {\n outline: 2px solid ", ";\n outline-offset: -1px;\n }\n
|
|
38
|
+
var Action = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n border: none;\n border-radius: 4px;\n width: 100%;\n padding: ", ";\n box-shadow: inset 0 0 0 2px transparent;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ", ";\n ", ";\n cursor: pointer;\n overflow: hidden;\n\n &:hover {\n ", ";\n }\n &:active {\n ", ";\n }\n &:focus {\n outline: 2px solid ", ";\n outline-offset: -1px;\n }\n"])), function (props) {
|
|
41
39
|
return "".concat(_coreTokens["default"].spacing_4, " ").concat(_coreTokens["default"].spacing_8, " ").concat(_coreTokens["default"].spacing_4, " ", "\n calc(".concat(_coreTokens["default"].spacing_8, " + (").concat(_coreTokens["default"].spacing_24, " * ").concat(props.depthLevel, "))\n "), ";");
|
|
42
40
|
}, _coreTokens["default"].spacing_16, function (props) {
|
|
43
41
|
return props.selected ? "background-color: ".concat(_coreTokens["default"].color_purple_100, "; font-weight: ").concat(_coreTokens["default"].type_semibold, ";") : "background-color: ".concat(_coreTokens["default"].color_transparent);
|
|
@@ -46,6 +44,7 @@ var Action = _styledComponents["default"].button(_templateObject || (_templateOb
|
|
|
46
44
|
}, function (props) {
|
|
47
45
|
return props.selected ? "background-color: ".concat(_coreTokens["default"].color_purple_200, ";") : "background-color: ".concat(_coreTokens["default"].color_grey_100, ";");
|
|
48
46
|
}, _coreTokens["default"].color_blue_600);
|
|
49
|
-
var
|
|
50
|
-
var
|
|
47
|
+
var Icon = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n font-size: 16px;\n\n svg {\n height: 16px;\n width: 16px;\n }\n"])));
|
|
48
|
+
var Label = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n gap: ", ";\n overflow: hidden;\n"])), _coreTokens["default"].spacing_8);
|
|
49
|
+
var Text = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n line-height: 24px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n"])), _coreTokens["default"].color_grey_900, _coreTokens["default"].type_sans, _coreTokens["default"].type_scale_02);
|
|
51
50
|
var _default = exports["default"] = ItemAction;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { SingleItemProps } from "./types";
|
|
3
|
-
declare const SingleItem: ({
|
|
3
|
+
declare const SingleItem: ({ id, onSelect, selectedByDefault, ...props }: SingleItemProps) => React.JSX.Element;
|
|
4
4
|
export default SingleItem;
|
|
@@ -6,18 +6,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
9
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
12
|
var _ContextualMenu = require("./ContextualMenu");
|
|
11
13
|
var _ItemAction = _interopRequireDefault(require("./ItemAction"));
|
|
14
|
+
var _excluded = ["id", "onSelect", "selectedByDefault"];
|
|
12
15
|
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); }
|
|
13
16
|
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; }
|
|
14
17
|
var SingleItem = function SingleItem(_ref) {
|
|
15
|
-
var
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
depthLevel = _ref.depthLevel,
|
|
20
|
-
onSelect = _ref.onSelect;
|
|
18
|
+
var id = _ref.id,
|
|
19
|
+
onSelect = _ref.onSelect,
|
|
20
|
+
selectedByDefault = _ref.selectedByDefault,
|
|
21
|
+
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
|
21
22
|
var _useContext = (0, _react.useContext)(_ContextualMenu.ContextualMenuContext),
|
|
22
23
|
selectedItemId = _useContext.selectedItemId,
|
|
23
24
|
setSelectedItemId = _useContext.setSelectedItemId;
|
|
@@ -25,14 +26,13 @@ var SingleItem = function SingleItem(_ref) {
|
|
|
25
26
|
setSelectedItemId(id);
|
|
26
27
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect();
|
|
27
28
|
};
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
depthLevel: depthLevel,
|
|
29
|
+
(0, _react.useEffect)(function () {
|
|
30
|
+
if (selectedItemId === -1 && selectedByDefault) setSelectedItemId(id);
|
|
31
|
+
}, [selectedItemId, selectedByDefault, id]);
|
|
32
|
+
return /*#__PURE__*/_react["default"].createElement(_ItemAction["default"], (0, _extends2["default"])({
|
|
33
|
+
"aria-selected": selectedItemId === -1 ? selectedByDefault : selectedItemId === id,
|
|
34
34
|
onClick: handleClick,
|
|
35
|
-
selected: selectedItemId === id
|
|
36
|
-
});
|
|
35
|
+
selected: selectedItemId === -1 ? selectedByDefault : selectedItemId === id
|
|
36
|
+
}, props));
|
|
37
37
|
};
|
|
38
38
|
var _default = exports["default"] = SingleItem;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
|
|
3
|
-
type
|
|
3
|
+
type CommonItemProps = {
|
|
4
4
|
badge?: React.ReactElement;
|
|
5
5
|
icon?: string | SVG;
|
|
6
6
|
label: string;
|
|
7
|
+
};
|
|
8
|
+
type Item = CommonItemProps & {
|
|
7
9
|
onSelect?: () => void;
|
|
10
|
+
selectedByDefault?: boolean;
|
|
8
11
|
};
|
|
9
|
-
type GroupItem = {
|
|
10
|
-
badge?: React.ReactElement;
|
|
11
|
-
icon?: string | SVG;
|
|
12
|
+
type GroupItem = CommonItemProps & {
|
|
12
13
|
items: (Item | GroupItem)[];
|
|
13
|
-
label: string;
|
|
14
14
|
};
|
|
15
15
|
type Section = {
|
|
16
16
|
items: (Item | GroupItem)[];
|
|
@@ -45,9 +45,12 @@ type MenuItemProps = {
|
|
|
45
45
|
item: ItemWithId | GroupItemWithId;
|
|
46
46
|
depthLevel?: number;
|
|
47
47
|
};
|
|
48
|
-
type ItemActionProps = React.ButtonHTMLAttributes<HTMLButtonElement> &
|
|
48
|
+
type ItemActionProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
49
|
+
badge?: Item["badge"];
|
|
49
50
|
collapseIcon?: React.ReactNode;
|
|
50
51
|
depthLevel: number;
|
|
52
|
+
icon?: Item["icon"];
|
|
53
|
+
label: Item["label"];
|
|
51
54
|
selected: boolean;
|
|
52
55
|
};
|
|
53
56
|
type ContextualMenuContextProps = {
|
package/date-input/Calendar.js
CHANGED
|
@@ -11,8 +11,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
13
|
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
14
|
-
var
|
|
15
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
14
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
16
15
|
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
16
|
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
17
|
var getDays = function getDays(innerDate) {
|
|
@@ -49,12 +48,20 @@ var getDateToFocus = function getDateToFocus(selectedDate, innerDate, today) {
|
|
|
49
48
|
var isDaySelected = function isDaySelected(date, selectedDate) {
|
|
50
49
|
return (selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.get("month")) === date.month && (selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.get("year")) === date.year && (selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.get("date")) === date.day;
|
|
51
50
|
};
|
|
51
|
+
var divideDaysIntoWeeks = function divideDaysIntoWeeks(data, weekSize) {
|
|
52
|
+
return Array.from({
|
|
53
|
+
length: Math.ceil(data.length / weekSize)
|
|
54
|
+
}, function (_, rowIndex) {
|
|
55
|
+
return data.slice(rowIndex * weekSize, (rowIndex + 1) * weekSize);
|
|
56
|
+
});
|
|
57
|
+
};
|
|
52
58
|
var Calendar = function Calendar(_ref) {
|
|
53
59
|
var selectedDate = _ref.selectedDate,
|
|
54
60
|
innerDate = _ref.innerDate,
|
|
55
61
|
onInnerDateChange = _ref.onInnerDateChange,
|
|
56
62
|
onDaySelect = _ref.onDaySelect,
|
|
57
63
|
today = _ref.today;
|
|
64
|
+
var id = (0, _react.useId)();
|
|
58
65
|
var _useState = (0, _react.useState)(getDateToFocus(selectedDate, innerDate, today)),
|
|
59
66
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
60
67
|
dateToFocus = _useState2[0],
|
|
@@ -88,7 +95,7 @@ var Calendar = function Calendar(_ref) {
|
|
|
88
95
|
(0, _react.useEffect)(function () {
|
|
89
96
|
if (isFocusable) {
|
|
90
97
|
var _document$getElementB;
|
|
91
|
-
(_document$getElementB = document.getElementById("
|
|
98
|
+
(_document$getElementB = document.getElementById("".concat(id, "_day_").concat(dateToFocus.get("date"), "_month").concat(dateToFocus.get("month")))) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.focus();
|
|
92
99
|
setIsFocusable(false);
|
|
93
100
|
}
|
|
94
101
|
}, [dateToFocus, isFocusable]);
|
|
@@ -146,33 +153,40 @@ var Calendar = function Calendar(_ref) {
|
|
|
146
153
|
break;
|
|
147
154
|
}
|
|
148
155
|
};
|
|
149
|
-
return /*#__PURE__*/_react["default"].createElement(CalendarContainer,
|
|
150
|
-
|
|
151
|
-
|
|
156
|
+
return /*#__PURE__*/_react["default"].createElement(CalendarContainer, {
|
|
157
|
+
role: "grid"
|
|
158
|
+
}, /*#__PURE__*/_react["default"].createElement(CalendarHeaderRow, {
|
|
159
|
+
role: "row"
|
|
152
160
|
}, weekDays.map(function (weekDay) {
|
|
153
161
|
return /*#__PURE__*/_react["default"].createElement(WeekHeaderCell, {
|
|
154
|
-
key: weekDay
|
|
162
|
+
key: weekDay,
|
|
163
|
+
role: "columnheader"
|
|
155
164
|
}, weekDay);
|
|
156
|
-
})), /*#__PURE__*/_react["default"].createElement(
|
|
157
|
-
onBlur: handleOnBlur
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
165
|
+
})), /*#__PURE__*/_react["default"].createElement(MonthContainer, {
|
|
166
|
+
onBlur: handleOnBlur,
|
|
167
|
+
role: "rowgroup"
|
|
168
|
+
}, divideDaysIntoWeeks(dayCells, weekDays.length).map(function (week, rowIndex) {
|
|
169
|
+
return /*#__PURE__*/_react["default"].createElement(WeekContainer, {
|
|
170
|
+
key: "".concat(id, "_week_").concat(rowIndex),
|
|
171
|
+
role: "row"
|
|
172
|
+
}, week.map(function (date, index) {
|
|
173
|
+
return /*#__PURE__*/_react["default"].createElement(DayCellButton, {
|
|
174
|
+
id: "".concat(id, "_day_").concat(date.day, "_month").concat(date.month),
|
|
175
|
+
role: "gridcell",
|
|
176
|
+
"aria-selected": isDaySelected(date, selectedDate),
|
|
177
|
+
onKeyDown: function onKeyDown(event) {
|
|
178
|
+
return handleDayKeyboardEvent(event, date);
|
|
179
|
+
},
|
|
180
|
+
onClick: function onClick() {
|
|
181
|
+
return onDateClickHandler(date);
|
|
182
|
+
},
|
|
183
|
+
selected: isDaySelected(date, selectedDate),
|
|
184
|
+
actualMonth: date.month === innerDate.get("month"),
|
|
185
|
+
autoFocus: date.day === dateToFocus.get("date") && date.month === dateToFocus.get("month"),
|
|
186
|
+
tabIndex: date.day === dateToFocus.get("date") && date.month === dateToFocus.get("month") ? 0 : -1,
|
|
187
|
+
isCurrentDay: today.get("date") === date.day && today.get("month") === innerDate.get("month") && today.get("month") === date.month && today.get("year") === innerDate.get("year")
|
|
188
|
+
}, date.day);
|
|
189
|
+
}));
|
|
176
190
|
})));
|
|
177
191
|
};
|
|
178
192
|
var CalendarContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 0px 8px 8px 8px;\n width: 292px;\n font-family: ", ";\n font-size: ", ";\n color: ", ";\n font-weight: ", ";\n"])), function (props) {
|
|
@@ -184,9 +198,11 @@ var CalendarContainer = _styledComponents["default"].div(_templateObject || (_te
|
|
|
184
198
|
}, function (props) {
|
|
185
199
|
return props.theme.dateInput.pickerFontWeight;
|
|
186
200
|
});
|
|
187
|
-
var
|
|
188
|
-
var
|
|
189
|
-
var
|
|
201
|
+
var CalendarHeaderRow = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n"])));
|
|
202
|
+
var WeekHeaderCell = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n"])));
|
|
203
|
+
var MonthContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n gap: 4px;\n flex-direction: column;\n justify-content: space-between;\n"])));
|
|
204
|
+
var WeekContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n gap: 4px;\n justify-content: space-between;\n"])));
|
|
205
|
+
var DayCellButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 36px;\n height: 36px;\n padding: 0;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n font-family: ", ";\n font-size: ", ";\n color: ", ";\n font-weight: ", ";\n\n &:focus {\n outline: ", " solid 2px;\n }\n &:hover {\n background-color: ", ";\n color: ", ";\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n\n ", "\n background-color: ", ";\n color: ", ";\n"])), function (props) {
|
|
190
206
|
return props.theme.dateInput.pickerFontFamily;
|
|
191
207
|
}, function (props) {
|
|
192
208
|
return props.theme.dateInput.pickerFontSize;
|
|
@@ -10,17 +10,6 @@ var _react2 = require("@testing-library/react");
|
|
|
10
10
|
var _axeHelper = require("../../test/accessibility/axe-helper.js");
|
|
11
11
|
var _DateInput = _interopRequireDefault(require("./DateInput"));
|
|
12
12
|
var _disabledRules = require("../../test/accessibility/rules/specific/date-input/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
|
-
|
|
24
13
|
// Mocking DOMRect for Radix Primitive Popover
|
|
25
14
|
global.globalThis = global;
|
|
26
15
|
global.DOMRect = {
|
|
@@ -41,7 +30,7 @@ global.ResizeObserver = /*#__PURE__*/function () {
|
|
|
41
30
|
function ResizeObserver() {
|
|
42
31
|
(0, _classCallCheck2["default"])(this, ResizeObserver);
|
|
43
32
|
}
|
|
44
|
-
(0, _createClass2["default"])(ResizeObserver, [{
|
|
33
|
+
return (0, _createClass2["default"])(ResizeObserver, [{
|
|
45
34
|
key: "observe",
|
|
46
35
|
value: function observe() {}
|
|
47
36
|
}, {
|
|
@@ -51,8 +40,18 @@ global.ResizeObserver = /*#__PURE__*/function () {
|
|
|
51
40
|
key: "disconnect",
|
|
52
41
|
value: function disconnect() {}
|
|
53
42
|
}]);
|
|
54
|
-
return ResizeObserver;
|
|
55
43
|
}();
|
|
44
|
+
|
|
45
|
+
// TODO: REMOVE
|
|
46
|
+
|
|
47
|
+
var disabledRules = {
|
|
48
|
+
rules: _disabledRules.disabledRules.reduce(function (rulesObj, rule) {
|
|
49
|
+
rulesObj[rule] = {
|
|
50
|
+
enabled: false
|
|
51
|
+
};
|
|
52
|
+
return rulesObj;
|
|
53
|
+
}, {})
|
|
54
|
+
};
|
|
56
55
|
describe("DateInput component accessibility tests", function () {
|
|
57
56
|
it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
58
57
|
var _render, baseElement, results;
|