@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
@@ -9,15 +9,30 @@ describe('Chip', function () {
9
9
  var icon = 'star';
10
10
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
11
11
  "data-testid": "chip",
12
- icon: icon
12
+ icon: icon,
13
+ id: "minimal-chip",
14
+ children: "Chip"
13
15
  }));
14
16
  var expected = 983080; // decimal converted charCode of Unicode 'star' character
15
17
  var actual = _react.screen.getByTestId('chip').textContent.codePointAt();
16
18
  expect(actual).toBe(expected);
17
19
  });
20
+ test('should support image if prop `isImage` is `true', function () {
21
+ var svg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MDAiIGhlaWdodD0iNzAwIiB2aWV3Qm94PSIwIDAgNzAwIDcwMCI+PGRlZnM+PHN0eWxlPi5hLC5ie2ZpbGw6I2ZmZjt9LmJ7b3BhY2l0eTowLjg7fTwvc3R5bGU+PC9kZWZzPjxwb2x5Z29uIGNsYXNzPSJhIiBwb2ludHM9IjM0OS45IDUyNy44IDE5OS45IDQyOS44IDE5OS45IDM3NC40IDM1MC4xIDQ3Mi43IDM0OS45IDM0OC41IDE5OS45IDI2MS4xIDE5OS45IDIwOS4zIDM1MCAyOTMuNiAzNTAgMjkzLjYgMzUwLjIgMjkzLjcgMzQ5LjkgMTY5LjMgMTAyLjcgNDguNSAxMDIuNyA0NzIuNiAzNTAuMSA2NTEuNiAzNDkuOSA1MjcuOCIvPjxwb2x5Z29uIGNsYXNzPSJiIiBwb2ludHM9IjM1MC4xIDY1MS42IDU5Ny4zIDQ3Mi44IDU5Ny4zIDM2Ni4zIDM0OS45IDUyNy44IDM1MC4xIDY1MS42Ii8+PHBvbHlnb24gY2xhc3M9ImIiIHBvaW50cz0iMzUwLjEgNDcyLjcgNTIzLjUgMzU5LjMgNTIzLjUgMjQ3LjQgMzQ5LjkgMzQ4LjUgMzUwLjEgNDcyLjciLz48cG9seWdvbiBjbGFzcz0iYiIgcG9pbnRzPSIzNTAgMjkzLjYgMzUwIDI5My42IDM1MC4yIDI5My43IDU5Ny4zIDE1NC44IDU5Ny4zIDQ4LjQgMzQ5LjkgMTY5LjMgMzUwIDI5My42Ii8+PC9zdmc+';
22
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
23
+ "data-testid": "chip",
24
+ id: "chip",
25
+ icon: svg,
26
+ isImage: true,
27
+ children: "Chip"
28
+ }));
29
+ var actual = _react.screen.queryAllByRole('img')[0].firstChild;
30
+ expect(actual).toHaveAttribute('src', svg);
31
+ });
18
32
  test('should support `children` prop', function () {
19
33
  var children = 'label';
20
34
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
35
+ id: "chip",
21
36
  children: children
22
37
  }));
23
38
  var expected = children;
@@ -28,9 +43,11 @@ describe('Chip', function () {
28
43
  var position = 'top';
29
44
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
30
45
  "data-testid": "chip",
46
+ id: "chip",
31
47
  deleteButton: {
32
48
  position: position
33
- }
49
+ },
50
+ children: "Chip"
34
51
  }));
35
52
  var chip = _react.screen.getByTestId('chip');
36
53
  var deleteButton = chip.querySelector('.deleteButtonContainer');
@@ -41,9 +58,11 @@ describe('Chip', function () {
41
58
  var position = 'bottom';
42
59
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
43
60
  "data-testid": "chip",
61
+ id: "chip",
44
62
  deleteButton: {
45
63
  position: position
46
- }
64
+ },
65
+ children: "Chip"
47
66
  }));
48
67
  var chip = _react.screen.getByTestId('chip');
49
68
  var deleteButton = chip.querySelector('.deleteButtonContainer');
