@vaadin/multi-select-combo-box 25.3.0-rc1 → 25.4.0-alpha1

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.
@@ -17,6 +17,40 @@
17
17
  }
18
18
  ]
19
19
  },
20
+ {
21
+ "kind": "javascript-module",
22
+ "path": "src/vaadin-multi-select-combo-box-highlight-mixin.js",
23
+ "declarations": [
24
+ {
25
+ "kind": "mixin",
26
+ "description": "A mixin that extends `ComboBoxHighlightMixin` with highlight states for the\nchips of the selected items and for the select all button, so that both can\nbe navigated with arrow keys while the DOM focus stays in the input.\n\nIn addition to the states of `ComboBoxHighlightMixin`, the state can be:\n\n- `{ type: 'chip', index }`: the chip at `index`.\n- `{ type: 'select-all' }`: the select all button.\n\nThe select all button is part of the item navigation and comes before the\nfirst item, so `_highlightNextItem()` and `_highlightPrevItem()` move the\nhighlight to it while it is available.\n\nExpects the host to provide a `_chips` getter that returns the chip elements,\nand a `_hasSelectAllButton` getter that tells whether the select all button\nis rendered and can be highlighted.",
27
+ "name": "MultiSelectComboBoxHighlightMixin",
28
+ "members": [],
29
+ "mixins": [
30
+ {
31
+ "name": "ComboBoxHighlightMixin",
32
+ "package": "@vaadin/combo-box/src/vaadin-combo-box-highlight-mixin.js"
33
+ }
34
+ ],
35
+ "parameters": [
36
+ {
37
+ "name": "superClass"
38
+ }
39
+ ],
40
+ "attributes": []
41
+ }
42
+ ],
43
+ "exports": [
44
+ {
45
+ "kind": "js",
46
+ "name": "MultiSelectComboBoxHighlightMixin",
47
+ "declaration": {
48
+ "name": "MultiSelectComboBoxHighlightMixin",
49
+ "module": "src/vaadin-multi-select-combo-box-highlight-mixin.js"
50
+ }
51
+ }
52
+ ]
53
+ },
20
54
  {
21
55
  "kind": "javascript-module",
22
56
  "path": "src/vaadin-multi-select-combo-box-mixin.js",
@@ -308,9 +342,9 @@
308
342
  "name": "i18n",
309
343
  "privacy": "public",
310
344
  "type": {
311
- "text": "Object"
345
+ "text": "Object | undefined"
312
346
  },
313
- "description": "The object used to localize this component. To change the default\nlocalization, replace this with an object that provides all properties, or\njust the individual properties you want to change.\n\nThe object has the following JSON structure and default values:\n```js\n{\n // Screen reader announcement on clear button click.\n cleared: 'Selection cleared',\n // Screen reader announcement when a chip is focused.\n focused: ' focused. Press Backspace to remove',\n // Screen reader announcement when item is selected.\n selected: 'added to selection',\n // Screen reader announcement when item is deselected.\n deselected: 'removed from selection',\n // Screen reader announcement of the selected items count.\n // {count} is replaced with the actual count of items.\n total: '{count} items selected',\n}\n```",
347
+ "description": "The object used to localize this component. To change the default\nlocalization, set this to an object that provides all properties, or\njust the individual properties you want to change.\n\nWhen not set, defaults to `undefined`.\n\nThe object has the following JSON structure and default values:\n```js\n{\n // Screen reader announcement on clear button click.\n cleared: 'Selection cleared',\n // Screen reader announcement when a chip is focused.\n focused: ' focused. Press Backspace to remove',\n // Screen reader announcement when item is selected.\n selected: 'added to selection',\n // Screen reader announcement when item is deselected.\n deselected: 'removed from selection',\n // Screen reader announcement of the selected items count.\n // {count} is replaced with the actual count of items.\n total: '{count} items selected',\n // Text of the select all button when no filter is set.\n selectAll: 'Select All',\n // Text of the select all button when no filter is set\n // and all items are selected.\n deselectAll: 'Deselect All',\n // Text of the select all button when a filter is set.\n selectFiltered: 'Select Filtered',\n // Text of the select all button when a filter is set\n // and all items matching the filter are selected.\n deselectFiltered: 'Deselect Filtered',\n}\n```",
314
348
  "attribute": "i18n",
315
349
  "inheritedFrom": {
316
350
  "name": "I18nMixin",
@@ -585,6 +619,20 @@
585
619
  "package": "@vaadin/field-base/src/field-mixin.js"
586
620
  }
587
621
  },
