@enact/limestone 1.3.0 → 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 (200) hide show
  1. package/.github/workflows/ci-branch.yml +21 -0
  2. package/.github/workflows/ci-pull-request.yml +16 -0
  3. package/.github/workflows/ci-reusable.yml +73 -0
  4. package/ActionGuide/ActionGuide.d.ts +5 -4
  5. package/ActionGuide/ActionGuide.module.css +1 -1
  6. package/Alert/Alert.d.ts +13 -2
  7. package/Alert/Alert.js +39 -5
  8. package/Alert/Alert.module.css +48 -1
  9. package/Alert/tests/Alert-specs.js +91 -0
  10. package/BodyText/BodyText.d.ts +5 -4
  11. package/BodyText/BodyText.module.css +7 -7
  12. package/Button/Button.d.ts +17 -12
  13. package/Button/Button.js +1 -1
  14. package/Button/Button.module.css +195 -268
  15. package/Button/tests/Button-specs.js +26 -0
  16. package/CHANGELOG.md +254 -0
  17. package/Card/Card.d.ts +40 -12
  18. package/Card/Card.js +164 -28
  19. package/Card/Card.module.css +277 -58
  20. package/Card/tests/Card-specs.js +67 -3
  21. package/Checkbox/Checkbox.d.ts +8 -7
  22. package/Checkbox/Checkbox.js +3 -1
  23. package/Checkbox/Checkbox.module.css +213 -120
  24. package/Checkbox/tests/Checkbox-specs.js +1 -1
  25. package/CheckboxItem/CheckboxItem.d.ts +22 -7
  26. package/CheckboxItem/CheckboxItem.js +71 -4
  27. package/Chips/Chip.js +72 -13
  28. package/Chips/Chip.module.css +3 -3
  29. package/Chips/Chips.js +37 -17
  30. package/Chips/Chips.module.css +1 -1
  31. package/Chips/tests/Chip-specs.js +43 -13
  32. package/Chips/tests/Chips-specs.js +31 -21
  33. package/ColorPicker/ColorPicker.js +27 -25
  34. package/ContextualMenuDecorator/ContextualMenuDecorator.d.ts +4 -5
  35. package/ContextualPopupDecorator/ContextualPopup.module.css +34 -34
  36. package/ContextualPopupDecorator/ContextualPopupDecorator.js +567 -549
  37. package/DatePicker/DatePicker.d.ts +4 -5
  38. package/DayPicker/DayPicker.d.ts +8 -7
  39. package/DayPicker/DaySelectorDecorator.js +12 -7
  40. package/Dropdown/Dropdown.d.ts +11 -13
  41. package/Dropdown/Dropdown.module.css +13 -9
  42. package/Dropdown/DropdownList.js +80 -54
  43. package/FixedPopupPanels/FixedPopupPanels.d.ts +4 -2
  44. package/FixedPopupPanels/FixedPopupPanels.module.css +18 -18
  45. package/FlexiblePopupPanels/FlexiblePopupPanels.module.css +23 -23
  46. package/FlexiblePopupPanels/useNavButtonFocus.js +7 -10
  47. package/FormCheckboxItem/FormCheckboxItem.d.ts +5 -4
  48. package/Heading/Heading.d.ts +9 -8
  49. package/Heading/Heading.js +2 -2
  50. package/Heading/Heading.module.css +5 -5
  51. package/Icon/Icon.d.ts +15 -4
  52. package/Icon/Icon.js +49 -2
  53. package/Icon/Icon.module.css +1 -1
  54. package/Icon/IconList.js +27 -1
  55. package/IconItem/IconItem.d.ts +13 -12
  56. package/IconItem/IconItem.js +15 -0
  57. package/IconItem/IconItem.module.css +107 -1
  58. package/IconItem/tests/IconItem-specs.js +30 -1
  59. package/Image/Image.d.ts +5 -4
  60. package/Image/Image.js +6 -4
  61. package/ImageItem/ImageItem.d.ts +11 -10
  62. package/ImageItem/ImageItem.js +37 -31
  63. package/ImageItem/ImageItem.module.css +30 -30
  64. package/ImageItem/tests/ImageItem-specs.js +3 -10
  65. package/Input/Input.js +21 -3
  66. package/Input/Input.module.css +37 -8
  67. package/Input/InputField.js +79 -24
  68. package/Input/InputField.module.css +273 -41
  69. package/Input/InputFieldDecoratorIcon.js +1 -0
  70. package/Input/InputFieldSpotlightDecorator.js +257 -228
  71. package/Input/index.d.ts +120 -111
  72. package/Input/tests/Input-specs.js +26 -0
  73. package/Input/tests/InputField-specs.js +170 -3
  74. package/Input/tests/InputPopup-specs.js +1 -1
  75. package/Item/Item.d.ts +16 -9
  76. package/Item/Item.js +20 -2
  77. package/Item/Item.module.css +1 -1
  78. package/KeyGuide/KeyGuide.d.ts +8 -7
  79. package/KeyGuide/KeyGuide.js +29 -27
  80. package/KeyGuide/KeyGuide.module.css +25 -1
  81. package/Marquee/Marquee.d.ts +2 -4
  82. package/MediaOverlay/MediaOverlay.d.ts +12 -11
  83. package/MediaOverlay/MediaOverlay.js +43 -21
  84. package/MediaOverlay/MediaOverlay.module.css +114 -15
  85. package/MediaOverlay/tests/MediaOverlay-specs.js +29 -0
  86. package/MediaPlayer/MediaControls.js +195 -13
  87. package/MediaPlayer/MediaControls.module.css +3 -2
  88. package/MediaPlayer/MediaSlider.module.css +7 -20
  89. package/MediaPlayer/index.d.ts +59 -7
  90. package/MediaPlayer/tests/util-specs.js +4 -1
  91. package/PageViews/PageViews.js +232 -82
  92. package/PageViews/PageViews.module.css +3 -0
  93. package/PageViews/PageViewsRouter.js +100 -42
  94. package/PageViews/tests/PageViews-specs.js +171 -0
  95. package/Panels/Header.js +54 -34
  96. package/Panels/Header.module.css +83 -31
  97. package/Panels/Panel.module.css +1 -1
  98. package/Panels/index.d.ts +7 -8
  99. package/Picker/Picker.d.ts +4 -5
  100. package/Picker/Picker.module.css +2 -2
  101. package/Popup/Popup.js +245 -242
  102. package/Popup/Popup.module.css +24 -24
  103. package/PopupTabLayout/PopupTabLayout.d.ts +5 -7
  104. package/PopupTabLayout/PopupTabLayout.js +26 -18
  105. package/PopupTabLayout/PopupTabLayout.module.css +53 -16
  106. package/PopupTabLayout/PopupTabLayoutStateContext.js +8 -0
  107. package/ProgressBar/ProgressBar.d.ts +5 -4
  108. package/ProgressBar/ProgressBarTooltip.module.css +12 -12
  109. package/ProgressButton/ProgressButton.d.ts +4 -5
  110. package/QuickGuidePanels/QuickGuidePanels.module.css +2 -2
  111. package/RadioItem/RadioItem.d.ts +18 -5
  112. package/RadioItem/RadioItem.js +69 -2
  113. package/RadioItem/RadioItem.module.css +36 -36
  114. package/RangePicker/RangePicker.module.css +2 -2
  115. package/Scroller/EditableWrapper.js +28 -18
  116. package/Scroller/Scroller.d.ts +20 -16
  117. package/Scroller/Scroller.js +20 -13
  118. package/Scroller/Scroller.module.css +4 -4
  119. package/Scroller/useThemeScroller.js +3 -3
  120. package/Slider/Slider.d.ts +20 -14
  121. package/Slider/Slider.js +71 -14
  122. package/Slider/Slider.module.css +464 -91
  123. package/Slider/SliderBehaviorDecorator.js +16 -14
  124. package/Slider/tests/Slider-specs.js +53 -1
  125. package/Slider/utils.js +23 -7
  126. package/Spinner/Spinner.d.ts +5 -4
  127. package/Spinner/Spinner.js +10 -8
  128. package/Spinner/Spinner.module.css +9 -9
  129. package/Steps/Steps.d.ts +5 -4
  130. package/Steps/Steps.js +9 -5
  131. package/Switch/Switch.d.ts +8 -7
  132. package/Switch/Switch.module.css +100 -13
  133. package/SwitchItem/SwitchItem.d.ts +9 -6
  134. package/TabLayout/RefocusDecorator.js +26 -18
  135. package/TabLayout/TabGroup.js +3 -2
  136. package/TabLayout/TabGroup.module.css +2 -2
  137. package/TabLayout/TabLayout.d.ts +6 -0
  138. package/TabLayout/TabLayout.js +11 -1
  139. package/TabLayout/TabLayout.module.css +18 -0
  140. package/TabLayout/tests/TabGroup-specs.js +1 -1
  141. package/TabLayout/tests/TabLayout-specs.js +52 -0
  142. package/ThemeDecorator/AccessibilityDecorator.js +12 -11
  143. package/ThemeDecorator/I18nFontDecorator.js +6 -4
  144. package/ThemeDecorator/ThemeDecorator.d.ts +16 -10
  145. package/ThemeDecorator/ThemeDecorator.js +24 -9
  146. package/ThemeDecorator/fontGenerator.js +1 -1
  147. package/ThemeDecorator/screenTypes.json +1 -0
  148. package/TimePicker/TimePicker.module.css +1 -1
  149. package/TimePicker/TimePickerBase.js +5 -3
  150. package/TooltipDecorator/Tooltip.module.css +1 -2
  151. package/TooltipDecorator/TooltipDecorator.js +12 -7
  152. package/TooltipDecorator/tests/useTooltip-specs.js +5 -2
  153. package/TooltipDecorator/tests/util-specs.js +12 -0
  154. package/TooltipDecorator/useTooltip.js +1 -1
  155. package/TooltipDecorator/util.js +18 -11
  156. package/VideoPlayer/Feedback.js +3 -0
  157. package/VideoPlayer/Feedback.module.css +5 -9
  158. package/VideoPlayer/FeedbackIcons.js +1 -1
  159. package/VideoPlayer/FeedbackTooltip.module.css +55 -11
  160. package/VideoPlayer/VideoPlayer.d.ts +44 -18
  161. package/VideoPlayer/VideoPlayer.js +153 -47
  162. package/VideoPlayer/VideoPlayer.module.css +28 -11
  163. package/VirtualList/VirtualList.d.ts +9 -2
  164. package/VirtualList/VirtualList.js +51 -24
  165. package/VirtualList/tests/VirtualGridList-translate-specs.js +3 -0
  166. package/VirtualList/tests/VirtualList-specs.js +28 -1
  167. package/VirtualList/tests/VirtualList-translate-specs.js +4 -1
  168. package/VirtualList/useSpotlight.js +1 -1
  169. package/WizardPanels/WizardPanels.module.css +2 -2
  170. package/WizardPanels/index.d.ts +4 -2
  171. package/fonts/Limestone_Icons.ttf +0 -0
  172. package/internal/$L/$L.js +3 -3
  173. package/internal/AsyncRenderChildren/AsyncRenderChildren.js +9 -5
  174. package/internal/AsyncRenderChildren/tests/AsyncRenderChildren-specs.js +4 -1
  175. package/internal/DateComponentPicker/DateComponentPicker.module.css +2 -2
  176. package/internal/DateTime/DateTime.module.css +1 -0
  177. package/internal/DateTime/DateTimeDecorator.js +5 -4
  178. package/internal/Panels/PanelsRouter.js +48 -31
  179. package/internal/Panels/useAutoFocus.js +10 -6
  180. package/internal/Panels/useFocusOnTransition.js +4 -3
  181. package/internal/Picker/Picker.js +7 -5
  182. package/internal/Picker/Picker.module.css +2 -2
  183. package/internal/Picker/SpottablePicker.js +15 -13
  184. package/internal/SharedStateDecorator/SharedStateDecorator.js +78 -99
  185. package/internal/validators/validators.js +21 -2
  186. package/package.json +18 -15
  187. package/styles/colors-highcontrast.less +9 -1
  188. package/styles/colors.less +12 -7
  189. package/styles/motion-mixins.less +66 -0
  190. package/styles/motions.less +78 -0
  191. package/styles/variables.less +176 -150
  192. package/useScroll/HoverToScroll.js +23 -17
  193. package/useScroll/Scrollbar.js +14 -10
  194. package/useScroll/ScrollbarPlaceholder.js +3 -5
  195. package/useScroll/ScrollbarTrack.js +7 -5
  196. package/useScroll/ScrollbarTrack.module.css +8 -8
  197. package/useScroll/useEvent.js +14 -3
  198. package/useScroll/useScroll.js +12 -2
  199. package/useScroll/useScroll.module.css +6 -6
  200. package/.travis.yml +0 -40