@@ -54,9 +73,11 @@ describe('Chip', function () {
54
73
  var position = 'right';
55
74
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
56
75
  "data-testid": "chip",
76
+ id: "chip",
57
77
  deleteButton: {
58
78
  position: position
59
- }
79
+ },
80
+ children: "Chip"
60
81
  }));
61
82
  var chip = _react.screen.getByTestId('chip');
62
83
  var deleteButton = chip.querySelector('.deleteButtonContainer');
@@ -66,6 +87,7 @@ describe('Chip', function () {
66
87
  test('should render without delete button when deleteButton is false', function () {
67
88
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
68
89
  "data-testid": "chip",
90
+ id: "chip",
69
91
  deleteButton: false,
70
92
  children: "Test Chip"
71
93
  }));
@@ -76,6 +98,7 @@ describe('Chip', function () {
76
98
  test('should render without delete button when deleteButton is undefined', function () {
77
99
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
78
100
  "data-testid": "chip",
101
+ id: "chip",
79
102
  children: "Test Chip"
80
103
  }));
81
104
  var chip = _react.screen.getByTestId('chip');
@@ -85,29 +108,32 @@ describe('Chip', function () {
85
108
  test('should handle disabled state', function () {
86
109
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
87
110
  "data-testid": "chip",
111
+ id: "chip",
88
112
  disabled: true,
89
113
  children: "Disabled Chip"
90
114
  }));
91
- var chipButton = _react.screen.getByRole('button');
115
+ var chipButton = _react.screen.getByRole('checkbox');
92
116
  expect(chipButton).toHaveAttribute('aria-disabled', 'true');
93
117
  });
94
118
  test('should handle disabled state with delete button', function () {
95
119
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
96
120
  "data-testid": "chip",
121
+ id: "chip",
97
122
  disabled: true,
98
123
  deleteButton: {
99
124
  position: 'right'
100
125
  },
101
126
  children: "Disabled Chip"
102
127
  }));
103
- var allButtons = _react.screen.getAllByRole('button');
104
- allButtons.forEach(function (button) {
105
- expect(button).toHaveAttribute('aria-disabled', 'true');
106
- });
128
+ var chip = _react.screen.getByRole('checkbox');
129
+ var deleteButton = _react.screen.getByRole('button');
130
+ expect(chip).toHaveAttribute('aria-disabled', 'true');
131
+ expect(deleteButton).toHaveAttribute('aria-disabled', 'true');
107
132
  });
108
133
  test('should use default delete button icon when not specified', function () {
109
134
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
110
135
  "data-testid": "chip",
136
+ id: "chip",
111
137
  deleteButton: {
112
138
  position: 'right'
113
139
  },
@@ -120,6 +146,7 @@ describe('Chip', function () {
120
146
  test('should use custom delete button icon when specified', function () {
121
147
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
122
148
  "data-testid": "chip",
149
+ id: "chip",
123
150
  deleteButton: {
124
151
  position: 'right',
125
152
  icon: 'trash'
@@ -136,16 +163,17 @@ describe('Chip', function () {
136
163
  id: chipId,
137
164
  children: "Test Chip"
138
165
  }));
139
- var chipButton = _react.screen.getByRole('button');
166
+ var chipButton = _react.screen.getByRole('checkbox');
140
167
  expect(chipButton).toHaveAttribute('data-chip-index', chipId);
141
168
  });
142
169
  test('should handle onClick events', function () {
143
170
  var mockOnClick = jest.fn();
144
171
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
172
+ id: "chip",
145
173
  onClick: mockOnClick,
146
174
  children: "Clickable Chip"
147
175
  }));
148
- var chipButton = _react.screen.getByRole('button');
176
+ var chipButton = _react.screen.getByRole('checkbox');
149
177
  _react.fireEvent.click(chipButton);
150
178
  expect(mockOnClick).toHaveBeenCalledTimes(1);
151
179
  });
@@ -154,6 +182,7 @@ describe('Chip', function () {
154
182
  var children = 'Star Chip';
155
183
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
156
184
  "data-testid": "chip",
185
+ id: "chip",
157
186
  icon: icon,
158
187
  children: children
159
188
  }));
