lightning-base-components 1.18.2-alpha → 1.18.4-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 (137) hide show
  1. package/metadata/raptor.json +4 -0
  2. package/package.json +15 -1
  3. package/scopedImports/@salesforce-internal-core.appVersion.js +1 -1
  4. package/src/lightning/accordion/__docs__/accordion.md +2 -2
  5. package/src/lightning/avatar/__docs__/avatar.md +7 -7
  6. package/src/lightning/badge/__docs__/badge.md +2 -2
  7. package/src/lightning/baseCombobox/baseCombobox.js +62 -22
  8. package/src/lightning/breadcrumbs/__docs__/breadcrumbs.md +3 -3
  9. package/src/lightning/button/__docs__/button.md +15 -15
  10. package/src/lightning/buttonIcon/__docs__/buttonIcon.md +9 -9
  11. package/src/lightning/buttonIconStateful/__docs__/buttonIconStateful.md +9 -9
  12. package/src/lightning/buttonMenu/__docs__/buttonMenu.md +8 -8
  13. package/src/lightning/buttonStateful/__docs__/buttonStateful.md +12 -12
  14. package/src/lightning/calendar/calendar.css +2 -2
  15. package/src/lightning/calendar/calendar.js +4 -2
  16. package/src/lightning/card/__docs__/card.md +3 -3
  17. package/src/lightning/checkboxGroup/__docs__/checkboxGroup.md +2 -2
  18. package/src/lightning/datatable/__docs__/datatable.md +45 -35
  19. package/src/lightning/datatable/autoWidthStrategy.js +3 -0
  20. package/src/lightning/datatable/columnWidthManager.js +1 -1
  21. package/src/lightning/datatable/datatable.js +8 -7
  22. package/src/lightning/datatable/rowSelection.js +7 -4
  23. package/src/lightning/datatable/templates/table/table.html +1 -0
  24. package/src/lightning/datepicker/datepicker.css +2 -2
  25. package/src/lightning/datepicker/datepicker.js +4 -2
  26. package/src/lightning/datetimepicker/datetimepicker.css +2 -2
  27. package/src/lightning/datetimepicker/datetimepicker.js +4 -2
  28. package/src/lightning/dualListbox/dualListbox.js +16 -7
  29. package/src/lightning/formattedRichText/formatted-rich-text.slds.css +230 -0
  30. package/src/lightning/formattedRichText/formattedRichText.css +2 -0
  31. package/src/lightning/formattedRichText/formattedRichText.js +4 -2
  32. package/src/lightning/formattedText/formattedText.css +1 -0
  33. package/src/lightning/formattedText/formattedText.js +3 -2
  34. package/src/lightning/helptext/__docs__/helptext.md +2 -2
  35. package/src/lightning/icon/__docs__/icon.md +5 -5
  36. package/src/lightning/icon/icon.js +6 -1
  37. package/src/lightning/iconUtils/iconUtils.js +0 -12
  38. package/src/lightning/iconUtils/polyfill.js +5 -90
  39. package/src/lightning/input/__docs__/input.md +7 -7
  40. package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.css +6 -0
  41. package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.html +2 -1
  42. package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.js +1 -1
  43. package/src/lightning/input/__examples__/number/number.html +0 -5
  44. package/src/lightning/input/input.css +2 -4
  45. package/src/lightning/input/input.html +149 -239
  46. package/src/lightning/input/input.js +209 -532
  47. package/src/lightning/inputAddress/__docs__/inputAddress.md +3 -3
  48. package/src/lightning/inputUtils/inputUtils.js +15 -20
  49. package/src/lightning/inputUtils/normalize.js +7 -0
  50. package/src/lightning/{input/numberUtil.js → inputUtils/number.js} +1 -1
  51. package/src/lightning/inputUtils/utils.js +18 -0
  52. package/src/lightning/modalBody/__docs__/modalBody.md +9 -9
  53. package/src/lightning/modalFooter/__docs__/modalFooter.md +9 -9
  54. package/src/lightning/modalHeader/__docs__/modalHeader.md +9 -9
  55. package/src/lightning/overlayContainer/overlayContainer.js +4 -2
  56. package/src/lightning/pill/__docs__/pill.md +3 -3
  57. package/src/lightning/pillContainer/__docs__/pillContainer.md +14 -14
  58. package/src/lightning/primitiveIcon/primitiveIcon.js +8 -5
  59. package/src/lightning/primitiveInputCheckbox/form-element.slds.css +281 -0
  60. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.css +3 -0
  61. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.html +48 -0
  62. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js +139 -0
  63. package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +281 -0
  64. package/src/lightning/primitiveInputCheckboxButton/input-checkbox-button.slds.css +126 -0
  65. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.css +6 -0
  66. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.html +24 -0
  67. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js +176 -0
  68. package/src/lightning/primitiveInputColor/form-element.slds.css +281 -0
  69. package/src/lightning/primitiveInputColor/input-color.slds.css +35 -0
  70. package/src/lightning/primitiveInputColor/primitiveInputColor.css +4 -0
  71. package/src/lightning/primitiveInputColor/primitiveInputColor.html +50 -0
  72. package/src/lightning/primitiveInputColor/primitiveInputColor.js +184 -0
  73. package/src/lightning/primitiveInputFile/button.slds.css +527 -0
  74. package/src/lightning/primitiveInputFile/form-element.slds.css +281 -0
  75. package/src/lightning/primitiveInputFile/input-file.slds.css +62 -0
  76. package/src/lightning/primitiveInputFile/primitiveInputFile.css +5 -0
  77. package/src/lightning/primitiveInputFile/primitiveInputFile.html +45 -0
  78. package/src/lightning/primitiveInputFile/primitiveInputFile.js +111 -0
  79. package/src/lightning/primitiveInputRadio/primitiveInputRadio.html +24 -0
  80. package/src/lightning/primitiveInputRadio/primitiveInputRadio.js +103 -0
  81. package/src/lightning/primitiveInputSimple/form-element.slds.css +281 -0
  82. package/src/lightning/primitiveInputSimple/input-text.slds.css +398 -0
  83. package/src/lightning/primitiveInputSimple/primitiveInputSimple.css +9 -0
  84. package/src/lightning/primitiveInputSimple/primitiveInputSimple.html +65 -0
  85. package/src/lightning/primitiveInputSimple/primitiveInputSimple.js +585 -0
  86. package/src/lightning/primitiveInputToggle/form-element.slds.css +281 -0
  87. package/src/lightning/primitiveInputToggle/input-toggle.slds.css +170 -0
  88. package/src/lightning/primitiveInputToggle/primitiveInputToggle.css +3 -0
  89. package/src/lightning/primitiveInputToggle/primitiveInputToggle.html +34 -0
  90. package/src/lightning/primitiveInputToggle/primitiveInputToggle.js +164 -0
  91. package/src/lightning/radioGroup/__docs__/radioGroup.md +4 -4
  92. package/src/lightning/select/__docs__/select.md +2 -2
  93. package/src/lightning/shadowBaseClassPrivate/shadowBaseClassPrivate.js +1 -1
  94. package/src/lightning/sldsCommon/sldsCommon.css +144 -42
  95. package/src/lightning/sldsUtilsAlignment/sldsUtilsAlignment.css +10 -0
  96. package/src/lightning/sldsUtilsAlignment/sldsUtilsAlignment.js-meta.xml +4 -0
  97. package/src/lightning/sldsUtilsBorders/sldsUtilsBorders.css +18 -0
  98. package/src/lightning/sldsUtilsBorders/sldsUtilsBorders.js-meta.xml +4 -0
  99. package/src/lightning/sldsUtilsBox/sldsUtilsBox.css +24 -0
  100. package/src/lightning/sldsUtilsBox/sldsUtilsBox.js-meta.xml +4 -0
  101. package/src/lightning/sldsUtilsFloats/sldsUtilsFloats.css +20 -0
  102. package/src/lightning/sldsUtilsFloats/sldsUtilsFloats.js-meta.xml +4 -0
  103. package/src/lightning/sldsUtilsGrid/sldsUtilsGrid.css +259 -0
  104. package/src/lightning/sldsUtilsGrid/sldsUtilsGrid.js-meta.xml +4 -0
  105. package/src/lightning/sldsUtilsHyphenation/sldsUtilsHyphenation.css +8 -0
  106. package/src/lightning/sldsUtilsHyphenation/sldsUtilsHyphenation.js-meta.xml +4 -0
  107. package/src/lightning/sldsUtilsLineClamp/sldsUtilsLineClamp.css +57 -0
  108. package/src/lightning/sldsUtilsLineClamp/sldsUtilsLineClamp.js-meta.xml +4 -0
  109. package/src/lightning/sldsUtilsMargin/sldsUtilsMargin.css +313 -0
  110. package/src/lightning/sldsUtilsMargin/sldsUtilsMargin.js-meta.xml +4 -0
  111. package/src/lightning/sldsUtilsPadding/sldsUtilsPadding.css +308 -0
  112. package/src/lightning/sldsUtilsPadding/sldsUtilsPadding.js-meta.xml +4 -0
  113. package/src/lightning/sldsUtilsPosition/sldsUtilsPosition.css +18 -0
  114. package/src/lightning/sldsUtilsPosition/sldsUtilsPosition.js-meta.xml +4 -0
  115. package/src/lightning/sldsUtilsSizing/sldsUtilsSizing.css +1408 -0
  116. package/src/lightning/sldsUtilsSizing/sldsUtilsSizing.js-meta.xml +4 -0
  117. package/src/lightning/sldsUtilsThemes/sldsUtilsThemes.css +295 -0
  118. package/src/lightning/sldsUtilsThemes/sldsUtilsThemes.js-meta.xml +4 -0
  119. package/src/lightning/sldsUtilsTruncation/sldsUtilsTruncation.css +14 -0
  120. package/src/lightning/sldsUtilsTruncation/sldsUtilsTruncation.js-meta.xml +4 -0
  121. package/src/lightning/slider/__docs__/slider.md +2 -2
  122. package/src/lightning/tabset/__docs__/tabset.md +2 -2
  123. package/src/lightning/textarea/__docs__/textarea.md +2 -2
  124. package/src/lightning/timepicker/timepicker.js +4 -2
  125. package/src/lightning/toast/toast.js-meta.xml +2 -0
  126. package/src/lightning/toastContainer/__docs__/toastContainer.md +14 -34
  127. package/src/lightning/toastContainer/toastContainer.js +10 -15
  128. package/src/lightning/tooltipLibrary/tooltipLibrary.js +12 -5
  129. package/src/lightning/iconUtils/isIframeInEdge.js +0 -7
  130. package/src/lightning/iconUtils/supportsSvg.js +0 -16
  131. /package/src/lightning/formattedRichText/{__examples__disabled → __examples__}/basic/basic.html +0 -0
  132. /package/src/lightning/formattedRichText/{__examples__disabled → __examples__}/basic/basic.js +0 -0
  133. /package/src/lightning/{input/emailUtil.js → inputUtils/email.js} +0 -0
  134. /package/src/lightning/{input → primitiveInputCheckbox}/input-checkbox.slds.css +0 -0
  135. /package/src/lightning/{input → primitiveInputColor}/input-text.slds.css +0 -0
  136. /package/src/lightning/{input → primitiveInputSimple}/normalize.js +0 -0
  137. /package/src/lightning/{input → primitiveInputSimple}/selection.js +0 -0