@@ -126,11 +126,10 @@ export class DatePickerBase extends React.Component<
126
126
  Merge<React.HTMLProps<HTMLElement>, DatePickerBaseProps>
127
127
  > {}
128
128
 
129
- export interface DatePickerProps
130
- extends Omit<
131
- Merge<DatePickerBaseProps, ui_Changeable_ChangeableProps>,
132
- "day" | "maxDays" | "maxMonths" | "month" | "order" | "year"
133
- > {
129
+ export interface DatePickerProps extends Omit<
130
+ Merge<DatePickerBaseProps, ui_Changeable_ChangeableProps>,
131
+ "day" | "maxDays" | "maxMonths" | "month" | "order" | "year"
132
+ > {
134
133
  /**
135
134
  * The initial value used when `value` is not set.
136
135
  */
@@ -7,8 +7,10 @@ import { ChangeableProps as ui_Changeable_ChangeableProps } from "@enact/ui/Chan
7
7
  type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
8
8
  type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
9
9
 
10
- export interface DayPickerBaseProps
11
- extends Omit<ui_Group_GroupProps, "children"> {}
10
+ export interface DayPickerBaseProps extends Omit<
11
+ ui_Group_GroupProps,
12
+ "children"
13
+ > {}
12
14
  /**
13
15
  * A day of the week selection component.
14
16
  *
@@ -20,11 +22,10 @@ export class DayPickerBase extends React.Component<
20
22
  Merge<React.HTMLProps<HTMLElement>, DayPickerBaseProps>
21
23
  > {}
22
24
 
23
- export interface DayPickerProps
24
- extends Omit<
25
- Merge<DayPickerBaseProps, ui_Changeable_ChangeableProps>,
26
- "onChange" | "value" | "defaultValue"
27
- > {
25
+ export interface DayPickerProps extends Omit<
26
+ Merge<DayPickerBaseProps, ui_Changeable_ChangeableProps>,
27
+ "onChange" | "value" | "defaultValue"
28
+ > {
28
29
  /**
29
30
  * Disables all days in this picker.
30
31
  */
@@ -207,13 +207,18 @@ var daySelectorDecoratorDefaultProps = {
207
207
  * @private
208
208
  */
209
209
  var DaySelectorDecorator = exports.DaySelectorDecorator = (0, _hoc["default"])(function (config, Wrapped) {
210
- var DaySelector = function DaySelector(props) {
211
- var daySelectorDecoratorProps = (0, _util.setDefaultProps)(props, daySelectorDecoratorDefaultProps);
210
+ var _DaySelector = function DaySelector(props) {
211
+ var daySelectorDecoratorProps = (0, _react.useMemo)(function () {
212
+ return (0, _util.setDefaultProps)(props, daySelectorDecoratorDefaultProps);
213
+ }, [props]);
214
+ (0, _util.checkPropTypes)(_DaySelector, daySelectorDecoratorProps);
212
215
  var dayNameLength = daySelectorDecoratorProps.dayNameLength,
213
216
  locale = daySelectorDecoratorProps.locale,
214
217
  selected = daySelectorDecoratorProps.selected,
215
218
  rest = _objectWithoutProperties(daySelectorDecoratorProps, _excluded);
216
- var state = getLocaleState(dayNameLength, locale);
219
+ var state = (0, _react.useMemo)(function () {
220
+ return getLocaleState(dayNameLength, locale);
221
+ }, [dayNameLength, locale]);
217
222
  var localSelected = localizeSelected(selected, state);
218
223
  var abbreviatedDayNames = orderDays(state.abbreviatedDayNames, state);
219
224
  var fullDayNames = orderDays(state.fullDayNames, state);
@@ -243,8 +248,8 @@ var DaySelectorDecorator = exports.DaySelectorDecorator = (0, _hoc["default"])(f
243
248
  })
244
249
  }));
245
250
  };
246
- DaySelector.displayName = 'DaySelectorDecorator';
247
- DaySelector.propTypes = /** @lends limestone/DayPicker.DaySelectorDecorator.prototype */{
251
+ _DaySelector.displayName = 'DaySelectorDecorator';
252
+ _DaySelector.propTypes = /** @lends limestone/DayPicker.DaySelectorDecorator.prototype */{
248
253
  /**
249
254
  * The "aria-label" for the selector.
250
255
  *
@@ -295,7 +300,7 @@ var DaySelectorDecorator = exports.DaySelectorDecorator = (0, _hoc["default"])(f
295
300
  */
296
301
  selected: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].arrayOf(_propTypes["default"].number)])
297
302
  };
