@enact/limestone 1.9.3 → 1.10.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.
Files changed (90) hide show
  1. package/.github/workflows/ci-reusable.yml +2 -2
  2. package/Alert/Alert.d.ts +9 -0
  3. package/Alert/Alert.js +35 -4
  4. package/Alert/Alert.module.css +12 -1
  5. package/Alert/tests/Alert-specs.js +91 -0
  6. package/Button/tests/Button-specs.js +26 -0
  7. package/CHANGELOG.md +34 -0
  8. package/Card/Card.d.ts +4 -4
  9. package/Card/Card.js +7 -8
  10. package/Card/tests/Card-specs.js +39 -5
  11. package/CheckboxItem/CheckboxItem.js +6 -4
  12. package/Chips/Chip.js +12 -6
  13. package/Chips/Chips.js +12 -6
  14. package/Chips/tests/Chip-specs.js +25 -5
  15. package/Chips/tests/Chips-specs.js +12 -2
  16. package/ColorPicker/ColorPicker.js +27 -25
  17. package/ContextualPopupDecorator/ContextualPopupDecorator.js +32 -22
  18. package/DayPicker/DaySelectorDecorator.js +12 -7
  19. package/Dropdown/Dropdown.module.css +4 -0
  20. package/Dropdown/DropdownList.js +74 -53
  21. package/FlexiblePopupPanels/useNavButtonFocus.js +7 -10
  22. package/Heading/Heading.d.ts +1 -1
  23. package/Heading/Heading.js +2 -2
  24. package/Icon/Icon.d.ts +1 -0
  25. package/Icon/Icon.js +1 -0
  26. package/Icon/IconList.js +2 -0
  27. package/IconItem/IconItem.module.css +3 -3
  28. package/IconItem/tests/IconItem-specs.js +30 -1
  29. package/Image/Image.js +6 -4
  30. package/Input/Input.js +12 -1
  31. package/Input/InputField.js +75 -24
  32. package/Input/InputField.module.css +262 -45
  33. package/Input/InputFieldDecoratorIcon.js +1 -0
  34. package/Input/InputFieldSpotlightDecorator.js +53 -8
  35. package/Input/index.d.ts +105 -93
  36. package/Input/tests/Input-specs.js +26 -0
  37. package/Input/tests/InputField-specs.js +149 -3
  38. package/Input/tests/InputPopup-specs.js +1 -1
  39. package/KeyGuide/KeyGuide.js +29 -27
  40. package/MediaOverlay/tests/MediaOverlay-specs.js +29 -0
  41. package/MediaPlayer/tests/util-specs.js +4 -1
  42. package/PageViews/PageViews.js +134 -69
  43. package/PageViews/PageViews.module.css +3 -0
  44. package/PageViews/PageViewsRouter.js +91 -42
  45. package/PageViews/tests/PageViews-specs.js +87 -0
  46. package/Panels/Header.js +6 -4
  47. package/Popup/Popup.js +5 -4
  48. package/PopupTabLayout/PopupTabLayout.js +11 -9
  49. package/RadioItem/RadioItem.js +7 -5
  50. package/Scroller/EditableWrapper.js +17 -14
  51. package/Scroller/Scroller.js +11 -10
  52. package/Scroller/useThemeScroller.js +3 -3
  53. package/Slider/Slider.d.ts +4 -0
  54. package/Slider/Slider.js +40 -16
  55. package/Slider/Slider.module.css +150 -0
  56. package/Slider/SliderBehaviorDecorator.js +16 -14
  57. package/Slider/tests/Slider-specs.js +51 -0
  58. package/Slider/utils.js +23 -7
  59. package/Spinner/Spinner.js +10 -8
  60. package/TabLayout/RefocusDecorator.js +14 -12
  61. package/TabLayout/tests/TabGroup-specs.js +1 -1
  62. package/ThemeDecorator/AccessibilityDecorator.js +12 -11
  63. package/ThemeDecorator/I18nFontDecorator.js +6 -4
  64. package/ThemeDecorator/ThemeDecorator.d.ts +7 -0
  65. package/ThemeDecorator/ThemeDecorator.js +24 -9
  66. package/TimePicker/TimePickerBase.js +5 -3
  67. package/TooltipDecorator/TooltipDecorator.js +12 -7
  68. package/TooltipDecorator/tests/useTooltip-specs.js +5 -2
  69. package/VideoPlayer/VideoPlayer.js +25 -24
  70. package/VirtualList/VirtualList.js +20 -18
  71. package/VirtualList/useSpotlight.js +1 -1
  72. package/fonts/Limestone_Icons.ttf +0 -0
  73. package/internal/AsyncRenderChildren/AsyncRenderChildren.js +9 -5
  74. package/internal/AsyncRenderChildren/tests/AsyncRenderChildren-specs.js +4 -1
  75. package/internal/DateTime/DateTimeDecorator.js +5 -4
  76. package/internal/Panels/PanelsRouter.js +35 -29
  77. package/internal/Panels/useAutoFocus.js +10 -6
  78. package/internal/Panels/useFocusOnTransition.js +4 -3
  79. package/internal/Picker/Picker.js +7 -5
  80. package/internal/Picker/SpottablePicker.js +15 -13
  81. package/internal/SharedStateDecorator/SharedStateDecorator.js +6 -4
  82. package/package.json +14 -11
  83. package/styles/colors.less +1 -0
  84. package/styles/variables.less +1 -1
  85. package/useScroll/HoverToScroll.js +15 -12
  86. package/useScroll/Scrollbar.js +14 -10
  87. package/useScroll/ScrollbarPlaceholder.js +3 -5
  88. package/useScroll/ScrollbarTrack.js +7 -5
  89. package/useScroll/useEvent.js +7 -2
  90. package/useScroll/useScroll.js +10 -2