@@ -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>
@@ -0,0 +1,164 @@
1
+ import { api } from 'lwc';
2
+ import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
3
+ import {
4
+ isNativeComponent,
5
+ normalizeAriaAttribute,
6
+ reflectAttribute,
7
+ } from 'lightning/utilsPrivate';
8
+ import { VARIANT } from 'lightning/inputUtils';
9
+ import labelRequired from '@salesforce/label/LightningControl.required';
10
+
11
+ const i18n = {
12
+ required: labelRequired,
13
+ };
14
+
15
+ export default class LightningPrimitiveInputToggle extends LightningShadowBaseClass {
16
+ _checked;
17
+ _value = '';
18
+ _ariaLabel;
19
+ _cachedInputElement;
20
+ _helpMessage = '';
21
+ _messageToggleActive;
22
+ _messageToggleInactive;
23
+
24
+ initialRender = false;
25
+
26
+ @api accessKey;
27
+ @api disabled;
28
+ @api label;
29
+ @api variant;
30
+ @api name;
31
+ @api readOnly;
32
+ @api required;
33
+ @api ariaInvalid;
34
+
35
+ /**
36
+ * Text shown for the active state of a toggle. The default is "Active".
37
+ * @type {string}
38
+ */
39
+ @api messageToggleActive;
40
+
41
+ /**
42
+ * Text shown for the inactive state of a toggle. The default is "Inactive".
43
+ * @type {string}
44
+ */
45
+ @api messageToggleInactive;
46
+
47
+ @api
48
+ get value() {
49
+ return this._value;
50
+ }
51
+ set value(newValue) {
52
+ // value can only be a string
53
+ this._value =
54
+ typeof newValue === 'number' || typeof newValue === 'string'
55
+ ? String(newValue)
56
+ : '';
57
+ }
58
+
59
+ @api
60
+ get checked() {
61
+ if (this.initialRender) {
62
+ return this.inputElement.checked;
63
+ }
64
+ return this._checked;
65
+ }
66
+ set checked(value) {
67
+ value = Boolean(value);
68
+ this._checked = value;
69
+ if (this.initialRender) {
70
+ this.inputElement.checked = this._checked;
71
+ }
72
+ }
73
+
74
+ @api
75
+ get ariaDescribedByElements() {
76
+ return [
77
+ this.template.querySelector('[data-help-message]'),
78
+ this.template.querySelector('data-toggle-description'),
79
+ ];
80
+ }
81
+
82
+ @api
83
+ get isNativeShadow() {
84
+ return this._isNativeShadow;
85
+ }
86
+
87
+ @api
88
+ get ariaLabel() {
89
+ return this._ariaLabel;
90
+ }
91
+ set ariaLabel(value) {
92
+ this._ariaLabel = normalizeAriaAttribute(value);
93
+ }
94
+
95
+ @api
96
+ get inputElement() {
97
+ // cache the input in order to reduce dom queries
98
+ if (!this._cachedInputElement) {
99
+ let inputElement = this.template.querySelector('input');
100
+ this._cachedInputElement = inputElement;
101
+ }
102
+ return this._cachedInputElement;
103
+ }
104
+
105
+ @api
106
+ get helpMessage() {
107
+ return this._helpMessage;
108
+ }
109
+ set helpMessage(message) {
110
+ this._helpMessage = message;
111
+ reflectAttribute(this, 'invalid', Boolean(message));
112
+ }
113
+
114
+ get computedLabelClass() {
115
+ return this.variant === VARIANT.LABEL_HIDDEN
116
+ ? 'slds-form-element__label slds-assistive-text'
117
+ : 'slds-form-element__label';
118
+ }
119
+
120
+ get i18n() {
121
+ return i18n;
122
+ }
123
+
124
+ handleBlur() {
125
+ this.dispatchEvent(new CustomEvent('blur'));
126
+ }
127
+
128
+ handleFocus() {
129
+ this.dispatchEvent(new CustomEvent('focus'));
130
+ }
131
+
132
+ handleChange(event) {
133
+ this._checked = event.target.checked;
134
+ const changeEvent = new CustomEvent('change', {
135
+ detail: {
136
+ checked: event.target.checked,
137
+ },
138
+ });
139
+ this.dispatchEvent(changeEvent);
140
+ }
141
+
142
+ handleClick() {
143
+ if (this.template.activeElement === null) {
144
+ this.template.querySelector("[type='checkbox']").focus();
145
+ }
146
+ }
147
+
148
+ connectedCallback() {
149
+ super.connectedCallback();
150
+ this._isNativeShadow = isNativeComponent(this);
151
+ }
152
+
153
+ renderedCallback() {
154
+ if (!this.initialRender) {
155
+ this.inputElement.checked = this.checked;
156
+ this.inputElement.value = this._value;
157
+ this.initialRender = true;
158
+ }
159
+ }
160
+
161
+ disconnectedCallback() {
162
+ this._cachedInputElement = undefined;
163
+ }
164
+ }
@@ -158,11 +158,11 @@ To apply custom styling, use the `:host` selector or define a custom class using
158
158
  </lightning-radio-group>