@@ -168,9 +197,10 @@ describe('Chip', function () {
168
197
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
169
198
  className: customClass,
170
199
  "data-testid": "chip",
200
+ id: "chip",
171
201
  children: "Test Chip"
172
202
  }));
173
- var chipButton = _react.screen.getByRole('button');
203
+ var chipButton = _react.screen.getByRole('checkbox');
174
204
  expect(chipButton).toHaveClass(customClass);
175
205
  });
176
206
  test('should render chip with required props only', function () {
@@ -180,7 +210,7 @@ describe('Chip', function () {
180
210
  }));
181
211
  var chipText = _react.screen.getByText('Minimal Chip');
182
212
  expect(chipText).toBeInTheDocument();
183
- var chipButton = _react.screen.getByRole('button');
213
+ var chipButton = _react.screen.getByRole('checkbox');
184
214
  expect(chipButton).toHaveAttribute('data-chip-index', 'minimal-chip');
185
215
  });
186
216
  });
@@ -15,6 +15,7 @@ describe('Chips', function () {
15
15
  var defaultProps = {
16
16
  orientation: 'vertical',
17
17
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
18
+ id: "chip1",
18
19
  deleteButton: {
19
20
  icon: 'closex',
20
21
  position: 'right',
@@ -22,6 +23,7 @@ describe('Chips', function () {
22
23
  },
23
24
  children: "Chip 1"
24
25
  }, "chip1"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
26
+ id: "chip2",
25
27
  deleteButton: {
26
28
  icon: 'closex',
27
29
  position: 'right',
@@ -46,13 +48,13 @@ describe('Chips', function () {
46
48
  it('should render correctly with default props', function () {
47
49
  var _render = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chips.ChipsBase, _objectSpread({}, defaultProps))),
48
50
  container = _render.container;
49
- expect(container.firstChild).toHaveClass('chips');
50
- expect(container.firstChild).toHaveClass('vertical');
51
+ expect(container.firstChild.firstChild).toHaveClass('chips');
52
+ expect(container.firstChild.firstChild).toHaveClass('vertical');
51
53
  });
52
54
  it('should focus the correct chip on navigation', function () {
53
55
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chips.ChipsBase, _objectSpread({}, defaultProps)));
54
- var chip1 = _react.screen.getByText('Chip 1').closest('[role="button"]');
55
- var chip2 = _react.screen.getByText('Chip 2').closest('[role="button"]');
56
+ var chip1 = _react.screen.getByText('Chip 1').closest('[role="checkbox"]');
57
+ var chip2 = _react.screen.getByText('Chip 2').closest('[role="checkbox"]');
56
58
  chip1.setAttribute('tabIndex', '0');
57
59
  chip2.setAttribute('tabIndex', '0');
58
60
  chip1.focus();
@@ -72,7 +74,7 @@ describe('Chips', function () {
72
74
  });
73
75
  it('should call handleDelete when delete button is clicked', function () {
74
76
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chips.ChipsBase, _objectSpread({}, defaultProps)));
75
- var chipButtons = _react.screen.getAllByRole('button', {
77
+ var chipButtons = _react.screen.getAllByRole('checkbox', {
76
78
  name: /Chip [12]/i
77
79
  });
78
80
  _react.fireEvent.focus(chipButtons[0]);
@@ -87,16 +89,16 @@ describe('Chips', function () {
87
89
  });
88
90
  var _render2 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chips.ChipsBase, _objectSpread({}, horizontalProps))),
89
91
  container = _render2.container;
90
- expect(container.firstChild).toHaveClass('chips');
91
- expect(container.firstChild).toHaveClass('horizontal');
92
+ expect(container.firstChild.firstChild).toHaveClass('chips');
93
+ expect(container.firstChild.firstChild).toHaveClass('horizontal');
92
94
  });
93
95
  it('should handle navigation in horizontal orientation', function () {
94
96
  var horizontalProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
95
97
  orientation: 'horizontal'
96
98
  });
97
99
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chips.ChipsBase, _objectSpread({}, horizontalProps)));
98
- var chip1 = _react.screen.getByText('Chip 1').closest('[role="button"]');
99
- var chip2 = _react.screen.getByText('Chip 2').closest('[role="button"]');
100
+ var chip1 = _react.screen.getByText('Chip 1').closest('[role="checkbox"]');
101
+ var chip2 = _react.screen.getByText('Chip 2').closest('[role="checkbox"]');
100
102
  chip1.setAttribute('tabIndex', '0');
101
103
  chip2.setAttribute('tabIndex', '0');
102
104
  chip1.focus();
@@ -173,7 +175,7 @@ describe('Chips', function () {
173
175
  }, "chip1")]
