@enact/limestone 1.10.0 → 1.10.2

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 (133) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE.md +1 -0
  2. package/ActionGuide/ActionGuide.d.ts +1 -1
  3. package/ActionGuide/ActionGuide.module.css +7 -0
  4. package/Alert/Alert.d.ts +9 -0
  5. package/Alert/Alert.js +63 -21
  6. package/Alert/Alert.module.css +41 -9
  7. package/Alert/AlertImage.module.css +5 -1
  8. package/Alert/tests/Alert-specs.js +6 -2
  9. package/BodyText/BodyText.d.ts +1 -1
  10. package/BodyText/BodyText.js +14 -9
  11. package/BodyText/BodyText.module.css +22 -1
  12. package/Button/Button.d.ts +3 -3
  13. package/Button/Button.module.css +81 -63
  14. package/CHANGELOG.md +87 -0
  15. package/Card/Card.d.ts +81 -9
  16. package/Card/Card.js +324 -84
  17. package/Card/Card.module.css +200 -25
  18. package/Card/tests/Card-specs.js +100 -0
  19. package/Checkbox/Checkbox.d.ts +2 -2
  20. package/Checkbox/Checkbox.module.css +2 -5
  21. package/CheckboxItem/CheckboxItem.d.ts +8 -1
  22. package/CheckboxItem/CheckboxItem.js +39 -12
  23. package/CheckboxItem/CheckboxItem.module.css +228 -4
  24. package/Chips/Chip.module.css +5 -2
  25. package/ContextualMenuDecorator/ContextualMenuDecorator.d.ts +2 -2
  26. package/ContextualPopupDecorator/ContextualPopup.module.css +1 -1
  27. package/ContextualPopupDecorator/ContextualPopupDecorator.js +2 -4
  28. package/ContextualPopupDecorator/tests/ContextualPopupDecorator-specs.js +39 -2
  29. package/Dropdown/Dropdown.d.ts +2 -2
  30. package/Dropdown/Dropdown.module.css +7 -7
  31. package/FixedPopupPanels/FixedPopupPanels.d.ts +2 -2
  32. package/FlexiblePopupPanels/FlexiblePopupPanels.module.css +15 -3
  33. package/FlexiblePopupPanels/index.d.ts +2 -2
  34. package/FormCheckboxItem/FormCheckboxItem.d.ts +1 -1
  35. package/FormCheckboxItem/FormCheckboxItem.js +1 -0
  36. package/FormCheckboxItem/FormCheckboxItem.module.css +1 -1
  37. package/Heading/Heading.d.ts +2 -2
  38. package/Heading/Heading.module.css +16 -0
  39. package/Icon/Icon.d.ts +22 -1
  40. package/Icon/Icon.js +21 -0
  41. package/Icon/Icon.module.css +12 -0
  42. package/Icon/IconList.js +43 -1
  43. package/IconItem/IconItem.d.ts +2 -2
  44. package/IconItem/IconItem.module.css +27 -14
  45. package/Image/Image.d.ts +1 -1
  46. package/Image/Image.module.css +1 -1
  47. package/ImageItem/ImageItem.d.ts +2 -2
  48. package/ImageItem/ImageItem.js +3 -16
  49. package/ImageItem/ImageItem.module.css +122 -97
  50. package/ImageItem/tests/ImageItem-specs.js +6 -5
  51. package/Input/Input.module.css +33 -16
  52. package/Input/InputField.module.css +22 -4
  53. package/Input/index.d.ts +1 -1
  54. package/Input/tests/Input-specs.js +2 -2
  55. package/Input/tests/InputField-specs.js +1 -1
  56. package/Item/Item.d.ts +2 -2
  57. package/Item/Item.module.css +29 -16
  58. package/KeyGuide/KeyGuide.d.ts +2 -2
  59. package/KeyGuide/KeyGuide.module.css +10 -0
  60. package/MediaOverlay/MediaOverlay.d.ts +2 -2
  61. package/MediaOverlay/MediaOverlay.module.css +18 -9
  62. package/MediaPlayer/MediaControls.module.css +3 -0
  63. package/MediaPlayer/MediaSlider.module.css +1 -0
  64. package/MediaPlayer/Times.module.css +5 -1
  65. package/MediaPlayer/index.d.ts +2 -2
  66. package/PageViews/PageViews.module.css +6 -1
  67. package/Panels/Header.module.css +74 -56
  68. package/Panels/Panel.module.css +1 -1
  69. package/Panels/index.d.ts +1 -1
  70. package/Picker/Picker.d.ts +1 -1
  71. package/Popup/Popup.module.css +4 -1
  72. package/PopupTabLayout/PopupTabLayout.d.ts +6 -6
  73. package/PopupTabLayout/PopupTabLayout.module.css +24 -6
  74. package/ProgressBar/ProgressBar.d.ts +1 -1
  75. package/ProgressBar/ProgressBar.module.css +12 -12
  76. package/ProgressBar/ProgressBarTooltip.module.css +7 -7
  77. package/ProgressButton/ProgressButton.d.ts +2 -2
  78. package/QuickGuidePanels/QuickGuidePanels.module.css +1 -1
  79. package/RadioItem/RadioItem.d.ts +1 -1
  80. package/RadioItem/RadioItem.module.css +21 -18
  81. package/Scroller/EditableWrapper.js +2 -1
  82. package/Scroller/Scroller.d.ts +12 -0
  83. package/Scroller/Scroller.js +15 -0
  84. package/Scroller/Scroller.module.css +10 -0
  85. package/Scroller/tests/Scroller-specs.js +120 -2
  86. package/Scroller/useThemeScroller.js +25 -2
  87. package/Slider/Slider.d.ts +1 -1
  88. package/Slider/Slider.module.css +539 -303
  89. package/Spinner/Spinner.d.ts +1 -1
  90. package/Spinner/Spinner.module.css +2 -2
  91. package/Steps/Steps.d.ts +1 -1
  92. package/Steps/Steps.js +12 -6
  93. package/Steps/Steps.module.css +19 -2
  94. package/Switch/Switch.module.css +17 -6
  95. package/SwitchItem/SwitchItem.d.ts +1 -1
  96. package/TabLayout/RefocusDecorator.js +1 -1
  97. package/TabLayout/TabGroup.module.css +13 -7
  98. package/TabLayout/TabLayout.js +4 -0
  99. package/ThemeDecorator/ThemeDecorator.d.ts +1 -1
  100. package/ThemeDecorator/ThemeDecorator.module.css +22 -1
  101. package/TimePicker/TimePicker.module.css +3 -0
  102. package/TooltipDecorator/Tooltip.js +68 -7
  103. package/TooltipDecorator/Tooltip.module.css +44 -23
  104. package/TooltipDecorator/TooltipDecorator.d.ts +52 -0
  105. package/TooltipDecorator/TooltipDecorator.js +42 -0
  106. package/TooltipDecorator/TooltipLabel.js +67 -14
  107. package/TooltipDecorator/tests/TooltipDecorator-specs.js +46 -0
  108. package/TooltipDecorator/useTooltip.js +14 -2
  109. package/VideoPlayer/Feedback.module.css +3 -0
  110. package/VideoPlayer/FeedbackTooltip.module.css +7 -0
  111. package/VideoPlayer/MediaTitle.module.css +9 -1
  112. package/VirtualList/VirtualList.d.ts +24 -0
  113. package/VirtualList/VirtualList.js +30 -0
  114. package/VirtualList/tests/stickTo-specs.js +115 -0
  115. package/VirtualList/tests/useEvent-specs.js +39 -0
  116. package/VirtualList/useEvent.js +45 -10
  117. package/VirtualList/useThemeVirtualList.js +20 -2
  118. package/WizardPanels/WizardPanels.module.css +1 -1
  119. package/fonts/Limestone_Icons.ttf +0 -0
  120. package/internal/DateComponentPicker/DateComponentPicker.module.css +3 -3
  121. package/internal/DateTime/DateTime.module.css +3 -0
  122. package/internal/Picker/Picker.js +8 -10
  123. package/internal/Picker/Picker.module.css +92 -137
  124. package/package.json +14 -17
  125. package/styles/color-mixins.less +4 -60
  126. package/styles/colors-game.less +5 -5
  127. package/styles/colors.less +9 -10
  128. package/styles/mixins.less +0 -46
  129. package/styles/motion-mixins.less +16 -7
  130. package/styles/motions.less +2 -2
  131. package/styles/variables.less +186 -69
  132. package/useScroll/ScrollbarPlaceholder.js +8 -3
  133. package/useScroll/useScroll.js +3 -1