@@ -9,6 +9,7 @@ var _handle = require("@enact/core/handle");
9
9
  var _hoc = _interopRequireDefault(require("@enact/core/hoc"));
10
10
  var _propTypes = _interopRequireDefault(require("@enact/core/internal/prop-types"));
11
11
  var _WithRef = require("@enact/core/internal/WithRef");
12
+ var _util = require("@enact/core/util");
12
13
  var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
13
14
  var _IdProvider = _interopRequireDefault(require("@enact/ui/internal/IdProvider"));
14
15
  var _resolution = _interopRequireDefault(require("@enact/ui/resolution"));
@@ -17,12 +18,12 @@ var _propTypes2 = _interopRequireDefault(require("prop-types"));
17
18
  var _compose = _interopRequireDefault(require("ramda/src/compose"));
18
19
  var _react = require("react");
19
20
  var _$L = _interopRequireDefault(require("../internal/$L"));
21
+ var _util2 = require("../internal/util");
20
22
  var _Icon = _interopRequireDefault(require("../Icon"));
21
23
  var _Item = _interopRequireDefault(require("../Item"));
22
24
  var _Skinnable = _interopRequireDefault(require("../Skinnable"));
23
25
  var _VirtualList = _interopRequireDefault(require("../VirtualList"));
24
26
  var _DropdownModule = _interopRequireDefault(require("./Dropdown.module.css"));
25
- var _util = require("../internal/util");
26
27
  var _jsxRuntime = require("react/jsx-runtime");
27
28
  var _excluded = ["index"],
28
29
  _excluded2 = ["key"],
@@ -34,13 +35,21 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
34
35
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
35
36
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
36
37
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
38
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
39
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
37
40
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
38
41
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
39
42
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
40
43
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
41
44
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
42
- function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
43
- function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
45
+ var ReadyState = {
46
+ // Initial state. Scrolling and focusing pending
47
+ INIT: 0,
48
+ // Scroll requested
49
+ SCROLLED: 1,
50
+ // Focus completed or not required
51
+ DONE: 2
52
+ };
44
53
  var isSelectedValid = exports.isSelectedValid = function isSelectedValid(_ref) {
45
54
  var children = _ref.children,
46
55
  selected = _ref.selected;
@@ -65,6 +74,31 @@ var indexFromKey = function indexFromKey(children, key) {
65
74
  }
66
75
  return index;
67
76
  };