174
176
  };
175
177
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chips.ChipsBase, _objectSpread({}, clickableProps)));
176
- var chipButton = _react.screen.getByText('Chip 1').closest('[role="button"]');
178
+ var chipButton = _react.screen.getByText('Chip 1').closest('[role="checkbox"]');
177
179
  _react.fireEvent.click(chipButton);
178
180
  expect(mockOnClick).toHaveBeenCalledTimes(1);
179
181
  });
@@ -213,7 +215,7 @@ describe('Chips', function () {
213
215
  }, "chip2")]
214
216
  };
215
217
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chips.ChipsBase, _objectSpread({}, disabledProps)));
216
- var disabledChips = _react.screen.getAllByRole('button');
218
+ var disabledChips = _react.screen.getAllByRole('checkbox');
217
219
  disabledChips.forEach(function (chip) {
218
220
  expect(chip).toHaveAttribute('aria-disabled', 'true');
219
221
  });
@@ -243,9 +245,9 @@ describe('Chips', function () {
243
245
  };
244
246
  var _render3 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chips.ChipsBase, _objectSpread({}, emptyProps))),
245
247
  container = _render3.container;
246
- expect(container.firstChild).toHaveClass('chips');
247
- expect(container.firstChild).toHaveClass('vertical');
248
- var buttons = _react.screen.queryAllByRole('button');
248
+ expect(container.firstChild.firstChild).toHaveClass('chips');
249
+ expect(container.firstChild.firstChild).toHaveClass('vertical');
250
+ var buttons = _react.screen.queryAllByRole('checkbox');
249
251
  expect(buttons).toHaveLength(0);
250
252
  });
251
253
  it('should handle custom className', function () {
@@ -254,17 +256,17 @@ describe('Chips', function () {
254
256
  });
255
257
  var _render4 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chips.ChipsBase, _objectSpread({}, customProps))),
256
258
  container = _render4.container;
257
- expect(container.firstChild).toHaveClass('chips');
258
- expect(container.firstChild).toHaveClass('vertical');
259
- expect(container.firstChild).toHaveClass('custom-chips-class');
259
+ expect(container.firstChild.firstChild).toHaveClass('chips');
260
+ expect(container.firstChild.firstChild).toHaveClass('vertical');
261
+ expect(container.firstChild.firstChild).toHaveClass('custom-chips-class');
260
262
  });
261
263
  it('should handle keyboard navigation with mixed orientations', function () {
262
264
  var verticalProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
263
265
  orientation: 'vertical'
264
266
  });
265
267
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chips.ChipsBase, _objectSpread({}, verticalProps)));
266
- var chip1 = _react.screen.getByText('Chip 1').closest('[role="button"]');
267
- var chip2 = _react.screen.getByText('Chip 2').closest('[role="button"]');
268
+ var chip1 = _react.screen.getByText('Chip 1').closest('[role="checkbox"]');
269
+ var chip2 = _react.screen.getByText('Chip 2').closest('[role="checkbox"]');
268
270
  chip1.setAttribute('tabIndex', '0');
269
271
  chip2.setAttribute('tabIndex', '0');
270
272
 