@@ -37,7 +37,7 @@
37
37
  line-height: 1.5rem;
38
38
  white-space: nowrap;
39
39
  width: var(--lime-tooltip-label-width);
40
- max-width: 25rem;
40
+ max-width: var(--lime-tooltip-label-width, 25rem);
41
41
  padding: var(--primitive-spacing-12) var(--primitive-spacing-48);
42
42
  border-radius: var(--semantic-radius-button);
43
43
  }
@@ -53,6 +53,19 @@
53
53
  :global(.enact-locale-right-to-left) .tooltip .tooltipLabel {
54
54
  text-align: right;
55
55
  }
56
+ .tooltip .tooltipLabel .tooltipImage {
57
+ margin: 0;
58
+ border-radius: var(--semantic-radius-button);
59
+ width: var(--lime-tooltip-image-width, 20rem);
60
+ height: var(--lime-tooltip-image-height, 11.25rem);
61
+ }
62
+ .tooltip .tooltipLabel.image {
63
+ display: flex;
64
+ flex-direction: column;
65
+ border-radius: var(--semantic-radius-container);
66
+ gap: var(--primitive-spacing-36);
67
+ padding: var(--primitive-spacing-60);
68
+ }
56
69
  .tooltip .tooltipLabel.marquee {
57
70
  max-width: var(--lime-tooltip-label-width, 12.5rem);
58
71
  }
