@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.
- package/.github/workflows/ci-reusable.yml +2 -2
- package/Alert/Alert.d.ts +9 -0
- package/Alert/Alert.js +35 -4
- package/Alert/Alert.module.css +12 -1
- package/Alert/tests/Alert-specs.js +91 -0
- package/Button/tests/Button-specs.js +26 -0
- package/CHANGELOG.md +34 -0
- package/Card/Card.d.ts +4 -4
- package/Card/Card.js +7 -8
- package/Card/tests/Card-specs.js +39 -5
- package/CheckboxItem/CheckboxItem.js +6 -4
- package/Chips/Chip.js +12 -6
- package/Chips/Chips.js +12 -6
- package/Chips/tests/Chip-specs.js +25 -5
- package/Chips/tests/Chips-specs.js +12 -2
- package/ColorPicker/ColorPicker.js +27 -25
- package/ContextualPopupDecorator/ContextualPopupDecorator.js +32 -22
- package/DayPicker/DaySelectorDecorator.js +12 -7
- package/Dropdown/Dropdown.module.css +4 -0
- package/Dropdown/DropdownList.js +74 -53
- package/FlexiblePopupPanels/useNavButtonFocus.js +7 -10
- package/Heading/Heading.d.ts +1 -1
- package/Heading/Heading.js +2 -2
- package/Icon/Icon.d.ts +1 -0
- package/Icon/Icon.js +1 -0
- package/Icon/IconList.js +2 -0
- package/IconItem/IconItem.module.css +3 -3
- package/IconItem/tests/IconItem-specs.js +30 -1
- package/Image/Image.js +6 -4
- package/Input/Input.js +12 -1
- package/Input/InputField.js +75 -24
- package/Input/InputField.module.css +262 -45
- package/Input/InputFieldDecoratorIcon.js +1 -0
- package/Input/InputFieldSpotlightDecorator.js +53 -8
- package/Input/index.d.ts +105 -93
- package/Input/tests/Input-specs.js +26 -0
- package/Input/tests/InputField-specs.js +149 -3
- package/Input/tests/InputPopup-specs.js +1 -1
- package/KeyGuide/KeyGuide.js +29 -27
- package/MediaOverlay/tests/MediaOverlay-specs.js +29 -0
- package/MediaPlayer/tests/util-specs.js +4 -1
- package/PageViews/PageViews.js +134 -69
- package/PageViews/PageViews.module.css +3 -0
- package/PageViews/PageViewsRouter.js +91 -42
- package/PageViews/tests/PageViews-specs.js +87 -0
- package/Panels/Header.js +6 -4
- package/Popup/Popup.js +5 -4
- package/PopupTabLayout/PopupTabLayout.js +11 -9
- package/RadioItem/RadioItem.js +7 -5
- package/Scroller/EditableWrapper.js +17 -14
- package/Scroller/Scroller.js +11 -10
- package/Scroller/useThemeScroller.js +3 -3
- package/Slider/Slider.d.ts +4 -0
- package/Slider/Slider.js +40 -16
- package/Slider/Slider.module.css +150 -0
- package/Slider/SliderBehaviorDecorator.js +16 -14
- package/Slider/tests/Slider-specs.js +51 -0
- package/Slider/utils.js +23 -7
- package/Spinner/Spinner.js +10 -8
- package/TabLayout/RefocusDecorator.js +14 -12
- package/TabLayout/tests/TabGroup-specs.js +1 -1
- package/ThemeDecorator/AccessibilityDecorator.js +12 -11
- package/ThemeDecorator/I18nFontDecorator.js +6 -4
- package/ThemeDecorator/ThemeDecorator.d.ts +7 -0
- package/ThemeDecorator/ThemeDecorator.js +24 -9
- package/TimePicker/TimePickerBase.js +5 -3
- package/TooltipDecorator/TooltipDecorator.js +12 -7
- package/TooltipDecorator/tests/useTooltip-specs.js +5 -2
- package/VideoPlayer/VideoPlayer.js +25 -24
- package/VirtualList/VirtualList.js +20 -18
- package/VirtualList/useSpotlight.js +1 -1
- package/fonts/Limestone_Icons.ttf +0 -0
- package/internal/AsyncRenderChildren/AsyncRenderChildren.js +9 -5
- package/internal/AsyncRenderChildren/tests/AsyncRenderChildren-specs.js +4 -1
- package/internal/DateTime/DateTimeDecorator.js +5 -4
- package/internal/Panels/PanelsRouter.js +35 -29
- package/internal/Panels/useAutoFocus.js +10 -6
- package/internal/Panels/useFocusOnTransition.js +4 -3
- package/internal/Picker/Picker.js +7 -5
- package/internal/Picker/SpottablePicker.js +15 -13
- package/internal/SharedStateDecorator/SharedStateDecorator.js +6 -4
- package/package.json +14 -11
- package/styles/colors.less +1 -0
- package/styles/variables.less +1 -1
- package/useScroll/HoverToScroll.js +15 -12
- package/useScroll/Scrollbar.js +14 -10
- package/useScroll/ScrollbarPlaceholder.js +3 -5
- package/useScroll/ScrollbarTrack.js +7 -5
- package/useScroll/useEvent.js +7 -2
- package/useScroll/useScroll.js +10 -2
package/Dropdown/DropdownList.js
CHANGED
|
@@ -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
|
-
|
|
43
|
-
|
|
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(
|
|
126
|
-
var index =
|
|
127
|
-
rest = _objectWithoutProperties(
|
|
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(
|
|
163
|
-
var children =
|
|
164
|
-
styler =
|
|
165
|
-
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(
|
|
171
|
-
var 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(
|
|
180
|
-
var 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(
|
|
185
|
-
var dataSize =
|
|
186
|
-
id =
|
|
187
|
-
itemSize =
|
|
188
|
-
maxItems =
|
|
189
|
-
scrollTo =
|
|
190
|
-
width =
|
|
191
|
-
rest = _objectWithoutProperties(
|
|
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
|
|
258
|
+
var _DropdownListSpotlightDecorator = function DropdownListSpotlightDecorator(props) {
|
|
259
|
+
(0, _util.checkPropTypes)(_DropdownListSpotlightDecorator, props);
|
|
233
260
|
var clientSiblingRef = (0, _react.useRef)(null);
|
|
234
|
-
var
|
|
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
|
-
|
|
242
|
-
state =
|
|
243
|
-
|
|
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
|
-
|
|
254
|
-
|
|
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
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
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
|
-
|
|
291
|
-
|
|
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,
|
|
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
|
-
|
|
336
|
-
|
|
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
|
|
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 !==
|
|
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(
|
|
51
|
-
|
|
52
|
-
|
|
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
|
});
|
package/Heading/Heading.d.ts
CHANGED
|
@@ -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
|
*
|
package/Heading/Heading.js
CHANGED
|
@@ -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
package/Icon/Icon.js
CHANGED
package/Icon/IconList.js
CHANGED
|
@@ -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(
|
|
174
|
-
:global(.spotlight-input-mouse) .iconItem:not([disabled]):global(.spottable):focus:not(
|
|
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(
|
|
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
|
|
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
|
-
|
|
126
|
-
|
|
127
|
+
_ResponsiveImageDecorator.displayName = 'ResponsiveImageDecorator';
|
|
128
|
+
_ResponsiveImageDecorator.propTypes = {
|
|
127
129
|
src: _propTypes2["default"].oneOfType([_propTypes2["default"].string, _propTypes2["default"].object])
|
|
128
130
|
};
|
|
129
|
-
return
|
|
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,
|