622
+ {
623
+ "kind": "field",
624
+ "name": "selectAllButtonVisible",
625
+ "privacy": "public",
626
+ "type": {
627
+ "text": "boolean"
628
+ },
629
+ "description": "Set to true to show a button above the dropdown items for selecting\nor deselecting all items matching the current filter at once. Items\nthat do not match the filter keep their selection state.\n\nThe button is only supported with the `items` API. It is not shown\nwhen using `dataProvider`.",
630
+ "attribute": "select-all-button-visible",
631
+ "inheritedFrom": {
632
+ "name": "MultiSelectComboBoxSelectAllMixin",
633
+ "module": "src/vaadin-multi-select-combo-box-select-all-mixin.js"
634
+ }
635
+ },
588
636
  {
589
637
  "kind": "field",
590
638
  "name": "selectedItems",
@@ -882,9 +930,9 @@
882
930
  {
883
931
  "name": "i18n",
884
932
  "type": {
885
- "text": "Object"
933
+ "text": "Object | undefined"
886
934
  },
887
- "description": "The object used to localize this component. To change the default\nlocalization, replace this with an object that provides all properties, or\njust the individual properties you want to change.\n\nShould be overridden by subclasses to provide a custom JSDoc with the\ndefault I18N properties.",
935
+ "description": "The object used to localize this component. To change the default\nlocalization, set this to an object that provides all properties, or\njust the individual properties you want to change.\n\nWhen not set, defaults to `undefined`.\n\nShould be overridden by subclasses to provide a custom JSDoc with the\ndefault I18N properties.",
888
936
  "fieldName": "i18n",
889
937
  "inheritedFrom": {
890
938
  "name": "I18nMixin",
@@ -1071,6 +1119,18 @@
1071
1119
  "package": "@vaadin/field-base/src/field-mixin.js"
1072
1120
  }
1073
1121
  },
1122
+ {
1123
+ "name": "select-all-button-visible",
1124
+ "type": {
1125
+ "text": "boolean"
1126
+ },
1127
+ "description": "Set to true to show a button above the dropdown items for selecting\nor deselecting all items matching the current filter at once. Items\nthat do not match the filter keep their selection state.\n\nThe button is only supported with the `items` API. It is not shown\nwhen using `dataProvider`.",
1128
+ "fieldName": "selectAllButtonVisible",
1129
+ "inheritedFrom": {
1130
+ "name": "MultiSelectComboBoxSelectAllMixin",
1131
+ "module": "src/vaadin-multi-select-combo-box-select-all-mixin.js"
1132
+ }
1133
+ },
1074
1134
  {
1075
1135
  "name": "selected-items",
1076
1136
  "type": {
@@ -1129,6 +1189,14 @@
1129
1189
  "name": "I18nMixin",
1130
1190
  "package": "@vaadin/component-base/src/i18n-mixin.js"
1131
1191
  },
1192
+ {
1193
+ "name": "MultiSelectComboBoxSelectAllMixin",
1194
+ "module": "src/vaadin-multi-select-combo-box-select-all-mixin.js"
1195
+ },
1196
+ {
1197
+ "name": "MultiSelectComboBoxHighlightMixin",
1198
+ "module": "src/vaadin-multi-select-combo-box-highlight-mixin.js"
1199
+ },
1132
1200
  {
1133
1201
  "name": "ComboBoxFocusIndexMixin",
1134
1202
  "package": "@vaadin/combo-box/src/vaadin-combo-box-focus-index-mixin.js"
@@ -1168,13 +1236,61 @@
1168
1236
  }
1169
1237
  ]
1170
1238
  },
