lightning-base-components 1.18.7-alpha → 1.18.8-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 (113) hide show
  1. package/metadata/raptor.json +32 -9
  2. package/package.json +1 -1
  3. package/src/lightning/accordion/accordion.slds.css +26 -20
  4. package/src/lightning/accordionSection/accordion-section.slds.css +20 -14
  5. package/src/lightning/avatar/avatar.slds.css +10 -10
  6. package/src/lightning/baseCombobox/base-combobox.slds.css +23 -23
  7. package/src/lightning/baseCombobox/baseCombobox.css +1 -2
  8. package/src/lightning/baseCombobox/baseCombobox.html +7 -11
  9. package/src/lightning/baseCombobox/baseCombobox.js +84 -36
  10. package/src/lightning/breadcrumb/breadcrumb.js +4 -2
  11. package/src/lightning/breadcrumb/breadcrumb.slds.css +3 -3
  12. package/src/lightning/breadcrumbs/breadcrumbs.slds.css +5 -5
  13. package/src/lightning/button/button.slds.css +8 -2
  14. package/src/lightning/buttonGroup/button-group.slds.css +5 -5
  15. package/src/lightning/buttonIcon/button-icon.slds.css +9 -3
  16. package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +15 -9
  17. package/src/lightning/buttonMenu/button-menu.slds.css +13 -7
  18. package/src/lightning/buttonStateful/button-stateful.slds.css +11 -5
  19. package/src/lightning/calendar/calendar.js +15 -23
  20. package/src/lightning/calendar/calendar.slds.css +29 -23
  21. package/src/lightning/card/card.slds.css +68 -68
  22. package/src/lightning/combobox/combobox.slds.css +1 -1
  23. package/src/lightning/combobox/form-element.slds.css +8 -0
  24. package/src/lightning/datatable/datatable.js +4 -0
  25. package/src/lightning/datatable/keyboard.js +8 -4
  26. package/src/lightning/datatable/sort.js +1 -1
  27. package/src/lightning/datepicker/datepicker.js +1 -1
  28. package/src/lightning/datepicker/form-element.slds.css +8 -0
  29. package/src/lightning/datepicker/input-text.slds.css +23 -23
  30. package/src/lightning/datetimepicker/form-element.slds.css +8 -0
  31. package/src/lightning/datetimepicker/input-text.slds.css +23 -23
  32. package/src/lightning/dualListbox/form-element.slds.css +8 -0
  33. package/src/lightning/f6Controller/f6Controller.js +31 -22
  34. package/src/lightning/formattedDateTime/formattedDateTime.js +1 -1
  35. package/src/lightning/groupedCombobox/groupedCombobox.html +4 -0
  36. package/src/lightning/groupedCombobox/groupedCombobox.js +3 -2
  37. package/src/lightning/helptext/form-element.slds.css +8 -0
  38. package/src/lightning/helptext/help-text.slds.css +10 -4
  39. package/src/lightning/icon/icon.js +5 -1
  40. package/src/lightning/icon/icon.slds.css +3 -3
  41. package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.css +6 -0
  42. package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.html +2 -1
  43. package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.js +1 -1
  44. package/src/lightning/input/__examples__/number/number.html +0 -5
  45. package/src/lightning/input/form-element.slds.css +8 -0
  46. package/src/lightning/input/input.css +0 -2
  47. package/src/lightning/input/input.html +149 -239
  48. package/src/lightning/input/input.js +221 -539
  49. package/src/lightning/inputUtils/inputUtils.js +15 -20
  50. package/src/lightning/inputUtils/normalize.js +7 -0
  51. package/src/lightning/{input/numberUtil.js → inputUtils/number.js} +1 -1
  52. package/src/lightning/inputUtils/utils.js +18 -0
  53. package/src/lightning/layout/layout.js +1 -0
  54. package/src/lightning/layoutItem/layoutItem.js +1 -0
  55. package/src/lightning/modal/__docs__/modal.md +102 -3
  56. package/src/lightning/pill/avatar.slds.css +10 -10
  57. package/src/lightning/primitiveColorpickerButton/color-picker-button.slds.css +9 -9
  58. package/src/lightning/primitiveIcon/icon.slds.css +3 -3
  59. package/src/lightning/primitiveInputCheckbox/form-element.slds.css +289 -0
  60. package/src/lightning/{input → primitiveInputCheckbox}/input-checkbox.slds.css +18 -18
  61. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.css +3 -0
  62. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.html +48 -0
  63. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js +139 -0
  64. package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +289 -0
  65. package/src/lightning/primitiveInputCheckboxButton/input-checkbox-button.slds.css +126 -0
  66. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.css +6 -0
  67. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.html +24 -0
  68. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js +176 -0
  69. package/src/lightning/primitiveInputColor/form-element.slds.css +289 -0
  70. package/src/lightning/primitiveInputColor/input-color.slds.css +35 -0
  71. package/src/lightning/{input → primitiveInputColor}/input-text.slds.css +23 -23
  72. package/src/lightning/primitiveInputColor/primitiveInputColor.css +4 -0
  73. package/src/lightning/primitiveInputColor/primitiveInputColor.html +50 -0
  74. package/src/lightning/primitiveInputColor/primitiveInputColor.js +184 -0
  75. package/src/lightning/primitiveInputFile/button.slds.css +533 -0
  76. package/src/lightning/primitiveInputFile/form-element.slds.css +289 -0
  77. package/src/lightning/primitiveInputFile/input-file.slds.css +62 -0
  78. package/src/lightning/primitiveInputFile/primitiveInputFile.css +5 -0
  79. package/src/lightning/primitiveInputFile/primitiveInputFile.html +45 -0
  80. package/src/lightning/primitiveInputFile/primitiveInputFile.js +111 -0
  81. package/src/lightning/primitiveInputRadio/primitiveInputRadio.html +24 -0
  82. package/src/lightning/primitiveInputRadio/primitiveInputRadio.js +103 -0
  83. package/src/lightning/primitiveInputSimple/form-element.slds.css +289 -0
  84. package/src/lightning/primitiveInputSimple/input-text.slds.css +398 -0
  85. package/src/lightning/primitiveInputSimple/primitiveInputSimple.css +9 -0
  86. package/src/lightning/primitiveInputSimple/primitiveInputSimple.html +65 -0
  87. package/src/lightning/primitiveInputSimple/primitiveInputSimple.js +585 -0
  88. package/src/lightning/primitiveInputToggle/form-element.slds.css +289 -0
  89. package/src/lightning/primitiveInputToggle/input-toggle.slds.css +170 -0
  90. package/src/lightning/primitiveInputToggle/primitiveInputToggle.css +3 -0
  91. package/src/lightning/primitiveInputToggle/primitiveInputToggle.html +34 -0
  92. package/src/lightning/primitiveInputToggle/primitiveInputToggle.js +164 -0
  93. package/src/lightning/radioGroup/input-radio-group.slds.css +57 -57
  94. package/src/lightning/select/form-element.slds.css +8 -0
  95. package/src/lightning/select/select.js +1 -0
  96. package/src/lightning/select/select.slds.css +30 -22
  97. package/src/lightning/sldsCommon/sldsCommon.css +21 -0
  98. package/src/lightning/spinner/spinner.js +8 -4
  99. package/src/lightning/spinner/spinner.slds.css +34 -34
  100. package/src/lightning/tab/tab.css +2 -0
  101. package/src/lightning/tab/tab.js +37 -14
  102. package/src/lightning/tab/tab.slds.css +47 -0
  103. package/src/lightning/tabBar/tab-bar.slds.css +5 -5
  104. package/src/lightning/tabset/tabset.css +10 -0
  105. package/src/lightning/tabset/tabset.js +31 -7
  106. package/src/lightning/timepicker/form-element.slds.css +8 -0
  107. package/src/lightning/toast/button-icon.slds.css +9 -3
  108. package/src/lightning/toast/icon.slds.css +3 -3
  109. package/src/lightning/verticalNavigation/vertical-navigation.slds.css +1 -1
  110. package/src/lightning/baseCombobox/spinner.slds.css +0 -438
  111. /package/src/lightning/{input/emailUtil.js → inputUtils/email.js} +0 -0
  112. /package/src/lightning/{input → primitiveInputSimple}/normalize.js +0 -0
  113. /package/src/lightning/{input → primitiveInputSimple}/selection.js +0 -0
