@vonage/vivid 3.51.0 → 3.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/accordion/index.cjs +1 -1
- package/accordion/index.js +1 -1
- package/accordion-item/index.cjs +1 -1
- package/accordion-item/index.js +1 -1
- package/alert/index.cjs +3 -3
- package/alert/index.js +3 -3
- package/appearance-ui/index.cjs +19 -11
- package/appearance-ui/index.js +19 -11
- package/audio-player/index.cjs +4 -3
- package/audio-player/index.js +4 -3
- package/avatar/index.cjs +1 -1
- package/avatar/index.js +1 -1
- package/badge/index.cjs +1 -1
- package/badge/index.js +1 -1
- package/banner/index.cjs +2 -2
- package/banner/index.js +2 -2
- package/breadcrumb-item/index.cjs +1 -1
- package/breadcrumb-item/index.js +1 -1
- package/button/index.cjs +2 -2
- package/button/index.js +2 -2
- package/card/index.cjs +2 -2
- package/card/index.js +2 -2
- package/checkbox/index.cjs +3 -2
- package/checkbox/index.js +3 -2
- package/combobox/index.cjs +5 -8
- package/combobox/index.js +5 -8
- package/custom-elements.json +2310 -769
- package/data-grid/index.cjs +1 -1
- package/data-grid/index.js +1 -1
- package/date-picker/index.cjs +7 -9
- package/date-picker/index.js +7 -9
- package/date-range-picker/index.cjs +7 -9
- package/date-range-picker/index.js +7 -9
- package/dial-pad/index.cjs +33 -0
- package/dial-pad/index.js +31 -0
- package/dialog/index.cjs +4 -4
- package/dialog/index.js +4 -4
- package/divider/index.cjs +1 -1
- package/divider/index.js +1 -1
- package/elevation/index.cjs +1 -1
- package/elevation/index.js +1 -1
- package/empty-state/index.cjs +2 -2
- package/empty-state/index.js +2 -2
- package/fab/index.cjs +2 -2
- package/fab/index.js +2 -2
- package/file-picker/index.cjs +4 -5
- package/file-picker/index.js +4 -5
- package/header/index.cjs +2 -2
- package/header/index.js +2 -2
- package/icon/index.cjs +1 -1
- package/icon/index.js +1 -1
- package/index.cjs +135 -123
- package/index.js +48 -46
- package/layout/index.cjs +1 -1
- package/layout/index.js +1 -1
- package/lib/avatar/definition.d.ts +1 -1
- package/lib/button/button.d.ts +1 -0
- package/lib/button/definition.d.ts +1 -1
- package/lib/calendar-event/definition.d.ts +1 -1
- package/lib/components.d.ts +3 -0
- package/lib/dial-pad/definition.d.ts +3 -0
- package/lib/dial-pad/dial-pad.d.ts +14 -0
- package/lib/dial-pad/dial-pad.template.d.ts +4 -0
- package/lib/dial-pad/locale.d.ts +18 -0
- package/lib/enums.d.ts +6 -0
- package/lib/layout/definition.d.ts +1 -1
- package/lib/menu-item/menu-item.d.ts +3 -0
- package/lib/range-slider/definition.d.ts +3 -0
- package/lib/range-slider/locale.d.ts +4 -0
- package/lib/range-slider/range-slider.d.ts +32 -0
- package/lib/range-slider/range-slider.form-associated.d.ts +10 -0
- package/lib/range-slider/range-slider.template.d.ts +4 -0
- package/lib/range-slider/utils/lerp.d.ts +2 -0
- package/lib/range-slider/utils/roundToStepValue.d.ts +1 -0
- package/lib/slider/slider.template.d.ts +1 -0
- package/lib/split-button/definition.d.ts +1 -1
- package/lib/text-anchor/definition.d.ts +1 -0
- package/lib/text-anchor/text-anchor.d.ts +5 -0
- package/lib/video-player/definition.d.ts +3 -0
- package/lib/video-player/locale.d.ts +1 -0
- package/lib/video-player/video-player.d.ts +17 -0
- package/lib/video-player/video-player.template.d.ts +4 -0
- package/listbox/index.cjs +25 -24
- package/listbox/index.js +25 -24
- package/locales/en-GB.cjs +34 -0
- package/locales/en-GB.js +34 -0
- package/locales/en-US.cjs +202 -0
- package/locales/en-US.js +202 -0
- package/locales/ja-JP.cjs +202 -1
- package/locales/ja-JP.js +202 -1
- package/locales/zh-CN.cjs +203 -0
- package/locales/zh-CN.js +203 -0
- package/menu/index.cjs +7 -7
- package/menu/index.js +7 -7
- package/menu-item/index.cjs +4 -4
- package/menu-item/index.js +4 -4
- package/nav/index.cjs +1 -1
- package/nav/index.js +1 -1
- package/nav-disclosure/index.cjs +2 -2
- package/nav-disclosure/index.js +2 -2
- package/nav-item/index.cjs +2 -2
- package/nav-item/index.js +2 -2
- package/note/index.cjs +2 -2
- package/note/index.js +2 -2
- package/number-field/index.cjs +5 -6
- package/number-field/index.js +5 -6
- package/option/index.cjs +2 -2
- package/option/index.js +2 -2
- package/package.json +34 -34
- package/pagination/index.cjs +3 -3
- package/pagination/index.js +3 -3
- package/popup/index.cjs +4 -4
- package/popup/index.js +4 -4
- package/progress/index.cjs +1 -1
- package/progress/index.js +1 -1
- package/progress-ring/index.cjs +1 -1
- package/progress-ring/index.js +1 -1
- package/radio/index.cjs +1 -1
- package/radio/index.js +1 -1
- package/radio-group/index.cjs +1 -1
- package/radio-group/index.js +1 -1
- package/range-slider/index.cjs +22 -0
- package/range-slider/index.js +20 -0
- package/select/index.cjs +7 -6
- package/select/index.js +7 -6
- package/selectable-box/index.cjs +5 -4
- package/selectable-box/index.js +5 -4
- package/shared/Reflector.cjs +5 -1
- package/shared/Reflector.js +5 -1
- package/shared/affix.cjs +11 -4
- package/shared/affix.js +12 -4
- package/shared/anchored.cjs +8 -2
- package/shared/anchored.js +8 -2
- package/shared/applyMixinsWithObservables.cjs +15 -0
- package/shared/applyMixinsWithObservables.js +13 -0
- package/shared/definition.cjs +9 -4
- package/shared/definition.js +9 -4
- package/shared/definition10.cjs +5 -5
- package/shared/definition10.js +5 -5
- package/shared/definition11.cjs +77 -49
- package/shared/definition11.js +78 -50
- package/shared/definition12.cjs +12 -14
- package/shared/definition12.js +12 -14
- package/shared/definition13.cjs +118 -75
- package/shared/definition13.js +118 -75
- package/shared/definition14.cjs +34 -33
- package/shared/definition14.js +34 -33
- package/shared/definition15.cjs +24 -12
- package/shared/definition15.js +24 -12
- package/shared/definition16.cjs +38 -43
- package/shared/definition16.js +38 -43
- package/shared/definition17.cjs +126 -66
- package/shared/definition17.js +127 -67
- package/shared/definition18.cjs +31 -15
- package/shared/definition18.js +31 -15
- package/shared/definition19.cjs +117 -81
- package/shared/definition19.js +117 -81
- package/shared/definition2.cjs +10 -5
- package/shared/definition2.js +10 -5
- package/shared/definition20.cjs +187 -227
- package/shared/definition20.js +183 -223
- package/shared/definition21.cjs +262 -69
- package/shared/definition21.js +261 -67
- package/shared/definition22.cjs +66 -61
- package/shared/definition22.js +64 -60
- package/shared/definition23.cjs +42 -77
- package/shared/definition23.js +41 -76
- package/shared/definition24.cjs +65 -2350
- package/shared/definition24.js +64 -2349
- package/shared/definition25.cjs +2402 -48
- package/shared/definition25.js +2401 -47
- package/shared/definition26.cjs +62 -28
- package/shared/definition26.js +61 -27
- package/shared/definition27.cjs +28 -54
- package/shared/definition27.js +27 -53
- package/shared/definition28.cjs +39 -819
- package/shared/definition28.js +38 -817
- package/shared/definition29.cjs +893 -54
- package/shared/definition29.js +893 -55
- package/shared/definition3.cjs +7 -10
- package/shared/definition3.js +7 -10
- package/shared/definition30.cjs +69 -85
- package/shared/definition30.js +68 -84
- package/shared/definition31.cjs +86 -23
- package/shared/definition31.js +86 -23
- package/shared/definition32.cjs +24 -14
- package/shared/definition32.js +23 -13
- package/shared/definition33.cjs +11 -53
- package/shared/definition33.js +10 -52
- package/shared/definition34.cjs +28 -500
- package/shared/definition34.js +28 -500
- package/shared/definition35.cjs +447 -194
- package/shared/definition35.js +447 -192
- package/shared/definition36.cjs +258 -188
- package/shared/definition36.js +255 -187
- package/shared/definition37.cjs +204 -78
- package/shared/definition37.js +203 -76
- package/shared/definition38.cjs +55 -51
- package/shared/definition38.js +52 -49
- package/shared/definition39.cjs +65 -423
- package/shared/definition39.js +64 -422
- package/shared/definition4.cjs +24 -12
- package/shared/definition4.js +24 -12
- package/shared/definition40.cjs +447 -35
- package/shared/definition40.js +444 -32
- package/shared/definition41.cjs +35 -678
- package/shared/definition41.js +34 -677
- package/shared/definition42.cjs +544 -99
- package/shared/definition42.js +543 -98
- package/shared/definition43.cjs +696 -77
- package/shared/definition43.js +695 -76
- package/shared/definition44.cjs +113 -563
- package/shared/definition44.js +112 -561
- package/shared/definition45.cjs +77 -117
- package/shared/definition45.js +75 -115
- package/shared/definition46.cjs +474 -86
- package/shared/definition46.js +474 -87
- package/shared/definition47.cjs +140 -23
- package/shared/definition47.js +139 -22
- package/shared/definition48.cjs +132 -57
- package/shared/definition48.js +131 -56
- package/shared/definition49.cjs +18 -524
- package/shared/definition49.js +17 -523
- package/shared/definition5.cjs +20 -17
- package/shared/definition5.js +20 -17
- package/shared/definition50.cjs +73 -25
- package/shared/definition50.js +72 -24
- package/shared/definition51.cjs +506 -99
- package/shared/definition51.js +505 -99
- package/shared/definition52.cjs +29 -277
- package/shared/definition52.js +28 -276
- package/shared/definition53.cjs +97 -256
- package/shared/definition53.js +97 -255
- package/shared/definition54.cjs +287 -769
- package/shared/definition54.js +287 -769
- package/shared/definition55.cjs +305 -105
- package/shared/definition55.js +304 -104
- package/shared/definition56.cjs +841 -81
- package/shared/definition56.js +840 -80
- package/shared/definition57.cjs +153 -69
- package/shared/definition57.js +152 -68
- package/shared/definition58.cjs +138 -299
- package/shared/definition58.js +137 -298
- package/shared/definition59.cjs +72 -27
- package/shared/definition59.js +71 -26
- package/shared/definition6.cjs +4 -5
- package/shared/definition6.js +4 -5
- package/shared/definition60.cjs +279 -1780
- package/shared/definition60.js +278 -1779
- package/shared/definition61.cjs +65870 -11
- package/shared/definition61.js +65869 -11
- package/shared/definition62.cjs +50 -0
- package/shared/definition62.js +46 -0
- package/shared/definition63.cjs +1828 -0
- package/shared/definition63.js +1824 -0
- package/shared/definition7.cjs +8 -6
- package/shared/definition7.js +8 -6
- package/shared/definition8.cjs +27 -20
- package/shared/definition8.js +27 -20
- package/shared/definition9.cjs +7 -10
- package/shared/definition9.js +7 -10
- package/shared/enums.cjs +8 -0
- package/shared/enums.js +8 -1
- package/shared/icon.cjs +7 -2
- package/shared/icon.js +7 -2
- package/shared/index2.cjs +67 -38
- package/shared/index2.js +67 -38
- package/shared/key-codes2.cjs +8 -0
- package/shared/key-codes2.js +5 -1
- package/shared/listbox.cjs +1 -1
- package/shared/listbox.js +1 -1
- package/shared/localization/Locale.d.ts +6 -0
- package/shared/patterns/form-elements/form-elements.d.ts +2 -3
- package/shared/patterns/index.d.ts +0 -1
- package/shared/presentationDate.cjs +140 -81
- package/shared/presentationDate.js +140 -81
- package/shared/slider.template.cjs +71 -0
- package/shared/slider.template.js +67 -0
- package/shared/text-anchor.cjs +6 -0
- package/shared/text-anchor.js +6 -0
- package/shared/text-anchor.template.cjs +33 -33
- package/shared/text-anchor.template.js +33 -33
- package/shared/text-field.cjs +1 -1
- package/shared/text-field.js +1 -1
- package/shared/utils/applyMixinsWithObservables.d.ts +1 -0
- package/side-drawer/index.cjs +1 -1
- package/side-drawer/index.js +1 -1
- package/slider/index.cjs +2 -1
- package/slider/index.js +2 -1
- package/split-button/index.cjs +2 -2
- package/split-button/index.js +2 -2
- package/style.css +1 -0
- package/styles/core/all.css +1 -1
- package/styles/core/theme.css +1 -1
- package/styles/core/typography.css +1 -1
- package/styles/fonts/spezia-variable.css +39 -13
- package/styles/tokens/theme-dark.css +4 -4
- package/styles/tokens/theme-light.css +4 -4
- package/styles/tokens/vivid-2-compat.css +4 -2
- package/switch/index.cjs +2 -2
- package/switch/index.js +2 -2
- package/tab/index.cjs +2 -2
- package/tab/index.js +2 -2
- package/tab-panel/index.cjs +1 -1
- package/tab-panel/index.js +1 -1
- package/tabs/index.cjs +4 -4
- package/tabs/index.js +4 -4
- package/tag/index.cjs +2 -2
- package/tag/index.js +2 -2
- package/tag-group/index.cjs +1 -1
- package/tag-group/index.js +1 -1
- package/text-area/index.cjs +4 -3
- package/text-area/index.js +4 -3
- package/text-field/index.cjs +4 -6
- package/text-field/index.js +4 -6
- package/time-picker/index.cjs +8 -10
- package/time-picker/index.js +8 -10
- package/toggletip/index.cjs +5 -5
- package/toggletip/index.js +5 -5
- package/tooltip/index.cjs +5 -5
- package/tooltip/index.js +5 -5
- package/tree-item/index.cjs +2 -2
- package/tree-item/index.js +2 -2
- package/tree-view/index.cjs +1 -1
- package/tree-view/index.js +1 -1
- package/video-player/index.cjs +17 -0
- package/video-player/index.js +15 -0
- package/vivid.api.json +428 -1
- package/focus/index.cjs +0 -7
- package/focus/index.js +0 -5
- package/lib/focus/definition.d.ts +0 -3
- package/lib/focus/focus.d.ts +0 -3
- package/lib/focus/focus.template.d.ts +0 -4
- package/lib/popup/popup.d.ts +0 -21
- package/shared/focus.cjs +0 -8
- package/shared/focus.js +0 -6
- package/shared/focus2.cjs +0 -11
- package/shared/focus2.js +0 -9
- package/shared/patterns/focus.d.ts +0 -3
package/shared/definition44.js
CHANGED
|
@@ -1,499 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { g as keyHome, d as keyEnd, f as keyArrowDown, i as keyArrowLeft, e as keyArrowUp, h as keyArrowRight } from './key-codes.js';
|
|
7
|
-
import { O as Orientation$1 } from './aria2.js';
|
|
8
|
-
import { r as ref } from './ref.js';
|
|
1
|
+
import { a as attr, F as FoundationElement, h as html, r as registerFactory } from './index.js';
|
|
2
|
+
import { C as Checkbox, a as checkboxRegistries } from './definition15.js';
|
|
3
|
+
import { a as radioRegistries } from './definition41.js';
|
|
4
|
+
import { C as Connotation } from './enums.js';
|
|
5
|
+
import { R as Radio } from './radio.js';
|
|
9
6
|
import { c as classNames } from './class-names.js';
|
|
7
|
+
import { w as when } from './when.js';
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
* Converts a pixel coordinate on the track to a percent of the track's range
|
|
13
|
-
*/
|
|
14
|
-
function convertPixelToPercent(pixelPos, minPosition, maxPosition, direction) {
|
|
15
|
-
let pct = limit$1(0, 1, (pixelPos - minPosition) / (maxPosition - minPosition));
|
|
16
|
-
if (direction === Direction.rtl) {
|
|
17
|
-
pct = 1 - pct;
|
|
18
|
-
}
|
|
19
|
-
return pct;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
class _Slider extends FoundationElement {
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* A form-associated base class for the {@link @microsoft/fast-foundation#(Slider:class)} component.
|
|
26
|
-
*
|
|
27
|
-
* @internal
|
|
28
|
-
*/
|
|
29
|
-
class FormAssociatedSlider extends FormAssociated(_Slider) {
|
|
30
|
-
constructor() {
|
|
31
|
-
super(...arguments);
|
|
32
|
-
this.proxy = document.createElement("input");
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* The selection modes of a {@link @microsoft/fast-foundation#(Slider:class)}.
|
|
38
|
-
* @public
|
|
39
|
-
*/
|
|
40
|
-
const SliderMode = {
|
|
41
|
-
singleValue: "single-value",
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* A Slider Custom HTML Element.
|
|
45
|
-
* Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#slider | ARIA slider }.
|
|
46
|
-
*
|
|
47
|
-
* @slot track - The track of the slider
|
|
48
|
-
* @slot track-start - The track-start visual indicator
|
|
49
|
-
* @slot thumb - The slider thumb
|
|
50
|
-
* @slot - The default slot for labels
|
|
51
|
-
* @csspart positioning-region - The region used to position the elements of the slider
|
|
52
|
-
* @csspart track-container - The region containing the track elements
|
|
53
|
-
* @csspart track-start - The element wrapping the track start slot
|
|
54
|
-
* @csspart thumb-container - The thumb container element which is programatically positioned
|
|
55
|
-
* @fires change - Fires a custom 'change' event when the slider value changes
|
|
56
|
-
*
|
|
57
|
-
* @public
|
|
58
|
-
*/
|
|
59
|
-
let Slider$1 = class Slider extends FormAssociatedSlider {
|
|
60
|
-
constructor() {
|
|
61
|
-
super(...arguments);
|
|
62
|
-
/**
|
|
63
|
-
* @internal
|
|
64
|
-
*/
|
|
65
|
-
this.direction = Direction.ltr;
|
|
66
|
-
/**
|
|
67
|
-
* @internal
|
|
68
|
-
*/
|
|
69
|
-
this.isDragging = false;
|
|
70
|
-
/**
|
|
71
|
-
* @internal
|
|
72
|
-
*/
|
|
73
|
-
this.trackWidth = 0;
|
|
74
|
-
/**
|
|
75
|
-
* @internal
|
|
76
|
-
*/
|
|
77
|
-
this.trackMinWidth = 0;
|
|
78
|
-
/**
|
|
79
|
-
* @internal
|
|
80
|
-
*/
|
|
81
|
-
this.trackHeight = 0;
|
|
82
|
-
/**
|
|
83
|
-
* @internal
|
|
84
|
-
*/
|
|
85
|
-
this.trackLeft = 0;
|
|
86
|
-
/**
|
|
87
|
-
* @internal
|
|
88
|
-
*/
|
|
89
|
-
this.trackMinHeight = 0;
|
|
90
|
-
/**
|
|
91
|
-
* Custom function that generates a string for the component's "aria-valuetext" attribute based on the current value.
|
|
92
|
-
*
|
|
93
|
-
* @public
|
|
94
|
-
*/
|
|
95
|
-
this.valueTextFormatter = () => null;
|
|
96
|
-
/**
|
|
97
|
-
* The minimum allowed value.
|
|
98
|
-
*
|
|
99
|
-
* @defaultValue - 0
|
|
100
|
-
* @public
|
|
101
|
-
* @remarks
|
|
102
|
-
* HTML Attribute: min
|
|
103
|
-
*/
|
|
104
|
-
this.min = 0; // Map to proxy element.
|
|
105
|
-
/**
|
|
106
|
-
* The maximum allowed value.
|
|
107
|
-
*
|
|
108
|
-
* @defaultValue - 10
|
|
109
|
-
* @public
|
|
110
|
-
* @remarks
|
|
111
|
-
* HTML Attribute: max
|
|
112
|
-
*/
|
|
113
|
-
this.max = 10; // Map to proxy element.
|
|
114
|
-
/**
|
|
115
|
-
* Value to increment or decrement via arrow keys, mouse click or drag.
|
|
116
|
-
*
|
|
117
|
-
* @public
|
|
118
|
-
* @remarks
|
|
119
|
-
* HTML Attribute: step
|
|
120
|
-
*/
|
|
121
|
-
this.step = 1; // Map to proxy element.
|
|
122
|
-
/**
|
|
123
|
-
* The orientation of the slider.
|
|
124
|
-
*
|
|
125
|
-
* @public
|
|
126
|
-
* @remarks
|
|
127
|
-
* HTML Attribute: orientation
|
|
128
|
-
*/
|
|
129
|
-
this.orientation = Orientation.horizontal;
|
|
130
|
-
/**
|
|
131
|
-
* The selection mode.
|
|
132
|
-
*
|
|
133
|
-
* @public
|
|
134
|
-
* @remarks
|
|
135
|
-
* HTML Attribute: mode
|
|
136
|
-
*/
|
|
137
|
-
this.mode = SliderMode.singleValue;
|
|
138
|
-
this.keypressHandler = (e) => {
|
|
139
|
-
if (this.readOnly) {
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
if (e.key === keyHome) {
|
|
143
|
-
e.preventDefault();
|
|
144
|
-
this.value = `${this.min}`;
|
|
145
|
-
}
|
|
146
|
-
else if (e.key === keyEnd) {
|
|
147
|
-
e.preventDefault();
|
|
148
|
-
this.value = `${this.max}`;
|
|
149
|
-
}
|
|
150
|
-
else if (!e.shiftKey) {
|
|
151
|
-
switch (e.key) {
|
|
152
|
-
case keyArrowRight:
|
|
153
|
-
case keyArrowUp:
|
|
154
|
-
e.preventDefault();
|
|
155
|
-
this.increment();
|
|
156
|
-
break;
|
|
157
|
-
case keyArrowLeft:
|
|
158
|
-
case keyArrowDown:
|
|
159
|
-
e.preventDefault();
|
|
160
|
-
this.decrement();
|
|
161
|
-
break;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
this.setupTrackConstraints = () => {
|
|
166
|
-
const clientRect = this.track.getBoundingClientRect();
|
|
167
|
-
this.trackWidth = this.track.clientWidth;
|
|
168
|
-
this.trackMinWidth = this.track.clientLeft;
|
|
169
|
-
this.trackHeight = clientRect.bottom;
|
|
170
|
-
this.trackMinHeight = clientRect.top;
|
|
171
|
-
this.trackLeft = this.getBoundingClientRect().left;
|
|
172
|
-
if (this.trackWidth === 0) {
|
|
173
|
-
this.trackWidth = 1;
|
|
174
|
-
}
|
|
175
|
-
};
|
|
176
|
-
this.setupListeners = (remove = false) => {
|
|
177
|
-
const eventAction = `${remove ? "remove" : "add"}EventListener`;
|
|
178
|
-
this[eventAction]("keydown", this.keypressHandler);
|
|
179
|
-
this[eventAction]("mousedown", this.handleMouseDown);
|
|
180
|
-
this.thumb[eventAction]("mousedown", this.handleThumbMouseDown, {
|
|
181
|
-
passive: true,
|
|
182
|
-
});
|
|
183
|
-
this.thumb[eventAction]("touchstart", this.handleThumbMouseDown, {
|
|
184
|
-
passive: true,
|
|
185
|
-
});
|
|
186
|
-
// removes handlers attached by mousedown handlers
|
|
187
|
-
if (remove) {
|
|
188
|
-
this.handleMouseDown(null);
|
|
189
|
-
this.handleThumbMouseDown(null);
|
|
190
|
-
}
|
|
191
|
-
};
|
|
192
|
-
/**
|
|
193
|
-
* @internal
|
|
194
|
-
*/
|
|
195
|
-
this.initialValue = "";
|
|
196
|
-
/**
|
|
197
|
-
* Handle mouse moves during a thumb drag operation
|
|
198
|
-
* If the event handler is null it removes the events
|
|
199
|
-
*/
|
|
200
|
-
this.handleThumbMouseDown = (event) => {
|
|
201
|
-
if (event) {
|
|
202
|
-
if (this.readOnly || this.disabled || event.defaultPrevented) {
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
event.target.focus();
|
|
206
|
-
}
|
|
207
|
-
const eventAction = `${event !== null ? "add" : "remove"}EventListener`;
|
|
208
|
-
window[eventAction]("mouseup", this.handleWindowMouseUp);
|
|
209
|
-
window[eventAction]("mousemove", this.handleMouseMove, { passive: true });
|
|
210
|
-
window[eventAction]("touchmove", this.handleMouseMove, { passive: true });
|
|
211
|
-
window[eventAction]("touchend", this.handleWindowMouseUp);
|
|
212
|
-
this.isDragging = event !== null;
|
|
213
|
-
};
|
|
214
|
-
/**
|
|
215
|
-
* Handle mouse moves during a thumb drag operation
|
|
216
|
-
*/
|
|
217
|
-
this.handleMouseMove = (e) => {
|
|
218
|
-
if (this.readOnly || this.disabled || e.defaultPrevented) {
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
// update the value based on current position
|
|
222
|
-
const sourceEvent = window.TouchEvent && e instanceof TouchEvent
|
|
223
|
-
? e.touches[0]
|
|
224
|
-
: e;
|
|
225
|
-
const eventValue = this.orientation === Orientation.horizontal
|
|
226
|
-
? sourceEvent.pageX - document.documentElement.scrollLeft - this.trackLeft
|
|
227
|
-
: sourceEvent.pageY - document.documentElement.scrollTop;
|
|
228
|
-
this.value = `${this.calculateNewValue(eventValue)}`;
|
|
229
|
-
};
|
|
230
|
-
this.calculateNewValue = (rawValue) => {
|
|
231
|
-
// update the value based on current position
|
|
232
|
-
const newPosition = convertPixelToPercent(rawValue, this.orientation === Orientation.horizontal
|
|
233
|
-
? this.trackMinWidth
|
|
234
|
-
: this.trackMinHeight, this.orientation === Orientation.horizontal
|
|
235
|
-
? this.trackWidth
|
|
236
|
-
: this.trackHeight, this.direction);
|
|
237
|
-
const newValue = (this.max - this.min) * newPosition + this.min;
|
|
238
|
-
return this.convertToConstrainedValue(newValue);
|
|
239
|
-
};
|
|
240
|
-
/**
|
|
241
|
-
* Handle a window mouse up during a drag operation
|
|
242
|
-
*/
|
|
243
|
-
this.handleWindowMouseUp = (event) => {
|
|
244
|
-
this.stopDragging();
|
|
245
|
-
};
|
|
246
|
-
this.stopDragging = () => {
|
|
247
|
-
this.isDragging = false;
|
|
248
|
-
this.handleMouseDown(null);
|
|
249
|
-
this.handleThumbMouseDown(null);
|
|
250
|
-
};
|
|
251
|
-
/**
|
|
252
|
-
*
|
|
253
|
-
* @param e - MouseEvent or null. If there is no event handler it will remove the events
|
|
254
|
-
*/
|
|
255
|
-
this.handleMouseDown = (e) => {
|
|
256
|
-
const eventAction = `${e !== null ? "add" : "remove"}EventListener`;
|
|
257
|
-
if (e === null || (!this.disabled && !this.readOnly)) {
|
|
258
|
-
window[eventAction]("mouseup", this.handleWindowMouseUp);
|
|
259
|
-
window.document[eventAction]("mouseleave", this.handleWindowMouseUp);
|
|
260
|
-
window[eventAction]("mousemove", this.handleMouseMove);
|
|
261
|
-
if (e) {
|
|
262
|
-
e.preventDefault();
|
|
263
|
-
this.setupTrackConstraints();
|
|
264
|
-
e.target.focus();
|
|
265
|
-
const controlValue = this.orientation === Orientation.horizontal
|
|
266
|
-
? e.pageX - document.documentElement.scrollLeft - this.trackLeft
|
|
267
|
-
: e.pageY - document.documentElement.scrollTop;
|
|
268
|
-
this.value = `${this.calculateNewValue(controlValue)}`;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
};
|
|
272
|
-
this.convertToConstrainedValue = (value) => {
|
|
273
|
-
if (isNaN(value)) {
|
|
274
|
-
value = this.min;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* The following logic intends to overcome the issue with math in JavaScript with regards to floating point numbers.
|
|
278
|
-
* This is needed as the `step` may be an integer but could also be a float. To accomplish this the step is assumed to be a float
|
|
279
|
-
* and is converted to an integer by determining the number of decimal places it represent, multiplying it until it is an
|
|
280
|
-
* integer and then dividing it to get back to the correct number.
|
|
281
|
-
*/
|
|
282
|
-
let constrainedValue = value - this.min;
|
|
283
|
-
const roundedConstrainedValue = Math.round(constrainedValue / this.step);
|
|
284
|
-
const remainderValue = constrainedValue -
|
|
285
|
-
(roundedConstrainedValue * (this.stepMultiplier * this.step)) /
|
|
286
|
-
this.stepMultiplier;
|
|
287
|
-
constrainedValue =
|
|
288
|
-
remainderValue >= Number(this.step) / 2
|
|
289
|
-
? constrainedValue - remainderValue + Number(this.step)
|
|
290
|
-
: constrainedValue - remainderValue;
|
|
291
|
-
return constrainedValue + this.min;
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
readOnlyChanged() {
|
|
295
|
-
if (this.proxy instanceof HTMLInputElement) {
|
|
296
|
-
this.proxy.readOnly = this.readOnly;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* The value property, typed as a number.
|
|
301
|
-
*
|
|
302
|
-
* @public
|
|
303
|
-
*/
|
|
304
|
-
get valueAsNumber() {
|
|
305
|
-
return parseFloat(super.value);
|
|
306
|
-
}
|
|
307
|
-
set valueAsNumber(next) {
|
|
308
|
-
this.value = next.toString();
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* @internal
|
|
312
|
-
*/
|
|
313
|
-
valueChanged(previous, next) {
|
|
314
|
-
super.valueChanged(previous, next);
|
|
315
|
-
if (this.$fastController.isConnected) {
|
|
316
|
-
this.setThumbPositionForOrientation(this.direction);
|
|
317
|
-
}
|
|
318
|
-
this.$emit("change");
|
|
319
|
-
}
|
|
320
|
-
minChanged() {
|
|
321
|
-
if (this.proxy instanceof HTMLInputElement) {
|
|
322
|
-
this.proxy.min = `${this.min}`;
|
|
323
|
-
}
|
|
324
|
-
this.validate();
|
|
325
|
-
}
|
|
326
|
-
maxChanged() {
|
|
327
|
-
if (this.proxy instanceof HTMLInputElement) {
|
|
328
|
-
this.proxy.max = `${this.max}`;
|
|
329
|
-
}
|
|
330
|
-
this.validate();
|
|
331
|
-
}
|
|
332
|
-
stepChanged() {
|
|
333
|
-
if (this.proxy instanceof HTMLInputElement) {
|
|
334
|
-
this.proxy.step = `${this.step}`;
|
|
335
|
-
}
|
|
336
|
-
this.updateStepMultiplier();
|
|
337
|
-
this.validate();
|
|
338
|
-
}
|
|
339
|
-
orientationChanged() {
|
|
340
|
-
if (this.$fastController.isConnected) {
|
|
341
|
-
this.setThumbPositionForOrientation(this.direction);
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* @internal
|
|
346
|
-
*/
|
|
347
|
-
connectedCallback() {
|
|
348
|
-
super.connectedCallback();
|
|
349
|
-
this.proxy.setAttribute("type", "range");
|
|
350
|
-
this.direction = getDirection(this);
|
|
351
|
-
this.updateStepMultiplier();
|
|
352
|
-
this.setupTrackConstraints();
|
|
353
|
-
this.setupListeners();
|
|
354
|
-
this.setupDefaultValue();
|
|
355
|
-
this.setThumbPositionForOrientation(this.direction);
|
|
356
|
-
}
|
|
357
|
-
/**
|
|
358
|
-
* @internal
|
|
359
|
-
*/
|
|
360
|
-
disconnectedCallback() {
|
|
361
|
-
this.setupListeners(true);
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Increment the value by the step
|
|
365
|
-
*
|
|
366
|
-
* @public
|
|
367
|
-
*/
|
|
368
|
-
increment() {
|
|
369
|
-
const newVal = this.direction !== Direction.rtl && this.orientation !== Orientation.vertical
|
|
370
|
-
? Number(this.value) + Number(this.step)
|
|
371
|
-
: Number(this.value) - Number(this.step);
|
|
372
|
-
const incrementedVal = this.convertToConstrainedValue(newVal);
|
|
373
|
-
const incrementedValString = incrementedVal < Number(this.max) ? `${incrementedVal}` : `${this.max}`;
|
|
374
|
-
this.value = incrementedValString;
|
|
375
|
-
}
|
|
376
|
-
/**
|
|
377
|
-
* Decrement the value by the step
|
|
378
|
-
*
|
|
379
|
-
* @public
|
|
380
|
-
*/
|
|
381
|
-
decrement() {
|
|
382
|
-
const newVal = this.direction !== Direction.rtl && this.orientation !== Orientation.vertical
|
|
383
|
-
? Number(this.value) - Number(this.step)
|
|
384
|
-
: Number(this.value) + Number(this.step);
|
|
385
|
-
const decrementedVal = this.convertToConstrainedValue(newVal);
|
|
386
|
-
const decrementedValString = decrementedVal > Number(this.min) ? `${decrementedVal}` : `${this.min}`;
|
|
387
|
-
this.value = decrementedValString;
|
|
388
|
-
}
|
|
389
|
-
/**
|
|
390
|
-
* Places the thumb based on the current value
|
|
391
|
-
*
|
|
392
|
-
* @public
|
|
393
|
-
* @param direction - writing mode
|
|
394
|
-
*/
|
|
395
|
-
setThumbPositionForOrientation(direction) {
|
|
396
|
-
const newPct = convertPixelToPercent(Number(this.value), Number(this.min), Number(this.max), direction);
|
|
397
|
-
const percentage = (1 - newPct) * 100;
|
|
398
|
-
if (this.orientation === Orientation.horizontal) {
|
|
399
|
-
this.position = this.isDragging
|
|
400
|
-
? `right: ${percentage}%; transition: none;`
|
|
401
|
-
: `right: ${percentage}%; transition: all 0.2s ease;`;
|
|
402
|
-
}
|
|
403
|
-
else {
|
|
404
|
-
this.position = this.isDragging
|
|
405
|
-
? `bottom: ${percentage}%; transition: none;`
|
|
406
|
-
: `bottom: ${percentage}%; transition: all 0.2s ease;`;
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
/**
|
|
410
|
-
* Update the step multiplier used to ensure rounding errors from steps that
|
|
411
|
-
* are not whole numbers
|
|
412
|
-
*/
|
|
413
|
-
updateStepMultiplier() {
|
|
414
|
-
const stepString = this.step + "";
|
|
415
|
-
const decimalPlacesOfStep = !!(this.step % 1)
|
|
416
|
-
? stepString.length - stepString.indexOf(".") - 1
|
|
417
|
-
: 0;
|
|
418
|
-
this.stepMultiplier = Math.pow(10, decimalPlacesOfStep);
|
|
419
|
-
}
|
|
420
|
-
get midpoint() {
|
|
421
|
-
return `${this.convertToConstrainedValue((this.max + this.min) / 2)}`;
|
|
422
|
-
}
|
|
423
|
-
setupDefaultValue() {
|
|
424
|
-
if (typeof this.value === "string") {
|
|
425
|
-
if (this.value.length === 0) {
|
|
426
|
-
this.initialValue = this.midpoint;
|
|
427
|
-
}
|
|
428
|
-
else {
|
|
429
|
-
const value = parseFloat(this.value);
|
|
430
|
-
if (!Number.isNaN(value) && (value < this.min || value > this.max)) {
|
|
431
|
-
this.value = this.midpoint;
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
};
|
|
437
|
-
__decorate([
|
|
438
|
-
attr({ attribute: "readonly", mode: "boolean" })
|
|
439
|
-
], Slider$1.prototype, "readOnly", void 0);
|
|
440
|
-
__decorate([
|
|
441
|
-
observable
|
|
442
|
-
], Slider$1.prototype, "direction", void 0);
|
|
443
|
-
__decorate([
|
|
444
|
-
observable
|
|
445
|
-
], Slider$1.prototype, "isDragging", void 0);
|
|
446
|
-
__decorate([
|
|
447
|
-
observable
|
|
448
|
-
], Slider$1.prototype, "position", void 0);
|
|
449
|
-
__decorate([
|
|
450
|
-
observable
|
|
451
|
-
], Slider$1.prototype, "trackWidth", void 0);
|
|
452
|
-
__decorate([
|
|
453
|
-
observable
|
|
454
|
-
], Slider$1.prototype, "trackMinWidth", void 0);
|
|
455
|
-
__decorate([
|
|
456
|
-
observable
|
|
457
|
-
], Slider$1.prototype, "trackHeight", void 0);
|
|
458
|
-
__decorate([
|
|
459
|
-
observable
|
|
460
|
-
], Slider$1.prototype, "trackLeft", void 0);
|
|
461
|
-
__decorate([
|
|
462
|
-
observable
|
|
463
|
-
], Slider$1.prototype, "trackMinHeight", void 0);
|
|
464
|
-
__decorate([
|
|
465
|
-
observable
|
|
466
|
-
], Slider$1.prototype, "valueTextFormatter", void 0);
|
|
467
|
-
__decorate([
|
|
468
|
-
attr({ converter: nullableNumberConverter })
|
|
469
|
-
], Slider$1.prototype, "min", void 0);
|
|
470
|
-
__decorate([
|
|
471
|
-
attr({ converter: nullableNumberConverter })
|
|
472
|
-
], Slider$1.prototype, "max", void 0);
|
|
473
|
-
__decorate([
|
|
474
|
-
attr({ converter: nullableNumberConverter })
|
|
475
|
-
], Slider$1.prototype, "step", void 0);
|
|
476
|
-
__decorate([
|
|
477
|
-
attr
|
|
478
|
-
], Slider$1.prototype, "orientation", void 0);
|
|
479
|
-
__decorate([
|
|
480
|
-
attr
|
|
481
|
-
], Slider$1.prototype, "mode", void 0);
|
|
482
|
-
|
|
483
|
-
/**
|
|
484
|
-
* This method keeps a given value within the bounds of a min and max value. If the value
|
|
485
|
-
* is larger than the max, the minimum value will be returned. If the value is smaller than the minimum,
|
|
486
|
-
* the maximum will be returned. Otherwise, the value is returned un-changed.
|
|
487
|
-
*/
|
|
488
|
-
/**
|
|
489
|
-
* Ensures that a value is between a min and max value. If value is lower than min, min will be returned.
|
|
490
|
-
* If value is greater than max, max will be returned.
|
|
491
|
-
*/
|
|
492
|
-
function limit(min, max, value) {
|
|
493
|
-
return Math.min(Math.max(value, min), max);
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
const styles = ":host{display:inline-block}:host(:not([orientation=vertical])){inline-size:100%}:host([orientation=vertical]){block-size:100%;min-block-size:calc(var(--_thumb-interaction-indicator-size) * 5)}:host([disabled]){cursor:not-allowed}.control{--_thumb-size: 12px;--_thumb-interaction-indicator-size: 36px;cursor:pointer;outline:none;user-select:none}.control.connotation-cta{--_connotation-color-primary: var(--vvd-slider-cta-primary, var(--vvd-color-cta-500))}.control:not(.connotation-cta){--_connotation-color-primary: var(--vvd-slider-accent-primary, var(--vvd-color-canvas-text))}.control{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.control .positioning-region{position:relative}.control .track{position:absolute;background:var(--_track-background-color);border-radius:4px}.control .track-start{position:absolute;left:0;background:var(--_track-start-background-color);block-size:100%;border-radius:inherit}.control[aria-orientation=horizontal]{block-size:var(--_thumb-interaction-indicator-size);inline-size:calc(100% - var(--_thumb-size));margin-inline-start:calc(var(--_thumb-size) / 2);min-inline-size:var(--_thumb-size)}.control[aria-orientation=horizontal] .track{top:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);right:0;left:0;block-size:2px}.control[aria-orientation=horizontal] .track .mark{block-size:4px;inline-size:100%}.control[aria-orientation=vertical]{margin-top:calc(var(--_thumb-interaction-indicator-size) / 2);block-size:calc(100% - var(--_thumb-interaction-indicator-size));inline-size:var(--_thumb-interaction-indicator-size);min-block-size:var(--_thumb-interaction-indicator-size)}.control[aria-orientation=vertical] .positioning-region{block-size:100%}.control[aria-orientation=vertical] .track{left:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);block-size:100%;inline-size:2px}.control[aria-orientation=vertical] .track .mark{block-size:100%;inline-size:4px}.control[aria-orientation=vertical] .track-start{top:0;block-size:auto;inline-size:100%}.control.disabled{--_track-background-color: var(--vvd-color-neutral-100);--_track-start-background-color: var(--vvd-color-neutral-300);pointer-events:none}.control:not(.disabled){--_track-background-color: var(--vvd-color-neutral-300);--_track-start-background-color: var(--_appearance-color-fill)}.thumb-container{position:absolute;block-size:var(--_thumb-interaction-indicator-size);border-radius:50%;cursor:inherit;inline-size:var(--_thumb-interaction-indicator-size);outline-color:transparent;touch-action:none}:focus-visible .thumb-container{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;--_thumb-interaction-indicator-alpha: .05;border-radius:50%}.control[aria-orientation=horizontal] .thumb-container{transform:translate(calc(var(--_thumb-interaction-indicator-size) / 2))}.control[aria-orientation=vertical] .thumb-container{transform:translateY(calc(var(--_thumb-interaction-indicator-size) / 2))}.control:not(.disabled) .thumb-container:hover{--_thumb-interaction-indicator-alpha: .12}.control:not(.disabled) .thumb-container:active{--_thumb-interaction-indicator-alpha: .25}.thumb-container:before{position:absolute;display:block;background-color:var(--_track-start-background-color);block-size:var(--_thumb-interaction-indicator-size);border-radius:inherit;content:\"\";inline-size:var(--_thumb-interaction-indicator-size);opacity:var(--_thumb-interaction-indicator-alpha, 0);transition:opacity .2s ease-out 0s}.thumb-container:after{position:absolute;display:block;background-color:var(--_track-start-background-color);block-size:var(--_thumb-size);border-radius:inherit;content:\"\";inline-size:var(--_thumb-size);inset:calc((var(--_thumb-interaction-indicator-size) - var(--_thumb-size)) / 2)}\n";
|
|
9
|
+
const styles = ":host{display:flex}.base{position:relative;padding:var(--selectable-box-spacing, 16px);border:1px solid var(--_appearance-color-outline);border-radius:8px;background-color:var(--_appearance-color-fill);inline-size:100%;padding-block-start:calc(var(--selectable-box-spacing, 16px) + 36px);text-align:start}.base.connotation-cta{--_connotation-color-firm-all: var(--vvd-selectable-box-cta-firm-all, var(--vvd-color-cta-600));--_connotation-color-pale: var(--vvd-selectable-box-cta-pale, var(--vvd-color-cta-300));--_connotation-color-fierce: var(--vvd-selectable-box-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-faint: var(--vvd-selectable-box-cta-faint, var(--vvd-color-cta-50));--_connotation-color-soft: var(--vvd-selectable-box-cta-soft, var(--vvd-color-cta-100))}.base:not(.connotation-cta){--_connotation-color-firm-all: var(--vvd-selectable-box-accent-firm-all, var(--vvd-color-neutral-600));--_connotation-color-pale: var(--vvd-selectable-box-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-fierce: var(--vvd-selectable-box-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-faint: var(--vvd-selectable-box-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-selectable-box-accent-soft, var(--vvd-color-neutral-100))}.base{--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-firm-all)}.base:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: var(--_connotation-color-firm-all)}.base:focus-visible{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.base.tight{overflow:hidden;min-height:calc(var(--selectable-box-spacing, 16px) * 2 + 22px);padding:0}.base.clickable{cursor:pointer}.control{position:absolute;inset-block-start:var(--selectable-box-spacing, 16px);inset-inline-end:var(--selectable-box-spacing, 16px)}\n";
|
|
497
10
|
|
|
498
11
|
var __defProp = Object.defineProperty;
|
|
499
12
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -506,96 +19,134 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
506
19
|
__defProp(target, key, result);
|
|
507
20
|
return result;
|
|
508
21
|
};
|
|
509
|
-
class
|
|
22
|
+
class SelectableBox extends FoundationElement {
|
|
510
23
|
constructor() {
|
|
511
24
|
super(...arguments);
|
|
512
25
|
this.ariaLabel = null;
|
|
513
|
-
this.
|
|
514
|
-
this.
|
|
26
|
+
this.checked = false;
|
|
27
|
+
this.clickable = false;
|
|
28
|
+
this.clickableBox = false;
|
|
29
|
+
this.tight = false;
|
|
515
30
|
}
|
|
516
31
|
/**
|
|
517
|
-
* TO BE REMOVED WHEN UPGRADING TO FAST-FOUNDATION 3
|
|
518
|
-
*
|
|
519
32
|
* @internal
|
|
520
33
|
*/
|
|
521
|
-
|
|
522
|
-
if (this
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
34
|
+
_handleCheckedChange() {
|
|
35
|
+
if (this.controlType === "radio" && this.checked)
|
|
36
|
+
return;
|
|
37
|
+
this.checked = !this.checked;
|
|
38
|
+
if (this.clickableBox || this.clickable)
|
|
39
|
+
this.$emit("change");
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
_handleKeydown(event) {
|
|
45
|
+
if ((event.code === "Space" || event.code === "Enter") && (this.clickableBox || this.clickable))
|
|
46
|
+
return this._handleCheckedChange();
|
|
47
|
+
return true;
|
|
535
48
|
}
|
|
536
49
|
}
|
|
537
50
|
__decorateClass([
|
|
538
51
|
attr({ attribute: "aria-label" })
|
|
539
|
-
],
|
|
52
|
+
], SelectableBox.prototype, "ariaLabel", 2);
|
|
540
53
|
__decorateClass([
|
|
541
|
-
attr({
|
|
542
|
-
],
|
|
54
|
+
attr({ mode: "boolean" })
|
|
55
|
+
], SelectableBox.prototype, "checked", 2);
|
|
543
56
|
__decorateClass([
|
|
544
|
-
attr({
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
57
|
+
attr({ mode: "boolean" })
|
|
58
|
+
], SelectableBox.prototype, "clickable", 2);
|
|
59
|
+
__decorateClass([
|
|
60
|
+
attr({ attribute: "clickable-box", mode: "boolean" })
|
|
61
|
+
], SelectableBox.prototype, "clickableBox", 2);
|
|
548
62
|
__decorateClass([
|
|
549
63
|
attr
|
|
550
|
-
],
|
|
64
|
+
], SelectableBox.prototype, "connotation", 2);
|
|
65
|
+
__decorateClass([
|
|
66
|
+
attr({ attribute: "control-type" })
|
|
67
|
+
], SelectableBox.prototype, "controlType", 2);
|
|
68
|
+
__decorateClass([
|
|
69
|
+
attr({ mode: "boolean" })
|
|
70
|
+
], SelectableBox.prototype, "tight", 2);
|
|
551
71
|
|
|
552
|
-
const getClasses = ({
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
72
|
+
const getClasses = ({
|
|
73
|
+
connotation,
|
|
74
|
+
tight,
|
|
75
|
+
checked,
|
|
76
|
+
clickableBox,
|
|
77
|
+
clickable
|
|
78
|
+
}) => classNames(
|
|
79
|
+
"base",
|
|
80
|
+
[`connotation-${connotation}`, Boolean(connotation)],
|
|
81
|
+
["tight", tight],
|
|
82
|
+
["selected", checked],
|
|
83
|
+
["clickable", clickableBox || clickable],
|
|
84
|
+
["readonly", !clickableBox && !clickable]
|
|
556
85
|
);
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
86
|
+
function handleControlChange(x) {
|
|
87
|
+
if (!x.clickableBox)
|
|
88
|
+
x._handleCheckedChange();
|
|
89
|
+
}
|
|
90
|
+
function checkbox(context) {
|
|
91
|
+
const checkboxTag = context.tagFor(Checkbox);
|
|
92
|
+
return html`${when(
|
|
93
|
+
(x) => x.controlType !== "radio",
|
|
94
|
+
html`
|
|
95
|
+
<${checkboxTag}
|
|
96
|
+
aria-label="${(x) => !x.clickableBox && !x.clickable && x.ariaLabel ? x.ariaLabel : null}"
|
|
97
|
+
@change="${(x) => handleControlChange(x)}"
|
|
98
|
+
class="control checkbox"
|
|
99
|
+
connotation="${(x) => x.connotation === "cta" ? Connotation.CTA : Connotation.Accent}"
|
|
100
|
+
:checked="${(x) => x.checked}"
|
|
101
|
+
inert="${(x) => x.clickableBox || x.clickable ? true : null}"
|
|
102
|
+
></${checkboxTag}>`
|
|
103
|
+
)} `;
|
|
104
|
+
}
|
|
105
|
+
function radio(context) {
|
|
106
|
+
const radioTag = context.tagFor(Radio);
|
|
107
|
+
return html`${when(
|
|
108
|
+
(x) => x.controlType === "radio",
|
|
109
|
+
html`
|
|
110
|
+
<${radioTag}
|
|
111
|
+
aria-label="${(x) => !x.clickableBox && !x.clickable && x.ariaLabel ? x.ariaLabel : null}"
|
|
112
|
+
@change="${(x) => handleControlChange(x)}"
|
|
113
|
+
class="control radio"
|
|
114
|
+
connotation="${(x) => x.connotation === "cta" ? Connotation.CTA : Connotation.Accent}"
|
|
115
|
+
:checked="${(x) => x.checked}"
|
|
116
|
+
inert="${(x) => x.clickableBox || x.clickable ? true : null}"
|
|
117
|
+
></${radioTag}>`
|
|
118
|
+
)} `;
|
|
119
|
+
}
|
|
120
|
+
const SelectableBoxTemplate = (context) => {
|
|
121
|
+
return html`<template role="presentation">
|
|
122
|
+
<div
|
|
123
|
+
class="${getClasses}"
|
|
124
|
+
tabindex="${(x) => x.clickableBox || x.clickable ? "0" : null}"
|
|
125
|
+
role="${(x) => x.clickableBox || x.clickable ? "button" : null}"
|
|
126
|
+
aria-pressed="${(x) => (x.clickableBox || x.clickable) && x.checked ? x.checked : null}"
|
|
127
|
+
aria-label="${(x) => x.clickableBox || x.clickable ? x.ariaLabel : null}"
|
|
128
|
+
@keydown="${(x, c) => x._handleKeydown(c.event)}"
|
|
129
|
+
@click="${(x) => x.clickableBox || x.clickable ? x._handleCheckedChange() : null}"
|
|
130
|
+
>
|
|
131
|
+
${checkbox(context)} ${radio(context)}
|
|
132
|
+
<slot></slot>
|
|
586
133
|
</div>
|
|
587
|
-
</
|
|
134
|
+
</template>`;
|
|
588
135
|
};
|
|
589
136
|
|
|
590
|
-
const
|
|
591
|
-
baseName: "
|
|
592
|
-
template:
|
|
137
|
+
const selectableBoxDefinition = SelectableBox.compose({
|
|
138
|
+
baseName: "selectable-box",
|
|
139
|
+
template: SelectableBoxTemplate,
|
|
593
140
|
styles,
|
|
594
141
|
shadowOptions: {
|
|
595
142
|
delegatesFocus: true
|
|
596
143
|
}
|
|
597
144
|
});
|
|
598
|
-
const
|
|
599
|
-
|
|
145
|
+
const selectableBoxRegistries = [
|
|
146
|
+
selectableBoxDefinition(),
|
|
147
|
+
...checkboxRegistries,
|
|
148
|
+
...radioRegistries
|
|
149
|
+
];
|
|
150
|
+
const registerSelectableBox = registerFactory(selectableBoxRegistries);
|
|
600
151
|
|
|
601
|
-
export {
|
|
152
|
+
export { selectableBoxRegistries as a, registerSelectableBox as r, selectableBoxDefinition as s };
|