298
- DaySelector.defaultPropValues = daySelectorDecoratorDefaultProps;
299
- return DaySelector;
303
+ _DaySelector.defaultPropValues = daySelectorDecoratorDefaultProps;
304
+ return _DaySelector;
300
305
  });
301
306
  var _default = exports["default"] = DaySelectorDecorator;
@@ -10,14 +10,13 @@ import { ContextualPopupDecoratorProps as limestone_ContextualPopupDecorator_Con
10
10
  type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
11
11
  type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
12
12
 
13
- export interface DropdownBaseProps
14
- extends Omit<
15
- Merge<
16
- limestone_Button_ButtonProps,
17
- limestone_ContextualPopupDecorator_ContextualPopupDecoratorProps
18
- >,
19
- "popupComponent"
20
- > {
13
+ export interface DropdownBaseProps extends Omit<
14
+ Merge<
15
+ limestone_Button_ButtonProps,
16
+ limestone_ContextualPopupDecorator_ContextualPopupDecoratorProps
17
+ >,
18
+ "popupComponent"
19
+ > {
21
20
  /**
22
21
  * The "aria-label" for the Dropdown.
23
22
  */
@@ -96,11 +95,10 @@ export class DropdownBase extends React.Component<
96
95
  Merge<React.HTMLProps<HTMLElement>, DropdownBaseProps>
97
96
  > {}
98
97
 
99
- export interface DropdownDecoratorProps
100
- extends Merge<
101
- Merge<ui_Changeable_ChangeableProps, ui_Toggleable_ToggleableProps>,
102
- spotlight_SpotlightContainerDecorator_SpotlightContainerDecoratorProps
103
- > {
98
+ export interface DropdownDecoratorProps extends Merge<
99
+ Merge<ui_Changeable_ChangeableProps, ui_Toggleable_ToggleableProps>,
100
+ spotlight_SpotlightContainerDecorator_SpotlightContainerDecoratorProps
101
+ > {
104
102
  /**
105
103
  * Displays the items.
106
104
  */
@@ -4,44 +4,44 @@
4
4
  min-width: 6.25rem;
5
5
  }
6
6
  .dropdown.tinyWidth .title {
7
- width: 9rem;
7
+ width: NaNrem - var(--primitive-spacing-24) * 2);
8
8
  }
9
9
  .dropdown.tinyWidth .button {
10
10
  width: 10rem;
11
11
  }
12
12
  .dropdown.smallWidth .title {
13
- width: 10.25rem;
13
+ width: NaNrem - var(--primitive-spacing-24) * 2);
14
14
  }
15
15
  .dropdown.smallWidth .button {
16
16
  width: 11.25rem;
17
17
  }
18
18
  .dropdown.mediumWidth .title {
19
- width: 13.375rem;
19
+ width: NaNrem - var(--primitive-spacing-24) * 2);
20
20
  }
21
21
  .dropdown.mediumWidth .button {
22
22
  width: 14.375rem;
23
23
  }
24
24
  .dropdown.largeWidth .title {
25
- width: 16.5rem;
25
+ width: NaNrem - var(--primitive-spacing-24) * 2);
26
26
  }
