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
@@ -102,7 +102,7 @@
102
102
  /**
103
103
  * Input Text
104
104
  */
105
- :host([data-render-mode="shadow"]) [part~='input-text'] {
105
+ :host([data-render-mode="shadow"]) [part='input-text'] {
106
106
  /* Host reassignments to composed slds-icon */
107
107
  --slds-c-icon-color-foreground: var(
108
108
  --slds-c-inputtext-icon-color-foreground,
@@ -148,23 +148,23 @@
148
148
  /**
149
149
  * Input Container
150
150
  */
151
- :host([data-render-mode="shadow"]) [part~='input-container'] {
151
+ :host([data-render-mode="shadow"]) [part='input-container'] {
152
152
  flex: 1 0 100%;
153
153
  align-items: stretch;
154
154
  }
155
155
 
156
- :host([data-render-mode="shadow"]) [part~='input-container'][type~='range'] {
156
+ :host([data-render-mode="shadow"]) [part='input-container'][type~='range'] {
157
157
  border: none;
158
158
  display: inline-block;
159
159
  }
160
160
 
161
- :host([data-render-mode="shadow"]) [part~='input'][type~='range'] {
161
+ :host([data-render-mode="shadow"]) [part='input'][type~='range'] {
162
162
  min-height: calc(1.875rem + (1px * 2));
163
163
  margin: 0;
164
164
  }
165
165
 
166
- :host([data-render-mode="shadow"]) [part~='input-container'][type~='range']:focus-within,:host([data-render-mode="shadow"])
167
- [part~='input-container'][type~='range']:active {
166
+ :host([data-render-mode="shadow"]) [part='input-container'][type~='range']:focus-within,:host([data-render-mode="shadow"])
167
+ [part='input-container'][type~='range']:active {
168
168
  --sds-c-inputtext-color-border: var(--sds-g-color-brand-base-60, #1b96ff);
169
169
  --sds-c-inputtext-shadow: 0 0 3px var(--sds-g-color-brand-base-50, #0176d3);
170
170
  --sds-c-inputtext-color-background: var(--sds-g-color-neutral-base-100, #ffffff);
@@ -177,7 +177,7 @@
177
177
  /**
178
178
  * Input
179
179
  */
180
- :host([data-render-mode="shadow"]) [part~='input'] {
180
+ :host([data-render-mode="shadow"]) [part='input'] {
181
181
  padding-inline-start: var(
182
182
  --slds-c-inputtext-spacing-inline-start,
183
183
  var(--sds-g-spacing-3, 0.75rem));
@@ -191,8 +191,8 @@
191
191
  /**
192
192
  * Focus / active State
193
193
  */
194
- :host([data-render-mode="shadow"]) [part~="input-container"]:focus-within,:host([data-render-mode="shadow"])
195
- [part~="input-container"]:active {
194
+ :host([data-render-mode="shadow"]) [part="input-container"]:focus-within,:host([data-render-mode="shadow"])
195
+ [part="input-container"]:active {
196
196
  --sds-c-inputtext-color-border: var(--sds-g-color-brand-base-60, #1b96ff);
197
197
  --sds-c-inputtext-shadow: 0 0 3px var(--sds-g-color-brand-base-50, #0176d3);
198
198
  --sds-c-inputtext-color-background: var(--sds-g-color-neutral-base-100, #ffffff);
@@ -203,7 +203,7 @@
203
203
  /**
204
204
  * Read Only State
205
205
  */
206
- :host([data-render-mode="shadow"][readonly]) [part~='input-text'] {
206
+ :host([data-render-mode="shadow"][readonly]) [part='input-text'] {
207
207
  --sds-c-inputtext-spacing-inline-start-readonly: 0;
208
208
  --sds-c-inputtext-color-border-focus: transparent;
209
209
  --slds-c-inputtext-color-border: transparent;
@@ -218,7 +218,7 @@
218
218
  * tied to :host([aria-invalid]) which this subsystem does not use. Instead, it
219
219
  * uses :host([invalid]).
220
220
  */
221
- :host([data-render-mode="shadow"][invalid]) [part~='input-text'] {
221
+ :host([data-render-mode="shadow"][invalid]) [part='input-text'] {
222
222
  --sds-c-inputtext-shadow: 0 0 0 var(--sds-g-sizing-border-1, 1px) inset
223
223
  var(--sds-g-color-error-base-50, #ea001e);
224
224
  --slds-c-inputtext-color-border: var(--sds-g-color-error-base-50, #ea001e);
@@ -231,7 +231,7 @@
231
231
  * The following styling hooks are included in SDS and need to be reassigned
232
232
  * here to prevent a bug with the focus state border and box-shadow
233
233
  */
234
- :host([data-render-mode="shadow"][invalid]) [part~='input-container']:focus-within {
234
+ :host([data-render-mode="shadow"][invalid]) [part='input-container']:focus-within {
235
235
  --sds-c-inputtext-shadow:
236
236
  var(--sds-g-color-error-base-50, #ea001e) 0 0 0 var(--sds-g-sizing-border-1, 1px) inset,
237
237
  0 0 var(--sds-g-sizing-border-3, 3px) var(--sds-g-color-brand-base-50, #0176d3);
@@ -243,7 +243,7 @@
243
243
  *
244
244
  * Both parts form the visible form control.
245
245
  */
246
- :host([data-render-mode="shadow"][disabled]) [part~='input-container'],:host([data-render-mode="shadow"][disabled]) [part~='input'] {
246
+ :host([data-render-mode="shadow"][disabled]) [part='input-container'],:host([data-render-mode="shadow"][disabled]) [part='input'] {
247
247
  cursor: not-allowed;
248
248
  --sds-c-inputtext-color-background: var(--sds-g-color-neutral-base-95, #f3f3f3);
249
249
  --sds-c-inputtext-color-border: var(--sds-g-color-neutral-base-80, #c9c9c9);
@@ -253,10 +253,10 @@
253
253
  /**
254
254
  * Label
255
255
  *
256
- * Add [part~='input-text'] to increase specificity and
257
- * avoid collisions with other components using [part~='label'] (e.g. slds-input-checkbox)
256
+ * Add [part='input-text'] to increase specificity and
257
+ * avoid collisions with other components using [part='label'] (e.g. slds-input-checkbox)
258
258
  */
259
- :host([data-render-mode="shadow"]) [part~='input-text'] [part~='label'] {
259
+ :host([data-render-mode="shadow"]) [part='input-text'] [part='label'] {
260
260
  padding-block-start: var(--sds-g-spacing-1, 0.25rem);
261
261
  padding-inline-end: var(--sds-g-spacing-2, 0.5rem);
262
262
  color: var(
@@ -280,7 +280,7 @@
280
280
  * so we don't add spacing to other icons composed in the component, e.g.,
281
281
  * the icon in the inline help text.
282
282
  */
283
- :host([data-render-mode="shadow"]) [part~='start'] {
283
+ :host([data-render-mode="shadow"]) [part='start'] {
284
284
  --slds-c-icon-spacing-inline-end: var(--sds-g-spacing-2, 0.5rem);
285
285
  }
286
286
 
@@ -297,11 +297,11 @@
297
297
  * Ref: https://github.com/salesforce-ux/design-system-internal/blob/240-winter-23/ui/components/form-element/horizontal/_index.scss#L63
298
298
  */
299
299
  @media (min-width: 48em) {
300
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='input-text'] {
300
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='input-text'] {
301
301
  display: block;
302
302
  }
303
303
 
304
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='label'] {
304
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='label'] {
305
305
  float: left;
306
306
 
307
307
  /* TODO: Get rid of these magic numbers */
@@ -309,11 +309,11 @@
309
309
  padding-block-start: var(--sds-g-spacing-1, 0.25rem);
310
310
  }
311
311
 
312
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='input-container'] {
312
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='input-container'] {
313
313
  margin-inline-start: 33%;
314
314
  }
315
315
 
316
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='inline-help'] {
316
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='inline-help'] {
317
317
  float: left;
318
318
  padding-block-start: var(--sds-g-spacing-1, 0.25rem);
319
319
  }
@@ -323,7 +323,7 @@
323
323
  left: var(--sds-g-spacing-3, 0.75rem);
324
324
  fill: var(--slds-g-color-neutral-base-50, #747474);
325
325
  }
326
-
326
+
327
327
  :host([data-render-mode="shadow"]) .slds-input-has-icon .slds-button_icon {
328
328
  background-color: transparent;
329
329
  }
@@ -375,7 +375,7 @@
375
375
  --slds-c-inputtext-spacing-inline-start: var(--sds-g-spacing-6, 2rem);
376
376
  --slds-c-inputtext-spacing-inline-end: var(--sds-g-spacing-6, 2rem);
377
377
  }
378
-
378
+
379
379
  /**
380
380
  * A temporarily baked-in utility class until SLDS gets a proper utility package.
381
381
  *
@@ -278,4 +278,12 @@
278
278
  :host([data-render-mode="shadow"]) .slds-form-element_address .slds-form-element__row {
279
279
  align-items: flex-end;
280
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
+ }
281
289
  }
@@ -102,7 +102,7 @@
102
102
  /**
103
103
  * Input Text
104
104
  */
105
- :host([data-render-mode="shadow"]) [part~='input-text'] {
105
+ :host([data-render-mode="shadow"]) [part='input-text'] {
106
106
  /* Host reassignments to composed slds-icon */
107
107
  --slds-c-icon-color-foreground: var(
108
108
  --slds-c-inputtext-icon-color-foreground,
@@ -148,23 +148,23 @@
148
148
  /**
149
149
  * Input Container
150
150
  */
151
- :host([data-render-mode="shadow"]) [part~='input-container'] {
151
+ :host([data-render-mode="shadow"]) [part='input-container'] {
152
152
  flex: 1 0 100%;
153
153
  align-items: stretch;
154
154
  }
155
155
 
156
- :host([data-render-mode="shadow"]) [part~='input-container'][type~='range'] {
156
+ :host([data-render-mode="shadow"]) [part='input-container'][type~='range'] {
157
157
  border: none;
158
158
  display: inline-block;
159
159
  }
160
160
 
161
- :host([data-render-mode="shadow"]) [part~='input'][type~='range'] {
161
+ :host([data-render-mode="shadow"]) [part='input'][type~='range'] {
162
162
  min-height: calc(1.875rem + (1px * 2));
163
163
  margin: 0;
164
164
  }
165
165
 
166
- :host([data-render-mode="shadow"]) [part~='input-container'][type~='range']:focus-within,:host([data-render-mode="shadow"])
167
- [part~='input-container'][type~='range']:active {
166
+ :host([data-render-mode="shadow"]) [part='input-container'][type~='range']:focus-within,:host([data-render-mode="shadow"])
167
+ [part='input-container'][type~='range']:active {
168
168
  --sds-c-inputtext-color-border: var(--sds-g-color-brand-base-60, #1b96ff);
169
169
  --sds-c-inputtext-shadow: 0 0 3px var(--sds-g-color-brand-base-50, #0176d3);
170
170
  --sds-c-inputtext-color-background: var(--sds-g-color-neutral-base-100, #ffffff);
@@ -177,7 +177,7 @@
177
177
  /**
178
178
  * Input
179
179
  */
180
- :host([data-render-mode="shadow"]) [part~='input'] {
180
+ :host([data-render-mode="shadow"]) [part='input'] {
181
181
  padding-inline-start: var(
182
182
  --slds-c-inputtext-spacing-inline-start,
183
183
  var(--sds-g-spacing-3, 0.75rem));
@@ -191,8 +191,8 @@
191
191
  /**
192
192
  * Focus / active State
193
193
  */
194
- :host([data-render-mode="shadow"]) [part~="input-container"]:focus-within,:host([data-render-mode="shadow"])
195
- [part~="input-container"]:active {
194
+ :host([data-render-mode="shadow"]) [part="input-container"]:focus-within,:host([data-render-mode="shadow"])
195
+ [part="input-container"]:active {
196
196
  --sds-c-inputtext-color-border: var(--sds-g-color-brand-base-60, #1b96ff);
197
197
  --sds-c-inputtext-shadow: 0 0 3px var(--sds-g-color-brand-base-50, #0176d3);
198
198
  --sds-c-inputtext-color-background: var(--sds-g-color-neutral-base-100, #ffffff);
@@ -203,7 +203,7 @@
203
203
  /**
204
204
  * Read Only State
205
205
  */
206
- :host([data-render-mode="shadow"][readonly]) [part~='input-text'] {
206
+ :host([data-render-mode="shadow"][readonly]) [part='input-text'] {
207
207
  --sds-c-inputtext-spacing-inline-start-readonly: 0;
208
208
  --sds-c-inputtext-color-border-focus: transparent;
209
209
  --slds-c-inputtext-color-border: transparent;
@@ -218,7 +218,7 @@
218
218
  * tied to :host([aria-invalid]) which this subsystem does not use. Instead, it
219
219
  * uses :host([invalid]).
220
220
  */
221
- :host([data-render-mode="shadow"][invalid]) [part~='input-text'] {
221
+ :host([data-render-mode="shadow"][invalid]) [part='input-text'] {
222
222
  --sds-c-inputtext-shadow: 0 0 0 var(--sds-g-sizing-border-1, 1px) inset
223
223
  var(--sds-g-color-error-base-50, #ea001e);
224
224
  --slds-c-inputtext-color-border: var(--sds-g-color-error-base-50, #ea001e);
@@ -231,7 +231,7 @@
231
231
  * The following styling hooks are included in SDS and need to be reassigned
232
232
  * here to prevent a bug with the focus state border and box-shadow
233
233
  */
234
- :host([data-render-mode="shadow"][invalid]) [part~='input-container']:focus-within {
234
+ :host([data-render-mode="shadow"][invalid]) [part='input-container']:focus-within {
235
235
  --sds-c-inputtext-shadow:
236
236
  var(--sds-g-color-error-base-50, #ea001e) 0 0 0 var(--sds-g-sizing-border-1, 1px) inset,
237
237
  0 0 var(--sds-g-sizing-border-3, 3px) var(--sds-g-color-brand-base-50, #0176d3);
@@ -243,7 +243,7 @@
243
243
  *
244
244
  * Both parts form the visible form control.
245
245
  */
246
- :host([data-render-mode="shadow"][disabled]) [part~='input-container'],:host([data-render-mode="shadow"][disabled]) [part~='input'] {
246
+ :host([data-render-mode="shadow"][disabled]) [part='input-container'],:host([data-render-mode="shadow"][disabled]) [part='input'] {
247
247
  cursor: not-allowed;
248
248
  --sds-c-inputtext-color-background: var(--sds-g-color-neutral-base-95, #f3f3f3);
249
249
  --sds-c-inputtext-color-border: var(--sds-g-color-neutral-base-80, #c9c9c9);
@@ -253,10 +253,10 @@
253
253
  /**
254
254
  * Label
255
255
  *
256
- * Add [part~='input-text'] to increase specificity and
257
- * avoid collisions with other components using [part~='label'] (e.g. slds-input-checkbox)
256
+ * Add [part='input-text'] to increase specificity and
257
+ * avoid collisions with other components using [part='label'] (e.g. slds-input-checkbox)
258
258
  */
259
- :host([data-render-mode="shadow"]) [part~='input-text'] [part~='label'] {
259
+ :host([data-render-mode="shadow"]) [part='input-text'] [part='label'] {
260
260
  padding-block-start: var(--sds-g-spacing-1, 0.25rem);
261
261
  padding-inline-end: var(--sds-g-spacing-2, 0.5rem);
262
262
  color: var(
@@ -280,7 +280,7 @@
280
280
  * so we don't add spacing to other icons composed in the component, e.g.,
281
281
  * the icon in the inline help text.
282
282
  */
283
- :host([data-render-mode="shadow"]) [part~='start'] {
283
+ :host([data-render-mode="shadow"]) [part='start'] {
284
284
  --slds-c-icon-spacing-inline-end: var(--sds-g-spacing-2, 0.5rem);
285
285
  }
286
286
 
@@ -297,11 +297,11 @@
297
297
  * Ref: https://github.com/salesforce-ux/design-system-internal/blob/240-winter-23/ui/components/form-element/horizontal/_index.scss#L63
298
298
  */
299
299
  @media (min-width: 48em) {
300
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='input-text'] {
300
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='input-text'] {
301
301
  display: block;
302
302
  }
303
303
 
304
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='label'] {
304
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='label'] {
305
305
  float: left;
306
306
 
307
307
  /* TODO: Get rid of these magic numbers */
@@ -309,11 +309,11 @@
309
309
  padding-block-start: var(--sds-g-spacing-1, 0.25rem);
310
310
  }
311
311
 
312
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='input-container'] {
312
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='input-container'] {
313
313
  margin-inline-start: 33%;
314
314
  }
315
315
 
316
- :host([data-render-mode="shadow"][variant~='label-inline']) [part~='inline-help'] {
316
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part='inline-help'] {
317
317
  float: left;
318
318
  padding-block-start: var(--sds-g-spacing-1, 0.25rem);
319
319
  }
@@ -323,7 +323,7 @@
323
323
  left: var(--sds-g-spacing-3, 0.75rem);
324
324
  fill: var(--slds-g-color-neutral-base-50, #747474);
325
325
  }
326
-
326
+
327
327
  :host([data-render-mode="shadow"]) .slds-input-has-icon .slds-button_icon {
328
328
  background-color: transparent;
329
329
  }
@@ -375,7 +375,7 @@
375
375
  --slds-c-inputtext-spacing-inline-start: var(--sds-g-spacing-6, 2rem);
376
376
  --slds-c-inputtext-spacing-inline-end: var(--sds-g-spacing-6, 2rem);
377
377
  }
378
-
378
+
379
379
  /**
380
380
  * A temporarily baked-in utility class until SLDS gets a proper utility package.
381
381
  *
@@ -278,4 +278,12 @@
278
278
  :host([data-render-mode="shadow"]) .slds-form-element_address .slds-form-element__row {
279
279
  align-items: flex-end;
280
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
+ }
281
289
  }
@@ -2,6 +2,11 @@ import { debounce } from 'lightning/inputUtils';
2
2
  import { findAllTabbableElements } from 'lightning/focusUtils';
3
3
  const DEBOUNCE_KEY_DOWN = 300;
4
4
 
5
+ /**
6
+ * The configuration for the F6 controller
7
+ * - navKey: the key used as a trigger for navigating between regions
8
+ * - f6RegionAttribute: attribute that defines f6 regions
9
+ */
5
10
  export const DEFAULT_CONFIG = {
6
11
  navKey: 'F6',
7
12
  f6RegionAttribute: 'data-f6-region',
@@ -34,7 +39,7 @@ export const getActiveElement = (element) => {
34
39
  * quickly move to designated regions in a page.
35
40
  * It handles logic for:
36
41
  * - Globally detecting F6 regions (i.e. registered components must have the data attribute stored in config - f6RegionAttribute
37
- * in their tag, by default, 'data-f6-region')
42
+ * in their tag, 'data-f6-region')
38
43
  * - Handling F6 keypresses by focusing and highlighting F6 regions
39
44
  * Supported keyboard shortcuts:
40
45
  * - Ctrl/Cmd + F6 to move focus to the next available registered region.
@@ -55,18 +60,15 @@ export class F6Controller {
55
60
  _styleElement;
56
61
 
57
62
  /**
58
- * Creates a F6Controller with the given configuration.
59
- * @param {Object} config - a configuration object
60
- * - config.navKey: the key used as a trigger for navigating between regions
61
- * - config.f6RegionAttribute: attribute that defines f6 regions
63
+ * Creates a F6Controller
62
64
  */
63
- constructor(config = {}) {
65
+ constructor() {
64
66
  // debounce function for handling keydown event
65
67
  this._debounceKeyDownHandler = debounce(
66
68
  this.handleKeyDown.bind(this),
67
69
  DEBOUNCE_KEY_DOWN
68
70
  );
69
- this.initialize(config);
71
+ this.initialize();
70
72
  }
71
73
 
72
74
  appendStyleElement() {
@@ -327,30 +329,37 @@ export class F6Controller {
327
329
  */
328
330
  populateRegions() {
329
331
  this.regions = [];
332
+ this.shadowTreeWalker(document.body);
333
+ }
330
334
 
335
+ /**
336
+ * Creates a tree walker from the given root and through
337
+ * the shadow DOM adding any F6 regions found
338
+ * @param {Element} root - element for tree walker to start from
339
+ */
340
+ shadowTreeWalker(root) {
331
341
  const treeWalker = document.createTreeWalker(
332
- document.body,
342
+ root,
333
343
  NodeFilter.SHOW_ELEMENT,
334
- this.elementFilter,
335
- false
344
+ this.elementFilter
336
345
  );
337
346
 
338
347
  while (treeWalker.nextNode()) {
339
- this.regions.push(treeWalker.currentNode);
348
+ if (treeWalker.currentNode.shadowRoot) {
349
+ this.shadowTreeWalker(treeWalker.currentNode.shadowRoot);
350
+ } else {
351
+ this.regions.push(treeWalker.currentNode);
352
+ }
340
353
  }
341
354
  }
342
355
 
343
356
  /**
344
357
  * Add document event listeners to handling all the F6 related interations
345
358
  */
346
- initialize(config = {}) {
359
+ initialize() {
347
360
  document.addEventListener('keydown', this._debounceKeyDownHandler);
348
361
  document.addEventListener('click', this.handleClick);
349
362
  this.regions = [];
350
- this.config = {
351
- ...this.config,
352
- ...config,
353
- };
354
363
  this.appendStyleElement();
355
364
  }
356
365
 
@@ -359,7 +368,6 @@ export class F6Controller {
359
368
  document.removeEventListener('keydown', this._debounceKeyDownHandler);
360
369
  document.removeEventListener('click', this.handleClick);
361
370
  this._regions = [];
362
- this._config = DEFAULT_CONFIG;
363
371
  this._debounceKeyDownHandler = null;
364
372
  if (this._styleElement) {
365
373
  document.head.removeChild(this._styleElement);
@@ -394,9 +402,10 @@ export class F6Controller {
394
402
  }
395
403
 
396
404
  if (
397
- element.matches(`*[${this.config.f6RegionAttribute}]`) &&
398
- this.isVisible(element) &&
399
- !this.isEmpty(element)
405
+ (element.matches(`*[${this.config.f6RegionAttribute}]`) &&
406
+ this.isVisible(element) &&
407
+ !this.isEmpty(element)) ||
408
+ element.shadowRoot
400
409
  ) {
401
410
  return NodeFilter.FILTER_ACCEPT;
402
411
  }
@@ -410,9 +419,9 @@ export class F6Controller {
410
419
  }
411
420
 
412
421
  let f6Controller;
413
- export const createF6Controller = (config) => {
422
+ export const createF6Controller = () => {
414
423
  if (!f6Controller) {
415
- f6Controller = new F6Controller(config);
424
+ f6Controller = new F6Controller();
416
425
  }
417
426
  return f6Controller;
418
427
  };
@@ -36,7 +36,7 @@ export default class LightningFormattedDateTime extends LightningElement {
36
36
  @api year;
37
37
 
38
38
  /**
39
- * Allowed values are 2-digit, narrow, short, or long.
39
+ * Allowed values are 2-digit, numeric, narrow, short, or long.
40
40
  * @type {string}
41
41
  *
42
42
  */
@@ -18,6 +18,7 @@
18
18
  data-filter
19
19
  onready={handleFilterReady}
20
20
  disabled={disabled}
21
+ read-only={readOnly}
21
22
  items={filterItems}
22
23
  input-text={filterInputText}
23
24
  input-icon-name="utility:down"
@@ -35,6 +36,7 @@
35
36
  data-lookup
36
37
  name={name}
37
38
  disabled={disabled}
39
+ read-only={readOnly}
38
40
  required={required}
39
41
  class={computedLookupComboboxClass}
40
42
  variant="lookup"
@@ -48,6 +50,8 @@
48
50
  input-icon-alternative-text={inputIconAlternativeText}
49
51
  show-input-activity-indicator={showActivityIndicator}
50
52
  show-dropdown-activity-indicator={showDropdownActivityIndicator}
53
+ custom-role={customRole}
54
+ custom-aria-has-popup={customAriaHasPopup}
51
55
  onready={handleLookupReady}
52
56
  ontextchange={handleTextChange}
53
57
  ontextinput={handleTextInput}
@@ -40,8 +40,6 @@ export default class LightningGroupedCombobox extends LightningElement {
40
40
  @api value;
41
41
  @api required = false;
42
42
  @api disabled = false;
43
- // TODO: Need to remove as if a readonly combobox is needed,
44
- // the regular lightning-combobox should be used
45
43
  @api readOnly = false;
46
44
 
47
45
  @api inputPill;
@@ -57,6 +55,9 @@ export default class LightningGroupedCombobox extends LightningElement {
57
55
  */
58
56
  @api disableDefaultHighlight;
59
57
 
58
+ @api customRole = 'combobox';
59
+ @api customAriaHasPopup = 'listbox';
60
+
60
61
  @track _pills;
61
62
 
62
63
  @track _variant;
@@ -278,4 +278,12 @@
278
278
  :host([data-render-mode="shadow"]) .slds-form-element_address .slds-form-element__row {
279
279
  align-items: flex-end;
280
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
+ }
281
289
  }
@@ -484,14 +484,20 @@ Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
484
484
  justify-content: center;
485
485
  }
486
486
 
487
+ /**
488
+ * Represents inner spacing around icon for icon-position="left", when present
489
+ */
487
490
  :host([data-render-mode="shadow"]) [part~='start'] {
488
491
  display: inline-flex;
489
- padding-inline-end: var(--sds-g-spacing-2, 0.5rem);
492
+ padding-inline-end: 0;
490
493
  }
491
494
 
495
+ /**
496
+ * Represents inner spacing around icon for icon-position="right", when present
497
+ */
492
498
  :host([data-render-mode="shadow"]) [part~='end'] {
493
499
  display: inline-flex;
494
- padding-inline-start: var(--sds-g-spacing-2, 0.5rem);
500
+ padding-inline-start: 0;
495
501
  }
496
502
  }
497
503
 
@@ -883,7 +889,7 @@ Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
883
889
  /**
884
890
  * End part
885
891
  */
886
- :host([data-render-mode="shadow"]) [part~='end'] {
892
+ :host([data-render-mode="shadow"]) [part='end'] {
887
893
  padding-inline-start: var(--slds-c-buttonicon-end-spacing-inline-start, 0);
888
894
  }
889
895
 
@@ -912,7 +918,7 @@ Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
912
918
  Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
913
919
 
914
920
  @supports (--styling-hooks: '') {
915
- :host([data-render-mode="shadow"]) [part~='help-text'] {
921
+ :host([data-render-mode="shadow"]) [part='help-text'] {
916
922
  --slds-c-buttonicon-color-background: var(--slds-c-helptext-color-background);
917
923
  --slds-c-buttonicon-color-background-hover: var(--slds-c-helptext-color-background-hover);
918
924
  --slds-c-buttonicon-color-background-focus: var(--slds-c-helptext-color-background-focus);
@@ -17,6 +17,7 @@ import { normalizeVariant } from './util';
17
17
  * Represents a visual element that provides context and enhances usability.
18
18
  */
19
19
  export default class LightningIcon extends LightningElement {
20
+ static validationOptOut = ['class'];
20
21
  _src;
21
22
  _privateIconName;
22
23
  _iconName;
@@ -172,7 +173,10 @@ export default class LightningIcon extends LightningElement {
172
173
  const name = getName(iconName);
173
174
  const color = iconColors[category] && iconColors[category][name];
174
175
  if (color) {
175
- this.template.host.style = `--sds-c-icon-color-background: var(--slds-c-icon-color-background, ${color});`;
176
+ this.setAttribute(
177
+ 'style',
178
+ `--sds-c-icon-color-background: var(--slds-c-icon-color-background, ${color})`
179
+ );
176
180
  }
177
181
  }
178
182
  }
@@ -84,7 +84,7 @@
84
84
  --slds-c-icon-color-foreground: var(--sds-g-color-neutral-base-70, #aeaeae);
85
85
  }
86
86
 
87
- :host([data-render-mode="shadow"]) [part~='boundary'] {
87
+ :host([data-render-mode="shadow"]) [part='boundary'] {
88
88
  /* --sds-c-icon-color-background: var(--slds-c-icon-color-background); */
89
89
  --sds-c-icon-radius-border: var(--slds-c-icon-radius-border, var(--sds-g-radius-border-2, 0.25rem));
90
90
  --sds-c-icon-sizing-border: var(--slds-c-icon-sizing-border);
@@ -114,7 +114,7 @@
114
114
  display: inline-flex;
115
115
  }
116
116
 
117
- :host([data-render-mode="shadow"]) [part~='icon'] {
117
+ :host([data-render-mode="shadow"]) [part='icon'] {
118
118
  --sds-c-icon-color-foreground: var(--slds-c-icon-color-foreground, var(--sds-g-color-neutral-base-100, #ffffff));
119
119
  --sds-c-icon-sizing-height: var(--slds-c-icon-sizing-height, var(--slds-c-icon-sizing, var(--sds-g-sizing-9, 2rem)));
120
120
  --sds-c-icon-sizing-width: var(--slds-c-icon-sizing-width, var(--slds-c-icon-sizing, var(--sds-g-sizing-9, 2rem)));
@@ -199,7 +199,7 @@
199
199
 
200
200
  :host([data-render-mode="shadow"]) .slds-input__icon {
201
201
  --slds-c-icon-sizing: calc(var(--sds-g-sizing-1, 0.125rem) + var(--sds-g-sizing-4, 0.75rem));
202
-
202
+
203
203
  position: absolute;
204
204
  top: 50%;
205
205
  margin-block-start: -0.4375rem;
@@ -0,0 +1,6 @@
1
+ .slds-box {
2
+ padding: 1rem;
3
+ margin: 0;
4
+ border-radius: .25rem;
5
+ border: 1px solid lightgrey;
6
+ }
@@ -3,6 +3,7 @@
3
3
  <h2 class="header">Input Checkbox Button</h2>
4
4
  <lightning-input type="checkbox-button" label="Input One" name="input1"></lightning-input>
5
5
  <lightning-input type="checkbox-button" label="Input Two" name="input2" checked required></lightning-input>
6
- <lightning-input type="checkbox-button" label="Input Three" name="input3" checked disabled></lightning-input>
6
+ <lightning-input type="checkbox-button" label="Input Three" name="input3" disabled></lightning-input>
7
+ <lightning-input type="checkbox-button" label="Input Four" name="input3" checked disabled></lightning-input>
7
8
  </div>
8
9
  </template>
@@ -1,3 +1,3 @@
1
1
  import { LightningElement } from 'lwc';
2
2
 
3
- export default class InputCheckboxBasic extends LightningElement {}
3
+ export default class InputCheckboxButton extends LightningElement {}
@@ -19,11 +19,6 @@
19
19
  <lightning-input type="number" name="input8" required value="5" label="Required number field with a maximum value of 99" max="99"></lightning-input>
20
20
  </div>
21
21
 
22
- <div>
23
- <h2>Input Counter</h2>
24
- <lightning-input type="counter" value="123" label="Input with a Counter"></lightning-input>
25
- </div>
26
-
27
22
  <div>
28
23
  <h2>Live Input Number</h2>
29
24
  <lightning-input type="number" name="seven" value={amount} onchange={handleAmountChange} placeholder="type the number of items..." label="Enter a number" ></lightning-input>