@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.
- package/.github/PULL_REQUEST_TEMPLATE.md +1 -0
- package/ActionGuide/ActionGuide.d.ts +1 -1
- package/ActionGuide/ActionGuide.module.css +7 -0
- package/Alert/Alert.d.ts +9 -0
- package/Alert/Alert.js +63 -21
- package/Alert/Alert.module.css +41 -9
- package/Alert/AlertImage.module.css +5 -1
- package/Alert/tests/Alert-specs.js +6 -2
- package/BodyText/BodyText.d.ts +1 -1
- package/BodyText/BodyText.js +14 -9
- package/BodyText/BodyText.module.css +22 -1
- package/Button/Button.d.ts +3 -3
- package/Button/Button.module.css +81 -63
- package/CHANGELOG.md +87 -0
- package/Card/Card.d.ts +81 -9
- package/Card/Card.js +324 -84
- package/Card/Card.module.css +200 -25
- package/Card/tests/Card-specs.js +100 -0
- package/Checkbox/Checkbox.d.ts +2 -2
- package/Checkbox/Checkbox.module.css +2 -5
- package/CheckboxItem/CheckboxItem.d.ts +8 -1
- package/CheckboxItem/CheckboxItem.js +39 -12
- package/CheckboxItem/CheckboxItem.module.css +228 -4
- package/Chips/Chip.module.css +5 -2
- package/ContextualMenuDecorator/ContextualMenuDecorator.d.ts +2 -2
- package/ContextualPopupDecorator/ContextualPopup.module.css +1 -1
- package/ContextualPopupDecorator/ContextualPopupDecorator.js +2 -4
- package/ContextualPopupDecorator/tests/ContextualPopupDecorator-specs.js +39 -2
- package/Dropdown/Dropdown.d.ts +2 -2
- package/Dropdown/Dropdown.module.css +7 -7
- package/FixedPopupPanels/FixedPopupPanels.d.ts +2 -2
- package/FlexiblePopupPanels/FlexiblePopupPanels.module.css +15 -3
- package/FlexiblePopupPanels/index.d.ts +2 -2
- package/FormCheckboxItem/FormCheckboxItem.d.ts +1 -1
- package/FormCheckboxItem/FormCheckboxItem.js +1 -0
- package/FormCheckboxItem/FormCheckboxItem.module.css +1 -1
- package/Heading/Heading.d.ts +2 -2
- package/Heading/Heading.module.css +16 -0
- package/Icon/Icon.d.ts +22 -1
- package/Icon/Icon.js +21 -0
- package/Icon/Icon.module.css +12 -0
- package/Icon/IconList.js +43 -1
- package/IconItem/IconItem.d.ts +2 -2
- package/IconItem/IconItem.module.css +27 -14
- package/Image/Image.d.ts +1 -1
- package/Image/Image.module.css +1 -1
- package/ImageItem/ImageItem.d.ts +2 -2
- package/ImageItem/ImageItem.js +3 -16
- package/ImageItem/ImageItem.module.css +122 -97
- package/ImageItem/tests/ImageItem-specs.js +6 -5
- package/Input/Input.module.css +33 -16
- package/Input/InputField.module.css +22 -4
- package/Input/index.d.ts +1 -1
- package/Input/tests/Input-specs.js +2 -2
- package/Input/tests/InputField-specs.js +1 -1
- package/Item/Item.d.ts +2 -2
- package/Item/Item.module.css +29 -16
- package/KeyGuide/KeyGuide.d.ts +2 -2
- package/KeyGuide/KeyGuide.module.css +10 -0
- package/MediaOverlay/MediaOverlay.d.ts +2 -2
- package/MediaOverlay/MediaOverlay.module.css +18 -9
- package/MediaPlayer/MediaControls.module.css +3 -0
- package/MediaPlayer/MediaSlider.module.css +1 -0
- package/MediaPlayer/Times.module.css +5 -1
- package/MediaPlayer/index.d.ts +2 -2
- package/PageViews/PageViews.module.css +6 -1
- package/Panels/Header.module.css +74 -56
- package/Panels/Panel.module.css +1 -1
- package/Panels/index.d.ts +1 -1
- package/Picker/Picker.d.ts +1 -1
- package/Popup/Popup.module.css +4 -1
- package/PopupTabLayout/PopupTabLayout.d.ts +6 -6
- package/PopupTabLayout/PopupTabLayout.module.css +24 -6
- package/ProgressBar/ProgressBar.d.ts +1 -1
- package/ProgressBar/ProgressBar.module.css +12 -12
- package/ProgressBar/ProgressBarTooltip.module.css +7 -7
- package/ProgressButton/ProgressButton.d.ts +2 -2
- package/QuickGuidePanels/QuickGuidePanels.module.css +1 -1
- package/RadioItem/RadioItem.d.ts +1 -1
- package/RadioItem/RadioItem.module.css +21 -18
- package/Scroller/EditableWrapper.js +2 -1
- package/Scroller/Scroller.d.ts +12 -0
- package/Scroller/Scroller.js +15 -0
- package/Scroller/Scroller.module.css +10 -0
- package/Scroller/tests/Scroller-specs.js +120 -2
- package/Scroller/useThemeScroller.js +25 -2
- package/Slider/Slider.d.ts +1 -1
- package/Slider/Slider.module.css +539 -303
- package/Spinner/Spinner.d.ts +1 -1
- package/Spinner/Spinner.module.css +2 -2
- package/Steps/Steps.d.ts +1 -1
- package/Steps/Steps.js +12 -6
- package/Steps/Steps.module.css +19 -2
- package/Switch/Switch.module.css +17 -6
- package/SwitchItem/SwitchItem.d.ts +1 -1
- package/TabLayout/RefocusDecorator.js +1 -1
- package/TabLayout/TabGroup.module.css +13 -7
- package/TabLayout/TabLayout.js +4 -0
- package/ThemeDecorator/ThemeDecorator.d.ts +1 -1
- package/ThemeDecorator/ThemeDecorator.module.css +22 -1
- package/TimePicker/TimePicker.module.css +3 -0
- package/TooltipDecorator/Tooltip.js +68 -7
- package/TooltipDecorator/Tooltip.module.css +44 -23
- package/TooltipDecorator/TooltipDecorator.d.ts +52 -0
- package/TooltipDecorator/TooltipDecorator.js +42 -0
- package/TooltipDecorator/TooltipLabel.js +67 -14
- package/TooltipDecorator/tests/TooltipDecorator-specs.js +46 -0
- package/TooltipDecorator/useTooltip.js +14 -2
- package/VideoPlayer/Feedback.module.css +3 -0
- package/VideoPlayer/FeedbackTooltip.module.css +7 -0
- package/VideoPlayer/MediaTitle.module.css +9 -1
- package/VirtualList/VirtualList.d.ts +24 -0
- package/VirtualList/VirtualList.js +30 -0
- package/VirtualList/tests/stickTo-specs.js +115 -0
- package/VirtualList/tests/useEvent-specs.js +39 -0
- package/VirtualList/useEvent.js +45 -10
- package/VirtualList/useThemeVirtualList.js +20 -2
- package/WizardPanels/WizardPanels.module.css +1 -1
- package/fonts/Limestone_Icons.ttf +0 -0
- package/internal/DateComponentPicker/DateComponentPicker.module.css +3 -3
- package/internal/DateTime/DateTime.module.css +3 -0
- package/internal/Picker/Picker.js +8 -10
- package/internal/Picker/Picker.module.css +92 -137
- package/package.json +14 -17
- package/styles/color-mixins.less +4 -60
- package/styles/colors-game.less +5 -5
- package/styles/colors.less +9 -10
- package/styles/mixins.less +0 -46
- package/styles/motion-mixins.less +16 -7
- package/styles/motions.less +2 -2
- package/styles/variables.less +186 -69
- package/useScroll/ScrollbarPlaceholder.js +8 -3
- 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) +
|
|
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) +
|
|
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) -
|
|
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) -
|
|
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) -
|
|
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) -
|
|
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) +
|
|
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) +
|
|
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% +
|
|
321
|
+
top: calc(100% + var(--primitive-spacing-24) );
|
|
301
322
|
}
|
|
302
323
|
.tooltip.relative.below.transparent {
|
|
303
|
-
top: calc(100% +
|
|
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% +
|
|
337
|
+
bottom: calc(100% + var(--primitive-spacing-24) );
|
|
317
338
|
}
|
|
318
339
|
.tooltip.relative.above.transparent {
|
|
319
|
-
bottom: calc(100% +
|
|
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% +
|
|
353
|
+
right: calc(100% + var(--primitive-spacing-24) );
|
|
333
354
|
}
|
|
334
355
|
.tooltip.relative.left.transparent {
|
|
335
|
-
right: calc(100% +
|
|
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% +
|
|
369
|
+
left: calc(100% + var(--primitive-spacing-24) );
|
|
349
370
|
}
|
|
350
371
|
.tooltip.relative.right.transparent {
|
|
351
|
-
left: calc(100% +
|
|
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
|
|
81
|
-
|
|
82
|
-
|
|
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':
|
|
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.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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.
|
|
112
|
-
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
|
|
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,
|
|
@@ -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 *
|
|
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
|
*
|