77
+ var stateReducer = function stateReducer(prevState, _ref3) {
78
+ var adjustedFocusIndex = _ref3.adjustedFocusIndex,
79
+ props = _ref3.props,
80
+ type = _ref3.type;
81
+ switch (type) {
82
+ case ReadyState.INIT:
83
+ return {
84
+ prevChildren: props.children,
85
+ prevFocused: adjustedFocusIndex,
86
+ prevSelected: props.selected,
87
+ prevSelectedKey: getKey(props),
88
+ ready: ReadyState.INIT
89
+ };
90
+ case ReadyState.SCROLLED:
91
+ return _objectSpread(_objectSpread({}, prevState), {}, {
92
+ ready: ReadyState.SCROLLED
93
+ });
94
+ case ReadyState.DONE:
95
+ return _objectSpread(_objectSpread({}, prevState), {}, {
96
+ ready: ReadyState.DONE
97
+ });
98
+ default:
99
+ return prevState;
100
+ }
101
+ };
68
102
  var DropdownListBase = exports.DropdownListBase = (0, _kind["default"])({
69
103
  name: 'DropdownListBase',
70
104
  propTypes: {
@@ -122,9 +156,9 @@ var DropdownListBase = exports.DropdownListBase = (0, _kind["default"])({
122
156
  className: 'dropdownList'
123
157
  },
124
158
  handlers: {
125
- itemRenderer: function itemRenderer(_ref3, props) {
126
- var index = _ref3.index,
127
- rest = _objectWithoutProperties(_ref3, _excluded);
159
+ itemRenderer: function itemRenderer(_ref4, props) {
160
+ var index = _ref4.index,
161
+ rest = _objectWithoutProperties(_ref4, _excluded);
128
162
  var children = props.children,
129
163
  selected = props.selected;
130
164
  var isSelected = index === selected;
@@ -159,16 +193,16 @@ var DropdownListBase = exports.DropdownListBase = (0, _kind["default"])({
159
193
  }
160
194
  },
161
195
  computed: {
162
- className: function className(_ref4) {
163
- var children = _ref4.children,
164
- styler = _ref4.styler,
165
- width = _ref4.width;
196
+ className: function className(_ref5) {
197
+ var children = _ref5.children,
198
+ styler = _ref5.styler,
199
+ width = _ref5.width;
166
200
  return styler.append(typeof width === 'string' ? width : null, {
167
201
  verticalScrollbar: (children === null || children === void 0 ? void 0 : children.length) > 5
168
202
  });
169
203
  },
170
- dataSize: function dataSize(_ref5) {
171
- var children = _ref5.children;
204
+ dataSize: function dataSize(_ref6) {
205
+ var children = _ref6.children;
172
206
  return children ? children.length : 0;
173
207
  },
174
208
  // Note: Retaining this in case we need to support different item sizes for large text mode:
@@ -176,19 +210,19 @@ var DropdownListBase = exports.DropdownListBase = (0, _kind["default"])({
176
210
  itemSize: function itemSize() {
177
211
  return 156;
178
212
  },
179
- maxItems: function maxItems(_ref6) {
180
- var children = _ref6.children;
213
+ maxItems: function maxItems(_ref7) {
214
+ var children = _ref7.children;
181
215
  return (children === null || children === void 0 ? void 0 : children.length) > 5;
182
216
  }
183
217
  },
184
- render: function render(_ref7) {
185
- var dataSize = _ref7.dataSize,
186
- id = _ref7.id,
187
- itemSize = _ref7.itemSize,
188
- maxItems = _ref7.maxItems,
189
- scrollTo = _ref7.scrollTo,
190
- width = _ref7.width,
191
- rest = _objectWithoutProperties(_ref7, _excluded3);
218
+ render: function render(_ref8) {
219
+ var dataSize = _ref8.dataSize,
220
+ id = _ref8.id,
221
+ itemSize = _ref8.itemSize,
222
+ maxItems = _ref8.maxItems,
223
+ scrollTo = _ref8.scrollTo,
224
+ width = _ref8.width,
225
+ rest = _objectWithoutProperties(_ref8, _excluded3);
192
226
  delete rest.children;
193
227
  delete rest.onSelect;
194
228
  delete rest.selected;
@@ -217,30 +251,23 @@ var DropdownListBase = exports.DropdownListBase = (0, _kind["default"])({
217
251
  });
218
252
  }
219
253
  });
220
- var ReadyState = {
221
- // Initial state. Scrolling and focusing pending
222
- INIT: 0,
223
- // Scroll requested
224
- SCROLLED: 1,
225
- // Focus completed or not required
226
- DONE: 2
227
- };
228
254
  var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrapped) {
229
255
  var WrappedWithRef = (0, _WithRef.WithRef)(Wrapped);
230
256
 
231
257
  // eslint-disable-next-line no-shadow
232
- var DropdownListSpotlightDecorator = function DropdownListSpotlightDecorator(props) {
258
+ var _DropdownListSpotlightDecorator = function DropdownListSpotlightDecorator(props) {
259
+ (0, _util.checkPropTypes)(_DropdownListSpotlightDecorator, props);
233
260
  var clientSiblingRef = (0, _react.useRef)(null);
234
- var _useState = (0, _react.useState)({
261
+ var _useReducer = (0, _react.useReducer)(stateReducer, {
235
262
  prevChildren: props.children,
236
263
  prevFocused: null,
237
264
  prevSelected: props.selected,
238
265
  prevSelectedKey: getKey(props),
239
266
  ready: isSelectedValid(props) ? ReadyState.INIT : ReadyState.DONE
240
267
  }),
241
- _useState2 = _slicedToArray(_useState, 2),
242
- state = _useState2[0],
243
- setState = _useState2[1];
268
+ _useReducer2 = _slicedToArray(_useReducer, 2),
269
+ state = _useReducer2[0],
270
+ dispatch = _useReducer2[1];
244
271
  var scrollToRef = (0, _react.useRef)(function () {});
245
272
  var lastFocusedKey = (0, _react.useRef)(null);
246
273
  (0, _react.useEffect)(function () {
@@ -250,10 +277,8 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
250
277
  }, []); // eslint-disable-line react-hooks/exhaustive-deps
251
278
 
252
279
  var focusSelected = function focusSelected() {
253
- setState(function (value) {
254
- return _objectSpread(_objectSpread({}, value), {}, {
255
- ready: ReadyState.DONE
256
- });
280
+ dispatch({
281
+ type: ReadyState.DONE
257
282
  });
258
283
  };
259
284
  var resetFocus = (0, _react.useCallback)(function (keysDiffer) {
@@ -264,12 +289,10 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
264
289
  adjustedFocusIndex = targetIndex;
265
290
  }
266
291
  }
267
- setState({
268
- prevChildren: props.children,
269
- prevFocused: adjustedFocusIndex,
270
- prevSelected: props.selected,
271
- prevSelectedKey: getKey(props),
272
- ready: ReadyState.INIT
292
+ dispatch({
293
+ adjustedFocusIndex: adjustedFocusIndex,
294
+ props: props,
295
+ type: ReadyState.INIT
273
296
  });
274
297
  }, [props]);
275
298
  var scrollIntoView = (0, _react.useCallback)(function () {
@@ -287,10 +310,8 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
287
310
  // @lime-item-small-height * 2 (TODO: large text mode not supported!)
288
311
  stickTo: 'start' // offset from the top of the dropdown
289
312
  });
290
- setState(function (value) {
291
- return _objectSpread(_objectSpread({}, value), {}, {
292
- ready: ReadyState.SCROLLED
293
- });
313
+ dispatch({
314
+ type: ReadyState.SCROLLED
294
315
  });
295
316
  }, [props, state.prevFocused]);
296
317
  (0, _react.useEffect)(function () {
@@ -301,7 +322,7 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
301
322
  } else {
302
323
  var key = getKey(props);
303
324
  var keysDiffer = key && state.prevSelectedKey && key !== state.prevSelectedKey;
304
- if (keysDiffer || (!key || !state.prevSelectedKey) && state.prevSelected !== props.selected || !(0, _util.compareChildren)(state.prevChildren, props.children)) {
325
+ if (keysDiffer || (!key || !state.prevSelectedKey) && state.prevSelected !== props.selected || !(0, _util2.compareChildren)(state.prevChildren, props.children)) {
305
326
  resetFocus(keysDiffer);
306
327
  }
307
328
  }
@@ -332,8 +353,8 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
332
353
  scrollTo: setScrollTo
333
354
  }));
334
355
  };
335
- DropdownListSpotlightDecorator.displayName = 'DropdownListSpotlightDecorator';
336
- DropdownListSpotlightDecorator.propTypes = {
356
+ _DropdownListSpotlightDecorator.displayName = 'DropdownListSpotlightDecorator';
357
+ _DropdownListSpotlightDecorator.propTypes = {
337
358
  /*
338
359
  * Passed by DropdownBase to resume Spotlight
339
360
  *
@@ -353,7 +374,7 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
353
374
  */
354
375
  selected: _propTypes2["default"].number
355
376
  };
356
- return DropdownListSpotlightDecorator;
377
+ return _DropdownListSpotlightDecorator;
357
378
  });
358
379
  var DropdownListDecorator = (0, _compose["default"])(DropdownListSpotlightDecorator, (0, _IdProvider["default"])({
359
380
  generateProp: null,
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = exports.NavButtonFocusDecorator = void 0;
7
7
  exports.useNavButtonFocus = useNavButtonFocus;
8
+ var _util = require("@enact/core/util");
8
9
  var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
9
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _react = require("react");
11
11
  var _FlexiblePopupPanelsModule = _interopRequireDefault(require("./FlexiblePopupPanels.module.css"));
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
13
  var _excluded = ["index"];
@@ -23,14 +23,11 @@ var prevButtonSelector = ".".concat(_FlexiblePopupPanelsModule["default"].navCel
23
23
  var nextButtonSelector = ".".concat(_FlexiblePopupPanelsModule["default"].navCellAfter, " .").concat(_FlexiblePopupPanelsModule["default"].navButton);
24
24
  function useNavButtonFocus(_ref) {
25
25
  var index = _ref.index;
26
+ var prevIndex = (0, _util.usePrevious)(index);
26
27
  var autoFocus;
27
- var _useRef = (0, _react.useRef)({
28
- index: index
29
- }),
30
- ref = _useRef.current;
31
28
 
32
29
  // on index change
33
- if (index !== ref.index) {
30
+ if (index !== prevIndex) {
34
31
  var current = _spotlight["default"].getCurrent();
35
32
  // if the currently focused component is a nav button
36
33
  if (current && current.classList.contains(_FlexiblePopupPanelsModule["default"].navButton)) {
@@ -39,7 +36,6 @@ function useNavButtonFocus(_ref) {
39
36
  // set autoFocus to point to the selector for the appropriate button
40
37
  autoFocus = prevButtonFocused ? prevButtonSelector : nextButtonSelector;
41
38
  }
42
- ref.index = index;
43
39
  }
44
40
  return {
45
41
  autoFocus: autoFocus
@@ -47,9 +43,10 @@ function useNavButtonFocus(_ref) {
47
43
  }
48
44
  var NavButtonFocusDecorator = exports.NavButtonFocusDecorator = function NavButtonFocusDecorator(Wrapped) {
49
45
  // eslint-disable-next-line no-shadow
50
- function NavButtonFocusDecorator(_ref2) {
51
- var index = _ref2.index,
52
- rest = _objectWithoutProperties(_ref2, _excluded);
46
+ function NavButtonFocusDecorator(props) {
47
+ (0, _util.checkPropTypes)(NavButtonFocusDecorator, props);
48
+ var index = props.index,
49
+ rest = _objectWithoutProperties(props, _excluded);
53
50
  var nav = useNavButtonFocus({
54
51
  index: index
55
52
  });
@@ -36,7 +36,7 @@ corresponding internal elements and states of this component.
36
36
  * If the `spacing` prop is not set (defaulting to "auto"), these values automatically set
37
37
  the spacing to the correlated names.
38
38
  */
39
- size?: "large" | "medium" | "small" | "tiny";
39
+ size?: "large" | "medium" | "small" | "tiny" | "title" | "subtitle";
40
40
  /**
41
41
  * The size of the spacing around the Heading.
42
42
  *
@@ -86,11 +86,11 @@ var HeadingBase = exports.HeadingBase = (0, _kind["default"])({
86
86
  * If the `spacing` prop is not set (defaulting to "auto"), these values automatically set
87
87
  * the spacing to the correlated names.
88
88
  *
89
- * @type {('large'|'medium'|'small'|'tiny')}
89
+ * @type {('large'|'medium'|'small'|'tiny'|'title'|'subtitle')}
90
90
  * @default 'tiny'
91
91
  * @public
92
92
  */
93
- size: _propTypes["default"].oneOf(['large', 'medium', 'small', 'tiny']),
93
+ size: _propTypes["default"].oneOf(['large', 'medium', 'small', 'tiny', 'title', 'subtitle']),
94
94
  /**
95
95
  * The size for slotBefore and slotAfter.
96
96
  * This size is used for remeasuring marquee metrics for Panels.Header.
package/Icon/Icon.d.ts CHANGED
@@ -364,6 +364,7 @@ filepdf
364
364
  filedoc
365
365
  filexls
366
366
  subtitleru
367
+ f1
367
368
  mypageru
368
369
  };
369
370
  ```
package/Icon/Icon.js CHANGED
@@ -511,6 +511,7 @@ var IconBase = exports.IconBase = (0, _kind["default"])({
511
511
  * filedoc
512
512
  * filexls
513
513
  * subtitleru
514
+ * f1
514
515
  * mypageru
515
516
  };
516
517
  * ```
package/Icon/IconList.js CHANGED
@@ -631,5 +631,7 @@ var _default = exports["default"] = {
631
631
  // file_xls
632
632
  subtitleru: 0x10017F,
633
633
  // subtitleru
634
+ f1: 0x0F01F8,
635
+ // f1
634
636
  mypageru: 0x0F01F7 // mypageru
635
637
  };
@@ -170,8 +170,8 @@ Motion Mixins
170
170
  transform: scale(1.05);
171
171
  transition: transform var(--lime-press-motion-duration) var(--lime-press-motion-easing-function);
172
172
  }
173
- :global(.spotlight-input-key) .iconItem:not([disabled]):global(.spottable):focus:not(.pressed),
174
- :global(.spotlight-input-mouse) .iconItem:not([disabled]):global(.spottable):focus:not(.pressed) {
173
+ :global(.spotlight-input-key) .iconItem:not([disabled]):global(.spottable):focus:not(:pressed),
174
+ :global(.spotlight-input-mouse) .iconItem:not([disabled]):global(.spottable):focus:not(:pressed) {
175
175
  transform: scale(1.1);
176
176
  transition: transform var(--lime-release-motion-duration) var(--lime-release-motion-easing-function);
177
177
  }
@@ -180,7 +180,7 @@ Motion Mixins
180
180
  transform: scale(1.05);
181
181
  transition: transform var(--lime-press-motion-duration) var(--lime-press-motion-easing-function);
182
182
  }
183
- :global(.spotlight-input-touch) .iconItem:not([disabled]):global(.spottable):active:not(.pressed) {
183
+ :global(.spotlight-input-touch) .iconItem:not([disabled]):global(.spottable):active:not(:pressed) {
184
184
  transform: scale(1.1);
185
185
  transition: transform var(--lime-release-motion-duration) var(--lime-release-motion-easing-function);
186
186
  }
@@ -2,8 +2,9 @@
2
2
 
3
3
  require("@testing-library/jest-dom");
4
4
  var _react = require("@testing-library/react");
5
- var _IconItem = require("../IconItem");
5
+ var _IconItem = _interopRequireWildcard(require("../IconItem"));
6
6
  var _jsxRuntime = require("react/jsx-runtime");
7
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
7
8
  describe('IconItem', function () {
8
9
  test('should support `background` prop', function () {
9
10
  var background = '#ffffff';
@@ -103,4 +104,32 @@ describe('IconItem', function () {
103
104
  var actual = _react.screen.getByTestId('iconitem');
104
105
  expect(actual).toHaveClass(expected);
105
106
  });
107
+ test('should be pressed when selected', function () {
108
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_IconItem["default"], {
109
+ "data-testid": "iconitem"
110
+ }));
111
+ var iconItem = _react.screen.getByTestId('iconitem');
112
+
113
+ // Select by key
114
+ _react.fireEvent.keyDown(iconItem, {
115
+ key: 'Enter',
116
+ code: 'Enter',
117
+ keyCode: 13,
118
+ which: 13
119
+ });
120
+ expect(iconItem).toHaveClass('pressed');
121
+ _react.fireEvent.keyUp(iconItem, {
122
+ key: 'Enter',
123
+ code: 'Enter',
124
+ keyCode: 13,
125
+ which: 13
126
+ });
127
+ expect(iconItem).not.toHaveClass('pressed');
128
+
129
+ // Select by pointer
130
+ _react.fireEvent.mouseDown(iconItem);
131
+ expect(iconItem).toHaveClass('pressed');
132
+ _react.fireEvent.mouseUp(iconItem);
133
+ expect(iconItem).not.toHaveClass('pressed');
134
+ });
106
135
  });
package/Image/Image.js CHANGED
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports["default"] = exports.ImageDecorator = exports.ImageBase = exports.Image = void 0;
7
7
  var _kind = _interopRequireDefault(require("@enact/core/kind"));
8
8
  var _hoc = _interopRequireDefault(require("@enact/core/hoc"));
9
+ var _util = require("@enact/core/util");
9
10
  var _Image = require("@enact/ui/Image");
10
11
  var _propTypes = _interopRequireDefault(require("@enact/core/internal/prop-types"));
11
12
  var _ForwardRef = _interopRequireDefault(require("@enact/ui/ForwardRef"));
@@ -106,7 +107,8 @@ var ImageBase = exports.ImageBase = (0, _kind["default"])({
106
107
  // another time. -B 2018-05-01
107
108
  var ResponsiveImageDecorator = (0, _hoc["default"])(function (config, Wrapped) {
108
109
  // eslint-disable-next-line no-shadow
109
- var ResponsiveImageDecorator = function ResponsiveImageDecorator(props) {
110
+ var _ResponsiveImageDecorator = function ResponsiveImageDecorator(props) {
111
+ (0, _util.checkPropTypes)(_ResponsiveImageDecorator, props);
110
112
  var _useState = (0, _react.useState)((0, _resolution.selectSrc)(props.src)),
111
113
  _useState2 = _slicedToArray(_useState, 2),
112
114
  setSrc = _useState2[1];
@@ -122,11 +124,11 @@ var ResponsiveImageDecorator = (0, _hoc["default"])(function (config, Wrapped) {
122
124
 
123
125
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapped, _objectSpread({}, props));
124
126
  };
125
- ResponsiveImageDecorator.displayName = 'ResponsiveImageDecorator';
126
- ResponsiveImageDecorator.propTypes = {
127
+ _ResponsiveImageDecorator.displayName = 'ResponsiveImageDecorator';
128
+ _ResponsiveImageDecorator.propTypes = {
127
129
  src: _propTypes2["default"].oneOfType([_propTypes2["default"].string, _propTypes2["default"].object])
128
130
  };
129
- return ResponsiveImageDecorator;
131
+ return _ResponsiveImageDecorator;
130
132
  });
131
133
 
132
134
  /**
package/Input/Input.js CHANGED
@@ -29,7 +29,7 @@ var _InputField = _interopRequireDefault(require("./InputField"));
29
29
  var _util2 = require("./util");
30
30
  var _InputModule = _interopRequireDefault(require("./Input.module.css"));
31
31
  var _jsxRuntime = require("react/jsx-runtime");
32
- var _excluded = ["announce", "backButtonAriaLabel", "buttons", "children", "css", "defaultValue", "disabled", "inputAreaClassName", "inputFieldSpotlightId", "noBackButton", "noSubmitButton", "numberInputField", "onBeforeChange", "onClose", "onNumberComplete", "onInputKeyDown", "onShow", "open", "placeholder", "popupAriaLabel", "popupClassName", "popupType", "size", "subtitle", "title", "type", "maxLength", "minLength"],
32
+ var _excluded = ["announce", "backButtonAriaLabel", "buttons", "children", "css", "defaultValue", "disabled", "inputAreaClassName", "inputFieldSpotlightId", "marqueeInputField", "noBackButton", "noSubmitButton", "numberInputField", "onBeforeChange", "onClose", "onNumberComplete", "onInputKeyDown", "onShow", "open", "placeholder", "popupAriaLabel", "popupClassName", "popupType", "size", "subtitle", "title", "type", "maxLength", "minLength"],
33
33
  _excluded2 = ["value"],
34
34
  _excluded3 = ["announce", "buttonAriaLabel", "buttonLabel", "type", "size", "disabled", "value", "placeholder", "onClick", "className", "style"];
35
35
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
@@ -148,6 +148,14 @@ var InputPopupBase = exports.InputPopupBase = (0, _kind["default"])({
148
148
  * @public
149
149
  */
150
150
  length: _propTypes["default"].number,
151
+ /**
152
+ * Wraps the `InputField`'s value display in a marquee.
153
+ *
154
+ * @type {Boolean}
155
+ * @default false
156
+ * @public
157
+ */
158
+ marqueeInputField: _propTypes["default"].bool,
151
159
  /**
152
160
  * The maximum length of number input fields.
153
161
  *
@@ -298,6 +306,7 @@ var InputPopupBase = exports.InputPopupBase = (0, _kind["default"])({
298
306
  },
299
307
  defaultProps: {
300
308
  defaultValue: '',
309
+ marqueeInputField: false,
301
310
  popupType: 'fullscreen',
302
311
  numberInputField: 'auto',
303
312
  size: 'small',
@@ -384,6 +393,7 @@ var InputPopupBase = exports.InputPopupBase = (0, _kind["default"])({
384
393
  disabled = _ref8.disabled,
385
394
  inputAreaClassName = _ref8.inputAreaClassName,
386
395
  inputFieldSpotlightId = _ref8.inputFieldSpotlightId,
396
+ marqueeInputField = _ref8.marqueeInputField,
387
397
  noBackButton = _ref8.noBackButton,
388
398
  noSubmitButton = _ref8.noSubmitButton,
389
399
  numberInputField = _ref8.numberInputField,
@@ -485,6 +495,7 @@ var InputPopupBase = exports.InputPopupBase = (0, _kind["default"])({
485
495
  css: css,
486
496
  maxLength: maxLength,
487
497
  minLength: minLength,
498
+ marqueeContent: marqueeInputField,
488
499
  size: size,
489
500
  autoFocus: true,
490
501
  type: type,