@pingux/astro 1.7.0-alpha.10 → 1.7.0-alpha.13

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.
Files changed (27) hide show
  1. package/lib/cjs/components/ComboBoxField/ComboBoxField.js +1 -1
  2. package/lib/cjs/components/ComboBoxField/ComboBoxField.test.js +8 -4
  3. package/lib/cjs/components/ListViewItem/ListViewItem.js +2 -1
  4. package/lib/cjs/components/MultiselectFilter/MultiselectFilter.js +1 -1
  5. package/lib/cjs/components/MultiselectFilterItem/MultiselectFilterItem.js +32 -11
  6. package/lib/cjs/components/MultiselectFilterItem/MultiselectFilterItem.test.js +13 -1
  7. package/lib/cjs/components/Text/Text.js +5 -1
  8. package/lib/cjs/components/Text/Text.stories.js +56 -2
  9. package/lib/cjs/components/Text/Text.test.js +46 -0
  10. package/lib/cjs/components/TimeZonePicker/TimeZonePicker.js +21 -10
  11. package/lib/cjs/recipes/MultiselectListContainer.stories.js +352 -0
  12. package/lib/cjs/styles/variants/boxes.js +2 -2
  13. package/lib/cjs/styles/variants/multiselectListContainer.js +4 -6
  14. package/lib/components/ComboBoxField/ComboBoxField.js +1 -1
  15. package/lib/components/ComboBoxField/ComboBoxField.test.js +8 -4
  16. package/lib/components/ListViewItem/ListViewItem.js +2 -1
  17. package/lib/components/MultiselectFilter/MultiselectFilter.js +1 -1
  18. package/lib/components/MultiselectFilterItem/MultiselectFilterItem.js +35 -12
  19. package/lib/components/MultiselectFilterItem/MultiselectFilterItem.test.js +11 -1
  20. package/lib/components/Text/Text.js +7 -2
  21. package/lib/components/Text/Text.stories.js +50 -0
  22. package/lib/components/Text/Text.test.js +36 -0
  23. package/lib/components/TimeZonePicker/TimeZonePicker.js +21 -10
  24. package/lib/recipes/MultiselectListContainer.stories.js +306 -0
  25. package/lib/styles/variants/boxes.js +2 -2
  26. package/lib/styles/variants/multiselectListContainer.js +4 -6
  27. package/package.json +1 -1