27
27
  .dropdown.largeWidth .button {
28
28
  width: 17.5rem;
29
29
  }
30
30
  .dropdown.x-largeWidth .title {
31
- width: 20.875rem;
31
+ width: NaNrem - var(--primitive-spacing-24) * 2);
32
32
  }
33
33
  .dropdown.x-largeWidth .button {
34
34
  width: 21.875rem;
35
35
  }
36
36
  .dropdown.hugeWidth .title {
37
- width: 27.75rem;
37
+ width: NaNrem - var(--primitive-spacing-24) * 2);
38
38
  }
39
39
  .dropdown.hugeWidth .button {
40
40
  width: 28.75rem;
41
41
  }
42
42
  .dropdown .title {
43
- min-width: 5.25rem;
44
- padding: 0.75rem 0.5rem;
43
+ min-width: NaNrem - var(--primitive-spacing-24) * 2);
44
+ padding: var(--primitive-spacing-36) var(--primitive-spacing-24);
45
45
  margin: 0;
46
46
  }
47
47
  .dropdown .button {
@@ -50,6 +50,10 @@
50
50
  padding: 0 var(--primitive-spacing-48);
51
51
  margin: 0;
52
52
  }
53
+ .dropdown .button.small {
54
+ min-width: unset;
55
+ max-width: unset;
56
+ }
53
57
  :global(.spotlight-input-key) .dropdown .button:not([disabled]):global(.spottable):focus.pressed .bg,