@@ -62,6 +75,10 @@
62
75
  :global(.enact-locale-ja) .tooltip .tooltipLabel.multi {
63
76
  line-break: strict;
64
77
  }
78
+ .tooltip:global(.largeText) .tooltipLabel {
79
+ font-size: var(--primitive-font-size-66);
80
+ line-height: 1.75rem;
81
+ }
65
82
  .tooltip.balloon {
66
83
  /* Needed to prevent global class being added in the DOM */
67
84
  }
@@ -101,6 +118,8 @@
101
118
  }
102
119
  .tooltip.below.leftArrow .tooltipLabel {
103
120
  text-align: right;
121
+ }
122
+ .tooltip.below.leftArrow .tooltipLabel:not(.noArrow) {
104
123
  border-top-right-radius: 0;
105
124
  }
106
125
  .tooltip.below.centerArrow .tooltipArrow {
@@ -120,7 +139,7 @@
120
139
  transform-origin: top left;
121
140
  transform: rotate(45deg) skew(45deg, 0);
122
141
  }
123
- .tooltip.below.rightArrow .tooltipLabel {
142
+ .tooltip.below.rightArrow .tooltipLabel:not(.noArrow) {
124
143
  border-top-left-radius: 0;
125
144
  }
126
145
  .tooltip.above .tooltipArrow {
@@ -140,6 +159,8 @@
140
159
  }
141
160
  .tooltip.above.leftArrow .tooltipLabel {
142
161
  text-align: right;
162
+ }
163
+ .tooltip.above.leftArrow .tooltipLabel:not(.noArrow) {
143
164
  border-bottom-right-radius: 0;
144
165
  }
145
166
  .tooltip.above.centerArrow .tooltipArrow::after {
@@ -156,7 +177,7 @@
156
177
  transform-origin: bottom left;
157
178
  transform: rotate(-45deg) skew(-45deg, 0);
158
179
  }
159
- .tooltip.above.rightArrow .tooltipLabel {
180
+ .tooltip.above.rightArrow .tooltipLabel:not(.noArrow) {
160
181
  border-bottom-left-radius: 0;
161
182
  }
162
183
  .tooltip.left .tooltipArrow {
@@ -174,7 +195,7 @@
174
195
  transform-origin: bottom right;
175
196
  transform: rotate(-45deg) skew(0, 45deg);
176
197
  }
177
- .tooltip.left.topArrow .tooltipLabel {
198
+ .tooltip.left.topArrow .tooltipLabel:not(.noArrow) {
178
199
  border-bottom-right-radius: 0;
179
200
  }
180
201
  .tooltip.left.middleArrow .tooltipArrow::after {
@@ -190,7 +211,7 @@
190
211
  transform-origin: top right;
191
212
  transform: rotate(45deg) skew(0, -45deg);
192
213
  }
193
- .tooltip.left.bottomArrow .tooltipLabel {
214
+ .tooltip.left.bottomArrow .tooltipLabel:not(.noArrow) {
194
215
  border-top-right-radius: 0;
195
216
  }
196
217
  .tooltip.right .tooltipArrow {
@@ -208,7 +229,7 @@
208
229
  transform-origin: bottom left;
209
230
  transform: rotate(45deg) skew(0, -45deg);
210
231
  }
211
- .tooltip.right.topArrow .tooltipLabel {
232
+ .tooltip.right.topArrow .tooltipLabel:not(.noArrow) {
212
233
  border-bottom-left-radius: 0;
213
234
  }
214
235
  .tooltip.right.middleArrow .tooltipArrow::after {
@@ -224,7 +245,7 @@
224
245
  transform-origin: top left;
225
246
  transform: rotate(-45deg) skew(0, 45deg);
226
247
  }
227
- .tooltip.right.bottomArrow .tooltipLabel {
248
+ .tooltip.right.bottomArrow .tooltipLabel:not(.noArrow) {
228
249
  border-top-left-radius: 0;
229
250
  }
230
251
  .tooltip.absolute {
@@ -237,10 +258,10 @@
237
258
  position: absolute;
238
259
  }
239
260
  .tooltip.absolute.below {
240
- top: calc(var(--tooltip-position-top) + var(--primitive-spacing-24) );
261
+ top: calc(var(--tooltip-position-top) + var(--primitive-spacing-24) );
241
262
  }
242
263
  .tooltip.absolute.below.transparent {
243
- top: calc(var(--tooltip-position-top) + 0rem );
264
+ top: calc(var(--tooltip-position-top) + 0rem );
244
265
  }
245
266
  .tooltip.absolute.below.leftArrow .tooltipAnchor {
246
267
  transform: translateX(-100%);
@@ -252,10 +273,10 @@
252
273
  /* transform: translate(0, 0); */
253
274
  }
254
275
  .tooltip.absolute.above {
255
- top: calc(var(--tooltip-position-top) - var(--primitive-spacing-24) );
276
+ top: calc(var(--tooltip-position-top) - var(--primitive-spacing-24) );
256
277
  }
257
278
  .tooltip.absolute.above.transparent {
258
- top: calc(var(--tooltip-position-top) - 0rem );
279
+ top: calc(var(--tooltip-position-top) - 0rem );
259
280
  }
260
281
  .tooltip.absolute.above.leftArrow .tooltipAnchor {
261
282
  transform: translate(-100%, -100%);
@@ -267,10 +288,10 @@
267
288
  transform: translate(0, -100%);
268
289
  }
269
290
  .tooltip.absolute.left {
270
- left: calc(var(--tooltip-position-left) - var(--primitive-spacing-24) );
291
+ left: calc(var(--tooltip-position-left) - var(--primitive-spacing-24) );
271
292
  }
272
293
  .tooltip.absolute.left.transparent {
273
- left: calc(var(--tooltip-position-left) - 0rem );
294
+ left: calc(var(--tooltip-position-left) - 0rem );
274
295
  }
275
296
  .tooltip.absolute.left.topArrow .tooltipAnchor {
276
297
  transform: translate(-100%, -100%);
@@ -282,10 +303,10 @@
282
303
  transform: translate(-100%, 0);
283
304
  }
284
305
  .tooltip.absolute.right {
285
- left: calc(var(--tooltip-position-left) + var(--primitive-spacing-24) );
306
+ left: calc(var(--tooltip-position-left) + var(--primitive-spacing-24) );
286
307
  }
287
308
  .tooltip.absolute.right.transparent {
288
- left: calc(var(--tooltip-position-left) + 0rem );
309
+ left: calc(var(--tooltip-position-left) + 0rem );
289
310
  }
290
311
  .tooltip.absolute.right.topArrow .tooltipAnchor {
291
312
  transform: translate(0, -100%);
@@ -297,10 +318,10 @@
297
318
  /* transform: translate(0, 0); */
298
319
  }
299
320
  .tooltip.relative.below {
300
- top: calc(100% + var(--primitive-spacing-24) );
321
+ top: calc(100% + var(--primitive-spacing-24) );
301
322
  }
302
323
  .tooltip.relative.below.transparent {
303
- top: calc(100% + 0rem );
324
+ top: calc(100% + 0rem );
304
325
  }
305
326
  .tooltip.relative.below.leftArrow {
306
327
  right: 50%;
@@ -313,10 +334,10 @@
313
334
  transform: translateX(-50%);
314
335
  }
315
336
  .tooltip.relative.above {
316
- bottom: calc(100% + var(--primitive-spacing-24) );
337
+ bottom: calc(100% + var(--primitive-spacing-24) );
317
338
  }
318
339
  .tooltip.relative.above.transparent {
319
- bottom: calc(100% + 0rem );
340
+ bottom: calc(100% + 0rem );
320
341
  }
321
342
  .tooltip.relative.above.leftArrow {
322
343
  right: 50%;
@@ -329,10 +350,10 @@
329
350
  transform: translateX(-50%);
330
351
  }
331
352
  .tooltip.relative.left {
332
- right: calc(100% + var(--primitive-spacing-24) );
353
+ right: calc(100% + var(--primitive-spacing-24) );
333
354
  }
334
355
  .tooltip.relative.left.transparent {
335
- right: calc(100% + 0rem );
356
+ right: calc(100% + 0rem );
336
357
  }
337
358
  .tooltip.relative.left.topArrow {
338
359
  bottom: 50%;
@@ -345,10 +366,10 @@
345
366
  transform: translateY(-50%);
346
367
  }
347
368
  .tooltip.relative.right {
348
- left: calc(100% + var(--primitive-spacing-24) );
369
+ left: calc(100% + var(--primitive-spacing-24) );
349
370
  }
350
371
  .tooltip.relative.right.transparent {
351
- left: calc(100% + 0rem );
372
+ left: calc(100% + 0rem );
352
373
  }
353
374
  .tooltip.relative.right.topArrow {
354
375
  bottom: 50%;
@@ -29,11 +29,37 @@ export interface TooltipDecoratorProps {
29
29
  * Disables the component but does not affect tooltip operation.
30
30
  */
31
31
  disabled?: boolean;
32
+ /**
33
+ * `Tooltip` without the arrow.
34
+ */
35
+ noArrow?: boolean;
36
+ /**
37
+ * Customizes the component by mapping the supplied collection of CSS class names to the
38
+ corresponding internal elements and states of this component.
39
+ *
40
+ * The following classes are supported:
41
+ * * `tooltip` - The root class name
42
+ */
43
+ tooltipCss?: object;
32
44
  /**
33
45
  * Time to wait (in milliseconds) before showing tooltip on hover.
34
46
  */
35
47
  tooltipDelay?: number;
36
48
  /**
49
+ * Source for the image.
50
+ String value or Object of values used to determine which image will appear on
51
+ a specific screenSize.
52
+ */
53
+ tooltipImage?: string | object;
54
+ /**
55
+ * The size of the image.
56
+ *
57
+ * The following properties should be provided:
58
+ * * `height` - The height of the image
59
+ * * `width` - The width of the image
60
+ */
61
+ tooltipImageSize?: object;
62
+ /**
37
63
  * Allows the tooltip to marquee.
38
64
  *
39
65
  * Specifying a
@@ -175,6 +201,10 @@ account for that in your provided offset value.
175
201
  the marquee to that size.
176
202
  */
177
203
  marquee?: boolean;
204
+ /**
205
+ * `Tooltip` without the arrow.
206
+ */
207
+ noArrow?: boolean;
178
208
  /**
179
209
  * Style object for tooltip position.
180
210
  */
@@ -187,6 +217,28 @@ When this is not specified, the implication is that the component is "absolutely
187
217
  positioned, relative to the viewport, rather than its parent layer.
188
218
  */
189
219
  relative?: boolean;
220
+ /**
221
+ * Customizes the component by mapping the supplied collection of CSS class names to the
222
+ corresponding internal elements and states of this component.
223
+ *
224
+ * The following classes are supported:
225
+ * * `tooltip` - The root class name
226
+ */
227
+ tooltipCss?: object;
228
+ /**
229
+ * Source for the image.
230
+ String value or Object of values used to determine which image will appear on
231
+ a specific screenSize.
232
+ */
233
+ tooltipImage?: string | object;
234
+ /**
235
+ * The size of the image.
236
+ *
237
+ * The following properties should be provided:
238
+ * * `height` - The height of the image
239
+ * * `width` - The width of the image
240
+ */
241
+ tooltipImageSize?: object;
190
242
  /**
191
243
  * Called when the tooltip mounts/unmounts, giving a reference to the DOM.
192
244
  */
@@ -124,6 +124,13 @@ var TooltipDecorator = exports.TooltipDecorator = (0, _hoc["default"])(defaultCo
124
124
  * @public
125
125
  */
126
126
  disabled: _propTypes["default"].bool,
127
+ /**
128
+ * `Tooltip` without the arrow.
129
+ *
130
+ * @type {Boolean}
131
+ * @public
132
+ */
133
+ noArrow: _propTypes["default"].bool,
127
134
  /**
128
135
  * Indicates the tooltip text direction is right-to-left.
129
136
  *
@@ -131,6 +138,18 @@ var TooltipDecorator = exports.TooltipDecorator = (0, _hoc["default"])(defaultCo
131
138
  * @private
132
139
  */
133
140
  rtl: _propTypes["default"].bool,
141
+ /**
142
+ * Customizes the component by mapping the supplied collection of CSS class names to the
143
+ * corresponding internal elements and states of this component.
144
+ *
145
+ * The following classes are supported:
146
+ *
147
+ * * `tooltip` - The root class name
148
+ *
149
+ * @type {Object}
150
+ * @public
151
+ */
152
+ tooltipCss: _propTypes["default"].object,
134
153
  /**
135
154
  * Time to wait (in milliseconds) before showing tooltip on hover.
136
155
  *
@@ -139,6 +158,29 @@ var TooltipDecorator = exports.TooltipDecorator = (0, _hoc["default"])(defaultCo
139
158
  * @public
140
159
  */
141
160
  tooltipDelay: _propTypes["default"].number,
161
+ /**
162
+ * Source for the image.
163
+ * String value or Object of values used to determine which image will appear on
164
+ * a specific screenSize.
165
+ *
166
+ * @type {String|Object}
167
+ * @public
168
+ */
169
+ tooltipImage: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]),
170
+ /**
171
+ * The size of the image.
172
+ *
173
+ * The following properties should be provided:
174
+ * * `height` - The height of the image
175
+ * * `width` - The width of the image
176
+ *
177
+ * @type {Object}
178
+ * @public
179
+ */
180
+ tooltipImageSize: _propTypes["default"].shape({
181
+ height: _propTypes["default"].number,
182
+ width: _propTypes["default"].number
183
+ }),
142
184
  /**
143
185
  * Allows the tooltip to marquee.
144
186
  *
@@ -8,10 +8,11 @@ var _kind = _interopRequireDefault(require("@enact/core/kind"));
8
8
  var _util = require("@enact/i18n/util");
9
9
  var _resolution = require("@enact/ui/resolution");
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _Image = _interopRequireDefault(require("../Image"));
11
12
  var _Marquee = _interopRequireDefault(require("../Marquee"));
12
13
  var _TooltipModule = _interopRequireDefault(require("./Tooltip.module.css"));
13
14
  var _jsxRuntime = require("react/jsx-runtime");
14
- var _excluded = ["centered", "children", "marquee"];
15
+ var _excluded = ["centered", "children", "css", "tooltipImage", "marquee"];
15
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
16
17
  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; }
17
18
  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; }
@@ -55,6 +56,36 @@ var TooltipLabel = exports.TooltipLabel = (0, _kind["default"])({
55
56
  * @public
56
57
  */
57
58
  marquee: _propTypes["default"].bool,
59
+ /**
60
+ * `Tooltip` without the arrow.
61
+ *
62
+ * @type {Boolean}
63
+ * @public
64
+ */
65
+ noArrow: _propTypes["default"].bool,
66
+ /**
67
+ * Source for the image.
68
+ * String value or Object of values used to determine which image will appear on
69
+ * a specific screenSize.
70
+ *
71
+ * @type {String|Object}
72
+ * @public
73
+ */
74
+ tooltipImage: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]),
75
+ /**
76
+ * The size of the image.
77
+ *
78
+ * The following properties should be provided:
79
+ * * `height` - The height of the image
80
+ * * `width` - The width of the image
81
+ *
82
+ * @type {Object}
83
+ * @public
84
+ */
85
+ tooltipImageSize: _propTypes["default"].shape({
86
+ height: _propTypes["default"].number,
87
+ width: _propTypes["default"].number
88
+ }),
58
89
  /**
59
90
  * The width of tooltip content.
60
91
  *
@@ -73,43 +104,65 @@ var TooltipLabel = exports.TooltipLabel = (0, _kind["default"])({
73
104
  width: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string])
74
105
  },
75
106
  styles: {
76
- css: _TooltipModule["default"]
107
+ css: _TooltipModule["default"],
108
+ name: 'tooltipLabel',
109
+ publicClassNames: true
77
110
  },
78
111
  computed: {
79
112
  className: function className(_ref) {
80
- var marquee = _ref.marquee,
81
- width = _ref.width,
82
- styler = _ref.styler;
113
+ var tooltipImage = _ref.tooltipImage,
114
+ marquee = _ref.marquee,
115
+ noArrow = _ref.noArrow,
116
+ styler = _ref.styler,
117
+ width = _ref.width;
83
118
  return styler.append({
84
- multi: !marquee && !!width,
85
- marquee: marquee
119
+ multi: !marquee && (!!width || !!tooltipImage),
120
+ marquee: marquee,
121
+ noArrow: !!noArrow,
122
+ image: !!tooltipImage
86
123
  });
87
124
  },
88
125
  style: function style(_ref2) {
89
126
  var children = _ref2.children,
90
127
  width = _ref2.width,
128
+ tooltipImageSize = _ref2.tooltipImageSize,
91
129
  _style = _ref2.style;
130
+ var enforcedWidth = typeof width === 'number' ? (0, _resolution.scaleToRem)(width) : width;
92
131
  return _objectSpread(_objectSpread({}, _style), {}, {
93
132
  direction: (0, _util.isRtlText)(children) ? 'rtl' : 'ltr',
94
- '--lime-tooltip-label-width': typeof width === 'number' ? (0, _resolution.scaleToRem)(width) : width
133
+ '--lime-tooltip-label-width': tooltipImageSize !== null && tooltipImageSize !== void 0 && tooltipImageSize.width ? (0, _resolution.scaleToRem)(tooltipImageSize === null || tooltipImageSize === void 0 ? void 0 : tooltipImageSize.width) : enforcedWidth,
134
+ '--lime-tooltip-image-width': (tooltipImageSize === null || tooltipImageSize === void 0 ? void 0 : tooltipImageSize.width) && (0, _resolution.scaleToRem)(tooltipImageSize === null || tooltipImageSize === void 0 ? void 0 : tooltipImageSize.width),
135
+ '--lime-tooltip-image-height': (tooltipImageSize === null || tooltipImageSize === void 0 ? void 0 : tooltipImageSize.width) && (0, _resolution.scaleToRem)(tooltipImageSize === null || tooltipImageSize === void 0 ? void 0 : tooltipImageSize.height)
95
136
  });
96
137
  }
97
138
  },
98
139
  render: function render(_ref3) {
99
140
  var centered = _ref3.centered,
100
141
  children = _ref3.children,
142
+ css = _ref3.css,
143
+ tooltipImage = _ref3.tooltipImage,
101
144
  marquee = _ref3.marquee,
102
145
  rest = _objectWithoutProperties(_ref3, _excluded);
146
+ delete rest.noArrow;
147
+ delete rest.tooltipImageSize;
103
148
  delete rest.width;
104
149
  if (marquee) {
105
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Marquee["default"], _objectSpread(_objectSpread({}, rest), {}, {
106
- alignment: centered ? 'center' : null,
107
- marqueeOn: "render",
108
- children: children
150
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", _objectSpread(_objectSpread({}, rest), {}, {
151
+ children: [tooltipImage && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Image["default"], {
152
+ className: css.tooltipImage,
153
+ src: tooltipImage
154
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Marquee["default"], {
155
+ alignment: centered ? 'center' : null,
156
+ marqueeOn: "render",
157
+ children: children
158
+ })]
109
159
  }));
110
160
  } else {
111
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", _objectSpread(_objectSpread({}, rest), {}, {
112
- children: children
161
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", _objectSpread(_objectSpread({}, rest), {}, {
162
+ children: [tooltipImage && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Image["default"], {
163
+ className: css.tooltipImage,
164
+ src: tooltipImage
165
+ }), children]
113
166
  }));
114
167
  }
115
168
  }
@@ -12,6 +12,11 @@ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.
12
12
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
13
13
  var FloatingLayerController = (0, _FloatingLayer.FloatingLayerDecorator)('div');
14
14
  var TooltipButton = (0, _TooltipDecorator["default"])(_Button["default"]);
15
+ var src = {
16
+ hd: 'https://placehold.co/200x200',
17
+ fhd: 'https://placehold.co/300x300',
18
+ uhd: 'https://placehold.co/600x600'
19
+ };
15
20
  describe('TooltipDecorator', function () {
16
21
  describe('TooltipLabel', function () {
17
22
  test('should apply alignment when `centered` and `marquee`', function () {
@@ -219,6 +224,47 @@ describe('TooltipDecorator', function () {
219
224
  expect(tooltipArrow).toHaveClass(expected);
220
225
  });
221
226
  }));
227
+ test('should have \'noArrow\' className when the prop is given', /*#__PURE__*/_asyncToGenerator(function* () {
228
+ var tooltipText = 'Tooltip';
229
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
230
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TooltipButton, {
231
+ tooltipDelay: 0,
232
+ noArrow: true,
233
+ tooltipText: tooltipText,
234
+ children: "Label"
235
+ })
236
+ }));
237
+ var button = _react.screen.getByRole('button');
238
+ (0, _react.act)(function () {
239
+ return button.focus();
240
+ });
241
+ _react.fireEvent.mouseOver(button);
242
+ yield (0, _react.waitFor)(function () {
243
+ var tooltipNoArrow = _react.screen.getByText('Tooltip').parentElement.parentElement;
244
+ var expected = 'tooltip noArrow';
245
+ expect(tooltipNoArrow).toHaveClass(expected);
246
+ });
247
+ }));
248
+ test('should have properly display Image', /*#__PURE__*/_asyncToGenerator(function* () {
249
+ var tooltipText = 'Tooltip';
250
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
251
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TooltipButton, {
252
+ tooltipDelay: 0,
253
+ tooltipImage: src,
254
+ tooltipText: tooltipText,
255
+ children: "Label"
256
+ })
257
+ }));
258
+ var button = _react.screen.getByRole('button');
259
+ (0, _react.act)(function () {
260
+ return button.focus();
261
+ });
262
+ _react.fireEvent.mouseOver(button);
263
+ yield (0, _react.waitFor)(function () {
264
+ var tooltipImage = _react.screen.getByText('Tooltip').children[0].children[0].tagName;
265
+ expect(tooltipImage).toBe('IMG');
266
+ });
267
+ }));
222
268
  });