1239
+ {
1240
+ "kind": "javascript-module",
1241
+ "path": "src/vaadin-multi-select-combo-box-select-all-mixin.js",
1242
+ "declarations": [
1243
+ {
1244
+ "kind": "mixin",
1245
+ "description": "A mixin that manages the select all button of `<vaadin-multi-select-combo-box>`.",
1246
+ "name": "MultiSelectComboBoxSelectAllMixin",
1247
+ "members": [
1248
+ {
1249
+ "kind": "field",
1250
+ "name": "selectAllButtonVisible",
1251
+ "privacy": "public",
1252
+ "type": {
1253
+ "text": "boolean"
1254
+ },
1255
+ "description": "Set to true to show a button above the dropdown items for selecting\nor deselecting all items matching the current filter at once. Items\nthat do not match the filter keep their selection state.\n\nThe button is only supported with the `items` API. It is not shown\nwhen using `dataProvider`.",
1256
+ "attribute": "select-all-button-visible"
1257
+ }
1258
+ ],
1259
+ "attributes": [
1260
+ {
1261
+ "name": "select-all-button-visible",
1262
+ "type": {
1263
+ "text": "boolean"
1264
+ },
1265
+ "description": "Set to true to show a button above the dropdown items for selecting\nor deselecting all items matching the current filter at once. Items\nthat do not match the filter keep their selection state.\n\nThe button is only supported with the `items` API. It is not shown\nwhen using `dataProvider`.",
1266
+ "fieldName": "selectAllButtonVisible"
1267
+ }
1268
+ ],
1269
+ "parameters": [
1270
+ {
1271
+ "name": "superClass"
1272
+ }
1273
+ ]
1274
+ }
1275
+ ],
1276
+ "exports": [
1277
+ {
1278
+ "kind": "js",
1279
+ "name": "MultiSelectComboBoxSelectAllMixin",
1280
+ "declaration": {
1281
+ "name": "MultiSelectComboBoxSelectAllMixin",
1282
+ "module": "src/vaadin-multi-select-combo-box-select-all-mixin.js"
1283
+ }
1284
+ }
1285
+ ]
1286
+ },
1171
1287
  {
1172
1288
  "kind": "javascript-module",
1173
1289
  "path": "src/vaadin-multi-select-combo-box.js",
1174
1290
  "declarations": [
1175
1291
  {
1176
1292
  "kind": "class",
1177
- "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\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`field-button` | Set on both clear and toggle buttons\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`overlay` | The overlay container\n`content` | The overlay content\n`loader` | The loading indicator shown while loading items\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`has-tooltip` | Set when the element has a slotted tooltip\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 CSS property |\n:-------------------------------------------------------|\n| `--vaadin-chip-background` |\n| `--vaadin-chip-border-color` |\n| `--vaadin-chip-border-radius` |\n| `--vaadin-chip-border-width` |\n| `--vaadin-chip-font-size` |\n| `--vaadin-chip-font-weight` |\n| `--vaadin-chip-gap` |\n| `--vaadin-chip-height` |\n| `--vaadin-chip-padding` |\n| `--vaadin-chip-remove-button-text-color` |\n| `--vaadin-chip-text-color` |\n| `--vaadin-field-default-width` |\n| `--vaadin-input-field-background` |\n| `--vaadin-input-field-border-color` |\n| `--vaadin-input-field-border-radius` |\n| `--vaadin-input-field-border-width` |\n| `--vaadin-input-field-bottom-end-radius` |\n| `--vaadin-input-field-bottom-start-radius` |\n| `--vaadin-input-field-button-text-color` |\n| `--vaadin-input-field-container-gap` |\n| `--vaadin-input-field-disabled-background` |\n| `--vaadin-input-field-disabled-text-color` |\n| `--vaadin-input-field-error-color` |\n| `--vaadin-input-field-error-font-size` |\n| `--vaadin-input-field-error-font-weight` |\n| `--vaadin-input-field-error-line-height` |\n| `--vaadin-input-field-gap` |\n| `--vaadin-input-field-helper-color` |\n| `--vaadin-input-field-helper-font-size` |\n| `--vaadin-input-field-helper-font-weight` |\n| `--vaadin-input-field-helper-line-height` |\n| `--vaadin-input-field-label-color` |\n| `--vaadin-input-field-label-font-size` |\n| `--vaadin-input-field-label-font-weight` |\n| `--vaadin-input-field-label-line-height` |\n| `--vaadin-input-field-padding` |\n| `--vaadin-input-field-placeholder-color` |\n| `--vaadin-input-field-required-indicator` |\n| `--vaadin-input-field-required-indicator-color` |\n| `--vaadin-input-field-top-end-radius` |\n| `--vaadin-input-field-top-start-radius` |\n| `--vaadin-input-field-value-color` |\n| `--vaadin-input-field-value-font-size` |\n| `--vaadin-input-field-value-font-weight` |\n| `--vaadin-input-field-value-line-height` |\n| `--vaadin-item-overlay-padding` |\n| `--vaadin-multi-select-combo-box-chip-min-width` |\n| `--vaadin-multi-select-combo-box-chips-gap` |\n| `--vaadin-multi-select-combo-box-input-min-width` |\n| `--vaadin-multi-select-combo-box-overlay-max-height` |\n| `--vaadin-multi-select-combo-box-overlay-width` |\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-chip>`\n- `<vaadin-multi-select-combo-box-item>` - has the same API as `<vaadin-item>`.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
1293
+ "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\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`field-button` | Set on both clear and toggle buttons\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`overlay` | The overlay container\n`content` | The overlay content\n`loader` | The loading indicator shown while loading items\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`has-select-all` | Set when the select all button is shown in the dropdown\n`has-tooltip` | Set when the element has a slotted tooltip\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 CSS property |\n:-------------------------------------------------------|\n| `--vaadin-chip-background` |\n| `--vaadin-chip-border-color` |\n| `--vaadin-chip-border-radius` |\n| `--vaadin-chip-border-width` |\n| `--vaadin-chip-font-size` |\n| `--vaadin-chip-font-weight` |\n| `--vaadin-chip-gap` |\n| `--vaadin-chip-height` |\n| `--vaadin-chip-padding` |\n| `--vaadin-chip-remove-button-text-color` |\n| `--vaadin-chip-text-color` |\n| `--vaadin-field-default-width` |\n| `--vaadin-input-field-background` |\n| `--vaadin-input-field-border-color` |\n| `--vaadin-input-field-border-radius` |\n| `--vaadin-input-field-border-width` |\n| `--vaadin-input-field-bottom-end-radius` |\n| `--vaadin-input-field-bottom-start-radius` |\n| `--vaadin-input-field-button-text-color` |\n| `--vaadin-input-field-container-gap` |\n| `--vaadin-input-field-disabled-background` |\n| `--vaadin-input-field-disabled-text-color` |\n| `--vaadin-input-field-error-color` |\n| `--vaadin-input-field-error-font-size` |\n| `--vaadin-input-field-error-font-weight` |\n| `--vaadin-input-field-error-line-height` |\n| `--vaadin-input-field-gap` |\n| `--vaadin-input-field-helper-color` |\n| `--vaadin-input-field-helper-font-size` |\n| `--vaadin-input-field-helper-font-weight` |\n| `--vaadin-input-field-helper-line-height` |\n| `--vaadin-input-field-label-aside-gap` |\n| `--vaadin-input-field-label-aside-text-align` |\n| `--vaadin-input-field-label-aside-width` |\n| `--vaadin-input-field-label-color` |\n| `--vaadin-input-field-label-font-size` |\n| `--vaadin-input-field-label-font-weight` |\n| `--vaadin-input-field-label-line-height` |\n| `--vaadin-input-field-padding` |\n| `--vaadin-input-field-placeholder-color` |\n| `--vaadin-input-field-required-indicator` |\n| `--vaadin-input-field-required-indicator-color` |\n| `--vaadin-input-field-top-end-radius` |\n| `--vaadin-input-field-top-start-radius` |\n| `--vaadin-input-field-value-color` |\n| `--vaadin-input-field-value-font-size` |\n| `--vaadin-input-field-value-font-weight` |\n| `--vaadin-input-field-value-line-height` |\n| `--vaadin-item-overlay-padding` |\n| `--vaadin-multi-select-combo-box-chip-min-width` |\n| `--vaadin-multi-select-combo-box-chips-gap` |\n| `--vaadin-multi-select-combo-box-input-min-width` |\n| `--vaadin-multi-select-combo-box-overlay-max-height` |\n| `--vaadin-multi-select-combo-box-overlay-width` |\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-chip>`\n- `<vaadin-multi-select-combo-box-item>` - has the same API as `<vaadin-item>`.\n- `<vaadin-multi-select-combo-box-select-all-button>`\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
1178
1294
  "name": "MultiSelectComboBox",
1179
1295
  "members": [
1180
1296
  {
@@ -1475,9 +1591,9 @@
1475
1591
  "name": "i18n",
1476
1592
  "privacy": "public",
1477
1593
  "type": {
1478
- "text": "Object"
1594
+ "text": "Object | undefined"
1479
1595
  },
1480
- "description": "The object used to localize this component. To change the default\nlocalization, replace this with an object that provides all properties, or\njust the individual properties you want to change.\n\nThe object has the following JSON structure and default values:\n```js\n{\n // Screen reader announcement on clear button click.\n cleared: 'Selection cleared',\n // Screen reader announcement when a chip is focused.\n focused: ' focused. Press Backspace to remove',\n // Screen reader announcement when item is selected.\n selected: 'added to selection',\n // Screen reader announcement when item is deselected.\n deselected: 'removed from selection',\n // Screen reader announcement of the selected items count.\n // {count} is replaced with the actual count of items.\n total: '{count} items selected',\n}\n```",
1596
+ "description": "The object used to localize this component. To change the default\nlocalization, set this to an object that provides all properties, or\njust the individual properties you want to change.\n\nWhen not set, defaults to `undefined`.\n\nThe object has the following JSON structure and default values:\n```js\n{\n // Screen reader announcement on clear button click.\n cleared: 'Selection cleared',\n // Screen reader announcement when a chip is focused.\n focused: ' focused. Press Backspace to remove',\n // Screen reader announcement when item is selected.\n selected: 'added to selection',\n // Screen reader announcement when item is deselected.\n deselected: 'removed from selection',\n // Screen reader announcement of the selected items count.\n // {count} is replaced with the actual count of items.\n total: '{count} items selected',\n // Text of the select all button when no filter is set.\n selectAll: 'Select All',\n // Text of the select all button when no filter is set\n // and all items are selected.\n deselectAll: 'Deselect All',\n // Text of the select all button when a filter is set.\n selectFiltered: 'Select Filtered',\n // Text of the select all button when a filter is set\n // and all items matching the filter are selected.\n deselectFiltered: 'Deselect Filtered',\n}\n```",
1481
1597
  "attribute": "i18n",
1482
1598
  "inheritedFrom": {
1483
1599
  "name": "I18nMixin",
@@ -1768,6 +1884,20 @@
1768
1884
  "package": "@vaadin/field-base/src/field-mixin.js"
1769
1885
  }
1770
1886
  },
1887
+ {
1888
+ "kind": "field",
1889
+ "name": "selectAllButtonVisible",
1890
+ "privacy": "public",
1891
+ "type": {
1892
+ "text": "boolean"
1893
+ },
1894
+ "description": "Set to true to show a button above the dropdown items for selecting\nor deselecting all items matching the current filter at once. Items\nthat do not match the filter keep their selection state.\n\nThe button is only supported with the `items` API. It is not shown\nwhen using `dataProvider`.",
1895
+ "attribute": "select-all-button-visible",
1896
+ "inheritedFrom": {
1897
+ "name": "MultiSelectComboBoxSelectAllMixin",
1898
+ "module": "src/vaadin-multi-select-combo-box-select-all-mixin.js"
1899
+ }
1900
+ },
1771
1901
  {
1772
1902
  "kind": "field",
1773
1903
  "name": "selectedItems",
@@ -2106,9 +2236,9 @@
2106
2236
  {
2107
2237
  "name": "i18n",
2108
2238
  "type": {
2109
- "text": "Object"
2239
+ "text": "Object | undefined"
2110
2240
  },
2111
- "description": "The object used to localize this component. To change the default\nlocalization, replace this with an object that provides all properties, or\njust the individual properties you want to change.\n\nShould be overridden by subclasses to provide a custom JSDoc with the\ndefault I18N properties.",
2241
+ "description": "The object used to localize this component. To change the default\nlocalization, set this to an object that provides all properties, or\njust the individual properties you want to change.\n\nWhen not set, defaults to `undefined`.\n\nShould be overridden by subclasses to provide a custom JSDoc with the\ndefault I18N properties.",
2112
2242
  "fieldName": "i18n",
2113
2243
  "inheritedFrom": {
2114
2244
  "name": "I18nMixin",
@@ -2307,6 +2437,18 @@
2307
2437
  "package": "@vaadin/field-base/src/field-mixin.js"
2308
2438
  }
2309
2439
  },
2440
+ {
2441
+ "name": "select-all-button-visible",
2442
+ "type": {
2443
+ "text": "boolean"
2444
+ },
2445
+ "description": "Set to true to show a button above the dropdown items for selecting\nor deselecting all items matching the current filter at once. Items\nthat do not match the filter keep their selection state.\n\nThe button is only supported with the `items` API. It is not shown\nwhen using `dataProvider`.",
2446
+ "fieldName": "selectAllButtonVisible",
2447
+ "inheritedFrom": {
2448
+ "name": "MultiSelectComboBoxSelectAllMixin",
2449
+ "module": "src/vaadin-multi-select-combo-box-select-all-mixin.js"
2450
+ }
2451
+ },
2310
2452
  {
2311
2453
  "name": "selected-items",
2312
2454
  "type": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/multi-select-combo-box",
3
- "version": "25.3.0-rc1",
3
+ "version": "25.4.0-alpha1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -37,23 +37,23 @@
37
37
  ],
38
38
  "dependencies": {
39
39
  "@open-wc/dedupe-mixin": "^1.3.0",
40
- "@vaadin/a11y-base": "25.3.0-rc1",
41
- "@vaadin/combo-box": "25.3.0-rc1",
42
- "@vaadin/component-base": "25.3.0-rc1",
43
- "@vaadin/field-base": "25.3.0-rc1",
44
- "@vaadin/input-container": "25.3.0-rc1",
45
- "@vaadin/item": "25.3.0-rc1",
46
- "@vaadin/lit-renderer": "25.3.0-rc1",
47
- "@vaadin/overlay": "25.3.0-rc1",
48
- "@vaadin/vaadin-themable-mixin": "25.3.0-rc1",
40
+ "@vaadin/a11y-base": "25.4.0-alpha1",
41
+ "@vaadin/combo-box": "25.4.0-alpha1",
42
+ "@vaadin/component-base": "25.4.0-alpha1",
43
+ "@vaadin/field-base": "25.4.0-alpha1",
44
+ "@vaadin/input-container": "25.4.0-alpha1",
45
+ "@vaadin/item": "25.4.0-alpha1",
46
+ "@vaadin/lit-renderer": "25.4.0-alpha1",
47
+ "@vaadin/overlay": "25.4.0-alpha1",
48
+ "@vaadin/vaadin-themable-mixin": "25.4.0-alpha1",
49
49
  "lit": "^3.0.0"
50
50
  },
51
51
  "devDependencies": {
52
- "@vaadin/aura": "25.3.0-rc1",
53
- "@vaadin/chai-plugins": "25.3.0-rc1",
54
- "@vaadin/test-runner-commands": "25.3.0-rc1",
52
+ "@vaadin/aura": "25.4.0-alpha1",
53
+ "@vaadin/chai-plugins": "25.4.0-alpha1",
54
+ "@vaadin/test-runner-commands": "25.4.0-alpha1",
55
55
  "@vaadin/testing-helpers": "^2.0.0",
56
- "@vaadin/vaadin-lumo-styles": "25.3.0-rc1",
56
+ "@vaadin/vaadin-lumo-styles": "25.4.0-alpha1",
57
57
  "sinon": "^22.0.0"
58
58
  },
59
59
  "customElements": "custom-elements.json",
@@ -61,5 +61,5 @@
61
61
  "web-types.json",
62
62
  "web-types.lit.json"
63
63
  ],
64
- "gitHead": "d4809590b2f61bd607e376ab3dec84f4bfb059a7"
64
+ "gitHead": "be38ec1866e96508f3f4591f95c949ef55903a34"
65
65
  }
@@ -23,6 +23,13 @@ export const multiSelectComboBoxStyles = [
23
23
  gap: var(--vaadin-multi-select-combo-box-chips-gap, 2px);
24
24
  }
25
25
 
26
+ :host(:is([theme~='label-aside'], [data-form-layout-has-labels-aside])) [part='input-field']::before {
27
+ content: '\\2003' / '';
28
+ width: 0;
29
+ align-self: start;
30
+ margin-inline-end: calc(var(--vaadin-input-field-gap, var(--vaadin-gap-s)) * -1);
31
+ }
32
+
26
33
  ::slotted(input) {
27
34
  box-sizing: border-box;
28
35
  flex: 1 0 var(--_input-min-width);
@@ -59,5 +66,9 @@ export const multiSelectComboBoxStyles = [
59
66
  :host([auto-expand-horizontally]) {
60
67
  --vaadin-field-default-width: auto;
61
68
  }
69
+
70
+ :host([has-select-all]) #overlay slot[name='overlay']::slotted(*) {
71
+ border-top: 1px solid var(--vaadin-border-color-secondary);
72
+ }
62
73
  `,
63
74
  ];
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2021 - 2026 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ import '@vaadin/component-base/src/styles/style-props.js';
7
+ import { css } from 'lit';
8
+
9
+ export const multiSelectComboBoxSelectAllButtonStyles = css`
10
+ :host {
11
+ display: block;
12
+ flex: none;
13
+ box-sizing: border-box;
14
+ /* Do not let the label affect the width of the overlay */
15
+ contain: inline-size;
16
+ margin: var(--vaadin-item-overlay-padding, 4px);
17
+ padding: var(--vaadin-item-padding, var(--vaadin-padding-xs) var(--vaadin-padding-inline-container));
18
+ border-radius: var(--vaadin-item-border-radius, var(--vaadin-radius-m));
19
+ color: var(--vaadin-text-color);
20
+ font-weight: 500;
21
+ white-space: nowrap;
22
+ overflow: hidden;
23
+ text-overflow: ellipsis;
24
+ text-align: start;
25
+ cursor: var(--vaadin-clickable-cursor);
26
+ touch-action: manipulation;
27
+ -webkit-tap-highlight-color: transparent;
28
+ -webkit-user-select: none;
29
+ user-select: none;
30
+ }
31
+
32
+ /* Reserve the same space as the item checkmark icon */
33
+ :host::before {
34
+ content: '';
35
+ display: inline-block;
36
+ width: var(--vaadin-icon-size, 1lh);
37
+ margin-inline-end: var(--vaadin-item-gap, var(--vaadin-gap-s));
38
+ }
39
+
40
+ :host([focused]) {
41
+ outline: var(--vaadin-focus-ring-width) solid var(--vaadin-focus-ring-color);
42
+ outline-offset: calc(var(--vaadin-focus-ring-width) * -1);
43
+ }
44
+ `;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2021 - 2026 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ import type { Constructor } from '@open-wc/dedupe-mixin';
7
+ import type { ComboBoxHighlightMixinClass } from '@vaadin/combo-box/src/vaadin-combo-box-highlight-mixin.js';
8
+
9
+ /**
10
+ * A mixin that extends `ComboBoxHighlightMixin` with highlight states for the
11
+ * chips of the selected items and for the select all button, so that both can
12
+ * be navigated with arrow keys while the DOM focus stays in the input.
13
+ */
14
+ export declare function MultiSelectComboBoxHighlightMixin<T extends Constructor<HTMLElement>>(
15
+ base: T,
16
+ ): Constructor<ComboBoxHighlightMixinClass> & Constructor<MultiSelectComboBoxHighlightMixinClass> & T;
17
+
18
+ // Nothing to declare, all state and methods are considered internal
19
+ export declare class MultiSelectComboBoxHighlightMixinClass {}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2021 - 2026 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ import { ComboBoxHighlightMixin } from '@vaadin/combo-box/src/vaadin-combo-box-highlight-mixin.js';
7
+
8
+ /**
9
+ * A mixin that extends `ComboBoxHighlightMixin` with highlight states for the
10
+ * chips of the selected items and for the select all button, so that both can
11
+ * be navigated with arrow keys while the DOM focus stays in the input.
12
+ *
13
+ * In addition to the states of `ComboBoxHighlightMixin`, the state can be:
14
+ *
15
+ * - `{ type: 'chip', index }`: the chip at `index`.
16
+ * - `{ type: 'select-all' }`: the select all button.
17
+ *
18
+ * The select all button is part of the item navigation and comes before the
19
+ * first item, so `_highlightNextItem()` and `_highlightPrevItem()` move the
20
+ * highlight to it while it is available.
21
+ *
22
+ * Expects the host to provide a `_chips` getter that returns the chip elements,
23
+ * and a `_hasSelectAllButton` getter that tells whether the select all button
24
+ * is rendered and can be highlighted.
25
+ *
26
+ * @mixes ComboBoxHighlightMixin
27
+ */
28
+ export const MultiSelectComboBoxHighlightMixin = (superClass) =>
29
+ class MultiSelectComboBoxHighlightMixinClass extends ComboBoxHighlightMixin(superClass) {
30
+ /** @protected */
31
+ get _isSelectAllHighlighted() {
32
+ return this._highlightState.type === 'select-all';
33
+ }
34
+
35
+ /**
36
+ * Override method from `ComboBoxHighlightMixin` to highlight
37
+ * the select all button before the first item.
38
+ * @protected
39
+ * @override
40
+ */
41
+ _highlightNextItem() {
42
+ if (!this._hasHighlightedItem && !this._isSelectAllHighlighted && this._hasSelectAllButton) {
43
+ this._highlightSelectAll();
44
+ } else {
45
+ super._highlightNextItem();
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Override method from `ComboBoxHighlightMixin` to highlight
51
+ * the select all button when moving up from the first item.
52
+ * @protected
53
+ * @override
54
+ */
55
+ _highlightPrevItem() {
56
+ if (this._isSelectAllHighlighted) {
57
+ return;
58
+ }
59
+
60
+ if (this._highlightedItemIndex === 0 && this._hasSelectAllButton) {
61
+ this._highlightSelectAll();
62
+ } else {
63
+ super._highlightPrevItem();
64
+ }
65
+ }
66
+
67
+ /** @protected */
68
+ _highlightSelectAll() {
69
+ this._setHighlightState({ type: 'select-all' });
70
+ }
71
+
72
+ /** @protected */
73
+ _clearSelectAllHighlight() {
74
+ if (this._isSelectAllHighlighted) {
75
+ this._clearHighlight();
76
+ }
77
+ }
78
+
79
+ /** @protected */
80
+ get _hasHighlightedChip() {
81
+ return this._highlightState.type === 'chip';
82
+ }
83
+
84
+ /** @protected */
85
+ get _highlightedChip() {
86
+ return this._hasHighlightedChip ? this._chips[this._highlightState.index] : undefined;
87
+ }
88
+
89
+ /** @protected */
90
+ _highlightPrevChip() {
91
+ if (this._hasHighlightedChip) {
92
+ this._highlightChipAt(Math.max(0, this._highlightState.index - 1));
93
+ } else {
94
+ this._highlightLastChip();
95
+ }
96
+ }
97
+
98
+ /** @protected */
99
+ _highlightNextChip() {
100
+ if (this._hasHighlightedChip) {
101
+ const lastIndex = this._chips.length - 1;
102
+ this._highlightChipAt(this._highlightState.index < lastIndex ? this._highlightState.index + 1 : -1);
103
+ }
104
+ }
105
+
106
+ /** @protected */
107
+ _highlightLastChip() {
108
+ this._highlightChipAt(this._chips.length - 1);
109
+ }
110
+
111
+ /** @protected */
112
+ _highlightChipAt(index) {
113
+ if (index > -1) {
114
+ this._setHighlightState({ type: 'chip', index });
115
+ } else {
116
+ this._clearChipHighlight();
117
+ }
118
+ }
119
+
120
+ /** @protected */
121
+ _clearChipHighlight() {
122
+ if (this._hasHighlightedChip) {
123
+ this._clearHighlight();
124
+ }
125
+ }
126
+ };
@@ -24,6 +24,8 @@ import type { InputMixinClass } from '@vaadin/field-base/src/input-mixin.js';
24
24
  import type { LabelMixinClass } from '@vaadin/field-base/src/label-mixin.js';
25
25
  import type { ValidateMixinClass } from '@vaadin/field-base/src/validate-mixin.js';
26
26
  import type { MultiSelectComboBox } from './vaadin-multi-select-combo-box.js';
27
+ import type { MultiSelectComboBoxHighlightMixinClass } from './vaadin-multi-select-combo-box-highlight-mixin.js';
28
+ import type { MultiSelectComboBoxSelectAllMixinClass } from './vaadin-multi-select-combo-box-select-all-mixin.js';
27
29
 
28
30
  export type MultiSelectComboBoxRenderer<TItem> = (
29
31
  root: HTMLElement,
@@ -37,6 +39,10 @@ export interface MultiSelectComboBoxI18n {
37
39
  selected?: string;
38
40
  deselected?: string;
39
41
  total?: string;
42
+ selectAll?: string;
43
+ deselectAll?: string;
44
+ selectFiltered?: string;
45
+ deselectFiltered?: string;
40
46
  }
41
47
 
42
48
  export declare function MultiSelectComboBoxMixin<TItem, T extends Constructor<HTMLElement>>(
@@ -56,7 +62,9 @@ export declare function MultiSelectComboBoxMixin<TItem, T extends Constructor<HT
56
62
  Constructor<InputMixinClass> &
57
63
  Constructor<KeyboardMixinClass> &
58
64
  Constructor<LabelMixinClass> &
65
+ Constructor<MultiSelectComboBoxHighlightMixinClass> &
59
66
  Constructor<MultiSelectComboBoxMixinClass<TItem>> &
67
+ Constructor<MultiSelectComboBoxSelectAllMixinClass> &
60
68
  Constructor<ResizeMixinClass> &
61
69
  Constructor<SlotStylesMixinClass> &
62
70
  Constructor<ValidateMixinClass> &
@@ -102,9 +110,11 @@ export declare class MultiSelectComboBoxMixinClass<TItem> {
102
110
 
103
111
  /**
104
112
  * The object used to localize this component. To change the default
105
- * localization, replace this with an object that provides all properties, or
113
+ * localization, set this to an object that provides all properties, or
106
114
  * just the individual properties you want to change.
107
115
  *
116
+ * When not set, defaults to `undefined`.
117
+ *
108
118
  * The object has the following JSON structure and default values:
109
119
  * ```js
110
120
  * {
@@ -119,10 +129,20 @@ export declare class MultiSelectComboBoxMixinClass<TItem> {
119
129
  * // Screen reader announcement of the selected items count.
120
130
  * // {count} is replaced with the actual count of items.
121
131
  * total: '{count} items selected',
132
+ * // Text of the select all button when no filter is set.
133
+ * selectAll: 'Select All',
134
+ * // Text of the select all button when no filter is set
135
+ * // and all items are selected.
136
+ * deselectAll: 'Deselect All',
137
+ * // Text of the select all button when a filter is set.
138
+ * selectFiltered: 'Select Filtered',
139
+ * // Text of the select all button when a filter is set
140
+ * // and all items matching the filter are selected.
141
+ * deselectFiltered: 'Deselect Filtered',
122
142
  * }
123
143
  * ```
124
144
  */
125
- i18n: MultiSelectComboBoxI18n;
145
+ i18n: MultiSelectComboBoxI18n | undefined;
126
146
 
127
147
  /**
128
148
  * When true, filter string isn't cleared after selecting an item.