54
58
  :global(.spotlight-input-mouse) .dropdown .button:not([disabled]):global(.spottable):focus.pressed .bg,
55
59
  :global(.spotlight-input-key) .dropdown .button:not([disabled]):global(.spottable):focus:active .bg,
@@ -73,7 +77,7 @@
73
77
  min-width: 6.25rem;
74
78
  }
75
79
  .dropdownList.verticalScrollbar .scrollbarTrack {
76
- height: calc(100% - 12px);
80
+ height: calc(100% - var(--primitive-spacing-12));
77
81
  }
78
82
  .dropdownList.tiny {
79
83
  width: 9.875rem;
@@ -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,16 +18,16 @@ 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"],
29
- _excluded3 = ["dataSize", "id", "itemSize", "scrollTo", "width"];
30
+ _excluded3 = ["dataSize", "id", "itemSize", "maxItems", "scrollTo", "width"];
30
31
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
31
32
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
32
33
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -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,31 +193,36 @@ 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:
175
209
  // itemSize: ({skinVariants}) => ri.scale(skinVariants && skinVariants.largeText ? 156 : 156)
176
210
  itemSize: function itemSize() {
177
211
  return 156;
212
+ },
213
+ maxItems: function maxItems(_ref7) {
214
+ var children = _ref7.children;
215
+ return (children === null || children === void 0 ? void 0 : children.length) > 5;
178
216
  }
179
217
  },