@@ -0,0 +1,289 @@
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
+
282
+ /* --------------------------------------- */
283
+
284
+ /* FORM ELEMENT: HIDDEN */
285
+
286
+ :host([data-render-mode="shadow"][variant~='label-hidden']) .slds-form-element__label {
287
+ display: none
288
+ }
289
+ }
@@ -173,7 +173,7 @@
173
173
  /**
174
174
  * Base
175
175
  */
176
- :host([data-render-mode="shadow"]) [part~='input-checkbox'] {
176
+ :host([data-render-mode="shadow"]) [part='input-checkbox'] {
177
177
  /* Label */
178
178
  --sds-c-inputcheckbox-label-spacing-inline-start: var(
179
179
  --slds-c-inputcheckbox-label-spacing-inline-start,
@@ -187,7 +187,7 @@
187
187
  /**
188
188
  * Label Container
189
189
  */
190
- :host([data-render-mode="shadow"]) [part~='label-container'] {
190
+ :host([data-render-mode="shadow"]) [part='label-container'] {
191
191
  display: inline-flex;
192
192
  align-items: center;
193
193
 
@@ -198,10 +198,10 @@
198
198
  /**
199
199
  * Label
200
200
  *
201
- * Add [part~='input-checkbox'] to increase specificity and
202
- * avoid collisions with other components using [part~='label'] (e.g. slds-input-text)
201
+ * Add [part='input-checkbox'] to increase specificity and
202
+ * avoid collisions with other components using [part='label'] (e.g. slds-input-text)
203
203
  */
204
- :host([data-render-mode="shadow"]) [part~='input-checkbox'] [part~='label'] {
204
+ :host([data-render-mode="shadow"]) [part='input-checkbox'] [part='label'] {
205
205
  color: var(--slds-c-inputcheckbox-label-color, var(--sds-g-color-neutral-base-30, #444444));
206
206
  font-size: var(--sds-g-font-scale-neg-2, 0.8125rem);
207
207
  margin-block-end: 0;
@@ -213,7 +213,7 @@
213
213
  *
214
214
  * Hidden from view, see Indicator for visual faux checkbox.
215
215
  */
216
- :host([data-render-mode="shadow"]) [part~='checkbox'] {
216
+ :host([data-render-mode="shadow"]) [part='checkbox'] {
217
217
  width: 1px;
218
218
  height: 1px;
219
219
  border: 0;
@@ -239,7 +239,7 @@
239
239
  * sds-input-checkbox uses sds-icon for its visual checkbox indicator. SLDS
240
240
  * + LBC uses a styled <span>. Due to this divergence, we require custom CSS.
241
241
  */
242
- :host([data-render-mode="shadow"]) [part~='indicator'] {
242
+ :host([data-render-mode="shadow"]) [part='indicator'] {
243
243
  position: relative;
244
244
  width: var(--slds-c-inputcheckbox-sizing, 1rem);
245
245
  height: var(--slds-c-inputcheckbox-sizing, 1rem);
@@ -254,7 +254,7 @@
254
254
  /**
255
255
  * Checked
256
256
  */
257
- :host([data-render-mode="shadow"][checked]) [part~='indicator']::after {
257
+ :host([data-render-mode="shadow"][checked]) [part='indicator']::after {
258
258
  content: '';
259
259
  height: calc(var(--slds-c-inputcheckbox-sizing, 1rem) / 4);
260
260
  width: calc(var(--slds-c-inputcheckbox-sizing, 1rem) / 2);
@@ -267,7 +267,7 @@
267
267
  border-left: 2px solid var(--slds-c-inputcheckbox-mark-color-foreground, var(--sds-g-color-brand-base-50, #0176d3));
268
268
  }
269
269
 
270
- :host([data-render-mode="shadow"][checked]) [part~='indicator'] {
270
+ :host([data-render-mode="shadow"][checked]) [part='indicator'] {
271
271
  --slds-c-inputcheckbox-color-background: var(--slds-c-inputcheckbox-color-background-checked);
272
272
  --slds-c-inputcheckbox-color-border: var(--slds-c-inputcheckbox-color-border-checked);
273
273
  }
@@ -275,7 +275,7 @@
275
275
  /**
276
276
  * Disabled
277
277
  */
278
- :host([data-render-mode="shadow"][disabled]) [part~='indicator'] {
278
+ :host([data-render-mode="shadow"][disabled]) [part='indicator'] {
279
279
  --slds-c-inputcheckbox-color-background: var(
280
280
  --slds-c-inputcheckbox-color-background-disabled,
281
281
  var(--sds-g-color-neutral-base-95, #f3f3f3)
@@ -290,7 +290,7 @@
290
290
  /**
291
291
  * Focused
292
292
  */
293
- :host([data-render-mode="shadow"]:focus-within) [part~='indicator'] {
293
+ :host([data-render-mode="shadow"]:focus-within) [part='indicator'] {
294
294
  --slds-c-inputcheckbox-color-background: var(--slds-c-inputcheckbox-color-background-focus);
295
295
  --slds-c-inputcheckbox-color-border: var(
296
296
  --slds-c-inputcheckbox-color-border-focus,
@@ -305,7 +305,7 @@
305
305
  /**
306
306
  * Invalid
307
307
  */
308
- :host([data-render-mode="shadow"][invalid]) [part~='indicator'] {
308
+ :host([data-render-mode="shadow"][invalid]) [part='indicator'] {
309
309
  --slds-c-inputcheckbox-color-background: var(--slds-c-inputcheckbox-color-background-invalid);
310
310
  --slds-c-inputcheckbox-sizing-border: var(
311
311
  --slds-c-inputcheckbox-sizing-border-invalid,
@@ -321,7 +321,7 @@
321
321
  );
322
322
  }
323
323
 
324
- :host([data-render-mode="shadow"][invalid]) [part~='help-text'] {
324
+ :host([data-render-mode="shadow"][invalid]) [part='help-text'] {
325
325
  color: var(--slds-c-inputcheckbox-helptext-color-invalid, var(--sds-g-color-error-base-50, #ea001e));
326
326
  }
327
327
 
@@ -331,7 +331,7 @@
331
331
  * @TODO: Remove magic number for MQ
332
332
  */
333
333
  @media (min-width: 48em) {
334
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='label-container'] {
334
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='label-container'] {
335
335
  float: left;
336
336
 
337
337
  /* TODO: Get rid of these magic numbers */
@@ -340,19 +340,19 @@
340
340
  padding-inline-start: var(--sds-g-spacing-1, 0.25rem);
341
341
  }
342
342
 
343
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='input-checkbox'] {
343
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='input-checkbox'] {
344
344
  display: block;
345
345
  margin-inline-start: 33%;
346
346
  padding-block: var(--sds-g-spacing-1, 0.25rem);
347
347
  margin-block-end: var(--sds-g-spacing-2, 0.5rem);
348
348
  }
349
349
 
350
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='inline-help'] {
350
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='inline-help'] {
351
351
  float: left;
352
352
  padding-block-start: var(--sds-g-spacing-1, 0.25rem);
353
353
  }
354
354
 
355
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='indicator'] {
355
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='indicator'] {
356
356
  /* @TODO: add change to SDS, removes line-height from display inline */
357
357
  display: block;
358
358
  }
@@ -363,7 +363,7 @@
363
363
  *
364
364
  * label-inline & label-stacked uses the "standalone" checkbox that lives outside the label
365
365
  */
366
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='checkbox'],:host([data-render-mode="shadow"][variant~='label-stacked']) [part~='checkbox'] {
366
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='checkbox'],:host([data-render-mode="shadow"][variant~='label-stacked']) [part='checkbox'] {
367
367
  width: 1rem;
368
368
  height: 1rem;
369
369
  margin: 0;
@@ -0,0 +1,3 @@
1
+ /* @import 'lightning/sldsCommon';
2
+ @import './input-checkbox.slds.css';
3
+ @import './form-element.slds.css'; */
@@ -0,0 +1,48 @@
1
+ <template>
2
+ <template if:false={isStandardVariant}>
3
+ <label for="checkbox" part="label-container" class="slds-checkbox__label">
4
+ <template if:true={required}>
5
+ <abbr class="slds-required" title={labelRequired}>*</abbr>
6
+ </template>
7
+ <span class={computedLabelClass}>{label}</span>
8
+ </label>
9
+ <lightning-helptext if:true={fieldLevelHelp} content={fieldLevelHelp} alternative-text={helptextAlternativeText}></lightning-helptext>
10
+ </template>
11
+ <div class="slds-form-element__control slds-grow">
12
+ <span part="input-checkbox" class={computedCheckboxClass}>
13
+ <template if:true={isStandardVariant}>
14
+ <template if:true={required}>
15
+ <abbr class="slds-required" title={labelRequired}>*</abbr>
16
+ </template>
17
+ </template>
18
+ <input
19
+ type="checkbox"
20
+ part="checkbox"
21
+ id="checkbox"
22
+ aria-label={ariaLabel}
23
+ aria-invalid={ariaInvalid}
24
+ accesskey={accessKey}
25
+ onblur={handleBlur}
26
+ onfocus={handleFocus}
27
+ onchange={handleChange}
28
+ onclick={handleClick}
29
+ name={name}
30
+ required={required}
31
+ readonly={readOnly}
32
+ disabled={disabled}>
33
+ <template if:false={isStandardVariant}>
34
+ <span part="indicator" class="slds-checkbox_faux"></span>
35
+ </template>
36
+ <template if:true={isStandardVariant}>
37
+ <label for="checkbox" part="label-container" class="slds-checkbox__label">
38
+ <span part="indicator" class="slds-checkbox_faux"></span>
39
+ <span part="label" class={computedLabelClass}>{label}</span>
40
+ </label>
41
+ <lightning-helptext if:true={fieldLevelHelp} content={fieldLevelHelp} alternative-text={helptextAlternativeText}></lightning-helptext>
42
+ </template>
43
+ </span>
44
+ </div>
45
+ <template if:true={helpMessage}>
46
+ <div id="help-message" class="slds-form-element__help" data-help-message role="alert" part="help-text">{helpMessage}</div>
47
+ </template>
48
+ </template>
@@ -0,0 +1,139 @@
1
+ import { classSet } from 'lightning/utils';
2
+ import { VARIANT } from 'lightning/inputUtils';
3
+ import labelRequired from '@salesforce/label/LightningControl.required';
4
+ import { api } from 'lwc';
5
+ import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
6
+
7
+ import { isNativeComponent, reflectAttribute } from 'lightning/utilsPrivate';
8
+
9
+ export default class LightningPrimitiveInputCheckbox extends LightningShadowBaseClass {
10
+ @api required;
11
+ @api readOnly;
12
+ @api label;
13
+ @api labelHidden;
14
+ @api helptextAlternativeText;
15
+ @api fieldLevelHelp;
16
+ @api ariaInvalid;
17
+ @api ariaLabel;
18
+ @api accessKey;
19
+ @api name;
20
+ @api disabled;
21
+ @api variant;
22
+
23
+ @api
24
+ get checked() {
25
+ return this._checked;
26
+ }
27
+ set checked(value) {
28
+ this._setChecked(value);
29
+ }
30
+
31
+ @api
32
+ get helpMessage() {
33
+ return this._helpMessage;
34
+ }
35
+
36
+ set helpMessage(message) {
37
+ this._helpMessage = message;
38
+ reflectAttribute(this, 'invalid', !!message);
39
+ }
40
+
41
+ @api
42
+ get inputElement() {
43
+ if (!this.cachedInputElement) {
44
+ let inputElement = this.template.querySelector('input');
45
+ this.cachedInputElement = inputElement;
46
+ }
47
+ return this.cachedInputElement;
48
+ }
49
+
50
+ @api
51
+ get describedByElements() {
52
+ return this.template.querySelector('[data-help-message]');
53
+ }
54
+
55
+ @api
56
+ get isNativeShadow() {
57
+ return this._isNativeShadow;
58
+ }
59
+
60
+ labelRequired = labelRequired;
61
+ _helpMessage;
62
+
63
+ get isStandardVariant() {
64
+ return (
65
+ this.variant === VARIANT.STANDARD ||
66
+ this.variant === VARIANT.LABEL_HIDDEN
67
+ );
68
+ }
69
+
70
+ get isLabelHidden() {
71
+ return this.variant === VARIANT.LABEL_HIDDEN;
72
+ }
73
+
74
+ get computedCheckboxClass() {
75
+ return classSet('slds-checkbox')
76
+ .add({ 'slds-checkbox_standalone': !this.isStandardVariant })
77
+ .toString();
78
+ }
79
+
80
+ get computedLabelClass() {
81
+ return classSet('slds-form-element__label')
82
+ .add({ 'slds-assistive-text': this.isLabelHidden })
83
+ .toString();
84
+ }
85
+
86
+ handleBlur() {
87
+ this.dispatchEvent(new CustomEvent('blur'));
88
+ }
89
+
90
+ handleFocus() {
91
+ this.dispatchEvent(new CustomEvent('focus'));
92
+ }
93
+
94
+ _setChecked(value) {
95
+ value = Boolean(value);
96
+ this._checked = value;
97
+ reflectAttribute(this, 'checked', this.checked);
98
+ if (this.rendered && this.inputElement.checked !== value) {
99
+ this.inputElement.checked = this._checked;
100
+ }
101
+ }
102
+
103
+ handleChange(event) {
104
+ this._setChecked(event.target.checked);
105
+
106
+ const changeEvent = new CustomEvent('change', {
107
+ detail: {
108
+ composed: true,
109
+ bubbles: true,
110
+ checked: event.target.checked,
111
+ },
112
+ });
113
+ this.dispatchEvent(changeEvent);
114
+ }
115
+
116
+ handleClick() {
117
+ if (this.template.activeElement === null) {
118
+ this.template.querySelector("[type='checkbox']").focus();
119
+ }
120
+ }
121
+
122
+ connectedCallback() {
123
+ super.connectedCallback();
124
+ this._isNativeShadow = isNativeComponent(this);
125
+ }
126
+
127
+ renderedCallback() {
128
+ if (!this.rendered) {
129
+ this.inputElement.checked = this.checked;
130
+ }
131
+ reflectAttribute(this, 'disabled', this.disabled);
132
+ this.rendered = true;
133
+ }
134
+
135
+ disconnectedCallback() {
136
+ this.cachedInputElement = undefined;
137
+ this.rendered = false;
138
+ }
139
+ }