@@ -296,8 +298,16 @@ describe('Chips', function () {
296
298
  position: 'right',
297
299
  onDelete: mockDeleteWithParams
298
300
  },
299
- children: "Test Chip"
300
- }, "chip1")]
301
+ children: "Chip 1"
302
+ }, "chip1"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.ChipBase, {
303
+ id: "chip2",
304
+ deleteButton: {
305
+ icon: 'closex',
306
+ position: 'right',
307
+ onDelete: mockDeleteWithParams
308
+ },
309
+ children: "Chip 2"
310
+ }, "chip2")]
301
311
  };
302
312
  (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chips.ChipsBase, _objectSpread({}, propsWithParams)));
303
313
  var deleteButtons = getAllDeleteButtons();
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = exports.ColorPickerDecorator = exports.ColorPickerBase = exports.ColorPicker = void 0;
7
7
  var _kind = _interopRequireDefault(require("@enact/core/kind"));
8
+ var _util = require("@enact/core/util");
8
9
  var _Spottable = _interopRequireDefault(require("@enact/spotlight/Spottable"));
9
10
  var _Layout = require("@enact/ui/Layout");
10
11
  var _Toggleable = _interopRequireDefault(require("@enact/ui/Toggleable"));
@@ -63,11 +64,12 @@ var SpottableButton = (0, _Spottable["default"])(_Button.ButtonBase);
63
64
  * @ui
64
65
  * @private
65
66
  */
66
- var PopupContent = function PopupContent(_ref) {
67
- var color = _ref.color,
68
- colorHandler = _ref.colorHandler,
69
- css = _ref.css,
70
- presetColors = _ref.presetColors;
67
+ var _PopupContent = function PopupContent(props) {
68
+ (0, _util.checkPropTypes)(_PopupContent, props);
69
+ var color = props.color,
70
+ colorHandler = props.colorHandler,
71
+ css = props.css,
72
+ presetColors = props.presetColors;
71
73
  var _useState = (0, _react.useState)(0),
72
74
  _useState2 = _slicedToArray(_useState, 2),
73
75
  hue = _useState2[0],
@@ -173,7 +175,7 @@ var PopupContent = function PopupContent(_ref) {
173
175
  })]
174
176
  });
175
177
  };
