lightning-base-components 1.18.3-alpha → 1.18.5-alpha

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 (52) hide show
  1. package/metadata/raptor.json +21 -0
  2. package/package.json +3 -2
  3. package/src/lightning/baseCombobox/baseCombobox.js +20 -14
  4. package/src/lightning/buttonIcon/buttonIcon.js +19 -16
  5. package/src/lightning/combobox/combobox.js +17 -16
  6. package/src/lightning/primitiveInputCheckbox/form-element.slds.css +281 -0
  7. package/src/lightning/primitiveInputCheckbox/input-checkbox.slds.css +395 -0
  8. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.css +3 -0
  9. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.html +48 -0
  10. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js +139 -0
  11. package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +281 -0
  12. package/src/lightning/primitiveInputCheckboxButton/input-checkbox-button.slds.css +126 -0
  13. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.css +6 -0
  14. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.html +24 -0
  15. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js +176 -0
  16. package/src/lightning/primitiveInputColor/form-element.slds.css +281 -0
  17. package/src/lightning/primitiveInputColor/input-color.slds.css +35 -0
  18. package/src/lightning/primitiveInputColor/input-text.slds.css +398 -0
  19. package/src/lightning/primitiveInputColor/primitiveInputColor.css +4 -0
  20. package/src/lightning/primitiveInputColor/primitiveInputColor.html +50 -0
  21. package/src/lightning/primitiveInputColor/primitiveInputColor.js +184 -0
  22. package/src/lightning/primitiveInputFile/button.slds.css +527 -0
  23. package/src/lightning/primitiveInputFile/form-element.slds.css +281 -0
  24. package/src/lightning/primitiveInputFile/input-file.slds.css +62 -0
  25. package/src/lightning/primitiveInputFile/primitiveInputFile.css +5 -0
  26. package/src/lightning/primitiveInputFile/primitiveInputFile.html +45 -0
  27. package/src/lightning/primitiveInputFile/primitiveInputFile.js +111 -0
  28. package/src/lightning/primitiveInputRadio/primitiveInputRadio.html +24 -0
  29. package/src/lightning/primitiveInputRadio/primitiveInputRadio.js +103 -0
  30. package/src/lightning/primitiveInputSimple/form-element.slds.css +281 -0
  31. package/src/lightning/primitiveInputSimple/input-text.slds.css +398 -0
  32. package/src/lightning/primitiveInputSimple/normalize.js +6 -0
  33. package/src/lightning/primitiveInputSimple/primitiveInputSimple.css +9 -0
  34. package/src/lightning/primitiveInputSimple/primitiveInputSimple.html +65 -0
  35. package/src/lightning/primitiveInputSimple/primitiveInputSimple.js +585 -0
  36. package/src/lightning/primitiveInputSimple/selection.js +131 -0
  37. package/src/lightning/primitiveInputToggle/form-element.slds.css +281 -0
  38. package/src/lightning/primitiveInputToggle/input-toggle.slds.css +170 -0
  39. package/src/lightning/primitiveInputToggle/primitiveInputToggle.css +3 -0
  40. package/src/lightning/primitiveInputToggle/primitiveInputToggle.html +34 -0
  41. package/src/lightning/primitiveInputToggle/primitiveInputToggle.js +164 -0
  42. package/src/lightning/tab/tab.css +2 -0
  43. package/src/lightning/tab/tab.js +22 -14
  44. package/src/lightning/tab/tab.slds.css +47 -0
  45. package/src/lightning/tabset/tabset.css +10 -0
  46. package/src/lightning/tabset/tabset.js +28 -10
  47. package/src/lightning/button/__wdio__/utam/utam.html +0 -3
  48. package/src/lightning/button/__wdio__/utam/utam.js +0 -3
  49. package/src/lightning/button/__wdio__/utam/utam.spec.js +0 -20
  50. package/src/lightning/datatable/__wdio__/utam/utam.html +0 -32
  51. package/src/lightning/datatable/__wdio__/utam/utam.js +0 -91
  52. package/src/lightning/datatable/__wdio__/utam/utam.spec.js +0 -214
