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.
- package/metadata/raptor.json +32 -9
- package/package.json +1 -1
- package/src/lightning/accordion/accordion.slds.css +26 -20
- package/src/lightning/accordionSection/accordion-section.slds.css +20 -14
- package/src/lightning/avatar/avatar.slds.css +10 -10
- package/src/lightning/baseCombobox/base-combobox.slds.css +23 -23
- package/src/lightning/baseCombobox/baseCombobox.css +1 -2
- package/src/lightning/baseCombobox/baseCombobox.html +7 -11
- package/src/lightning/baseCombobox/baseCombobox.js +84 -36
- package/src/lightning/breadcrumb/breadcrumb.js +4 -2
- package/src/lightning/breadcrumb/breadcrumb.slds.css +3 -3
- package/src/lightning/breadcrumbs/breadcrumbs.slds.css +5 -5
- package/src/lightning/button/button.slds.css +8 -2
- package/src/lightning/buttonGroup/button-group.slds.css +5 -5
- package/src/lightning/buttonIcon/button-icon.slds.css +9 -3
- package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +15 -9
- package/src/lightning/buttonMenu/button-menu.slds.css +13 -7
- package/src/lightning/buttonStateful/button-stateful.slds.css +11 -5
- package/src/lightning/calendar/calendar.js +15 -23
- package/src/lightning/calendar/calendar.slds.css +29 -23
- package/src/lightning/card/card.slds.css +68 -68
- package/src/lightning/combobox/combobox.slds.css +1 -1
- package/src/lightning/combobox/form-element.slds.css +8 -0
- package/src/lightning/datatable/datatable.js +4 -0
- package/src/lightning/datatable/keyboard.js +8 -4
- package/src/lightning/datatable/sort.js +1 -1
- package/src/lightning/datepicker/datepicker.js +1 -1
- package/src/lightning/datepicker/form-element.slds.css +8 -0
- package/src/lightning/datepicker/input-text.slds.css +23 -23
- package/src/lightning/datetimepicker/form-element.slds.css +8 -0
- package/src/lightning/datetimepicker/input-text.slds.css +23 -23
- package/src/lightning/dualListbox/form-element.slds.css +8 -0
- package/src/lightning/f6Controller/f6Controller.js +31 -22
- package/src/lightning/formattedDateTime/formattedDateTime.js +1 -1
- package/src/lightning/groupedCombobox/groupedCombobox.html +4 -0
- package/src/lightning/groupedCombobox/groupedCombobox.js +3 -2
- package/src/lightning/helptext/form-element.slds.css +8 -0
- package/src/lightning/helptext/help-text.slds.css +10 -4
- package/src/lightning/icon/icon.js +5 -1
- package/src/lightning/icon/icon.slds.css +3 -3
- package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.css +6 -0
- package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.html +2 -1
- package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.js +1 -1
- package/src/lightning/input/__examples__/number/number.html +0 -5
- package/src/lightning/input/form-element.slds.css +8 -0
- package/src/lightning/input/input.css +0 -2
- package/src/lightning/input/input.html +149 -239
- package/src/lightning/input/input.js +221 -539
- package/src/lightning/inputUtils/inputUtils.js +15 -20
- package/src/lightning/inputUtils/normalize.js +7 -0
- package/src/lightning/{input/numberUtil.js → inputUtils/number.js} +1 -1
- package/src/lightning/inputUtils/utils.js +18 -0
- package/src/lightning/layout/layout.js +1 -0
- package/src/lightning/layoutItem/layoutItem.js +1 -0
- package/src/lightning/modal/__docs__/modal.md +102 -3
- package/src/lightning/pill/avatar.slds.css +10 -10
- package/src/lightning/primitiveColorpickerButton/color-picker-button.slds.css +9 -9
- package/src/lightning/primitiveIcon/icon.slds.css +3 -3
- package/src/lightning/primitiveInputCheckbox/form-element.slds.css +289 -0
- package/src/lightning/{input → primitiveInputCheckbox}/input-checkbox.slds.css +18 -18
- package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.css +3 -0
- package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.html +48 -0
- package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js +139 -0
- package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +289 -0
- package/src/lightning/primitiveInputCheckboxButton/input-checkbox-button.slds.css +126 -0
- package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.css +6 -0
- package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.html +24 -0
- package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js +176 -0
- package/src/lightning/primitiveInputColor/form-element.slds.css +289 -0
- package/src/lightning/primitiveInputColor/input-color.slds.css +35 -0
- package/src/lightning/{input → primitiveInputColor}/input-text.slds.css +23 -23
- package/src/lightning/primitiveInputColor/primitiveInputColor.css +4 -0
- package/src/lightning/primitiveInputColor/primitiveInputColor.html +50 -0
- package/src/lightning/primitiveInputColor/primitiveInputColor.js +184 -0
- package/src/lightning/primitiveInputFile/button.slds.css +533 -0
- package/src/lightning/primitiveInputFile/form-element.slds.css +289 -0
- package/src/lightning/primitiveInputFile/input-file.slds.css +62 -0
- package/src/lightning/primitiveInputFile/primitiveInputFile.css +5 -0
- package/src/lightning/primitiveInputFile/primitiveInputFile.html +45 -0
- package/src/lightning/primitiveInputFile/primitiveInputFile.js +111 -0
- package/src/lightning/primitiveInputRadio/primitiveInputRadio.html +24 -0
- package/src/lightning/primitiveInputRadio/primitiveInputRadio.js +103 -0
- package/src/lightning/primitiveInputSimple/form-element.slds.css +289 -0
- package/src/lightning/primitiveInputSimple/input-text.slds.css +398 -0
- package/src/lightning/primitiveInputSimple/primitiveInputSimple.css +9 -0
- package/src/lightning/primitiveInputSimple/primitiveInputSimple.html +65 -0
- package/src/lightning/primitiveInputSimple/primitiveInputSimple.js +585 -0
- package/src/lightning/primitiveInputToggle/form-element.slds.css +289 -0
- package/src/lightning/primitiveInputToggle/input-toggle.slds.css +170 -0
- package/src/lightning/primitiveInputToggle/primitiveInputToggle.css +3 -0
- package/src/lightning/primitiveInputToggle/primitiveInputToggle.html +34 -0
- package/src/lightning/primitiveInputToggle/primitiveInputToggle.js +164 -0
- package/src/lightning/radioGroup/input-radio-group.slds.css +57 -57
- package/src/lightning/select/form-element.slds.css +8 -0
- package/src/lightning/select/select.js +1 -0
- package/src/lightning/select/select.slds.css +30 -22
- package/src/lightning/sldsCommon/sldsCommon.css +21 -0
- package/src/lightning/spinner/spinner.js +8 -4
- package/src/lightning/spinner/spinner.slds.css +34 -34
- package/src/lightning/tab/tab.css +2 -0
- package/src/lightning/tab/tab.js +37 -14
- package/src/lightning/tab/tab.slds.css +47 -0
- package/src/lightning/tabBar/tab-bar.slds.css +5 -5
- package/src/lightning/tabset/tabset.css +10 -0
- package/src/lightning/tabset/tabset.js +31 -7
- package/src/lightning/timepicker/form-element.slds.css +8 -0
- package/src/lightning/toast/button-icon.slds.css +9 -3
- package/src/lightning/toast/icon.slds.css +3 -3
- package/src/lightning/verticalNavigation/vertical-navigation.slds.css +1 -1
- package/src/lightning/baseCombobox/spinner.slds.css +0 -438
- /package/src/lightning/{input/emailUtil.js → inputUtils/email.js} +0 -0
- /package/src/lightning/{input → primitiveInputSimple}/normalize.js +0 -0
- /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
|
|
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
|
|
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
|
|
202
|
-
* avoid collisions with other components using [part
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,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
|
+
}
|