@@ -0,0 +1,352 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
6
+
7
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
8
+
9
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
10
+
11
+ var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
12
+
13
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
14
+
15
+ var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
16
+
17
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
18
+
19
+ var _filterInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
20
+
21
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
22
+
23
+ var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
24
+
25
+ _Object$defineProperty(exports, "__esModule", {
26
+ value: true
27
+ });
28
+
29
+ exports["default"] = exports.Default = void 0;
30
+
31
+ var _some = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/some"));
32
+
33
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
34
+
35
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
36
+
37
+ var _sort = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/sort"));
38
+
39
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
40
+
41
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
42
+
43
+ var _react = _interopRequireWildcard(require("react"));
44
+
45
+ var _i18n = require("@react-aria/i18n");
46
+
47
+ var _AccountIcon = _interopRequireDefault(require("mdi-react/AccountIcon"));
48
+
49
+ var _AccountGroupIcon = _interopRequireDefault(require("mdi-react/AccountGroupIcon"));
50
+
51
+ var _CheckIcon = _interopRequireDefault(require("mdi-react/CheckIcon"));
52
+
53
+ var _CloseIcon = _interopRequireDefault(require("mdi-react/CloseIcon"));
54
+
55
+ var _ChevronRightIcon = _interopRequireDefault(require("mdi-react/ChevronRightIcon"));
56
+
57
+ var _SearchIcon = _interopRequireDefault(require("mdi-react/SearchIcon"));
58
+
59
+ var _ = require("..");
60
+
61
+ var _react2 = require("@emotion/react");
62
+
63
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
64
+
65
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
66
+
67
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty2(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
68
+
69
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
70
+
71
+ var _default = {
72
+ title: 'Recipes/MultiselectListContainer'
73
+ };
74
+ exports["default"] = _default;
75
+ var data = [{
76
+ id: '1',
77
+ icon: 'Group',
78
+ key: 'Avengers',
79
+ name: 'Avengers',
80
+ subtitle: 'Default',
81
+ chipValue: '25',
82
+ isDefaultSelected: true
83
+ }, {
84
+ id: '2',
85
+ icon: 'Group',
86
+ key: 'Credit Cards',
87
+ name: 'Credit Cards',
88
+ subtitle: '',
89
+ chipValue: '123'
90
+ }, {
91
+ id: '3',
92
+ icon: 'Group',
93
+ key: 'Debit Cards',
94
+ name: 'Debit Cards',
95
+ subtitle: '',
96
+ chipValue: '23'
97
+ }, {
98
+ id: '4',
99
+ icon: 'Group',
100
+ key: 'Digital Investors',
101
+ name: 'Digital Investors',
102
+ subtitle: 'N America',
103
+ chipValue: '12',
104
+ isDefaultSelected: true
105
+ }, {
106
+ id: '5',
107
+ icon: 'Group',
108
+ key: 'Mortgages',
109
+ name: 'Mortgages',
110
+ subtitle: 'N America',
111
+ chipValue: '112'
112
+ }, {
113
+ id: '6',
114
+ icon: 'Group',
115
+ key: 'Person LOC',
116
+ name: 'Person LOC',
117
+ subtitle: '',
118
+ chipValue: '45'
119
+ }, {
120
+ id: '7',
121
+ icon: 'Group',
122
+ key: 'Production',
123
+ name: 'Production',
124
+ subtitle: '',
125
+ chipValue: '55'
126
+ }, {
127
+ id: '8',
128
+ icon: 'Group',
129
+ key: 'UX Team',
130
+ name: 'UX Team',
131
+ subtitle: '',
132
+ chipValue: '61'
133
+ }, {
134
+ id: '9',
135
+ icon: 'Group',
136
+ key: 'UI Team',
137
+ name: 'UI Team',
138
+ subtitle: '',
139
+ chipValue: '29'
140
+ }];
141
+
142
+ var Default = function Default() {
143
+ var _useState = (0, _react.useState)(data),
144
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
145
+ items = _useState2[0],
146
+ setItems = _useState2[1];
147
+
148
+ var _useState3 = (0, _react.useState)(''),
149
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
150
+ searchValue = _useState4[0],
151
+ setSearchValue = _useState4[1];
152
+
153
+ var _useFilter = (0, _i18n.useFilter)({
154
+ sensitivity: 'base'
155
+ }),
156
+ contains = _useFilter.contains;
157
+
158
+ var filteredItems = (0, _react.useMemo)(function () {
159
+ return (0, _filter["default"])(items).call(items, function (item) {
160
+ return contains(item.name, searchValue);
161
+ });
162
+ }, [items, searchValue]);
163
+ var selectedItems = (0, _react.useMemo)(function () {
164
+ var _context;
165
+
166
+ return (0, _sort["default"])(_context = (0, _filter["default"])(items).call(items, function (item) {
167
+ return item.isDefaultSelected || item.isSelected;
168
+ }) // sort elements to display "default selected" at first place
169
+ ).call(_context, function (a, b) {
170
+ return Number(!!b.isDefaultSelected) - Number(!!a.isDefaultSelected);
171
+ });
172
+ }, [items]);
173
+
174
+ var changeSelection = function changeSelection(key) {
175
+ setItems(function (prevItems) {
176
+ return (0, _map["default"])(prevItems).call(prevItems, function (el) {
177
+ if (el.key === key) {
178
+ return _objectSpread(_objectSpread({}, el), {}, {
179
+ isSelected: !el.isSelected
180
+ });
181
+ }
182
+
183
+ return el;
184
+ });
185
+ });
186
+ };
187
+
188
+ return (0, _react2.jsx)(_.Box, null, (0, _react2.jsx)(_.Box, {
189
+ sx: {
190
+ minHeight: '60px'
191
+ },
192
+ bg: "accent.99"
193
+ }, (0, _react2.jsx)(_.Box, {
194
+ isRow: true,
195
+ flexBasis: "0px",
196
+ flexGrow: "1",
197
+ alignItems: "center",
198
+ pl: "md",
199
+ pr: "md",
200
+ justifyContent: "space-between",
201
+ zIndex: 2
202
+ }, (0, _react2.jsx)(_.Box, {
203
+ isRow: true
204
+ }, (0, _react2.jsx)(_.Icon, {
205
+ icon: _AccountIcon["default"],
206
+ alignSelf: "center",
207
+ mr: "md",
208
+ color: "accent.40",
209
+ size: 25,
210
+ flexShrink: 0,
211
+ display: "flex"
212
+ }), (0, _react2.jsx)(_.Breadcrumbs, {
213
+ icon: _ChevronRightIcon["default"]
214
+ }, (0, _react2.jsx)(_.Item, {
215
+ key: "home",
216
+ variant: "link",
217
+ "data-id": "home"
218
+ }, "Ed Nepomuceno"), (0, _react2.jsx)(_.Item, {
219
+ key: "editGroups",
220
+ variant: "neutralText",
221
+ "data-id": "editGroups"
222
+ }, "Edit Groups"))), (0, _react2.jsx)(_.Box, {
223
+ isRow: true
224
+ }, (0, _react2.jsx)(_.IconButton, {
225
+ "aria-label": "Close Panel"
226
+ }, (0, _react2.jsx)(_.Icon, {
227
+ icon: _CloseIcon["default"],
228
+ size: 20
229
+ }))))), (0, _react2.jsx)(_.Box, {
230
+ pl: "md",
231
+ pt: "25px"
232
+ }, (0, _react2.jsx)(_.Box, {
233
+ isRow: true,
234
+ justifyContent: "space-between"
235
+ }, (0, _react2.jsx)(_.Box, {
236
+ width: "100%"
237
+ }, (0, _react2.jsx)(_.SearchField, {
238
+ icon: _SearchIcon["default"],
239
+ "aria-label": "Search",
240
+ placeholder: "Search",
241
+ width: "100%",
242
+ mt: "0px",
243
+ mr: "sm",
244
+ onChange: setSearchValue
245
+ }), (0, _react2.jsx)(_.ListView, {
246
+ items: filteredItems,
247
+ style: {
248
+ width: '100%',
249
+ outline: 'none'
250
+ }
251
+ }, function (item) {
252
+ return (0, _react2.jsx)(_.Item, {
253
+ key: item.key,
254
+ textValue: item.name,
255
+ "data-id": item.key,
256
+ listItemProps: {
257
+ isRow: true,
258
+ sx: {
259
+ bg: 'white',
260
+ width: '100%',
261
+ justifyContent: 'space-between',
262
+ alignItems: 'center',
263
+ '&.is-hovered': {
264
+ bg: 'accent.99'
265
+ }
266
+ }
267
+ }
268
+ }, (0, _react2.jsx)(_.Box, {
269
+ isRow: true
270
+ }, (0, _react2.jsx)(_.Icon, {
271
+ icon: _AccountGroupIcon["default"],
272
+ alignSelf: "center",
273
+ mr: "md",
274
+ color: "accent.40",
275
+ size: 25,
276
+ flexShrink: 1
277
+ }), (0, _react2.jsx)(_.Box, null, (0, _react2.jsx)(_.Box, {
278
+ isRow: true
279
+ }, (0, _react2.jsx)(_.Text, {
280
+ variant: "listTitle",
281
+ mb: "xs",
282
+ mr: "xs"
283
+ }, item.name), (0, _react2.jsx)(_.Chip, {
284
+ label: item.chipValue,
285
+ bg: "accent.99",
286
+ textColor: "text.secondary",
287
+ sx: {
288
+ minWidth: 'max-content'
289
+ }
290
+ })), (0, _react2.jsx)(_.Text, {
291
+ variant: "listSubtitle"
292
+ }, item.subtitle))), item.isDefaultSelected ? (0, _react2.jsx)(_.Box, {
293
+ isRow: true,
294
+ sx: {
295
+ border: '1px solid',
296
+ borderColor: 'neutral.80',
297
+ borderRadius: 5,
298
+ minHeight: 22,
299
+ justifyContent: 'center',
300
+ alignItems: 'center',
301
+ p: 'xs',
302
+ maxWidth: '50%'
303
+ }
304
+ }, (0, _react2.jsx)(_.Icon, {
305
+ icon: _CheckIcon["default"],
306
+ color: "neutral.20",
307
+ size: 13,
308
+ sx: {
309
+ flexShrink: 0
310
+ }
311
+ }), (0, _react2.jsx)(_.Text, {
312
+ sx: {
313
+ fontSize: 'sm',
314
+ pl: 'xs',
315
+ maxHeight: 32,
316
+ overflow: 'hidden'
317
+ }
318
+ }, "Added by Filter")) : (0, _react2.jsx)(_.CheckboxField, {
319
+ controlProps: {
320
+ color: 'neutral.10',
321
+ 'aria-label': 'Select'
322
+ },
323
+ onChange: function onChange() {
324
+ return changeSelection(item.key);
325
+ },
326
+ isSelected: (0, _some["default"])(selectedItems).call(selectedItems, function (el) {
327
+ return el.key === item.key;
328
+ })
329
+ }));
330
+ })), (0, _react2.jsx)(_.MultiselectFilter, {
331
+ items: selectedItems,
332
+ selectedFilterCount: selectedItems.length.toString(),
333
+ listTitle: "Selected Groups",
334
+ openAriaLabel: "Open filter menu?",
335
+ closeAriaLabel: "Close filter menu?"
336
+ }, function (item) {
337
+ return (0, _react2.jsx)(_.Item, {
338
+ key: item.key,
339
+ textValue: item.name,
340
+ "data-id": item.key
341
+ }, (0, _react2.jsx)(_.MultiselectFilterItem, {
342
+ text: item.name,
343
+ icon: item.isDefaultSelected ? _CheckIcon["default"] : _CloseIcon["default"],
344
+ isDefaultSelected: item.isDefaultSelected,
345
+ onPress: function onPress() {
346
+ return changeSelection(item.key);
347
+ }
348
+ }));
349
+ }))));
350
+ };
351
+
352
+ exports.Default = Default;
@@ -80,7 +80,6 @@ var listItem = _objectSpread(_objectSpread({}, base), {}, {
80
80
  var listViewItem = _objectSpread(_objectSpread({}, base), {}, {
81
81
  padding: '0px 15px 0px 25px',
82
82
  flex: '1 1 0px',
83
- cursor: 'pointer',
84
83
  minHeight: '80px',
85
84
  justifyContent: 'center',
86
85
  bg: 'accent.99',
@@ -89,7 +88,8 @@ var listViewItem = _objectSpread(_objectSpread({}, base), {}, {
89
88
  bg: 'white'
90
89
  },
91
90
  '&.is-hovered': {
92
- bg: 'white'
91
+ bg: 'white',
92
+ cursor: 'pointer'
93
93
  },
94
94
  '&.is-focused': {
95
95
  boxShadow: 'inset 0 0 5px #5873bdbf'
@@ -8,13 +8,10 @@ _Object$defineProperty(exports, "__esModule", {
8
8
 
9
9
  exports["default"] = void 0;
10
10
  var multiselectListContainer = {
11
- height: '40px',
12
11
  overflowX: 'hidden',
13
12
  pr: 'sm',
14
13
  transition: 'right 500ms',
15
- '&.is-open': {
16
- height: '100%'
17
- }
14
+ minHeight: '80vh'
18
15
  };
19
16
  var multiselectListContent = {
20
17
  bg: 'accent.99',
@@ -31,7 +28,8 @@ var multiselectListContent = {
31
28
  display: 'flex',
32
29
  minHeight: '45px',
33
30
  padding: '3px',
34
- width: '100%'
31
+ width: '100%',
32
+ justifyContent: 'space-between'
35
33
  }
36
34
  };
37
35
  var multiselectListTitle = {
@@ -44,7 +42,7 @@ var multiselectListTitle = {
44
42
  padding: '0 10px !important',
45
43
  flexWrap: 'wrap',
46
44
  maxWidth: 'max-content !important',
47
- margin: '0 auto'
45
+ margin: '0'
48
46
  };
49
47
  var multiselectListBadge = {
50
48
  borderRadius: '5px',
@@ -372,7 +372,7 @@ ComboBoxField.propTypes = {
372
372
  })
373
373
  };
374
374
  ComboBoxField.defaultProps = {
375
- menuTrigger: 'input',
375
+ menuTrigger: 'focus',
376
376
  direction: 'bottom',
377
377
  scrollBoxProps: {
378
378
  maxHeight: '300px'
@@ -241,7 +241,8 @@ test('should invoke onInputChange', function () {
241
241
  test('should invoke onOpenChange on button click', function () {
242
242
  var onOpenChange = jest.fn();
243
243
  getComponent({
244
- onOpenChange: onOpenChange
244
+ onOpenChange: onOpenChange,
245
+ menuTrigger: 'manual'
245
246
  });
246
247
  var button = screen.queryByRole('button');
247
248
  var listbox = screen.queryByRole('listbox');
@@ -254,7 +255,8 @@ test('should invoke onOpenChange on button click', function () {
254
255
  test('should invoke onOpenChange on input change', function () {
255
256
  var onOpenChange = jest.fn();
256
257
  getComponent({
257
- onOpenChange: onOpenChange
258
+ onOpenChange: onOpenChange,
259
+ menuTrigger: 'input'
258
260
  });
259
261
  var input = screen.queryByRole('combobox');
260
262
  var listbox = screen.queryByRole('listbox');
@@ -267,7 +269,8 @@ test('should invoke onOpenChange on input change', function () {
267
269
  test('should invoke onOpenChange on keyboard arrow down', function () {
268
270
  var onOpenChange = jest.fn();
269
271
  getComponent({
270
- onOpenChange: onOpenChange
272
+ onOpenChange: onOpenChange,
273
+ menuTrigger: 'manual'
271
274
  });
272
275
  var input = screen.queryByRole('combobox');
273
276
  var listbox = screen.queryByRole('listbox');
@@ -280,7 +283,8 @@ test('should invoke onOpenChange on keyboard arrow down', function () {
280
283
  test('should invoke onOpenChange on keyboard arrow up', function () {
281
284
  var onOpenChange = jest.fn();
282
285
  getComponent({
283
- onOpenChange: onOpenChange
286
+ onOpenChange: onOpenChange,
287
+ menuTrigger: 'manual'
284
288
  });
285
289
  var input = screen.queryByRole('combobox');
286
290
  var listbox = screen.queryByRole('listbox');
@@ -34,6 +34,7 @@ var ListViewItem = function ListViewItem(props) {
34
34
  var isDisabled = state.disabledKeys.has(item.key);
35
35
  var rowRef = useRef();
36
36
  var cellRef = useRef();
37
+ var isSelectable = state.selectionManager.selectionMode !== 'none';
37
38
 
38
39
  var _useFocusRing = useFocusRing({
39
40
  within: true
@@ -73,7 +74,7 @@ var ListViewItem = function ListViewItem(props) {
73
74
  var mergedProps = mergeProps(gridCellProps, hoverProps, focusWithinProps, focusProps, selectableItemProps);
74
75
 
75
76
  var _useStatusClasses = useStatusClasses(className, {
76
- isHovered: isHovered,
77
+ isHovered: isSelectable && isHovered,
77
78
  isSelected: isSelected,
78
79
  isFocused: isDisabled ? false : isFocusVisible,
79
80
  hasSeparator: hasSeparator
@@ -72,7 +72,7 @@ var MultiselectFilter = /*#__PURE__*/forwardRef(function (props, ref) {
72
72
  }, ___EmotionJSX(ListView, {
73
73
  items: items,
74
74
  onSelectionChange: onSelectionChange,
75
- selectionMode: "multiple",
75
+ selectionMode: "none",
76
76
  style: {
77
77
  width: '100%'
78
78
  },
@@ -1,25 +1,37 @@
1
1
  import React, { forwardRef } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { Box, Icon, Text } from '../../index';
3
+ import { Box, Icon, IconButton, Text } from '../../index';
4
4
  import { jsx as ___EmotionJSX } from "@emotion/react";
5
5
  var MultiselectFilterItem = /*#__PURE__*/forwardRef(function (props, ref) {
6
6
  var text = props.text,
7
- icon = props.icon;
7
+ icon = props.icon,
8
+ isDefaultSelected = props.isDefaultSelected,
9
+ onPress = props.onPress;
10
+
11
+ var iconElement = icon && ___EmotionJSX(Icon, {
12
+ "data-testid": "multiselect-filter-data-icon",
13
+ icon: icon,
14
+ color: isDefaultSelected ? 'neutral.10' : 'active',
15
+ size: 13
16
+ });
17
+
8
18
  return ___EmotionJSX(Box, {
9
19
  "data-testid": "multiselect-filter-item",
10
20
  isRow: true,
11
- justifyContent: "space-between",
12
21
  ref: ref
13
22
  }, ___EmotionJSX(Text, {
14
23
  variant: "multiselectFilterItem"
15
- }, text), icon && ___EmotionJSX(Icon, {
16
- "data-testid": "multiselect-filter-data-icon",
17
- icon: icon,
18
- mr: "md",
19
- color: "neutral.10",
20
- size: 13,
21
- flexShrink: 0
22
- }));
24
+ }, text), iconElement && (isDefaultSelected ? iconElement : ___EmotionJSX(IconButton, {
25
+ sx: {
26
+ width: 13,
27
+ height: 13,
28
+ alignSelf: 'auto',
29
+ '& path': {
30
+ fill: 'inherit'
31
+ }
32
+ },
33
+ onPress: onPress
34
+ }, iconElement)));
23
35
  });
24
36
  MultiselectFilterItem.propTypes = {
25
37
  /**
@@ -30,7 +42,18 @@ MultiselectFilterItem.propTypes = {
30
42
  /**
31
43
  * List icon.
32
44
  */
33
- icon: PropTypes.shape({})
45
+ icon: PropTypes.shape({}),
46
+
47
+ /**
48
+ * Whether the element is default selected
49
+ * and has to use Icon element instead of IconButton
50
+ */
51
+ isDefaultSelected: PropTypes.bool,
52
+
53
+ /**
54
+ * Handler that is called at the press on icon button
55
+ */
56
+ onPress: PropTypes.func
34
57
  };
35
58
  MultiselectFilterItem.displayName = 'MultiselectFilterItem';
36
59
  export default MultiselectFilterItem;
@@ -28,10 +28,20 @@ test('default multiselectFilter', function () {
28
28
  expect(icon).not.toBeInTheDocument();
29
29
  expect(multiselectFilterItem).toBeInTheDocument();
30
30
  });
31
- test('icon displays when icon prop is present', function () {
31
+ test('icon button displays when icon prop is present', function () {
32
32
  getComponent({
33
33
  icon: FilterIcon
34
34
  });
35
35
  var icon = screen.getByTestId(iconId);
36
36
  expect(icon).toBeInTheDocument();
37
+ expect(icon.parentElement).toBeInstanceOf(HTMLButtonElement);
38
+ });
39
+ test('icon displays when icon prop is present and default selected', function () {
40
+ getComponent({
41
+ icon: FilterIcon,
42
+ isDefaultSelected: true
43
+ });
44
+ var icon = screen.getByTestId(iconId);
45
+ expect(icon).toBeInTheDocument();
46
+ expect(icon.parentElement).not.toBeInstanceOf(HTMLButtonElement);
37
47
  });
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
2
2
  import _styled from "@emotion/styled/base";
3
3
  import React from 'react';
4
4
  import PropTypes from 'prop-types';
5
- import { layout, flexbox } from 'styled-system';
5
+ import { layout, flexbox, typography } from 'styled-system';
6
6
  import { Text as ThemeUIText } from 'theme-ui';
7
7
  import { textVariants } from '../../utils/devUtils/constants/variants';
8
8
  import { jsx as ___EmotionJSX } from "@emotion/react";
@@ -12,7 +12,12 @@ var ExtendedText = /*#__PURE__*/_styled(ThemeUIText, process.env.NODE_ENV === "p
12
12
  } : {
13
13
  target: "eifd86o0",
14
14
  label: "ExtendedText"
15
- })(layout, flexbox, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1RleHQvVGV4dC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRcUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVGV4dC9UZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBsYXlvdXQsIGZsZXhib3ggfSBmcm9tICdzdHlsZWQtc3lzdGVtJztcbmltcG9ydCB7IFRleHQgYXMgVGhlbWVVSVRleHQgfSBmcm9tICd0aGVtZS11aSc7XG5cbmltcG9ydCB7IHRleHRWYXJpYW50cyB9IGZyb20gJy4uLy4uL3V0aWxzL2RldlV0aWxzL2NvbnN0YW50cy92YXJpYW50cyc7XG5cbmNvbnN0IEV4dGVuZGVkVGV4dCA9IHN0eWxlZChUaGVtZVVJVGV4dCkobGF5b3V0LCBmbGV4Ym94KTtcblxuY29uc3QgVGV4dCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IChcbiAgPEV4dGVuZGVkVGV4dCB2YXJpYW50PVwiYmFzZVwiIHsuLi5wcm9wc30gcmVmPXtyZWZ9IC8+XG4pKTtcblxuVGV4dC5wcm9wVHlwZXMgPSB7XG4gIHZhcmlhbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5cblRleHQuZGVmYXVsdFByb3BzID0ge1xuICB2YXJpYW50OiB0ZXh0VmFyaWFudHMuQkFTRSxcbn07XG5cblRleHQuZGlzcGxheU5hbWUgPSAnVGV4dCc7XG5cbmV4cG9ydCBkZWZhdWx0IFRleHQ7XG4iXX0= */");
15
+ })(layout, flexbox, typography, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1RleHQvVGV4dC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRcUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVGV4dC9UZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBsYXlvdXQsIGZsZXhib3gsIHR5cG9ncmFwaHkgfSBmcm9tICdzdHlsZWQtc3lzdGVtJztcbmltcG9ydCB7IFRleHQgYXMgVGhlbWVVSVRleHQgfSBmcm9tICd0aGVtZS11aSc7XG5cbmltcG9ydCB7IHRleHRWYXJpYW50cyB9IGZyb20gJy4uLy4uL3V0aWxzL2RldlV0aWxzL2NvbnN0YW50cy92YXJpYW50cyc7XG5cbmNvbnN0IEV4dGVuZGVkVGV4dCA9IHN0eWxlZChUaGVtZVVJVGV4dCkobGF5b3V0LCBmbGV4Ym94LCB0eXBvZ3JhcGh5KTtcblxuLyoqXG4gKiBUaGUgVGV4dCBjb21wb25lbnQgaXMgdXNlZCBmb3IgZGlzcGxheWluZyB0ZXh0LlxuICogVGV4dCBzdXBwb3J0cyBbVHlwb2dyYXBoeSBQcm9wcyBmcm9tIFN0eWxlZCBTeXN0ZW0gXShodHRwczovL3N0eWxlZC1zeXN0ZW0uY29tL3RhYmxlLyN0eXBvZ3JhcGh5KS5cbiAqL1xuXG5jb25zdCBUZXh0ID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4gKFxuICA8RXh0ZW5kZWRUZXh0IHZhcmlhbnQ9XCJiYXNlXCIgey4uLnByb3BzfSByZWY9e3JlZn0gLz5cbikpO1xuXG5UZXh0LnByb3BUeXBlcyA9IHtcbiAgdmFyaWFudDogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cblxuVGV4dC5kZWZhdWx0UHJvcHMgPSB7XG4gIHZhcmlhbnQ6IHRleHRWYXJpYW50cy5CQVNFLFxufTtcblxuVGV4dC5kaXNwbGF5TmFtZSA9ICdUZXh0JztcblxuZXhwb3J0IGRlZmF1bHQgVGV4dDtcbiJdfQ== */");
16
+ /**
17
+ * The Text component is used for displaying text.
18
+ * Text supports [Typography Props from Styled System ](https://styled-system.com/table/#typography).
19
+ */
20
+
16
21
 
17
22
  var Text = /*#__PURE__*/React.forwardRef(function (props, ref) {
18
23
  return ___EmotionJSX(ExtendedText, _extends({
@@ -9,6 +9,7 @@ var _excluded = ["children", "bg"];
9
9
  var _context;
10
10
 
11
11
  import React from 'react';
12
+ import { Divider } from 'theme-ui';
12
13
  import Text from './Text';
13
14
  import { textVariants } from '../../utils/devUtils/constants/variants.js';
14
15
  import { flatColorList } from '../../styles/colors.js';
@@ -93,4 +94,53 @@ export var WithCustomWidth = function WithCustomWidth() {
93
94
  }, ___EmotionJSX(Text, {
94
95
  p: "xl"
95
96
  }, "superlongtextinonelinewithnowhitespacessoitcanbelongerthatanywidth"));
97
+ };
98
+ export var TypographyStyleProps = function TypographyStyleProps() {
99
+ var textProps = {
100
+ fontFamily: 'times',
101
+ fontSize: 'md',
102
+ fontWeight: 900,
103
+ lineHeight: '2em',
104
+ letterSpacing: '5px',
105
+ textAlign: 'right',
106
+ fontStyle: 'italic'
107
+ };
108
+ var loremText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.';
109
+ return ___EmotionJSX(Box, {
110
+ p: "xx",
111
+ gap: "md"
112
+ }, ___EmotionJSX(Text, {
113
+ variant: "title"
114
+ }, "The Text component allows typography style props to be passed in directly."), ___EmotionJSX(Text, textProps, loremText), ___EmotionJSX(Divider, null), ___EmotionJSX(Text, {
115
+ variant: "title"
116
+ }, "Typography styles can also be passed in through the sx prop for the same result."), ___EmotionJSX(Text, {
117
+ sx: textProps
118
+ }, loremText));
119
+ };
120
+ TypographyStyleProps.argTypes = {
121
+ variant: {
122
+ control: {
123
+ type: 'none'
124
+ }
125
+ },
126
+ children: {
127
+ control: {
128
+ type: 'none'
129
+ }
130
+ },
131
+ color: {
132
+ control: {
133
+ type: 'none'
134
+ }
135
+ },
136
+ bg: {
137
+ control: {
138
+ type: 'none'
139
+ }
140
+ },
141
+ tabPanelProps: {
142
+ control: {
143
+ type: 'none'
144
+ }
145
+ }
96
146
  };