@@ -0,0 +1,131 @@
1
+ import { isSafari, isIE11, timeout } from 'lightning/utilsPrivate';
2
+
3
+ /**
4
+ * Purges the selection cache to the DOM.
5
+ * @param input {HTMLInputElement}
6
+ * @param cache {InputSelectionCache}
7
+ */
8
+ function restoreCacheToInput(input, cache) {
9
+ input.setSelectionRange(
10
+ cache._selectionStartCached,
11
+ cache._selectionEndCached
12
+ );
13
+
14
+ cache.clearCache();
15
+ }
16
+
17
+ /**
18
+ * This class provides a way to cache text selection in input fields.
19
+ */
20
+ export class InputSelectionCache {
21
+ /**
22
+ * Cached value for selectionStart
23
+ * @type {number|null}
24
+ */
25
+ _selectionStartCached = null;
26
+
27
+ /**
28
+ * Cached value for selectionEnd
29
+ * @type {number|null}
30
+ */
31
+ _selectionEndCached = null;
32
+
33
+ /**
34
+ * Updates the cached values.
35
+ * @param {number} start The start of the selected range
36
+ * @param {number} end The end of the selected range
37
+ * @private
38
+ */
39
+ _cacheSelectionRange(start, end) {
40
+ if (typeof start === 'number' && typeof end === 'number') {
41
+ this._selectionStartCached = start;
42
+ this._selectionEndCached = end;
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Clears our cached selection.
48
+ */
49
+ clearCache() {
50
+ this._selectionStartCached = null;
51
+ this._selectionEndCached = null;
52
+ }
53
+
54
+ /**
55
+ * True, if the DOM element has selection.
56
+ * @param input {HTMLInputElement} The DOM element to operate on
57
+ */
58
+ hasSelection(input) {
59
+ return (
60
+ input.selectionStart !== null &&
61
+ // If the start and end are the same, that's not selection, it's just the cursor position.
62
+ input.selectionStart !== input.selectionEnd
63
+ );
64
+ }
65
+
66
+ /**
67
+ * True, if selection has been cached.
68
+ */
69
+ isCached() {
70
+ return (
71
+ this._selectionStartCached !== null &&
72
+ this._selectionEndCached !== null
73
+ );
74
+ }
75
+
76
+ /**
77
+ * Cache the current text selection for this input field.
78
+ * We ignore selection range of (0,0) because that indicates no selection and we don't want to restore it later.
79
+ * @param input {HTMLInputElement} The DOM element to operate on
80
+ */
81
+ preserve(input) {
82
+ if (!this.hasSelection(input) && this.isCached()) {
83
+ // We already have cached selection but we're asking to preserve no selection,
84
+ // so we must NOT overwrite our cache with no selection or we can't restore the previously selected text.
85
+ // This happens if the browser doesn't preserve text selection automatically in the input.
86
+ return;
87
+ }
88
+
89
+ // Only update cache if there is selection.
90
+ if (this.hasSelection(input)) {
91
+ this._cacheSelectionRange(input.selectionStart, input.selectionEnd);
92
+ }
93
+ }
94
+
95
+ /**
96
+ * Restore cached selection. This may happen async, so a promise is returned.
97
+ * @param input {HTMLInputElement} The DOM element to operate on
98
+ * @returns {Promise} A promise to be resolved when the selection is restored.
99
+ * If the cache was empty, the promise is resolved immediately as a no-op.
100
+ */
101
+ restore(input) {
102
+ // Bail early if we don't have a cached selection.
103
+ if (!this.isCached()) {
104
+ return Promise.resolve();
105
+ }
106
+
107
+ // @W-7962838 - Safari has a browser bug where setting the selection on inputs
108
+ // as you focus them keeps it from scrolling into view in certain conditions.
109
+ // This can be worked around by setting the text selection in a new call stack immediately after the focus.
110
+ // https://bugs.webkit.org/show_bug.cgi?id=217350
111
+ if (isSafari) {
112
+ return timeout(0).then(() => {
113
+ // running async, so revalidate our inputs
114
+ if (this.isCached() && input) {
115
+ restoreCacheToInput(input, this);
116
+ }
117
+ });
118
+ }
119
+
120
+ // W-6176985: IE11 input when set value, will move cursor to beginning.
121
+ // This fix is only for input type=number on IE11, and force the cursor to the end.
122
+ if (isIE11) {
123
+ const length = input.value.length;
124
+ input.setSelectionRange(length, length);
125
+ return Promise.resolve();
126
+ }
127
+
128
+ restoreCacheToInput(input, this);
129
+ return Promise.resolve();
130
+ }
131
+ }
@@ -0,0 +1,281 @@
1
+
2
+ /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
3
+ Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
4
+ @supports (--styling-hooks: '') {
5
+ /* TODO: Swap with utility classes */
6
+ :host([data-render-mode="shadow"]) fieldset {
7
+ border: 0;
8
+ margin: 0;
9
+ padding: 0;
10
+ }
11
+
12
+ /* FORM ELEMENT: BASE */
13
+ :host([data-render-mode="shadow"]) .slds-form-element {
14
+ position: relative;
15
+ min-width: 0;
16
+ }
17
+
18
+ :host([data-render-mode="shadow"]) .slds-form-element__label {
19
+ overflow-wrap: break-word;
20
+ word-wrap: break-word;
21
+ hyphens: auto;
22
+ display: inline-block;
23
+ color: var(--sds-g-color-neutral-base-30, #444444);
24
+ font-size: var(--sds-g-font-scale-neg-3, 0.75rem);
25
+ padding-inline-end: var(--sds-g-spacing-2, 0.5rem);
26
+ padding-block-start: var(--sds-g-spacing-1, 0.25rem);
27
+ margin-block-end: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
28
+ }
29
+
30
+ :host([data-render-mode="shadow"]) .slds-form-element__label:empty {
31
+ margin: 0;
32
+ }
33
+
34
+ :host([data-render-mode="shadow"]) .slds-form-element__control {
35
+ clear: left; /* NOTE: Ideally we want left to be inline-start but browser support is not ready for that value. We need to figure out better RTL support */
36
+ position: relative;
37
+ }
38
+
39
+ :host([data-render-mode="shadow"]) .slds-form-element__icon {
40
+ display: inline-block;
41
+ position: relative;
42
+ padding-block-start: var(--sds-g-spacing-1, 0.25rem);
43
+ vertical-align: top;
44
+ line-height: var(--sds-g-font-lineheight-1, 1);
45
+ z-index: 1;
46
+ }
47
+
48
+ :host([data-render-mode="shadow"]) .slds-form-element__icon .slds-button_icon {
49
+ position: relative;
50
+ }
51
+
52
+ :host([data-render-mode="shadow"]) .slds-form-element__help,:host([data-render-mode="shadow"])
53
+ .slds-form-element__helper {
54
+ font-size: var(--sds-g-font-scale-neg-3, 0.75rem);
55
+ margin-block-start: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
56
+ display: block;
57
+ }
58
+
59
+ :host([data-render-mode="shadow"]) .slds-form-element_edit .slds-form-element__static {
60
+ width: calc(100% - var(--sds-g-sizing-7, 1.5rem));
61
+ }
62
+
63
+ :host([data-render-mode="shadow"]) .slds-form-element_readonly {
64
+ flex-basis: 0%;
65
+ border-bottom: var(--sds-g-sizing-border-1, 1px) solid var(--sds-g-color-neutral-base-90, #e5e5e5);
66
+ margin-block-end: 0;
67
+ }
68
+
69
+ :host([data-render-mode="shadow"]) .slds-form-element_readonly .slds-form-element__control {
70
+ padding-block-start: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
71
+ padding-block-end: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
72
+ }
73
+
74
+ :host([data-render-mode="shadow"]) .slds-form-element_readonly .slds-form-element__label {
75
+ margin-block-end: 0;
76
+ }
77
+
78
+ :host([data-render-mode="shadow"]) .slds-form-element__legend {
79
+ font-weight: var(--sds-g-font-weight-7, 700);
80
+ float: left;
81
+ }
82
+
83
+ :host([data-render-mode="shadow"]) .slds-form-element__addon {
84
+ display: inline-block;
85
+ margin-block-start: 0;
86
+ margin-block-end: 0;
87
+ margin-inline-start: var(--sds-g-spacing-2, 0.5rem);
88
+ margin-inline-end: var(--sds-g-spacing-2, 0.5rem);
89
+ align-self: center;
90
+ }
91
+
92
+ :host([data-render-mode="shadow"]) .slds-form-element__static {
93
+ overflow-wrap: break-word;
94
+ word-wrap: break-word;
95
+ word-break: break-word;
96
+ display: inline-block;
97
+ font-size: var(--sds-g-font-scale-neg-1, 0.875rem);
98
+ font-weight: var(--sds-g-font-weight-4, 400);
99
+ color: var(--sds-g-color-neutral-base-10, #181818);
100
+ width: 100%;
101
+ }
102
+
103
+ :host([data-render-mode="shadow"]) .slds-form-element__static.slds-text-longform *:last-child {
104
+ margin-block-end: 0;
105
+ }
106
+
107
+ :host([data-render-mode="shadow"]) .slds-form-element__static:empty {
108
+ min-height: calc(var(--sds-g-sizing-6, 1.25rem) + 1px);
109
+ vertical-align: bottom;
110
+ }
111
+
112
+ :host([data-render-mode="shadow"]) .slds-form-element__static--edit {
113
+ width: calc(100% - var(--sds-g-sizing-7, 1.5rem));
114
+ }
115
+
116
+ :host([data-render-mode="shadow"]) .slds-required {
117
+ color: var(--sds-g-color-error-base-50, #ea001e);
118
+ margin-block-start: 0;
119
+ margin-block-end: 0;
120
+ margin-inline-start: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
121
+ margin-inline-end: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
122
+ }
123
+
124
+ :host([data-render-mode="shadow"]) .slds-has-error .slds-form-element__help {
125
+ color: var(--sds-g-color-error-base-50, #ea001e);
126
+ }
127
+
128
+ :host([data-render-mode="shadow"][invalid]) .slds-form-element__help {
129
+ color: var(--sds-g-color-error-base-50, #ea001e);
130
+ }
131
+
132
+ /* --------------------------------------- */
133
+
134
+ /* FORM ELEMENT: STACKED */
135
+
136
+ :host([data-render-mode="shadow"][variant~='label-stacked']) {
137
+ display: block;
138
+ }
139
+
140
+ /* TODO: Using `:not` is currently not working, and it could break the build because of issues with the dist script */
141
+
142
+ /* :host([variant~='label-stacked']):not(.slds-form-element_readonly) {
143
+ margin-block-end: var(--sds-g-spacing-2);
144
+ }
145
+
146
+ :host([variant~='label-stacked']):not(.slds-is-editing) {
147
+ padding: 0 var(--sds-g-spacing-1);
148
+ } */
149
+
150
+ /* :host([variant~='label-stacked']):not([class*="slds-size"]) {
151
+ width: 100%;
152
+ flex-basis: 100%;
153
+ } */
154
+
155
+ :host([data-render-mode="shadow"][variant~='label-stacked']) .slds-form-element {
156
+ padding: 0;
157
+ margin-block-end: 0;
158
+ }
159
+
160
+ :host([data-render-mode="shadow"][variant~='label-stacked']) .slds-form-element__label,:host([data-render-mode="shadow"][variant~='label-stacked']) .slds-form-element__control {
161
+ border-bottom: 0; /* Remove border when using legacy version of slds-form-element */
162
+ padding-inline-start: 0;
163
+ }
164
+
165
+ :host([data-render-mode="shadow"][variant~='label-stacked']) .slds-form-element__control {
166
+ width: 100%;
167
+ flex-basis: 100%;
168
+ clear: left;
169
+ }
170
+
171
+ :host([data-render-mode="shadow"][variant~='label-stacked']) .slds-form-element__icon {
172
+ float: none;
173
+ padding-block-start: var(--sds-g-spacing-1, 0.25rem);
174
+ }
175
+
176
+ /* --------------------------------------- */
177
+
178
+ /* FORM ELEMENT: INLINE */
179
+
180
+ :host([data-render-mode="shadow"][variant~='label-inline']) {
181
+ display: block;
182
+ }
183
+
184
+ /*
185
+ we have to combine with slds class here to avoid duplication
186
+ of this rule in child elements who import this stylesheet
187
+ in lighting-input this slds class is synonymous with the variant
188
+ */
189
+
190
+ :host([data-render-mode="shadow"][variant~='label-inline'].slds-form-element_horizontal) {
191
+ padding: var(--sds-g-spacing-1, 0.25rem);
192
+ margin-block-end: var(--sds-g-spacing-2, 0.5rem);
193
+ }
194
+
195
+ /* TODO: Using `:not` is currently not working, and it could break the build because of issues with the dist script */
196
+
197
+ /* :host([variant~='label-inline']):not(.slds-form-element_readonly) {
198
+ margin-block-end: var(--sds-g-spacing-2);
199
+ }
200
+
201
+ :host([variant~='label-inline']):not([class*="slds-size"]) {
202
+ width: 100%;
203
+ flex-basis: 100%;
204
+ }
205
+
206
+ :host([variant~='label-inline']:not(.slds-is-editing)) {
207
+ padding: var(--sds-g-spacing-1);
208
+ } */
209
+
210
+ :host([data-render-mode="shadow"][variant~='label-inline']).slds-is-edited {
211
+ padding-block-start: var(--sds-g-sizing-6, 1.25rem)
212
+ }
213
+
214
+ @media (min-width: 48em) {
215
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-form-element__label {
216
+ float: left;
217
+ max-width: calc(33% - var(--sds-g-sizing-6, 1.25rem)); /* Removing icon width for when the help-text icon is present */
218
+ flex-basis: calc(33% - var(--sds-g-sizing-6, 1.25rem)); /* Some form element controls are set to display:flex */
219
+ flex-grow: 1; /* For IE and Safari which didn't auto expand to the available space */
220
+ margin-block-end: 0;
221
+ position: relative;
222
+ z-index: 1;
223
+ }
224
+
225
+ :host([data-render-mode="shadow"][variant~='label-inline']) lightning-helptext {
226
+ float: left;
227
+ }
228
+
229
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-form-element__control {
230
+ margin-inline-start: 33%;
231
+ clear: none; /* Reset clear: left when switching to horizontal form layout */
232
+ }
233
+
234
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-form-element__control .slds-form-element__control {
235
+ padding-inline-start: 0; /* Remove left padding on nested form controls, due to issues related to lightning-form components */
236
+ }
237
+
238
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-dueling-list__column .slds-form-element__label {
239
+ width: auto;
240
+ max-width: 100%;
241
+ -ms-flex-preferred-size: auto;
242
+ flex-basis: auto;
243
+ float: none;
244
+ position: relative;
245
+ padding-inline-start: 0;
246
+ margin-block-end: 0;
247
+ }
248
+
249
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-form-element__help {
250
+ margin-inline-start: 33%;
251
+ }
252
+
253
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-dueling-list {
254
+ clear: none;
255
+ }
256
+ }
257
+
258
+ /* --------------------------------------- */
259
+
260
+ /* FORM ELEMENT: COMPOUND */
261
+
262
+ :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element__row {
263
+ display: flex;
264
+ margin-bottom: var(--sds-g-spacing-1, 0.25rem);
265
+ margin-left: calc(var(--sds-g-spacing-1, 0.25rem) * -1);
266
+ margin-right: calc(var(--sds-g-spacing-1, 0.25rem) * -1);
267
+ }
268
+
269
+ :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element__row .slds-form-element__label {
270
+ padding-top: 0;
271
+ }
272
+
273
+ :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element {
274
+ padding-left: var(--sds-g-spacing-1, 0.25rem);
275
+ padding-right: var(--sds-g-spacing-1, 0.25rem);
276
+ }
277
+
278
+ :host([data-render-mode="shadow"]) .slds-form-element_address .slds-form-element__row {
279
+ align-items: flex-end;
280
+ }
281
+ }
@@ -0,0 +1,170 @@
1
+
2
+ /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
3
+ Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
4
+
5
+
6
+ /* note that we disable the styling hooks pattern due to naming mismatch
7
+ /* between slds "checkbox-toggle" and lbc "input-toggle" */
8
+
9
+
10
+ /* stylelint-disable sds-stylelint-plugin/styling-hooks-pattern */
11
+
12
+
13
+ @supports (--styling-hooks: '') {
14
+
15
+ :host([data-render-mode="shadow"]) [part~='checkbox-toggle'] {
16
+ width: 100%;
17
+ display: flex
18
+ }
19
+
20
+ /* Container for text to show when checkbox is toggle off */
21
+ :host([data-render-mode="shadow"]) .slds-checkbox_off {
22
+ display: block;
23
+ }
24
+
25
+ /* Container for text to show when checkbox is toggle on */
26
+ :host([data-render-mode="shadow"]) .slds-checkbox_on {
27
+ display: none;
28
+ }
29
+
30
+ :host([data-render-mode="shadow"]) .slds-checkbox_faux_container {
31
+ font-size: var(--sds-g-font-scale-neg-4, 0.625rem);
32
+ color: var(--slds-g-color-neutral-base-30);
33
+ }
34
+
35
+ :host([data-render-mode="shadow"]) [part~='indicator']{
36
+ display: block;
37
+ position: relative;
38
+ width: var(--sds-g-sizing-10, 3rem);
39
+ height: var(--sds-g-sizing-7, 1.5rem);
40
+ border-width: var(--sds-g-sizing-border-1, 1px);
41
+ border-style: solid;
42
+ border-color: var(--slds-c-checkbox-toggle-color-border, var(--sds-g-color-neutral-base-70, #aeaeae));
43
+ padding: var(--sds-g-sizing-1, 0.125rem);
44
+ background-color: var(--slds-c-checkbox-toggle-color-background, var(--sds-g-color-neutral-base-70, #aeaeae));
45
+ border-radius: var(--slds-c-checkbox-toggle-radius-border, 15rem);
46
+ box-shadow: var(--slds-c-checkbox-toggle-shadow);
47
+ transition: background-color 0.2s cubic-bezier(0.75, 0, 0.08, 1);
48
+ }
49
+
50
+ :host([data-render-mode="shadow"]) [part~='indicator']:hover,:host([data-render-mode="shadow"])
51
+ [part~='indicator']:focus {
52
+ --slds-c-checkbox-toggle-color-background: var(--slds-c-checkbox-toggle-color-background-hover, var(--slds-g-color-neutral-base-50, var(--sds-g-color-neutral-base-60, #939393)));
53
+ --slds-c-checkbox-toggle-color-border: var(--slds-c-checkbox-toggle-color-border-hover);
54
+
55
+ cursor: pointer;
56
+ }
57
+
58
+ :host([data-render-mode="shadow"]) [part~='indicator']::after {
59
+ content: '';
60
+ position: absolute;
61
+ top: 1px;
62
+ left: 1px;
63
+ width: var(--sds-g-sizing-6, 1.25rem);
64
+ height: var(--sds-g-sizing-6, 1.25rem);
65
+ background-color: var(--slds-c-checkbox-toggle-switch-color-background, var(--sds-g-color-neutral-base-100, #ffffff));
66
+ border-radius: var(--slds-c-checkbox-toggle-radius-border, 15rem);
67
+ }
68
+
69
+ :host([data-render-mode="shadow"]) [part~='checkbox'] {
70
+ height: 1px;
71
+ width: 1px;
72
+ border: 0;
73
+ clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 100% 0%);
74
+ margin: -1px;
75
+ overflow: hidden;
76
+ padding: 0;
77
+ position: absolute;
78
+ }
79
+
80
+ :host([data-render-mode="shadow"]) [part~='checkbox']:checked:focus + .slds-checkbox_faux_container > [part~='indicator'] {
81
+ --slds-c-checkbox-toggle-color-background: var(--sds-g-color-brand-base-30, #014486);
82
+ }
83
+
84
+ :host([data-render-mode="shadow"]) [part~='checkbox']:checked + .slds-checkbox_faux_container .slds-checkbox_off {
85
+ display: none;
86
+ }
87
+
88
+ :host([data-render-mode="shadow"]) [part~='checkbox']:checked + .slds-checkbox_faux_container .slds-checkbox_on {
89
+ display: block;
90
+ }
91
+
92
+ :host([data-render-mode="shadow"]) [part~='checkbox']:checked + .slds-checkbox_faux_container > [part~='indicator'] {
93
+ --slds-c-checkbox-toggle-color-border: var(--sds-g-color-brand-base-50, #0176d3);
94
+ --slds-c-checkbox-toggle-color-background: var(--sds-g-color-brand-base-50, #0176d3);
95
+ }
96
+
97
+ :host([data-render-mode="shadow"]) [part~='checkbox']:checked + .slds-checkbox_faux_container > [part~='indicator']:hover,:host([data-render-mode="shadow"])
98
+ [part~='checkbox']:checked + .slds-checkbox_faux_container > [part~='indicator']:focus {
99
+ --slds-c-checkbox-toggle-color-background: var(--sds-g-color-brand-base-30, #014486);
100
+ }
101
+
102
+ :host([data-render-mode="shadow"]) [part~='checkbox']:checked + .slds-checkbox_faux_container > [part~='indicator']::before {
103
+ content: '';
104
+ position: absolute;
105
+ top: 1px;
106
+ right: 1px;
107
+ width: var(--sds-g-sizing-6, 1.25rem);
108
+ height: var(--sds-g-sizing-6, 1.25rem);
109
+ background-color: var(--slds-c-checkbox-toggle-switch-color-background-checked, var(--slds-c-checkbox-toggle-switch-color-background, var(--sds-g-color-neutral-base-100, #ffffff)));
110
+ border-radius: var(--slds-c-checkbox-toggle-radius-border, 15rem);
111
+ transition: transform 0.2s cubic-bezier(0.75, 0, 0.08, 1);
112
+ }
113
+
114
+ :host([data-render-mode="shadow"]) [part~='checkbox']:checked + .slds-checkbox_faux_container > [part~='indicator']::after {
115
+ --slds-c-checkbox-toggle-switch-color-background: transparent;
116
+ --slds-c-checkbox-toggle-radius-border: 0;
117
+
118
+ content: ' ';
119
+ position: absolute;
120
+ top: 0.25rem;
121
+ left: 0.6rem;
122
+ height: 0.7rem;
123
+ width: 0.45rem;
124
+ border-bottom-width: var(--sds-g-sizing-border-2, 2px);
125
+ border-bottom-style: solid;
126
+ border-bottom-color: var(--slds-c-checkbox-toggle-mark-color-foreground, var(--slds-g-color-neutral-base-100, var(--sds-g-color-neutral-base-100, #ffffff)));
127
+ border-right-width: var(--sds-g-sizing-border-2, 2px);
128
+ border-right-style: solid;
129
+ border-right-color: var(--slds-c-checkbox-toggle-mark-color-foreground, var(--slds-g-color-neutral-base-100, var(--sds-g-color-neutral-base-100, #ffffff)));
130
+ transform: rotate(45deg);
131
+ }
132
+
133
+ :host([data-render-mode="shadow"]) [part~='checkbox'][disabled] + .slds-checkbox_faux_container > [part~='indicator'] {
134
+ background-color: var(--slds-g-color-neutral-base-80, var(--sds-g-color-neutral-base-70, #aeaeae));
135
+ border-color: var(--slds-g-color-neutral-base-80, var(--sds-g-color-neutral-base-70, #aeaeae));
136
+ pointer-events: none;
137
+ }
138
+
139
+ :host([data-render-mode="shadow"]) [part~='checkbox'][disabled] + .slds-checkbox_faux_container > [part~='indicator']::after {
140
+ background-color: var(--slds-g-color-neutral-base-80, var(--sds-g-color-neutral-base-80, #c9c9c9));
141
+ }
142
+
143
+ :host([data-render-mode="shadow"]) [part~='checkbox'][disabled] + .slds-checkbox_faux_container > [part~='indicator']:hover,:host([data-render-mode="shadow"])
144
+ [part~='checkbox'][disabled] + .slds-checkbox_faux_container > [part~='indicator']:focus {
145
+ background-color: var(--slds-g-color-neutral-base-80, var(--sds-g-color-neutral-base-70, #aeaeae));
146
+ cursor: default;
147
+ }
148
+
149
+ :host([data-render-mode="shadow"]) [part~='checkbox'][disabled]:checked + .slds-checkbox_faux_container > [part~='indicator']::before {
150
+ background-color: var(--slds-g-color-neutral-base-90, var(--sds-g-color-neutral-base-80, #c9c9c9));
151
+ }
152
+
153
+ :host([data-render-mode="shadow"]) [part~='checkbox'][disabled]:checked + .slds-checkbox_faux_container > [part~='indicator']::after {
154
+ background-color: transparent;
155
+ }
156
+
157
+ /* ASSISTIVE TEXT */
158
+ :host([data-render-mode="shadow"]) .slds-assistive-text {
159
+ position: absolute !important;
160
+ margin: -1px !important;
161
+ border: 0 !important;
162
+ padding: 0 !important;
163
+ width: 1px !important;
164
+ height: 1px !important;
165
+ overflow: hidden !important;
166
+ clip: rect(0 0 0 0) !important;
167
+ text-transform: none !important;
168
+ white-space: nowrap !important;
169
+ }
170
+ }
@@ -0,0 +1,3 @@
1
+ @import 'lightning/sldsCommon';
2
+ @import './form-element.slds.css';
3
+ @import './input-toggle.slds.css';
@@ -0,0 +1,34 @@
1
+ <template>
2
+ <div class="slds-form-element__control">
3
+ <label class="slds-checkbox_toggle slds-grid" for="checkbox-toggle" part="checkbox-toggle">
4
+ <template if:true={required}>
5
+ <abbr class="slds-required" title={labelRequired}>*</abbr>
6
+ </template>
7
+ <span class={computedLabelClass}>{label}</span>
8
+ <input
9
+ type="checkbox"
10
+ id="checkbox-toggle"
11
+ part="checkbox"
12
+ accesskey={accessKey}
13
+ aria-label={ariaLabel}
14
+ aria-invalid={ariaInvalid}
15
+ disabled={disabled}
16
+ name={name}
17
+ onblur={handleBlur}
18
+ onchange={handleChange}
19
+ onfocus={handleFocus}
20
+ onclick={handleClick}
21
+ readonly={readOnly}
22
+ required={required}
23
+ >
24
+ <span id="toggle-description" data-toggle-description class="slds-checkbox_faux_container" aria-live="assertive">
25
+ <span class="slds-checkbox_faux" part="indicator"></span>
26
+ <span class="slds-checkbox_on">{messageToggleActive}</span>
27
+ <span class="slds-checkbox_off">{messageToggleInactive}</span>
28
+ </span>
29
+ </label>
30
+ </div>
31
+ <template if:true={_helpMessage}>
32
+ <div id="help-message" class="slds-form-element__help" data-help-message role="alert" part="help-text">{_helpMessage}</div>
33
+ </template>
34
+ </template>