223
269
  });
224
270
  });
@@ -45,9 +45,13 @@ var getTooltipDirection = function getTooltipDirection(tooltipPosition, tooltipT
45
45
  };
46
46
  var removeTooltipProps = function removeTooltipProps(_ref) {
47
47
  var props = Object.assign({}, (_objectDestructuringEmpty(_ref), _ref));
48
+ delete props.noArrow;
48
49
  delete props.rtl;
49
50
  delete props.screenEdgeKeepout;
51
+ delete props.tooltipCss;
50
52
  delete props.tooltipDelay;
53
+ delete props.tooltipImage;
54
+ delete props.tooltipImageSize;
51
55
  delete props.tooltipMarquee;
52
56
  delete props.tooltipPosition;
53
57
  delete props.tooltipProps;
@@ -71,7 +75,8 @@ var defaultScreenEdgeKeepout = exports.defaultScreenEdgeKeepout = 24 + 24;
71
75
  // A hook to show Limestone-styled tooltip components.
72
76
  var useTooltip = exports.useTooltip = function useTooltip(props) {
73
77
  var _useI18nContext;
74
- var _props$screenEdgeKeep = props.screenEdgeKeepout,
78
+ var noArrow = props.noArrow,
79
+ _props$screenEdgeKeep = props.screenEdgeKeepout,
75
80
  screenEdgeKeepout = _props$screenEdgeKeep === void 0 ? defaultScreenEdgeKeepout : _props$screenEdgeKeep,
76
81
  _props$tooltipDelay = props.tooltipDelay,
77
82
  tooltipDelay = _props$tooltipDelay === void 0 ? 500 : _props$tooltipDelay,
@@ -79,6 +84,9 @@ var useTooltip = exports.useTooltip = function useTooltip(props) {
79
84
  tooltipType = _props$tooltipType === void 0 ? 'balloon' : _props$tooltipType,
80
85
  _props$tooltipUpdateD = props.tooltipUpdateDelay,
81
86
  tooltipUpdateDelay = _props$tooltipUpdateD === void 0 ? 400 : _props$tooltipUpdateD,
87
+ tooltipCss = props.tooltipCss,
88
+ tooltipImage = props.tooltipImage,
89
+ tooltipImageSize = props.tooltipImageSize,
82
90
  tooltipMarquee = props.tooltipMarquee,
83
91
  tooltipPosition = props.tooltipPosition,
84
92
  tooltipProps = props.tooltipProps,
@@ -246,10 +254,14 @@ var useTooltip = exports.useTooltip = function useTooltip(props) {
246
254
  labelOffset: layout.labelOffset
247
255
  }, tooltipProps), {}, {
248
256
  arrowAnchor: layout.arrowAnchor,
257
+ noArrow: noArrow,
249
258
  direction: layout.tooltipDirection,
250
259
  marquee: tooltipMarquee,
251
260
  relative: tooltipRelative,
252
261
  style: tooltipStyle,
262
+ tooltipCss: tooltipCss,
263
+ tooltipImage: tooltipImage,
264
+ tooltipImageSize: tooltipImageSize,
253
265
  tooltipRef: getTooltipRef,
254
266
  type: tooltipType,
255
267
  width: tooltipWidth,
@@ -268,7 +280,7 @@ var useTooltip = exports.useTooltip = function useTooltip(props) {
268
280
  } else {
269
281
  return null;
270
282
  }
271
- }, [getTooltipRef, hideTooltip, layout, showing, tooltipMarquee, tooltipProps, tooltipRelative, tooltipText, tooltipType, tooltipWidth]);
283
+ }, [getTooltipRef, hideTooltip, layout, noArrow, showing, tooltipCss, tooltipImage, tooltipImageSize, tooltipMarquee, tooltipProps, tooltipRelative, tooltipText, tooltipType, tooltipWidth]);
272
284
  return {
273
285
  tooltip: tooltipText ? renderTooltip() : null,
274
286
  handlers: handlers,
@@ -49,3 +49,6 @@
49
49
  --semantic-color-surface-default-focused: #b85f23;
50
50
  color: inherit;
51
51
  }
