@vaadin/multi-select-combo-box 24.2.3 → 24.3.0-alpha10
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/package.json +15 -15
- package/src/vaadin-multi-select-combo-box-container.js +19 -0
- package/src/vaadin-multi-select-combo-box-internal.js +52 -2
- package/src/vaadin-multi-select-combo-box.d.ts +22 -0
- package/src/vaadin-multi-select-combo-box.js +129 -3
- package/theme/lumo/vaadin-multi-select-combo-box-styles.js +24 -1
- package/theme/lumo/vaadin-multi-select-combo-box.js +0 -1
- package/theme/material/vaadin-multi-select-combo-box-styles.js +6 -0
- package/theme/material/vaadin-multi-select-combo-box.js +0 -1
- package/web-types.json +68 -2
- package/web-types.lit.json +23 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/multi-select-combo-box",
|
|
3
|
-
"version": "24.
|
|
3
|
+
"version": "24.3.0-alpha10",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -37,27 +37,27 @@
|
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@polymer/polymer": "^3.0.0",
|
|
40
|
-
"@vaadin/a11y-base": "
|
|
41
|
-
"@vaadin/combo-box": "
|
|
42
|
-
"@vaadin/component-base": "
|
|
43
|
-
"@vaadin/field-base": "
|
|
44
|
-
"@vaadin/input-container": "
|
|
45
|
-
"@vaadin/item": "
|
|
46
|
-
"@vaadin/lit-renderer": "
|
|
47
|
-
"@vaadin/overlay": "
|
|
48
|
-
"@vaadin/vaadin-lumo-styles": "
|
|
49
|
-
"@vaadin/vaadin-material-styles": "
|
|
50
|
-
"@vaadin/vaadin-themable-mixin": "
|
|
40
|
+
"@vaadin/a11y-base": "24.3.0-alpha10",
|
|
41
|
+
"@vaadin/combo-box": "24.3.0-alpha10",
|
|
42
|
+
"@vaadin/component-base": "24.3.0-alpha10",
|
|
43
|
+
"@vaadin/field-base": "24.3.0-alpha10",
|
|
44
|
+
"@vaadin/input-container": "24.3.0-alpha10",
|
|
45
|
+
"@vaadin/item": "24.3.0-alpha10",
|
|
46
|
+
"@vaadin/lit-renderer": "24.3.0-alpha10",
|
|
47
|
+
"@vaadin/overlay": "24.3.0-alpha10",
|
|
48
|
+
"@vaadin/vaadin-lumo-styles": "24.3.0-alpha10",
|
|
49
|
+
"@vaadin/vaadin-material-styles": "24.3.0-alpha10",
|
|
50
|
+
"@vaadin/vaadin-themable-mixin": "24.3.0-alpha10"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@esm-bundle/chai": "^4.3.4",
|
|
54
|
-
"@vaadin/testing-helpers": "^0.
|
|
55
|
-
"lit": "^
|
|
54
|
+
"@vaadin/testing-helpers": "^0.6.0",
|
|
55
|
+
"lit": "^3.0.0",
|
|
56
56
|
"sinon": "^13.0.2"
|
|
57
57
|
},
|
|
58
58
|
"web-types": [
|
|
59
59
|
"web-types.json",
|
|
60
60
|
"web-types.lit.json"
|
|
61
61
|
],
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "0271523d93fe5df0425ff64206886614f3c6f401"
|
|
63
63
|
}
|
|
@@ -14,6 +14,10 @@ registerStyles(
|
|
|
14
14
|
display: flex;
|
|
15
15
|
width: 100%;
|
|
16
16
|
}
|
|
17
|
+
|
|
18
|
+
:host([auto-expand-vertically]) #wrapper {
|
|
19
|
+
flex-wrap: wrap;
|
|
20
|
+
}
|
|
17
21
|
`,
|
|
18
22
|
{
|
|
19
23
|
moduleId: 'vaadin-multi-select-combo-box-container-styles',
|
|
@@ -49,6 +53,21 @@ class MultiSelectComboBoxContainer extends InputContainer {
|
|
|
49
53
|
}
|
|
50
54
|
return memoizedTemplate;
|
|
51
55
|
}
|
|
56
|
+
|
|
57
|
+
static get properties() {
|
|
58
|
+
return {
|
|
59
|
+
/**
|
|
60
|
+
* Set to true to not collapse selected items chips into the overflow
|
|
61
|
+
* chip and instead always expand vertically, causing input field to
|
|
62
|
+
* wrap into multiple lines when width is limited.
|
|
63
|
+
* @attr {boolean} auto-expand-vertically
|
|
64
|
+
*/
|
|
65
|
+
autoExpandVertically: {
|
|
66
|
+
type: Boolean,
|
|
67
|
+
reflectToAttribute: true,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
52
71
|
}
|
|
53
72
|
|
|
54
73
|
defineCustomElement(MultiSelectComboBoxContainer);
|
|
@@ -88,6 +88,15 @@ class MultiSelectComboBoxInternal extends ComboBoxDataProviderMixin(ComboBoxMixi
|
|
|
88
88
|
value: () => [],
|
|
89
89
|
},
|
|
90
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Set to true to group selected items at the top of the overlay.
|
|
93
|
+
* @attr {boolean} selected-items-on-top
|
|
94
|
+
*/
|
|
95
|
+
selectedItemsOnTop: {
|
|
96
|
+
type: Boolean,
|
|
97
|
+
value: false,
|
|
98
|
+
},
|
|
99
|
+
|
|
91
100
|
/**
|
|
92
101
|
* Last input value entered by the user before value is updated.
|
|
93
102
|
* Used to store `filter` property value before clearing it.
|
|
@@ -97,6 +106,14 @@ class MultiSelectComboBoxInternal extends ComboBoxDataProviderMixin(ComboBoxMixi
|
|
|
97
106
|
notify: true,
|
|
98
107
|
},
|
|
99
108
|
|
|
109
|
+
/**
|
|
110
|
+
* A subset of items to be shown at the top of the overlay.
|
|
111
|
+
*/
|
|
112
|
+
topGroup: {
|
|
113
|
+
type: Array,
|
|
114
|
+
observer: '_topGroupChanged',
|
|
115
|
+
},
|
|
116
|
+
|
|
100
117
|
_target: {
|
|
101
118
|
type: Object,
|
|
102
119
|
},
|
|
@@ -140,6 +157,39 @@ class MultiSelectComboBoxInternal extends ComboBoxDataProviderMixin(ComboBoxMixi
|
|
|
140
157
|
this._toggleElement = this.querySelector('.toggle-button');
|
|
141
158
|
}
|
|
142
159
|
|
|
160
|
+
/**
|
|
161
|
+
* Override combo-box method to group selected
|
|
162
|
+
* items at the top of the overlay.
|
|
163
|
+
*
|
|
164
|
+
* @protected
|
|
165
|
+
* @override
|
|
166
|
+
*/
|
|
167
|
+
_setDropdownItems(items) {
|
|
168
|
+
if (this.filter || this.readonly || !this.selectedItemsOnTop) {
|
|
169
|
+
this._dropdownItems = items;
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (items && items.length && this.topGroup && this.topGroup.length) {
|
|
174
|
+
// Filter out items included to the top group.
|
|
175
|
+
const filteredItems = items.filter(
|
|
176
|
+
(item) => !this.topGroup.some((selectedItem) => this._getItemValue(item) === this._getItemValue(selectedItem)),
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
this._dropdownItems = this.topGroup.concat(filteredItems);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
this._dropdownItems = items;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/** @private */
|
|
187
|
+
_topGroupChanged(topGroup) {
|
|
188
|
+
if (topGroup) {
|
|
189
|
+
this._setDropdownItems(this.filteredItems);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
143
193
|
/**
|
|
144
194
|
* Override combo-box method to set correct owner for using by item renderers.
|
|
145
195
|
* This needs to be done before the scroller gets added to the DOM to ensure
|
|
@@ -172,9 +222,9 @@ class MultiSelectComboBoxInternal extends ComboBoxDataProviderMixin(ComboBoxMixi
|
|
|
172
222
|
this.close();
|
|
173
223
|
} else {
|
|
174
224
|
// Keep selected item focused after committing on Enter.
|
|
175
|
-
const focusedItem = this.
|
|
225
|
+
const focusedItem = this._dropdownItems[this._focusedIndex];
|
|
176
226
|
this._commitValue();
|
|
177
|
-
this._focusedIndex = this.
|
|
227
|
+
this._focusedIndex = this._dropdownItems.indexOf(focusedItem);
|
|
178
228
|
}
|
|
179
229
|
|
|
180
230
|
return;
|
|
@@ -146,6 +146,7 @@ export interface MultiSelectComboBoxEventMap<TItem> extends HTMLElementEventMap
|
|
|
146
146
|
* `--vaadin-field-default-width` | Default width of the field | `12em`
|
|
147
147
|
* `--vaadin-multi-select-combo-box-overlay-width` | Width of the overlay | `auto`
|
|
148
148
|
* `--vaadin-multi-select-combo-box-overlay-max-height` | Max height of the overlay | `65vh`
|
|
149
|
+
* `--vaadin-multi-select-combo-box-chip-min-width` | Min width of the chip | `50px`
|
|
149
150
|
* `--vaadin-multi-select-combo-box-input-min-width` | Min width of the input | `4em`
|
|
150
151
|
*
|
|
151
152
|
* ### Internal components
|
|
@@ -171,6 +172,21 @@ export interface MultiSelectComboBoxEventMap<TItem> extends HTMLElementEventMap
|
|
|
171
172
|
* @fires {CustomEvent} validated - Fired whenever the field is validated.
|
|
172
173
|
*/
|
|
173
174
|
declare class MultiSelectComboBox<TItem = ComboBoxDefaultItem> extends HTMLElement {
|
|
175
|
+
/**
|
|
176
|
+
* Set to true to auto expand horizontally, causing input field to
|
|
177
|
+
* grow until max width is reached.
|
|
178
|
+
* @attr {boolean} auto-expand-horizontally
|
|
179
|
+
*/
|
|
180
|
+
autoExpandHorizontally: boolean;
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Set to true to not collapse selected items chips into the overflow
|
|
184
|
+
* chip and instead always expand vertically, causing input field to
|
|
185
|
+
* wrap into multiple lines when width is limited.
|
|
186
|
+
* @attr {boolean} auto-expand-vertically
|
|
187
|
+
*/
|
|
188
|
+
autoExpandVertically: boolean;
|
|
189
|
+
|
|
174
190
|
/**
|
|
175
191
|
* When true, the user can input a value that is not present in the items list.
|
|
176
192
|
* @attr {boolean} allow-custom-value
|
|
@@ -307,6 +323,12 @@ declare class MultiSelectComboBox<TItem = ComboBoxDefaultItem> extends HTMLEleme
|
|
|
307
323
|
*/
|
|
308
324
|
selectedItems: TItem[];
|
|
309
325
|
|
|
326
|
+
/**
|
|
327
|
+
* Set to true to group selected items at the top of the overlay.
|
|
328
|
+
* @attr {boolean} selected-items-on-top
|
|
329
|
+
*/
|
|
330
|
+
selectedItemsOnTop: boolean;
|
|
331
|
+
|
|
310
332
|
/**
|
|
311
333
|
* Total number of items.
|
|
312
334
|
*/
|
|
@@ -23,6 +23,7 @@ import { css, registerStyles, ThemableMixin } from '@vaadin/vaadin-themable-mixi
|
|
|
23
23
|
const multiSelectComboBox = css`
|
|
24
24
|
:host {
|
|
25
25
|
--input-min-width: var(--vaadin-multi-select-combo-box-input-min-width, 4em);
|
|
26
|
+
--_chip-min-width: var(--vaadin-multi-select-combo-box-chip-min-width, 50px);
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
#chips {
|
|
@@ -45,6 +46,14 @@ const multiSelectComboBox = css`
|
|
|
45
46
|
flex-basis: 0;
|
|
46
47
|
padding: 0;
|
|
47
48
|
}
|
|
49
|
+
|
|
50
|
+
:host([auto-expand-vertically]) #chips {
|
|
51
|
+
display: contents;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:host([auto-expand-horizontally]) [class$='container'] {
|
|
55
|
+
width: auto;
|
|
56
|
+
}
|
|
48
57
|
`;
|
|
49
58
|
|
|
50
59
|
registerStyles('vaadin-multi-select-combo-box', [inputFieldShared, multiSelectComboBox], {
|
|
@@ -103,6 +112,7 @@ registerStyles('vaadin-multi-select-combo-box', [inputFieldShared, multiSelectCo
|
|
|
103
112
|
* `--vaadin-field-default-width` | Default width of the field | `12em`
|
|
104
113
|
* `--vaadin-multi-select-combo-box-overlay-width` | Width of the overlay | `auto`
|
|
105
114
|
* `--vaadin-multi-select-combo-box-overlay-max-height` | Max height of the overlay | `65vh`
|
|
115
|
+
* `--vaadin-multi-select-combo-box-chip-min-width` | Min width of the chip | `50px`
|
|
106
116
|
* `--vaadin-multi-select-combo-box-input-min-width` | Min width of the input | `4em`
|
|
107
117
|
*
|
|
108
118
|
* ### Internal components
|
|
@@ -165,6 +175,8 @@ class MultiSelectComboBox extends ResizeMixin(InputControlMixin(ThemableMixin(El
|
|
|
165
175
|
size="{{size}}"
|
|
166
176
|
filtered-items="[[__effectiveFilteredItems]]"
|
|
167
177
|
selected-items="[[selectedItems]]"
|
|
178
|
+
selected-items-on-top="[[selectedItemsOnTop]]"
|
|
179
|
+
top-group="[[_topGroup]]"
|
|
168
180
|
opened="{{opened}}"
|
|
169
181
|
renderer="[[renderer]]"
|
|
170
182
|
theme$="[[_theme]]"
|
|
@@ -175,6 +187,7 @@ class MultiSelectComboBox extends ResizeMixin(InputControlMixin(ThemableMixin(El
|
|
|
175
187
|
>
|
|
176
188
|
<vaadin-multi-select-combo-box-container
|
|
177
189
|
part="input-field"
|
|
190
|
+
auto-expand-vertically="[[autoExpandVertically]]"
|
|
178
191
|
readonly="[[readonly]]"
|
|
179
192
|
disabled="[[disabled]]"
|
|
180
193
|
invalid="[[invalid]]"
|
|
@@ -211,6 +224,31 @@ class MultiSelectComboBox extends ResizeMixin(InputControlMixin(ThemableMixin(El
|
|
|
211
224
|
|
|
212
225
|
static get properties() {
|
|
213
226
|
return {
|
|
227
|
+
/**
|
|
228
|
+
* Set to true to auto expand horizontally, causing input field to
|
|
229
|
+
* grow until max width is reached.
|
|
230
|
+
* @attr {boolean} auto-expand-horizontally
|
|
231
|
+
*/
|
|
232
|
+
autoExpandHorizontally: {
|
|
233
|
+
type: Boolean,
|
|
234
|
+
value: false,
|
|
235
|
+
reflectToAttribute: true,
|
|
236
|
+
observer: '_autoExpandHorizontallyChanged',
|
|
237
|
+
},
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Set to true to not collapse selected items chips into the overflow
|
|
241
|
+
* chip and instead always expand vertically, causing input field to
|
|
242
|
+
* wrap into multiple lines when width is limited.
|
|
243
|
+
* @attr {boolean} auto-expand-vertically
|
|
244
|
+
*/
|
|
245
|
+
autoExpandVertically: {
|
|
246
|
+
type: Boolean,
|
|
247
|
+
value: false,
|
|
248
|
+
reflectToAttribute: true,
|
|
249
|
+
observer: '_autoExpandVerticallyChanged',
|
|
250
|
+
},
|
|
251
|
+
|
|
214
252
|
/**
|
|
215
253
|
* Set true to prevent the overlay from opening automatically.
|
|
216
254
|
* @attr {boolean} auto-open-disabled
|
|
@@ -430,6 +468,15 @@ class MultiSelectComboBox extends ResizeMixin(InputControlMixin(ThemableMixin(El
|
|
|
430
468
|
*/
|
|
431
469
|
filteredItems: Array,
|
|
432
470
|
|
|
471
|
+
/**
|
|
472
|
+
* Set to true to group selected items at the top of the overlay.
|
|
473
|
+
* @attr {boolean} selected-items-on-top
|
|
474
|
+
*/
|
|
475
|
+
selectedItemsOnTop: {
|
|
476
|
+
type: Boolean,
|
|
477
|
+
value: false,
|
|
478
|
+
},
|
|
479
|
+
|
|
433
480
|
/** @private */
|
|
434
481
|
value: {
|
|
435
482
|
type: String,
|
|
@@ -464,6 +511,11 @@ class MultiSelectComboBox extends ResizeMixin(InputControlMixin(ThemableMixin(El
|
|
|
464
511
|
_lastFilter: {
|
|
465
512
|
type: String,
|
|
466
513
|
},
|
|
514
|
+
|
|
515
|
+
/** @private */
|
|
516
|
+
_topGroup: {
|
|
517
|
+
type: Array,
|
|
518
|
+
},
|
|
467
519
|
};
|
|
468
520
|
}
|
|
469
521
|
|
|
@@ -471,6 +523,7 @@ class MultiSelectComboBox extends ResizeMixin(InputControlMixin(ThemableMixin(El
|
|
|
471
523
|
return [
|
|
472
524
|
'_selectedItemsChanged(selectedItems, selectedItems.*)',
|
|
473
525
|
'__updateOverflowChip(_overflow, _overflowItems, disabled, readonly)',
|
|
526
|
+
'__updateTopGroup(selectedItemsOnTop, selectedItems, opened)',
|
|
474
527
|
];
|
|
475
528
|
}
|
|
476
529
|
|
|
@@ -657,6 +710,20 @@ class MultiSelectComboBox extends ResizeMixin(InputControlMixin(ThemableMixin(El
|
|
|
657
710
|
super._delegateAttribute(name, value);
|
|
658
711
|
}
|
|
659
712
|
|
|
713
|
+
/** @private */
|
|
714
|
+
_autoExpandHorizontallyChanged(autoExpand, oldAutoExpand) {
|
|
715
|
+
if (autoExpand || oldAutoExpand) {
|
|
716
|
+
this.__updateChips();
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
/** @private */
|
|
721
|
+
_autoExpandVerticallyChanged(autoExpand, oldAutoExpand) {
|
|
722
|
+
if (autoExpand || oldAutoExpand) {
|
|
723
|
+
this.__updateChips();
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
|
|
660
727
|
/**
|
|
661
728
|
* Setting clear button visible reduces total space available
|
|
662
729
|
* for rendering chips, and making it hidden increases it.
|
|
@@ -735,6 +802,10 @@ class MultiSelectComboBox extends ResizeMixin(InputControlMixin(ThemableMixin(El
|
|
|
735
802
|
|
|
736
803
|
// Update selected for dropdown items
|
|
737
804
|
this.requestContentUpdate();
|
|
805
|
+
|
|
806
|
+
if (this.opened) {
|
|
807
|
+
this.$.comboBox.$.overlay._updateOverlayWidth();
|
|
808
|
+
}
|
|
738
809
|
}
|
|
739
810
|
|
|
740
811
|
/** @private */
|
|
@@ -823,6 +894,15 @@ class MultiSelectComboBox extends ResizeMixin(InputControlMixin(ThemableMixin(El
|
|
|
823
894
|
this.dispatchEvent(new CustomEvent('change', { bubbles: true }));
|
|
824
895
|
}
|
|
825
896
|
|
|
897
|
+
/** @private */
|
|
898
|
+
__updateTopGroup(selectedItemsOnTop, selectedItems, opened) {
|
|
899
|
+
if (!selectedItemsOnTop) {
|
|
900
|
+
this._topGroup = [];
|
|
901
|
+
} else if (!opened) {
|
|
902
|
+
this._topGroup = [...selectedItems];
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
|
|
826
906
|
/** @private */
|
|
827
907
|
__createChip(item) {
|
|
828
908
|
const chip = document.createElement('vaadin-multi-select-combo-box-chip');
|
|
@@ -887,14 +967,60 @@ class MultiSelectComboBox extends ResizeMixin(InputControlMixin(ThemableMixin(El
|
|
|
887
967
|
remainingWidth -= this.__getOverflowWidth();
|
|
888
968
|
}
|
|
889
969
|
|
|
970
|
+
const chipMinWidth = parseInt(getComputedStyle(this).getPropertyValue('--_chip-min-width'));
|
|
971
|
+
|
|
972
|
+
if (this.autoExpandHorizontally) {
|
|
973
|
+
const chips = [];
|
|
974
|
+
|
|
975
|
+
// First, add all chips to make the field fully expand
|
|
976
|
+
for (let i = items.length - 1, refNode = null; i >= 0; i--) {
|
|
977
|
+
const chip = this.__createChip(items[i]);
|
|
978
|
+
this.insertBefore(chip, refNode);
|
|
979
|
+
refNode = chip;
|
|
980
|
+
chips.unshift(chip);
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
const overflowItems = [];
|
|
984
|
+
const availableWidth = this._inputField.$.wrapper.clientWidth - this.$.chips.clientWidth;
|
|
985
|
+
|
|
986
|
+
// When auto expanding vertically, no need to measure width
|
|
987
|
+
if (!this.autoExpandVertically && availableWidth < inputWidth) {
|
|
988
|
+
// Always show at least last item as a chip
|
|
989
|
+
while (chips.length > 1) {
|
|
990
|
+
const lastChip = chips.pop();
|
|
991
|
+
lastChip.remove();
|
|
992
|
+
overflowItems.unshift(items.pop());
|
|
993
|
+
|
|
994
|
+
// Remove chips until there is enough width for the input element to fit
|
|
995
|
+
const neededWidth = overflowItems.length > 0 ? inputWidth + this.__getOverflowWidth() : inputWidth;
|
|
996
|
+
if (this._inputField.$.wrapper.clientWidth - this.$.chips.clientWidth >= neededWidth) {
|
|
997
|
+
break;
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
if (chips.length === 1) {
|
|
1002
|
+
chips[0].style.maxWidth = `${Math.max(chipMinWidth, remainingWidth)}px`;
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
this._overflowItems = overflowItems;
|
|
1007
|
+
return;
|
|
1008
|
+
}
|
|
1009
|
+
|
|
890
1010
|
// Add chips until remaining width is exceeded
|
|
891
1011
|
for (let i = items.length - 1, refNode = null; i >= 0; i--) {
|
|
892
1012
|
const chip = this.__createChip(items[i]);
|
|
893
1013
|
this.insertBefore(chip, refNode);
|
|
894
1014
|
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
1015
|
+
// When auto expanding vertically, no need to measure remaining width
|
|
1016
|
+
if (!this.autoExpandVertically && this.$.chips.clientWidth > remainingWidth) {
|
|
1017
|
+
// Always show at least last selected item as a chip
|
|
1018
|
+
if (refNode === null) {
|
|
1019
|
+
chip.style.maxWidth = `${Math.max(chipMinWidth, remainingWidth)}px`;
|
|
1020
|
+
} else {
|
|
1021
|
+
chip.remove();
|
|
1022
|
+
break;
|
|
1023
|
+
}
|
|
898
1024
|
}
|
|
899
1025
|
|
|
900
1026
|
items.pop();
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright (c) 2021 - 2023 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
|
+
import '@vaadin/input-container/theme/lumo/vaadin-input-container-styles.js';
|
|
6
7
|
import '@vaadin/vaadin-lumo-styles/color.js';
|
|
7
8
|
import '@vaadin/vaadin-lumo-styles/font-icons.js';
|
|
8
9
|
import '@vaadin/vaadin-lumo-styles/style.js';
|
|
@@ -47,6 +48,16 @@ registerStyles(
|
|
|
47
48
|
{ moduleId: 'lumo-multi-select-combo-box-overlay' },
|
|
48
49
|
);
|
|
49
50
|
|
|
51
|
+
registerStyles(
|
|
52
|
+
'vaadin-multi-select-combo-box-container',
|
|
53
|
+
css`
|
|
54
|
+
:host([auto-expand-vertically]) {
|
|
55
|
+
padding-block: var(--lumo-space-xs);
|
|
56
|
+
}
|
|
57
|
+
`,
|
|
58
|
+
{ moduleId: 'lumo-multi-select-combo-box-container' },
|
|
59
|
+
);
|
|
60
|
+
|
|
50
61
|
const multiSelectComboBox = css`
|
|
51
62
|
:host([has-value]) {
|
|
52
63
|
padding-inline-start: 0;
|
|
@@ -56,6 +67,10 @@ const multiSelectComboBox = css`
|
|
|
56
67
|
caret-color: var(--lumo-body-text-color) !important;
|
|
57
68
|
}
|
|
58
69
|
|
|
70
|
+
[part='label'] {
|
|
71
|
+
flex-shrink: 0;
|
|
72
|
+
}
|
|
73
|
+
|
|
59
74
|
/* Override input-container styles */
|
|
60
75
|
::slotted([slot='chip']),
|
|
61
76
|
::slotted([slot='overflow']) {
|
|
@@ -66,17 +81,25 @@ const multiSelectComboBox = css`
|
|
|
66
81
|
mask-image: none;
|
|
67
82
|
}
|
|
68
83
|
|
|
84
|
+
:host([auto-expand-vertically]) ::slotted([slot='chip']) {
|
|
85
|
+
margin-block: calc(var(--lumo-space-xs) / 2);
|
|
86
|
+
}
|
|
87
|
+
|
|
69
88
|
::slotted([slot='chip']:not([readonly]):not([disabled])) {
|
|
70
89
|
padding-inline-end: 0;
|
|
71
90
|
}
|
|
72
91
|
|
|
92
|
+
:host([auto-expand-vertically]) ::slotted([slot='input']) {
|
|
93
|
+
min-height: calc(var(--lumo-text-field-size, var(--lumo-size-m)) - 2 * var(--lumo-space-xs));
|
|
94
|
+
}
|
|
95
|
+
|
|
73
96
|
::slotted([slot='chip']:not(:last-of-type)),
|
|
74
97
|
::slotted([slot='overflow']:not(:last-of-type)) {
|
|
75
98
|
margin-inline-end: var(--lumo-space-xs);
|
|
76
99
|
}
|
|
77
100
|
|
|
78
101
|
::slotted([slot='chip'][focused]) {
|
|
79
|
-
background-color: var(--lumo-primary-color);
|
|
102
|
+
background-color: var(--vaadin-selection-color, var(--lumo-primary-color));
|
|
80
103
|
color: var(--lumo-primary-contrast-color);
|
|
81
104
|
}
|
|
82
105
|
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Copyright (c) 2021 - 2023 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
|
-
import '@vaadin/input-container/theme/lumo/vaadin-input-container.js';
|
|
7
6
|
import '@vaadin/overlay/theme/lumo/vaadin-overlay.js';
|
|
8
7
|
import './vaadin-multi-select-combo-box-chip-styles.js';
|
|
9
8
|
import './vaadin-multi-select-combo-box-styles.js';
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright (c) 2021 - 2023 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
|
+
import '@vaadin/input-container/theme/material/vaadin-input-container-styles.js';
|
|
6
7
|
import '@vaadin/vaadin-material-styles/color.js';
|
|
7
8
|
import '@vaadin/vaadin-material-styles/font-icons.js';
|
|
8
9
|
import '@vaadin/vaadin-material-styles/typography.js';
|
|
@@ -55,6 +56,11 @@ const multiSelectComboBox = css`
|
|
|
55
56
|
padding: 0 0.5rem;
|
|
56
57
|
}
|
|
57
58
|
|
|
59
|
+
:host([auto-expand-vertically]) ::slotted([slot='chip']) {
|
|
60
|
+
margin-top: 0.25rem;
|
|
61
|
+
align-self: flex-start;
|
|
62
|
+
}
|
|
63
|
+
|
|
58
64
|
::slotted([slot='chip']:not([readonly]):not([disabled])) {
|
|
59
65
|
padding-inline-end: 0;
|
|
60
66
|
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Copyright (c) 2021 - 2023 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
|
-
import '@vaadin/input-container/theme/material/vaadin-input-container.js';
|
|
7
6
|
import '@vaadin/overlay/theme/material/vaadin-overlay.js';
|
|
8
7
|
import './vaadin-multi-select-combo-box-chip-styles.js';
|
|
9
8
|
import './vaadin-multi-select-combo-box-styles.js';
|
package/web-types.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/web-types",
|
|
3
3
|
"name": "@vaadin/multi-select-combo-box",
|
|
4
|
-
"version": "24.
|
|
4
|
+
"version": "24.3.0-alpha10",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
8
8
|
"elements": [
|
|
9
9
|
{
|
|
10
10
|
"name": "vaadin-multi-select-combo-box",
|
|
11
|
-
"description": "`<vaadin-multi-select-combo-box>` is a web component that wraps `<vaadin-combo-box>` and extends\nits functionality to allow selecting multiple items, in addition to basic features.\n\n```html\n<vaadin-multi-select-combo-box id=\"comboBox\"></vaadin-multi-select-combo-box>\n```\n```js\nconst comboBox = document.querySelector('#comboBox');\ncomboBox.items = ['apple', 'banana', 'lemon', 'orange'];\ncomboBox.selectedItems = ['lemon', 'orange'];\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n-----------------------|----------------\n`chips` | The element that wraps slotted chips for selected items\n`label` | The label element\n`input-field` | The element that wraps prefix, value and suffix\n`clear-button` | The clear button\n`error-message` | The error message element\n`helper-text` | The helper text element wrapper\n`required-indicator` | The `required` state indicator element\n`toggle-button` | The toggle button\n\nThe following state attributes are available for styling:\n\nAttribute | Description\n-----------------------|-----------------\n`disabled` | Set to a disabled element\n`has-value` | Set when the element has a value\n`has-label` | Set when the element has a label\n`has-helper` | Set when the element has helper text or slot\n`has-error-message` | Set when the element has an error message\n`invalid` | Set when the element is invalid\n`focused` | Set when the element is focused\n`focus-ring` | Set when the element is keyboard focused\n`loading` | Set when loading items from the data provider\n`opened` | Set when the dropdown is open\n`readonly` | Set to a readonly element\n\nThe following custom CSS properties are available for styling:\n\nCustom property | Description | Default\n-----------------------------------------------------|----------------------------|--------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n`--vaadin-multi-select-combo-box-overlay-width` | Width of the overlay | `auto`\n`--vaadin-multi-select-combo-box-overlay-max-height` | Max height of the overlay | `65vh`\n`--vaadin-multi-select-combo-box-input-min-width` | Min width of the input | `4em`\n\n### Internal components\n\nIn addition to `<vaadin-multi-select-combo-box>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-multi-select-combo-box-overlay>` - has the same API as `<vaadin-overlay>`.\n- `<vaadin-multi-select-combo-box-item>` - has the same API as `<vaadin-item>`.\n- `<vaadin-multi-select-combo-box-container>` - has the same API as `<vaadin-input-container>`.\n\nNote: the `theme` attribute value set on `<vaadin-multi-select-combo-box>` is\npropagated to these components.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
11
|
+
"description": "`<vaadin-multi-select-combo-box>` is a web component that wraps `<vaadin-combo-box>` and extends\nits functionality to allow selecting multiple items, in addition to basic features.\n\n```html\n<vaadin-multi-select-combo-box id=\"comboBox\"></vaadin-multi-select-combo-box>\n```\n```js\nconst comboBox = document.querySelector('#comboBox');\ncomboBox.items = ['apple', 'banana', 'lemon', 'orange'];\ncomboBox.selectedItems = ['lemon', 'orange'];\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n-----------------------|----------------\n`chips` | The element that wraps slotted chips for selected items\n`label` | The label element\n`input-field` | The element that wraps prefix, value and suffix\n`clear-button` | The clear button\n`error-message` | The error message element\n`helper-text` | The helper text element wrapper\n`required-indicator` | The `required` state indicator element\n`toggle-button` | The toggle button\n\nThe following state attributes are available for styling:\n\nAttribute | Description\n-----------------------|-----------------\n`disabled` | Set to a disabled element\n`has-value` | Set when the element has a value\n`has-label` | Set when the element has a label\n`has-helper` | Set when the element has helper text or slot\n`has-error-message` | Set when the element has an error message\n`invalid` | Set when the element is invalid\n`focused` | Set when the element is focused\n`focus-ring` | Set when the element is keyboard focused\n`loading` | Set when loading items from the data provider\n`opened` | Set when the dropdown is open\n`readonly` | Set to a readonly element\n\nThe following custom CSS properties are available for styling:\n\nCustom property | Description | Default\n-----------------------------------------------------|----------------------------|--------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n`--vaadin-multi-select-combo-box-overlay-width` | Width of the overlay | `auto`\n`--vaadin-multi-select-combo-box-overlay-max-height` | Max height of the overlay | `65vh`\n`--vaadin-multi-select-combo-box-chip-min-width` | Min width of the chip | `50px`\n`--vaadin-multi-select-combo-box-input-min-width` | Min width of the input | `4em`\n\n### Internal components\n\nIn addition to `<vaadin-multi-select-combo-box>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-multi-select-combo-box-overlay>` - has the same API as `<vaadin-overlay>`.\n- `<vaadin-multi-select-combo-box-item>` - has the same API as `<vaadin-item>`.\n- `<vaadin-multi-select-combo-box-container>` - has the same API as `<vaadin-input-container>`.\n\nNote: the `theme` attribute value set on `<vaadin-multi-select-combo-box>` is\npropagated to these components.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
12
12
|
"attributes": [
|
|
13
13
|
{
|
|
14
14
|
"name": "disabled",
|
|
@@ -197,6 +197,28 @@
|
|
|
197
197
|
]
|
|
198
198
|
}
|
|
199
199
|
},
|
|
200
|
+
{
|
|
201
|
+
"name": "auto-expand-horizontally",
|
|
202
|
+
"description": "Set to true to auto expand horizontally, causing input field to\ngrow until max width is reached.",
|
|
203
|
+
"value": {
|
|
204
|
+
"type": [
|
|
205
|
+
"boolean",
|
|
206
|
+
"null",
|
|
207
|
+
"undefined"
|
|
208
|
+
]
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "auto-expand-vertically",
|
|
213
|
+
"description": "Set to true to not collapse selected items chips into the overflow\nchip and instead always expand vertically, causing input field to\nwrap into multiple lines when width is limited.",
|
|
214
|
+
"value": {
|
|
215
|
+
"type": [
|
|
216
|
+
"boolean",
|
|
217
|
+
"null",
|
|
218
|
+
"undefined"
|
|
219
|
+
]
|
|
220
|
+
}
|
|
221
|
+
},
|
|
200
222
|
{
|
|
201
223
|
"name": "auto-open-disabled",
|
|
202
224
|
"description": "Set true to prevent the overlay from opening automatically.",
|
|
@@ -318,6 +340,17 @@
|
|
|
318
340
|
]
|
|
319
341
|
}
|
|
320
342
|
},
|
|
343
|
+
{
|
|
344
|
+
"name": "selected-items-on-top",
|
|
345
|
+
"description": "Set to true to group selected items at the top of the overlay.",
|
|
346
|
+
"value": {
|
|
347
|
+
"type": [
|
|
348
|
+
"boolean",
|
|
349
|
+
"null",
|
|
350
|
+
"undefined"
|
|
351
|
+
]
|
|
352
|
+
}
|
|
353
|
+
},
|
|
321
354
|
{
|
|
322
355
|
"name": "theme",
|
|
323
356
|
"description": "The theme variants to apply to the component.",
|
|
@@ -508,6 +541,28 @@
|
|
|
508
541
|
]
|
|
509
542
|
}
|
|
510
543
|
},
|
|
544
|
+
{
|
|
545
|
+
"name": "autoExpandHorizontally",
|
|
546
|
+
"description": "Set to true to auto expand horizontally, causing input field to\ngrow until max width is reached.",
|
|
547
|
+
"value": {
|
|
548
|
+
"type": [
|
|
549
|
+
"boolean",
|
|
550
|
+
"null",
|
|
551
|
+
"undefined"
|
|
552
|
+
]
|
|
553
|
+
}
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
"name": "autoExpandVertically",
|
|
557
|
+
"description": "Set to true to not collapse selected items chips into the overflow\nchip and instead always expand vertically, causing input field to\nwrap into multiple lines when width is limited.",
|
|
558
|
+
"value": {
|
|
559
|
+
"type": [
|
|
560
|
+
"boolean",
|
|
561
|
+
"null",
|
|
562
|
+
"undefined"
|
|
563
|
+
]
|
|
564
|
+
}
|
|
565
|
+
},
|
|
511
566
|
{
|
|
512
567
|
"name": "autoOpenDisabled",
|
|
513
568
|
"description": "Set true to prevent the overlay from opening automatically.",
|
|
@@ -692,6 +747,17 @@
|
|
|
692
747
|
"undefined"
|
|
693
748
|
]
|
|
694
749
|
}
|
|
750
|
+
},
|
|
751
|
+
{
|
|
752
|
+
"name": "selectedItemsOnTop",
|
|
753
|
+
"description": "Set to true to group selected items at the top of the overlay.",
|
|
754
|
+
"value": {
|
|
755
|
+
"type": [
|
|
756
|
+
"boolean",
|
|
757
|
+
"null",
|
|
758
|
+
"undefined"
|
|
759
|
+
]
|
|
760
|
+
}
|
|
695
761
|
}
|
|
696
762
|
],
|
|
697
763
|
"events": [
|
package/web-types.lit.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/web-types",
|
|
3
3
|
"name": "@vaadin/multi-select-combo-box",
|
|
4
|
-
"version": "24.
|
|
4
|
+
"version": "24.3.0-alpha10",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"framework": "lit",
|
|
7
7
|
"framework-config": {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"elements": [
|
|
17
17
|
{
|
|
18
18
|
"name": "vaadin-multi-select-combo-box",
|
|
19
|
-
"description": "`<vaadin-multi-select-combo-box>` is a web component that wraps `<vaadin-combo-box>` and extends\nits functionality to allow selecting multiple items, in addition to basic features.\n\n```html\n<vaadin-multi-select-combo-box id=\"comboBox\"></vaadin-multi-select-combo-box>\n```\n```js\nconst comboBox = document.querySelector('#comboBox');\ncomboBox.items = ['apple', 'banana', 'lemon', 'orange'];\ncomboBox.selectedItems = ['lemon', 'orange'];\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n-----------------------|----------------\n`chips` | The element that wraps slotted chips for selected items\n`label` | The label element\n`input-field` | The element that wraps prefix, value and suffix\n`clear-button` | The clear button\n`error-message` | The error message element\n`helper-text` | The helper text element wrapper\n`required-indicator` | The `required` state indicator element\n`toggle-button` | The toggle button\n\nThe following state attributes are available for styling:\n\nAttribute | Description\n-----------------------|-----------------\n`disabled` | Set to a disabled element\n`has-value` | Set when the element has a value\n`has-label` | Set when the element has a label\n`has-helper` | Set when the element has helper text or slot\n`has-error-message` | Set when the element has an error message\n`invalid` | Set when the element is invalid\n`focused` | Set when the element is focused\n`focus-ring` | Set when the element is keyboard focused\n`loading` | Set when loading items from the data provider\n`opened` | Set when the dropdown is open\n`readonly` | Set to a readonly element\n\nThe following custom CSS properties are available for styling:\n\nCustom property | Description | Default\n-----------------------------------------------------|----------------------------|--------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n`--vaadin-multi-select-combo-box-overlay-width` | Width of the overlay | `auto`\n`--vaadin-multi-select-combo-box-overlay-max-height` | Max height of the overlay | `65vh`\n`--vaadin-multi-select-combo-box-input-min-width` | Min width of the input | `4em`\n\n### Internal components\n\nIn addition to `<vaadin-multi-select-combo-box>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-multi-select-combo-box-overlay>` - has the same API as `<vaadin-overlay>`.\n- `<vaadin-multi-select-combo-box-item>` - has the same API as `<vaadin-item>`.\n- `<vaadin-multi-select-combo-box-container>` - has the same API as `<vaadin-input-container>`.\n\nNote: the `theme` attribute value set on `<vaadin-multi-select-combo-box>` is\npropagated to these components.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
19
|
+
"description": "`<vaadin-multi-select-combo-box>` is a web component that wraps `<vaadin-combo-box>` and extends\nits functionality to allow selecting multiple items, in addition to basic features.\n\n```html\n<vaadin-multi-select-combo-box id=\"comboBox\"></vaadin-multi-select-combo-box>\n```\n```js\nconst comboBox = document.querySelector('#comboBox');\ncomboBox.items = ['apple', 'banana', 'lemon', 'orange'];\ncomboBox.selectedItems = ['lemon', 'orange'];\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n-----------------------|----------------\n`chips` | The element that wraps slotted chips for selected items\n`label` | The label element\n`input-field` | The element that wraps prefix, value and suffix\n`clear-button` | The clear button\n`error-message` | The error message element\n`helper-text` | The helper text element wrapper\n`required-indicator` | The `required` state indicator element\n`toggle-button` | The toggle button\n\nThe following state attributes are available for styling:\n\nAttribute | Description\n-----------------------|-----------------\n`disabled` | Set to a disabled element\n`has-value` | Set when the element has a value\n`has-label` | Set when the element has a label\n`has-helper` | Set when the element has helper text or slot\n`has-error-message` | Set when the element has an error message\n`invalid` | Set when the element is invalid\n`focused` | Set when the element is focused\n`focus-ring` | Set when the element is keyboard focused\n`loading` | Set when loading items from the data provider\n`opened` | Set when the dropdown is open\n`readonly` | Set to a readonly element\n\nThe following custom CSS properties are available for styling:\n\nCustom property | Description | Default\n-----------------------------------------------------|----------------------------|--------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n`--vaadin-multi-select-combo-box-overlay-width` | Width of the overlay | `auto`\n`--vaadin-multi-select-combo-box-overlay-max-height` | Max height of the overlay | `65vh`\n`--vaadin-multi-select-combo-box-chip-min-width` | Min width of the chip | `50px`\n`--vaadin-multi-select-combo-box-input-min-width` | Min width of the input | `4em`\n\n### Internal components\n\nIn addition to `<vaadin-multi-select-combo-box>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-multi-select-combo-box-overlay>` - has the same API as `<vaadin-overlay>`.\n- `<vaadin-multi-select-combo-box-item>` - has the same API as `<vaadin-item>`.\n- `<vaadin-multi-select-combo-box-container>` - has the same API as `<vaadin-input-container>`.\n\nNote: the `theme` attribute value set on `<vaadin-multi-select-combo-box>` is\npropagated to these components.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
20
20
|
"extension": true,
|
|
21
21
|
"attributes": [
|
|
22
22
|
{
|
|
@@ -68,6 +68,20 @@
|
|
|
68
68
|
"kind": "expression"
|
|
69
69
|
}
|
|
70
70
|
},
|
|
71
|
+
{
|
|
72
|
+
"name": "?autoExpandHorizontally",
|
|
73
|
+
"description": "Set to true to auto expand horizontally, causing input field to\ngrow until max width is reached.",
|
|
74
|
+
"value": {
|
|
75
|
+
"kind": "expression"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "?autoExpandVertically",
|
|
80
|
+
"description": "Set to true to not collapse selected items chips into the overflow\nchip and instead always expand vertically, causing input field to\nwrap into multiple lines when width is limited.",
|
|
81
|
+
"value": {
|
|
82
|
+
"kind": "expression"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
71
85
|
{
|
|
72
86
|
"name": "?autoOpenDisabled",
|
|
73
87
|
"description": "Set true to prevent the overlay from opening automatically.",
|
|
@@ -96,6 +110,13 @@
|
|
|
96
110
|
"kind": "expression"
|
|
97
111
|
}
|
|
98
112
|
},
|
|
113
|
+
{
|
|
114
|
+
"name": "?selectedItemsOnTop",
|
|
115
|
+
"description": "Set to true to group selected items at the top of the overlay.",
|
|
116
|
+
"value": {
|
|
117
|
+
"kind": "expression"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
99
120
|
{
|
|
100
121
|
"name": ".label",
|
|
101
122
|
"description": "The label text for the input node.\nWhen no light dom defined via [slot=label], this value will be used.",
|