180
- render: function render(_ref6) {
181
- var dataSize = _ref6.dataSize,
182
- id = _ref6.id,
183
- itemSize = _ref6.itemSize,
184
- scrollTo = _ref6.scrollTo,
185
- width = _ref6.width,
186
- rest = _objectWithoutProperties(_ref6, _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);
187
226
  delete rest.children;
188
227
  delete rest.onSelect;
189
228
  delete rest.selected;
@@ -194,9 +233,9 @@ var DropdownListBase = exports.DropdownListBase = (0, _kind["default"])({
194
233
  "aria-labelledby": "".concat(id, "_dropdownlist"),
195
234
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
196
235
  id: "".concat(id, "_dropdownlist"),
197
- "aria-label": new _IString["default"]((0, _$L["default"])('Dropdown list opened {total} items in total')).format({
236
+ "aria-label": "".concat((0, _$L["default"])('Dropdown list opened'), " ").concat(new _IString["default"]((0, _$L["default"])('{total} items in total')).format({
198
237
  total: dataSize
199
- })
238
+ }))
200
239
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_VirtualList["default"], _objectSpread(_objectSpread({}, rest), {}, {
201
240
  cbScrollTo: scrollTo,
202
241
  dataSize: dataSize,
@@ -205,37 +244,30 @@ var DropdownListBase = exports.DropdownListBase = (0, _kind["default"])({
205
244
  scrollbarTrackCss: _DropdownModule["default"],
206
245
  style: {
207
246
  backgroundColor: 'transparent',
208
- height: _resolution["default"].scaleToRem(itemSize * dataSize + 36),
247
+ height: !maxItems ? _resolution["default"].scaleToRem(itemSize * dataSize + 36) : null,
209
248
  width: typeof width === 'number' ? _resolution["default"].scaleToRem(width) : null
210
249
  }
211
250
  }))]
212
251
  });
213
252
  }
214
253
  });