159
159
  ```
160
160
 
161
- When using `type="button"`, you can change the line height of the button label with SLDS styling hooks. For example, use `--sds-c-button-line-height` to reduce or increase the whitespace between lines of the text label.
161
+ When using `type="button"`, you can change the line height of the button label with SLDS styling hooks. For example, use `--slds-c-button-line-height` to reduce or increase the whitespace between lines of the text label.
162
162
 
163
163
  ```css
164
164
  .my-radio-group {
165
- --sds-c-button-line-height: 2.875rem;
165
+ --slds-c-button-line-height: 2.875rem;
166
166
  }
167
167
  ```
168
168
 
@@ -170,8 +170,8 @@ When using `type="radio"`, customize the component's styles using SLDS styling h
170
170
 
171
171
  ```css
172
172
  :host {
173
- --sds-c-radio-mark-color-foreground: #000000;
174
- --sds-c-radio-color-background-checked: orange;
173
+ --slds-c-radio-mark-color-foreground: #000000;
174
+ --slds-c-radio-color-background-checked: orange;
175
175
  }
176
176
  ```
177
177
 
@@ -238,11 +238,11 @@ Use the `variant` attribute with one of these values to position the labels diff
238
238
 
239
239
  To apply additional styling, use the SLDS [utility classes](https://www.lightningdesignsystem.com/utilities/alignment) with the `class` attribute. For example, you can add padding on the top of the component using the `slds-p-top_medium` SLDS class.
240
240
 
241
- To apply custom styling, define a custom class using the `class` attribute. Use SLDS styling hooks to customize the component's styles. For example, specify the border color on the `select` element using the `--sds-c-select-color-border` custom property.
241
+ To apply custom styling, define a custom class using the `class` attribute. Use SLDS styling hooks to customize the component's styles. For example, specify the border color on the `select` element using the `--slds-c-select-color-border` custom property.
242
242
 
243
243
  ```css
244
244
  .my-select {
245
- --sds-c-select-color-border: red;
245
+ --slds-c-select-color-border: red;
246
246
  }
247
247
  ```
248
248