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,35 @@
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
+ @supports (--styling-hooks: '') {
6
+ :host([data-render-mode="shadow"]) [part~='color-picker'] {
7
+ position: relative;
8
+ }
9
+
10
+ :host([data-render-mode="shadow"]) .slds-color-picker__summary-label {
11
+ display: block;
12
+ }
13
+
14
+ :host([data-render-mode="shadow"]) [part~='input-text'] > *:first-child {
15
+ margin-inline-end: var(--sds-g-spacing-1, 0.25rem);
16
+ }
17
+
18
+ :host([data-render-mode="shadow"]) [part~='input-container'] {
19
+ flex: 0 0 var(--slds-c-inputcolor-input-sizing-width, 6rem);
20
+ margin-inline-end: var(--sds-g-spacing-2, 0.5rem);
21
+ }
22
+
23
+ /**
24
+ * Label Inline Variant
25
+ */
26
+ @media (min-width: 48em) {
27
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part~='input-text'] {
28
+ display: flex;
29
+ }
30
+
31
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part~='input-container'] {
32
+ margin-inline-start: 0%
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,4 @@
1
+ @import 'lightning/sldsCommon';
2
+ @import './form-element.slds.css';
3
+ @import './input-text.slds.css';
4
+ @import './input-color.slds.css';
@@ -0,0 +1,50 @@
1
+ <template>
2
+ <div class="slds-color-picker" part="color-picker">
3
+ <div class="slds-form-element slds-color-picker__summary">
4
+ <template if:false={hasExternalLabel}>
5
+ <label class={computedColorLabelClass} for="color">
6
+ <template if:true={required}>
7
+ <abbr class="slds-required" title={required}>*</abbr>
8
+ </template>
9
+ {label}
10
+ </label>
11
+ <lightning-helptext if:true={fieldLevelHelp} content={fieldLevelHelp} alternative-text={helptextAlternativeText}></lightning-helptext>
12
+ </template>
13
+ <div class="slds-form-element__control" part="input-text">
14
+ <lightning-primitive-colorpicker-button
15
+ value={value}
16
+ disabled={disabled}
17
+ onblur={handleBlur}
18
+ onfocus={handleFocus}
19
+ onchange={handleColorChange}>
20
+ </lightning-primitive-colorpicker-button>
21
+ <!--
22
+ Using <lightning-input type="text"> here would duplicate the label
23
+ and change the input id/class, but we want to use the input-text and
24
+ input-container parts since most of the CSS still applies here
25
+ -->
26
+ <div class="slds-color-picker__summary-input" part="input-container">
27
+ <input type="text" id="color" class="slds-input slds-m-right_x-small"
28
+ part="input"
29
+ name={name}
30
+ autocomplete={autocomplete}
31
+ accesskey={accessKey}
32
+ aria-label={ariaLabel}
33
+ aria-invalid={ariaInvalid}
34
+ disabled={disabled}
35
+ minlength="4"
36
+ maxlength="7"
37
+ placeholder={placeholder}
38
+ pattern={pattern}
39
+ onblur={handleBlur}
40
+ onfocus={handleFocus}
41
+ onchange={handleChange}
42
+ oninput={handleInput}>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </div>
47
+ <template if:true={helpMessage}>
48
+ <div id="help-message" class="slds-form-element__help" data-help-message role="alert" part="help-text">{helpMessage}</div>
49
+ </template>
50
+ </template>
@@ -0,0 +1,184 @@
1
+ import { api } from 'lwc';
2
+ import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
3
+ import { classSet } from 'lightning/utils';
4
+ import { VARIANT } from 'lightning/inputUtils';
5
+ import { reflectAttribute, isNativeComponent } from 'lightning/utilsPrivate';
6
+ export default class LightningPrimitiveInputColor extends LightningShadowBaseClass {
7
+ @api hasExternalLabel;
8
+ @api required;
9
+ @api accessKey;
10
+ @api label;
11
+ @api fieldLevelHelp;
12
+ @api helptextAlternativeText;
13
+ @api helpMessage;
14
+ @api disabled;
15
+ @api name;
16
+ @api autocomplete;
17
+ @api ariaLabel;
18
+ @api ariaInvalid;
19
+ @api placeholder;
20
+ @api pattern;
21
+ @api variant;
22
+
23
+ _value = '';
24
+
25
+ rendered = false;
26
+ initialValueSet = false;
27
+
28
+ @api
29
+ focus() {
30
+ if (this.rendered) {
31
+ this.inputElement.focus();
32
+ }
33
+ }
34
+
35
+ @api
36
+ get value() {
37
+ return this._value;
38
+ }
39
+
40
+ set value(value) {
41
+ this._value = this.normalizeInput(value);
42
+ if (this.rendered && this.inputElement.value !== this._value) {
43
+ this.setInputValue(this._value);
44
+ }
45
+ }
46
+
47
+ @api
48
+ get inputElement() {
49
+ if (!this.cachedInputElement) {
50
+ let inputElement = this.template.querySelector('input');
51
+ this.cachedInputElement = inputElement;
52
+ }
53
+ return this.cachedInputElement;
54
+ }
55
+
56
+ @api
57
+ get describedByElements() {
58
+ return this.template.querySelector('[data-help-message]');
59
+ }
60
+
61
+ @api
62
+ get isNativeShadow() {
63
+ return this._isNativeShadow;
64
+ }
65
+
66
+ /********* COMPONENT CALLBACKS *********/
67
+
68
+ connectedCallback() {
69
+ super.connectedCallback();
70
+ this._isNativeShadow = isNativeComponent(this);
71
+ }
72
+
73
+ disconnectedCallback() {
74
+ this.rendered = false;
75
+ this.initialValueSet = false;
76
+ this.cachedInputElement = undefined;
77
+ }
78
+
79
+ renderedCallback() {
80
+ this.rendered = true;
81
+ if (!this.initialValueSet) {
82
+ this.inputElement.value = this._value;
83
+ this.initialValueSet = true;
84
+ }
85
+ reflectAttribute(this, 'disabled', this.disabled);
86
+ reflectAttribute(this, 'invalid', !!this.helpMessage);
87
+ reflectAttribute(this, 'variant', this.variant);
88
+ }
89
+
90
+ /**
91
+ * This value is used to compute the label's class which depends on the variant of the component
92
+ */
93
+ get computedColorLabelClass() {
94
+ return classSet(
95
+ 'slds-form-element__label slds-color-picker__summary-label'
96
+ ).add({ 'slds-assistive-text': this.isLabelHidden });
97
+ }
98
+
99
+ get isLabelHidden() {
100
+ return this.variant === VARIANT.LABEL_HIDDEN;
101
+ }
102
+
103
+ /********* ACTION HANDLERS *********/
104
+
105
+ handleBlur() {
106
+ this.dispatchEvent(new CustomEvent('blur'));
107
+ }
108
+
109
+ handleFocus() {
110
+ this.dispatchEvent(new CustomEvent('focus'));
111
+ }
112
+
113
+ handleChange(event) {
114
+ event.stopPropagation();
115
+ this.dispatchCommitEvent();
116
+ this.dispatchChangeEvent();
117
+ }
118
+
119
+ /**
120
+ * This event handler is used whenever a new color is selected and sets the inputElement's
121
+ * value to the selectedColor, while focusing on the color picker button.
122
+ * @param {*} event
123
+ */
124
+ handleColorChange(event) {
125
+ const selectedColor = event.detail.color;
126
+ if (selectedColor !== this.inputElement.value) {
127
+ this.setInputValue(selectedColor);
128
+ this._value = selectedColor;
129
+ this.focus();
130
+ this.dispatchChangeEventWithDetail({ value: selectedColor });
131
+ this.dispatchCommitEvent();
132
+ }
133
+
134
+ this.template
135
+ .querySelector('lightning-primitive-colorpicker-button')
136
+ .focus();
137
+ }
138
+
139
+ handleInput(event) {
140
+ event.stopPropagation();
141
+ this.dispatchChangeEvent();
142
+ }
143
+
144
+ /********* EVENT DISPATCHERS *********/
145
+
146
+ dispatchChangeEventWithDetail(detail) {
147
+ this.dispatchEvent(
148
+ new CustomEvent('change', {
149
+ composed: true,
150
+ bubbles: true,
151
+ detail,
152
+ })
153
+ );
154
+ }
155
+
156
+ dispatchChangeEvent() {
157
+ const detail = { value: this.inputElement.value };
158
+ this._value = detail.value;
159
+ this.dispatchChangeEventWithDetail(detail);
160
+ }
161
+
162
+ dispatchCommitEvent() {
163
+ this.dispatchEvent(new CustomEvent('commit'));
164
+ }
165
+
166
+ /********* VALUE UPDATERS *********/
167
+
168
+ setInputValue(value) {
169
+ this.inputElement.value = value;
170
+ }
171
+
172
+ /********* HELPER METHODS *********/
173
+
174
+ /**
175
+ * TODO: lightning/inputUtils methods should be utilized in the second run of the input
176
+ * breakdown initiative.
177
+ */
178
+ normalizeInput(value) {
179
+ if (typeof value === 'number' || typeof value === 'string') {
180
+ return String(value);
181
+ }
182
+ return '';
183
+ }
184
+ }