52
+ :global(.largeText) .feedback .icon {
53
+ font-size: 1.5em;
54
+ }
@@ -14,6 +14,9 @@
14
14
  font-size: var(--primitive-font-size-54);
15
15
  margin-bottom: var(--primitive-spacing-30);
16
16
  }
17
+ :global(.largeText) .feedbackTooltip.shift .content {
18
+ font-size: var(--primitive-font-size-56);
19
+ }
17
20
  .feedbackTooltip.hidden {
18
21
  display: none;
19
22
  }
@@ -61,6 +64,10 @@
61
64
  font-size: var(--primitive-font-size-48);
62
65
  font-weight: var(--primitive-font-weight-regular);
63
66
  }
67
+ :global(.largeText) .feedbackTooltip .content {
68
+ font-size: var(--primitive-font-size-58);
69
+ line-height: 1.75rem;
70
+ }
64
71
  .feedbackTooltip .alignmentContainer {
65
72
  position: relative;
66
73
  right: 50%;
@@ -1,5 +1,5 @@
1
1
  .titleFrame {
2
- width: calc(100% - 2 * 4rem );
2
+ width: calc(100% - 2 * 4rem );
3
3
  position: relative;
4
4
  flex-grow: 1;
5
5
  opacity: 1;
@@ -53,6 +53,14 @@
53
53
  .titleFrame .infoComponents .fontLgIcons {
54
54
  font-family: "LG Icons";
55
55
  }
56
+ :global(.largeText) .titleFrame .title {
57
+ font-size: var(--primitive-font-size-108);
58
+ line-height: 3.04167rem;
59
+ }
60
+ :global(.largeText) .titleFrame .infoComponents {
61
+ font-size: var(--primitive-font-size-66);
62
+ line-height: 1.75rem;
63
+ }
56
64
  :global(.noAnimation) .titleFrame.hidden {
57
65
  transition: none;
58
66
  }
@@ -170,6 +170,18 @@ the `Spotlight` will store the last focus information based on `SpotlightId`
170
170
  And the `VirtualList` will restore the focus when it remounts while the navigation returns to the `Panel` .
171
171
  */
172
172
  spotlightId?: string;
173
+ /**
174
+ * Anchors the focused item to a fixed "focus position" at the start edge while the list scrolls
175
+ beneath it.
176
+ *
177
+ * When set to `'start'` , moving focus with 5-way keys keeps the focus indicator at a fixed slot
178
+ at the start of the list (top for vertical, leading edge for horizontal) and scrolls so the
179
+ newly focused item lands in that slot. At the end of the list, the list scrolls only to its
180
+ last position so the focused item stays visible.
181
+ *
182
+ * This is ignored when `snapToCenter` is set.
183
+ */
184
+ stickTo?: "start";
173
185
  /**
174
186
  * Specifies how to show vertical scrollbar.
175
187
  *
@@ -380,6 +392,18 @@ the `Spotlight` will store the last focus information based on `SpotlightId`
380
392
  And the `VirtualGridList` will restore the focus when it remounts while the navigation returns to the `Panel` .
381
393
  */
382
394
  spotlightId?: string;
395
+ /**
396
+ * Anchors the focused item to a fixed "focus position" at the start edge while the list scrolls
397
+ beneath it.
398
+ *
399
+ * When set to `'start'` , moving focus with 5-way keys keeps the focus indicator at a fixed slot
400
+ at the start of the list (top for vertical, leading edge for horizontal) and scrolls so the
401
+ newly focused item lands in that slot. At the end of the list, the list scrolls only to its
402
+ last position so the focused item stays visible.
403
+ *
404
+ * This is ignored when `snapToCenter` is set.
405
+ */
406
+ stickTo?: "start";
383
407
  /**
384
408
  * Specifies how to show vertical scrollbar.
385
409
  *