215
- var ReadyState = {
216
- // Initial state. Scrolling and focusing pending
217
- INIT: 0,
218
- // Scroll requested
219
- SCROLLED: 1,
220
- // Focus completed or not required
221
- DONE: 2
222
- };
223
254
  var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrapped) {
224
255
  var WrappedWithRef = (0, _WithRef.WithRef)(Wrapped);
225
256
 
226
257
  // eslint-disable-next-line no-shadow
227
- var DropdownListSpotlightDecorator = function DropdownListSpotlightDecorator(props) {
258
+ var _DropdownListSpotlightDecorator = function DropdownListSpotlightDecorator(props) {
259
+ (0, _util.checkPropTypes)(_DropdownListSpotlightDecorator, props);
228
260
  var clientSiblingRef = (0, _react.useRef)(null);
229
- var _useState = (0, _react.useState)({
261
+ var _useReducer = (0, _react.useReducer)(stateReducer, {
230
262
  prevChildren: props.children,
231
263
  prevFocused: null,
232
264
  prevSelected: props.selected,
233
265
  prevSelectedKey: getKey(props),
234
266
  ready: isSelectedValid(props) ? ReadyState.INIT : ReadyState.DONE
235
267
  }),
236
- _useState2 = _slicedToArray(_useState, 2),
237
- state = _useState2[0],
238
- setState = _useState2[1];
268
+ _useReducer2 = _slicedToArray(_useReducer, 2),
269
+ state = _useReducer2[0],
270
+ dispatch = _useReducer2[1];
239
271
  var scrollToRef = (0, _react.useRef)(function () {});
240
272
  var lastFocusedKey = (0, _react.useRef)(null);
241
273
  (0, _react.useEffect)(function () {
@@ -245,10 +277,8 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
245
277
  }, []); // eslint-disable-line react-hooks/exhaustive-deps
246
278
 
247
279
  var focusSelected = function focusSelected() {
248
- setState(function (value) {
249
- return _objectSpread(_objectSpread({}, value), {}, {
250
- ready: ReadyState.DONE
251
- });
280
+ dispatch({
281
+ type: ReadyState.DONE
252
282
  });
253
283
  };
254
284
  var resetFocus = (0, _react.useCallback)(function (keysDiffer) {
@@ -259,12 +289,10 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
259
289
  adjustedFocusIndex = targetIndex;
260
290
  }
261
291
  }
262
- setState({
263
- prevChildren: props.children,
264
- prevFocused: adjustedFocusIndex,
265
- prevSelected: props.selected,
266
- prevSelectedKey: getKey(props),
267
- ready: ReadyState.INIT
292
+ dispatch({
293
+ adjustedFocusIndex: adjustedFocusIndex,
294
+ props: props,
295
+ type: ReadyState.INIT
268
296
  });
269
297
  }, [props]);
270
298
  var scrollIntoView = (0, _react.useCallback)(function () {
@@ -282,10 +310,8 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
282
310
  // @lime-item-small-height * 2 (TODO: large text mode not supported!)
283
311
  stickTo: 'start' // offset from the top of the dropdown
284
312
  });
285
- setState(function (value) {
286
- return _objectSpread(_objectSpread({}, value), {}, {
287
- ready: ReadyState.SCROLLED
288
- });
313
+ dispatch({
314
+ type: ReadyState.SCROLLED
289
315
  });
290
316
  }, [props, state.prevFocused]);
291
317
  (0, _react.useEffect)(function () {
@@ -296,7 +322,7 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
296
322
  } else {
297
323
  var key = getKey(props);
298
324
  var keysDiffer = key && state.prevSelectedKey && key !== state.prevSelectedKey;
299
- 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)) {
300
326
  resetFocus(keysDiffer);
301
327
  }
302
328
  }
@@ -327,8 +353,8 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
327
353
  scrollTo: setScrollTo
328
354
  }));
329
355
  };
330
- DropdownListSpotlightDecorator.displayName = 'DropdownListSpotlightDecorator';
331
- DropdownListSpotlightDecorator.propTypes = {
356
+ _DropdownListSpotlightDecorator.displayName = 'DropdownListSpotlightDecorator';
357
+ _DropdownListSpotlightDecorator.propTypes = {
332
358
  /*
333
359
  * Passed by DropdownBase to resume Spotlight
334
360
  *
@@ -348,7 +374,7 @@ var DropdownListSpotlightDecorator = (0, _hoc["default"])(function (config, Wrap
348
374
  */
349
375
  selected: _propTypes2["default"].number
350
376
  };
351
- return DropdownListSpotlightDecorator;
377
+ return _DropdownListSpotlightDecorator;
352
378
  });
353
379
  var DropdownListDecorator = (0, _compose["default"])(DropdownListSpotlightDecorator, (0, _IdProvider["default"])({
354
380
  generateProp: null,
@@ -22,8 +22,10 @@ export class FixedPopupPanelsBase extends React.Component<
22
22
  Merge<React.HTMLProps<HTMLElement>, FixedPopupPanelsBaseProps>
23
23
  > {}
24
24
 
25
- export interface FixedPopupPanelsProps
26
- extends Merge<FixedPopupPanelsBaseProps, FixedPopupPanelsDecoratorProps> {
25
+ export interface FixedPopupPanelsProps extends Merge<
26
+ FixedPopupPanelsBaseProps,
27
+ FixedPopupPanelsDecoratorProps
28
+ > {
27
29
  /**
28
30
  * Size of the popup.
29
31
  */
@@ -31,12 +31,12 @@
31
31
  padding: 0;
32
32
  }
33
33
  .fixedPopupPanels.popup {
34
- margin: 1.25rem 1.25rem 2.75rem;
35
- max-height: calc(100vh - 4rem );
34
+ margin: var(--primitive-spacing-60) var(--primitive-spacing-60) var(--primitive-spacing-132);
35
+ max-height: calc(100vh - (var(--primitive-spacing-60) + var(--primitive-spacing-132)));
36
36
  }
37
37
  .fixedPopupPanels.popup.left {
38
- margin-left: 1.25rem;
39
- margin-right: 1.25rem;
38
+ margin-left: var(--primitive-spacing-60);
39
+ margin-right: var(--primitive-spacing-60);
40
40
  }
41
41
  .fixedPopupPanels:global(.neutral) {
42
42
  background-color: transparent;
@@ -46,9 +46,9 @@
46
46
  border-radius: var(--semantic-radius-overlay);
47
47
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
48
48
  outline-color: var(--semantic-color-stroke-overlay-default);
49
- outline-width: 0.021rem;
49
+ outline-width: 0.063rem;
50
50
  outline-style: solid;
51
- outline-offset: -0.021rem;
51
+ outline-offset: -0.063rem;
52
52
  }
53
53
  :global(.noAnimation) .fixedPopupPanels:global(.neutral) .viewport {
54
54
  box-shadow: none;
@@ -60,10 +60,10 @@
60
60
  background-color: var(--semantic-color-background-overlay-default);
61
61
  border-radius: var(--semantic-radius-overlay);
62
62
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
63
- outline-color: #7c848b;
64
- outline-width: 0.021rem;
63
+ outline-color: var(--semantic-color-stroke-main);
64
+ outline-width: 0.063rem;
65
65
  outline-style: solid;
66
- outline-offset: -0.021rem;
66
+ outline-offset: -0.063rem;
67
67
  }
68
68
  :global(.noAnimation) :global(.enact-a11y-high-contrast) .fixedPopupPanels:global(.neutral):global(.highContrast) .viewport {
69
69
  box-shadow: none;
@@ -76,9 +76,9 @@
76
76
  border-radius: var(--semantic-radius-overlay);
77
77
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
78
78
  outline-color: var(--semantic-color-stroke-overlay-default);
79
- outline-width: 0.021rem;
79
+ outline-width: 0.063rem;
80
80
  outline-style: solid;
81
- outline-offset: -0.021rem;
81
+ outline-offset: -0.063rem;
82
82
  }
83
83
  :global(.noAnimation) .fixedPopupPanels:global(.light) .viewport {
84
84
  box-shadow: none;
@@ -94,9 +94,9 @@
94
94
  border-radius: var(--semantic-radius-overlay);
95
95
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
96
96
  outline-color: var(--semantic-color-stroke-overlay-default);
97
- outline-width: 0.021rem;
97
+ outline-width: 0.063rem;
98
98
  outline-style: solid;
99
- outline-offset: -0.021rem;
99
+ outline-offset: -0.063rem;
100
100
  }
101
101
  :global(.noAnimation) .fixedPopupPanels:global(.game) .viewport {
102
102
  box-shadow: none;
@@ -111,9 +111,9 @@
111
111
  border-radius: var(--semantic-radius-overlay);
112
112
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
113
113
  outline-color: var(--semantic-color-stroke-overlay-default);
114
- outline-width: 0.021rem;
114
+ outline-width: 0.063rem;
115
115
  outline-style: solid;
116
- outline-offset: -0.021rem;
116
+ outline-offset: -0.063rem;
117
117
  }
118
118
  :global(.noAnimation) :global(.green) .fixedPopupPanels:global(.game) .viewport {
119
119
  box-shadow: none;
@@ -128,15 +128,15 @@
128
128
  border-radius: var(--semantic-radius-overlay);
129
129
  box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
130
130
  outline-color: var(--semantic-color-stroke-overlay-default);
131
- outline-width: 0.021rem;
131
+ outline-width: 0.063rem;
132
132
  outline-style: solid;
133
- outline-offset: -0.021rem;
133
+ outline-offset: -0.063rem;
134
134
  }
135
135
  :global(.noAnimation) :global(.orange) .fixedPopupPanels:global(.game) .viewport {
136
136
  box-shadow: none;
137
137
  }
138
138
  .panel {
139
- max-height: calc(100vh - 4rem );
139
+ max-height: calc(100vh - (var(--primitive-spacing-60) + var(--primitive-spacing-132)));
140
140
  }
141
141
  .panel > .body {
142
142
  display: flex;