176
- PopupContent.propTypes = {
178
+ _PopupContent.propTypes = {
177
179
  /**
178
180
  * Indicates the color.
179
181
  *
@@ -295,13 +297,13 @@ var ColorPickerBase = exports.ColorPickerBase = (0, _kind["default"])({
295
297
  text: _propTypes["default"].string
296
298
  },
297
299
  handlers: {
298
- handleClosePopup: function handleClosePopup(ev, _ref2) {
299
- var onTogglePopup = _ref2.onTogglePopup;
300
+ handleClosePopup: function handleClosePopup(ev, _ref) {
301
+ var onTogglePopup = _ref.onTogglePopup;
300
302
  onTogglePopup();
301
303
  },
302
- handleOpenPopup: function handleOpenPopup(ev, _ref3) {
303
- var disabled = _ref3.disabled,
304
- onTogglePopup = _ref3.onTogglePopup;
304
+ handleOpenPopup: function handleOpenPopup(ev, _ref2) {
305
+ var disabled = _ref2.disabled,
306
+ onTogglePopup = _ref2.onTogglePopup;
305
307
  if (!disabled) {
306
308
  onTogglePopup();
307
309
  }
@@ -311,19 +313,19 @@ var ColorPickerBase = exports.ColorPickerBase = (0, _kind["default"])({
311
313
  css: _ColorPickerModule["default"],
312
314
  publicClassNames: true
313
315
  },
314
- render: function render(_ref4) {
315
- var color = _ref4.color,
316
- colorHandler = _ref4.colorHandler,
317
- css = _ref4.css,
318
- _ref4$disabled = _ref4.disabled,
319
- disabled = _ref4$disabled === void 0 ? false : _ref4$disabled,
320
- handleClosePopup = _ref4.handleClosePopup,
321
- handleOpenPopup = _ref4.handleOpenPopup,
322
- _ref4$popupOpen = _ref4.popupOpen,
323
- popupOpen = _ref4$popupOpen === void 0 ? false : _ref4$popupOpen,
324
- presetColors = _ref4.presetColors,
325
- text = _ref4.text,
326
- rest = _objectWithoutProperties(_ref4, _excluded);
316
+ render: function render(_ref3) {
317
+ var color = _ref3.color,
318
+ colorHandler = _ref3.colorHandler,
319
+ css = _ref3.css,
320
+ _ref3$disabled = _ref3.disabled,
321
+ disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
322
+ handleClosePopup = _ref3.handleClosePopup,
323
+ handleOpenPopup = _ref3.handleOpenPopup,
324
+ _ref3$popupOpen = _ref3.popupOpen,
325
+ popupOpen = _ref3$popupOpen === void 0 ? false : _ref3$popupOpen,
326
+ presetColors = _ref3.presetColors,
327
+ text = _ref3.text,
328
+ rest = _objectWithoutProperties(_ref3, _excluded);
327
329
  delete rest.onTogglePopup;
328
330
  var CloseIcon = (0, _react.useCallback)(function (props) {
329
331
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon["default"], _objectSpread(_objectSpread({}, props), {}, {
@@ -377,7 +379,7 @@ var ColorPickerBase = exports.ColorPickerBase = (0, _kind["default"])({
377
379
  size: "small"
378
380
  })
379
381
  })]
380
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PopupContent, {
382
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupContent, {
381
383
  color: color,
382
384
  colorHandler: colorHandler,
383
385
  css: css,
@@ -18,11 +18,10 @@ wrapped component.
18
18
  */
19
19
  openProp?: string;
20
20
  }
21
- export interface ContextualMenuDecoratorProps
22
- extends Merge<
23
- Merge<ui_Toggleable_ToggleableProps, limestone_Skinnable_SkinnableProps>,
24
- limestone_ContextualPopupDecorator_ContextualPopupDecoratorProps
25
- > {
21
+ export interface ContextualMenuDecoratorProps extends Merge<
22
+ Merge<ui_Toggleable_ToggleableProps, limestone_Skinnable_SkinnableProps>,
23
+ limestone_ContextualPopupDecorator_ContextualPopupDecoratorProps
24
+ > {
26
25
  /**
27
26
  * Direction of popup with respect to the wrapped component.
28
27
  */
@@ -12,7 +12,7 @@
12
12
  :global(.enact-locale-non-latin) .contextualPopup {
13
13
  font-family: "Limestone";
14
14
  font-weight: var(--primitive-font-weight-light);
15
- font-size: 1.125rem;
15
+ font-size: var(--primitive-font-size-54);
16
16
  font-style: normal;
17
17
  }
18
18
  :global(.enact-locale-km) .contextualPopup {
@@ -47,7 +47,7 @@
47
47
  position: absolute;
48
48
  min-height: 4rem;
49
49
  min-width: 4rem;
50
- padding: 0.75rem 0;
50
+ padding: var(--primitive-spacing-36) 0;
51
51
  background-clip: padding-box;
52
52
  box-sizing: border-box;
53
53
  }
@@ -56,52 +56,52 @@
56
56
  /* Needed to prevent global class being added in the DOM */
57
57
  }
58
58
  .contextualPopup .container.above.overlap {
59
- margin-top: 0.75rem;
59
+ margin-top: var(--primitive-spacing-36);
60
60
  }
61
61
  .contextualPopup .container.above.small {
62
- margin-top: -0.375rem;
62
+ margin-top: calc(var(--primitive-spacing-18) * -1);
63
63
  }
64
64
  .contextualPopup .container.above.large {
65
- margin-top: -0.75rem;
65
+ margin-top: calc(var(--primitive-spacing-36) * -1);
66
66
  }
67
67
  .contextualPopup .container.below.overlap {
68
- margin-top: -0.75rem;
68
+ margin-top: calc(var(--primitive-spacing-36) * -1);
69
69
  }
70
70
  .contextualPopup .container.below.small {
71
- margin-top: 0.375rem;
71
+ margin-top: var(--primitive-spacing-18);
72
72
  }
73
73
  .contextualPopup .container.below.large {
74
- margin-top: 0.75rem;
74
+ margin-top: var(--primitive-spacing-36);
75
75
  }
76
76
  .contextualPopup .container.right.top.overlap,
77
77
  .contextualPopup .container.right.middle.overlap,
78
78
  .contextualPopup .container.right.bottom.overlap {
79
- margin-left: -0.75rem;
79
+ margin-left: calc(var(--primitive-spacing-36) * -1);
80
80
  }
81
81
  .contextualPopup .container.right.top.small,
82
82
  .contextualPopup .container.right.middle.small,
83
83
  .contextualPopup .container.right.bottom.small {
84
- margin-left: 0.375rem;
84
+ margin-left: var(--primitive-spacing-18);
85
85
  }
86
86
  .contextualPopup .container.right.top.large,
87
87
  .contextualPopup .container.right.middle.large,
88
88
  .contextualPopup .container.right.bottom.large {
89
- margin-left: 0.75rem;
89
+ margin-left: var(--primitive-spacing-36);
90
90
  }
91
91
  .contextualPopup .container.left.top.overlap,
92
92
  .contextualPopup .container.left.middle.overlap,
93
93
  .contextualPopup .container.left.bottom.overlap {
94
- margin-left: 0.75rem;
94
+ margin-left: var(--primitive-spacing-36);
95
95
  }
96
96
  .contextualPopup .container.left.top.small,
97
97
  .contextualPopup .container.left.middle.small,
98
98
  .contextualPopup .container.left.bottom.small {
99
- margin-left: -0.375rem;
99
+ margin-left: calc(var(--primitive-spacing-18) * -1);
100
100
  }
101
101
  .contextualPopup .container.left.top.large,
102
102
  .contextualPopup .container.left.middle.large,
103
103
  .contextualPopup .container.left.bottom.large {
104
- margin-left: -0.75rem;
104
+ margin-left: calc(var(--primitive-spacing-36) * -1);
105
105
  }
106
106
  .contextualPopup .container.fixedSize {
107
107
  overflow: hidden;
@@ -134,7 +134,7 @@
134
134
  }
135
135
  .contextualPopup:global(.neutral) .arrow {
136
136
  stroke: var(--semantic-color-stroke-overlay-default);
137
- stroke-width: 0.021rem;
137
+ stroke-width: 0.063rem;
138
138
  }
139
139
  .contextualPopup:global(.neutral) .arrow .arrowFill {
140
140
  fill: var(--semantic-color-surface-context-group);
@@ -142,8 +142,8 @@
142
142
  .contextualPopup:global(.neutral) .outline {
143
143
  outline-color: var(--semantic-color-stroke-overlay-default);
144
144
  outline-style: solid;
145
- outline-width: 0.021rem;
146
- outline-offset: -0.021rem;
145
+ outline-width: 0.063rem;
146
+ outline-offset: calc(0.063rem * -1);
147
147
  }
148
148
  :global(.enact-a11y-high-contrast) .contextualPopup:global(.neutral):global(.highContrast) .container {
149
149
  background-color: var(--semantic-color-surface-context-group);
@@ -155,17 +155,17 @@
155
155
  box-shadow: none;
156
156
  }
157
157
  :global(.enact-a11y-high-contrast) .contextualPopup:global(.neutral):global(.highContrast) .arrow {
158
- stroke: #7c848b;
159
- stroke-width: 0.021rem;
158
+ stroke: var(--semantic-color-stroke-main);
159
+ stroke-width: 0.063rem;
160
160
  }
161
161
  :global(.enact-a11y-high-contrast) .contextualPopup:global(.neutral):global(.highContrast) .arrow .arrowFill {
162
162
  fill: var(--semantic-color-surface-context-group);
163
163
  }
164
164
  :global(.enact-a11y-high-contrast) .contextualPopup:global(.neutral):global(.highContrast) .outline {
165
- outline-color: #7c848b;
165
+ outline-color: var(--semantic-color-stroke-main);
166
166
  outline-style: solid;
167
- outline-width: 0.021rem;
168
- outline-offset: -0.021rem;
167
+ outline-width: 0.063rem;
168
+ outline-offset: calc(0.063rem * -1);
169
169
  }
170
170
  .contextualPopup:global(.light) .container {
171
171
  background-color: var(--semantic-color-surface-context-group);
@@ -178,7 +178,7 @@
178
178
  }
179
179
  .contextualPopup:global(.light) .arrow {
180
180
  stroke: var(--semantic-color-stroke-overlay-default);
181
- stroke-width: 0.021rem;
181
+ stroke-width: 0.063rem;
182
182
  }
183
183
  .contextualPopup:global(.light) .arrow .arrowFill {
184
184
  fill: var(--semantic-color-surface-context-group);
@@ -186,8 +186,8 @@
186
186
  .contextualPopup:global(.light) .outline {
187
187
  outline-color: var(--semantic-color-stroke-overlay-default);
188
188
  outline-style: solid;
189
- outline-width: 0.021rem;
190
- outline-offset: -0.021rem;
189
+ outline-width: 0.063rem;
190
+ outline-offset: calc(0.063rem * -1);
191
191
  }
192
192
  .contextualPopup:global(.game) {
193
193
  --semantic-color-surface-default: #2d224c;
@@ -205,7 +205,7 @@
205
205
  }
206
206
  .contextualPopup:global(.game) .arrow {
207
207
  stroke: var(--semantic-color-stroke-overlay-default);
208
- stroke-width: 0.021rem;
208
+ stroke-width: 0.063rem;
209
209
  }
210
210
  .contextualPopup:global(.game) .arrow .arrowFill {
211
211
  fill: var(--semantic-color-surface-context-group);
@@ -213,8 +213,8 @@
213
213
  .contextualPopup:global(.game) .outline {
214
214
  outline-color: var(--semantic-color-stroke-overlay-default);
215
215
  outline-style: solid;
216
- outline-width: 0.021rem;
217
- outline-offset: -0.021rem;
216
+ outline-width: 0.063rem;
217
+ outline-offset: calc(0.063rem * -1);
218
218
  }
219
219
  :global(.green) .contextualPopup:global(.game) {
220
220
  --semantic-color-surface-default: #1F2C24;
@@ -231,7 +231,7 @@
231
231
  }
232
232
  :global(.green) .contextualPopup:global(.game) .arrow {
233
233
  stroke: var(--semantic-color-stroke-overlay-default);
234
- stroke-width: 0.021rem;
234
+ stroke-width: 0.063rem;
235
235
  }
236
236
  :global(.green) .contextualPopup:global(.game) .arrow .arrowFill {
237
237
  fill: var(--semantic-color-surface-context-group);
@@ -239,8 +239,8 @@
239
239
  :global(.green) .contextualPopup:global(.game) .outline {
240
240
  outline-color: var(--semantic-color-stroke-overlay-default);
241
241
  outline-style: solid;
242
- outline-width: 0.021rem;
243
- outline-offset: -0.021rem;
242
+ outline-width: 0.063rem;
243
+ outline-offset: calc(0.063rem * -1);
244
244
  }
245
245
  :global(.orange) .contextualPopup:global(.game) {
246
246
  --semantic-color-surface-default: #422923;
@@ -257,7 +257,7 @@
257
257
  }
258
258
  :global(.orange) .contextualPopup:global(.game) .arrow {
259
259
  stroke: var(--semantic-color-stroke-overlay-default);
260
- stroke-width: 0.021rem;
260
+ stroke-width: 0.063rem;
261
261
  }
262
262
  :global(.orange) .contextualPopup:global(.game) .arrow .arrowFill {
263
263
  fill: var(--semantic-color-surface-context-group);
@@ -265,6 +265,6 @@
265
265
  :global(.orange) .contextualPopup:global(.game) .outline {
266
266
  outline-color: var(--semantic-color-stroke-overlay-default);
267
267
  outline-style: solid;
268
- outline-width: 0.021rem;
269
- outline-offset: -0.021rem;
268
+ outline-width: 0.063rem;
269
+ outline-offset: calc(0.063rem * -1);
270
270
  }