@vaadin/multi-select-combo-box 25.0.0-alpha5 → 25.0.0-alpha7
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 +16 -14
- package/src/styles/vaadin-multi-select-combo-box-base-styles.d.ts +8 -0
- package/src/styles/vaadin-multi-select-combo-box-base-styles.js +59 -0
- package/src/styles/vaadin-multi-select-combo-box-chip-base-styles.js +114 -0
- package/src/styles/vaadin-multi-select-combo-box-overlay-base-styles.js +21 -0
- package/src/styles/vaadin-multi-select-combo-box-scroller-base-styles.js +8 -0
- package/src/styles/vaadin-multi-select-combo-box-scroller-core-styles.js +0 -3
- package/src/vaadin-multi-select-combo-box-chip.js +2 -2
- package/src/vaadin-multi-select-combo-box-container.js +1 -0
- package/src/vaadin-multi-select-combo-box-internal-mixin.js +6 -9
- package/src/vaadin-multi-select-combo-box-internal.js +2 -4
- package/src/vaadin-multi-select-combo-box-item.js +2 -2
- package/src/vaadin-multi-select-combo-box-overlay.js +2 -2
- package/src/vaadin-multi-select-combo-box-scroller.js +1 -2
- package/src/vaadin-multi-select-combo-box.d.ts +0 -1
- package/src/vaadin-multi-select-combo-box.js +3 -3
- package/theme/lumo/vaadin-multi-select-combo-box-styles.js +4 -1
- package/web-types.json +2 -2
- package/web-types.lit.json +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/multi-select-combo-box",
|
|
3
|
-
"version": "25.0.0-
|
|
3
|
+
"version": "25.0.0-alpha7",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
"lit.d.ts",
|
|
24
24
|
"lit.js",
|
|
25
25
|
"src",
|
|
26
|
+
"!src/styles/*-base-styles.d.ts",
|
|
27
|
+
"!src/styles/*-base-styles.js",
|
|
26
28
|
"theme",
|
|
27
29
|
"vaadin-*.d.ts",
|
|
28
30
|
"vaadin-*.js",
|
|
@@ -37,21 +39,21 @@
|
|
|
37
39
|
],
|
|
38
40
|
"dependencies": {
|
|
39
41
|
"@open-wc/dedupe-mixin": "^1.3.0",
|
|
40
|
-
"@vaadin/a11y-base": "25.0.0-
|
|
41
|
-
"@vaadin/combo-box": "25.0.0-
|
|
42
|
-
"@vaadin/component-base": "25.0.0-
|
|
43
|
-
"@vaadin/field-base": "25.0.0-
|
|
44
|
-
"@vaadin/input-container": "25.0.0-
|
|
45
|
-
"@vaadin/item": "25.0.0-
|
|
46
|
-
"@vaadin/lit-renderer": "25.0.0-
|
|
47
|
-
"@vaadin/overlay": "25.0.0-
|
|
48
|
-
"@vaadin/vaadin-lumo-styles": "25.0.0-
|
|
49
|
-
"@vaadin/vaadin-themable-mixin": "25.0.0-
|
|
42
|
+
"@vaadin/a11y-base": "25.0.0-alpha7",
|
|
43
|
+
"@vaadin/combo-box": "25.0.0-alpha7",
|
|
44
|
+
"@vaadin/component-base": "25.0.0-alpha7",
|
|
45
|
+
"@vaadin/field-base": "25.0.0-alpha7",
|
|
46
|
+
"@vaadin/input-container": "25.0.0-alpha7",
|
|
47
|
+
"@vaadin/item": "25.0.0-alpha7",
|
|
48
|
+
"@vaadin/lit-renderer": "25.0.0-alpha7",
|
|
49
|
+
"@vaadin/overlay": "25.0.0-alpha7",
|
|
50
|
+
"@vaadin/vaadin-lumo-styles": "25.0.0-alpha7",
|
|
51
|
+
"@vaadin/vaadin-themable-mixin": "25.0.0-alpha7",
|
|
50
52
|
"lit": "^3.0.0"
|
|
51
53
|
},
|
|
52
54
|
"devDependencies": {
|
|
53
|
-
"@vaadin/chai-plugins": "25.0.0-
|
|
54
|
-
"@vaadin/test-runner-commands": "25.0.0-
|
|
55
|
+
"@vaadin/chai-plugins": "25.0.0-alpha7",
|
|
56
|
+
"@vaadin/test-runner-commands": "25.0.0-alpha7",
|
|
55
57
|
"@vaadin/testing-helpers": "^2.0.0",
|
|
56
58
|
"sinon": "^18.0.0"
|
|
57
59
|
},
|
|
@@ -59,5 +61,5 @@
|
|
|
59
61
|
"web-types.json",
|
|
60
62
|
"web-types.lit.json"
|
|
61
63
|
],
|
|
62
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "87f72707ce6866892f8be5782fa0da008e87dcbc"
|
|
63
65
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright (c) 2021 - 2025 Vaadin Ltd.
|
|
4
|
+
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
|
+
*/
|
|
6
|
+
import { css } from 'lit';
|
|
7
|
+
import { comboBoxStyles } from '@vaadin/combo-box/src/styles/vaadin-combo-box-base-styles.js';
|
|
8
|
+
|
|
9
|
+
export const multiSelectComboBoxStyles = [
|
|
10
|
+
comboBoxStyles,
|
|
11
|
+
css`
|
|
12
|
+
@layer base {
|
|
13
|
+
:host {
|
|
14
|
+
max-width: 100%;
|
|
15
|
+
--_input-min-width: var(--vaadin-multi-select-combo-box-input-min-width, 4rem);
|
|
16
|
+
--_chip-min-width: var(--vaadin-multi-select-combo-box-chip-min-width, var(--vaadin-chip-min-width, 48px));
|
|
17
|
+
--_wrapper-gap: var(--vaadin-multi-select-combo-box-chips-gap, 2px);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
#chips {
|
|
21
|
+
display: flex;
|
|
22
|
+
align-items: center;
|
|
23
|
+
gap: var(--vaadin-multi-select-combo-box-chips-gap, 2px);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
::slotted(input) {
|
|
27
|
+
box-sizing: border-box;
|
|
28
|
+
flex: 1 0 var(--_input-min-width);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
::slotted([slot='chip']),
|
|
32
|
+
::slotted([slot='overflow']) {
|
|
33
|
+
flex: 0 1 auto;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
::slotted([slot='chip']) {
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
:host(:is([readonly], [disabled])) ::slotted(input) {
|
|
41
|
+
flex-grow: 0;
|
|
42
|
+
flex-basis: 0;
|
|
43
|
+
padding: 0;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:host([readonly]:not([disabled])) [part$='button'] {
|
|
47
|
+
cursor: var(--vaadin-clickable-cursor);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
:host([auto-expand-vertically]) #chips {
|
|
51
|
+
display: contents;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:host([auto-expand-horizontally]) [class$='container'] {
|
|
55
|
+
width: auto;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
`,
|
|
59
|
+
];
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright (c) 2021 - 2025 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/style-props.js';
|
|
7
|
+
import { css } from 'lit';
|
|
8
|
+
|
|
9
|
+
export const multiSelectComboBoxChipStyles = css`
|
|
10
|
+
@layer base {
|
|
11
|
+
:host {
|
|
12
|
+
display: inline-flex;
|
|
13
|
+
align-items: center;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
white-space: nowrap;
|
|
16
|
+
box-sizing: border-box;
|
|
17
|
+
gap: var(--vaadin-chip-gap, var(--vaadin-chip-padding, 0.3em));
|
|
18
|
+
background: var(--vaadin-chip-background, var(--vaadin-background-container));
|
|
19
|
+
color: var(--vaadin-chip-color, var(--vaadin-color));
|
|
20
|
+
font-size: var(--vaadin-chip-font-size, 0.875em);
|
|
21
|
+
font-weight: var(--vaadin-chip-font-weight, 500);
|
|
22
|
+
line-height: var(--vaadin-input-field-value-line-height, inherit);
|
|
23
|
+
padding: 0 var(--vaadin-chip-padding, 0.3em);
|
|
24
|
+
height: var(--vaadin-chip-height, calc(1lh / 0.875));
|
|
25
|
+
border-radius: var(--vaadin-chip-border-radius, var(--vaadin-radius-m));
|
|
26
|
+
border: var(--vaadin-chip-border-width, 1px) solid var(--vaadin-chip-border-color, var(--vaadin-border-color));
|
|
27
|
+
cursor: default;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
:host(:not([slot='overflow'])) {
|
|
31
|
+
min-width: min(
|
|
32
|
+
max-content,
|
|
33
|
+
var(--vaadin-multi-select-combo-box-chip-min-width, var(--vaadin-chip-min-width, 48px))
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:host([focused]) {
|
|
38
|
+
outline: var(--vaadin-focus-ring-width) solid var(--vaadin-focus-ring-color);
|
|
39
|
+
outline-offset: calc(var(--vaadin-chip-border-width, 1px) * -1);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
[part='label'] {
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
text-overflow: ellipsis;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
[part='remove-button'] {
|
|
48
|
+
flex: none;
|
|
49
|
+
display: block;
|
|
50
|
+
margin-inline: auto calc(var(--vaadin-chip-padding, 0.3em) * -1);
|
|
51
|
+
color: var(--vaadin-chip-remove-button-color, var(--vaadin-color-subtle));
|
|
52
|
+
cursor: var(--vaadin-clickable-cursor);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
[part='remove-button']::before {
|
|
56
|
+
content: '';
|
|
57
|
+
display: block;
|
|
58
|
+
width: var(--vaadin-icon-size, 1lh);
|
|
59
|
+
height: var(--vaadin-icon-size, 1lh);
|
|
60
|
+
background: currentColor;
|
|
61
|
+
mask-image: var(--_vaadin-icon-cross);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:host([disabled]) {
|
|
65
|
+
cursor: var(--vaadin-disabled-cursor);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
:host([disabled]) [part='label'] {
|
|
69
|
+
--vaadin-chip-color: var(--vaadin-color-disabled);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
:host([hidden]),
|
|
73
|
+
:host(:is([readonly], [disabled], [slot='overflow'])) [part='remove-button'] {
|
|
74
|
+
display: none !important;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
:host([slot='overflow']) {
|
|
78
|
+
position: relative;
|
|
79
|
+
margin-inline-start: 8px;
|
|
80
|
+
min-width: 1.5em;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
:host([slot='overflow'])::before,
|
|
84
|
+
:host([slot='overflow'])::after {
|
|
85
|
+
content: '';
|
|
86
|
+
position: absolute;
|
|
87
|
+
inset: calc(var(--vaadin-chip-border-width, 1px) * -1);
|
|
88
|
+
border-inline-start: 2px solid var(--vaadin-chip-border-color, var(--vaadin-border-color));
|
|
89
|
+
border-radius: inherit;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
:host([slot='overflow'])::before {
|
|
93
|
+
left: calc(-4px - var(--vaadin-chip-border-width, 1px));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
:host([slot='overflow'])::after {
|
|
97
|
+
left: calc(-8px - var(--vaadin-chip-border-width, 1px));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
:host([count='2']) {
|
|
101
|
+
margin-inline-start: 4px;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
:host([count='1']) {
|
|
105
|
+
margin-inline-start: 0;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
:host([count='2'])::after,
|
|
109
|
+
:host([count='1'])::before,
|
|
110
|
+
:host([count='1'])::after {
|
|
111
|
+
display: none;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
`;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright (c) 2021 - 2025 Vaadin Ltd.
|
|
4
|
+
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
|
+
*/
|
|
6
|
+
import { css } from 'lit';
|
|
7
|
+
import { comboBoxOverlayStyles } from '@vaadin/combo-box/src/styles/vaadin-combo-box-overlay-base-styles.js';
|
|
8
|
+
|
|
9
|
+
export const multiSelectComboBoxOverlayStyles = [
|
|
10
|
+
comboBoxOverlayStyles,
|
|
11
|
+
css`
|
|
12
|
+
@layer base {
|
|
13
|
+
#overlay {
|
|
14
|
+
width: var(
|
|
15
|
+
--vaadin-multi-select-combo-box-overlay-width,
|
|
16
|
+
var(--_vaadin-multi-select-combo-box-overlay-default-width, auto)
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`,
|
|
21
|
+
];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright (c) 2021 - 2025 Vaadin Ltd.
|
|
4
|
+
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
|
+
*/
|
|
6
|
+
import { comboBoxScrollerStyles } from '@vaadin/combo-box/src/styles/vaadin-combo-box-scroller-base-styles.js';
|
|
7
|
+
|
|
8
|
+
export const multiSelectComboBoxScrollerStyles = comboBoxScrollerStyles;
|
|
@@ -14,9 +14,6 @@ export const multiSelectComboBoxScrollerStyles = css`
|
|
|
14
14
|
/* Fixes item background from getting on top of scrollbars on Safari */
|
|
15
15
|
transform: translate3d(0, 0, 0);
|
|
16
16
|
|
|
17
|
-
/* Enable momentum scrolling on iOS */
|
|
18
|
-
-webkit-overflow-scrolling: touch;
|
|
19
|
-
|
|
20
17
|
/* Fixes scrollbar disappearing when 'Show scroll bars: Always' enabled in Safari */
|
|
21
18
|
box-shadow: 0 0 0 white;
|
|
22
19
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { html, LitElement } from 'lit';
|
|
7
7
|
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
8
8
|
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
|
|
9
|
-
import {
|
|
9
|
+
import { LumoInjectionMixin } from '@vaadin/vaadin-themable-mixin/lumo-injection-mixin.js';
|
|
10
10
|
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
11
11
|
import { multiSelectComboBoxChipStyles } from './styles/vaadin-multi-select-combo-box-chip-core-styles.js';
|
|
12
12
|
|
|
@@ -28,7 +28,7 @@ import { multiSelectComboBoxChipStyles } from './styles/vaadin-multi-select-comb
|
|
|
28
28
|
* @extends HTMLElement
|
|
29
29
|
* @private
|
|
30
30
|
*/
|
|
31
|
-
class MultiSelectComboBoxChip extends
|
|
31
|
+
class MultiSelectComboBoxChip extends LumoInjectionMixin(ThemableMixin(PolylitMixin(LitElement))) {
|
|
32
32
|
static get is() {
|
|
33
33
|
return 'vaadin-multi-select-combo-box-chip';
|
|
34
34
|
}
|
|
@@ -93,6 +93,10 @@ export const MultiSelectComboBoxInternalMixin = (superClass) =>
|
|
|
93
93
|
sync: true,
|
|
94
94
|
},
|
|
95
95
|
|
|
96
|
+
owner: {
|
|
97
|
+
type: Object,
|
|
98
|
+
},
|
|
99
|
+
|
|
96
100
|
_target: {
|
|
97
101
|
type: Object,
|
|
98
102
|
},
|
|
@@ -177,7 +181,7 @@ export const MultiSelectComboBoxInternalMixin = (superClass) =>
|
|
|
177
181
|
if (items && items.length && this.topGroup && this.topGroup.length) {
|
|
178
182
|
// Filter out items included to the top group.
|
|
179
183
|
const filteredItems = items.filter(
|
|
180
|
-
(item) => this.
|
|
184
|
+
(item) => this.owner._findIndex(item, this.topGroup, this.itemIdPath) === -1,
|
|
181
185
|
);
|
|
182
186
|
|
|
183
187
|
super._setDropdownItems(this.topGroup.concat(filteredItems));
|
|
@@ -196,18 +200,11 @@ export const MultiSelectComboBoxInternalMixin = (superClass) =>
|
|
|
196
200
|
|
|
197
201
|
/**
|
|
198
202
|
* Override combo-box method to set correct owner for using by item renderers.
|
|
199
|
-
* This needs to be done before the scroller gets added to the DOM to ensure
|
|
200
|
-
* Lit directive works in case when combo-box is opened using attribute.
|
|
201
|
-
*
|
|
202
203
|
* @protected
|
|
203
204
|
* @override
|
|
204
205
|
*/
|
|
205
206
|
_initScroller() {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
this._comboBox = comboBox;
|
|
209
|
-
|
|
210
|
-
super._initScroller(comboBox);
|
|
207
|
+
super._initScroller(this.owner);
|
|
211
208
|
}
|
|
212
209
|
|
|
213
210
|
/**
|
|
@@ -10,7 +10,6 @@ import { css, html, LitElement } from 'lit';
|
|
|
10
10
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
11
11
|
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
12
12
|
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
|
|
13
|
-
import { CSSInjectionMixin } from '@vaadin/vaadin-themable-mixin/css-injection-mixin.js';
|
|
14
13
|
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
15
14
|
import { MultiSelectComboBoxInternalMixin } from './vaadin-multi-select-combo-box-internal-mixin.js';
|
|
16
15
|
|
|
@@ -23,9 +22,7 @@ import { MultiSelectComboBoxInternalMixin } from './vaadin-multi-select-combo-bo
|
|
|
23
22
|
* @mixes ThemableMixin
|
|
24
23
|
* @private
|
|
25
24
|
*/
|
|
26
|
-
class MultiSelectComboBoxInternal extends MultiSelectComboBoxInternalMixin(
|
|
27
|
-
CSSInjectionMixin(ThemableMixin(PolylitMixin(LitElement))),
|
|
28
|
-
) {
|
|
25
|
+
class MultiSelectComboBoxInternal extends MultiSelectComboBoxInternalMixin(ThemableMixin(PolylitMixin(LitElement))) {
|
|
29
26
|
static get is() {
|
|
30
27
|
return 'vaadin-multi-select-combo-box-internal';
|
|
31
28
|
}
|
|
@@ -45,6 +42,7 @@ class MultiSelectComboBoxInternal extends MultiSelectComboBoxInternalMixin(
|
|
|
45
42
|
|
|
46
43
|
<vaadin-multi-select-combo-box-overlay
|
|
47
44
|
id="overlay"
|
|
45
|
+
.owner="${this.owner}"
|
|
48
46
|
.opened="${this._overlayOpened}"
|
|
49
47
|
?loading="${this.loading}"
|
|
50
48
|
theme="${ifDefined(this._theme)}"
|
|
@@ -9,7 +9,7 @@ import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
|
9
9
|
import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
|
|
10
10
|
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
|
|
11
11
|
import { itemStyles } from '@vaadin/item/src/styles/vaadin-item-core-styles.js';
|
|
12
|
-
import {
|
|
12
|
+
import { LumoInjectionMixin } from '@vaadin/vaadin-themable-mixin/lumo-injection-mixin.js';
|
|
13
13
|
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
14
14
|
|
|
15
15
|
/**
|
|
@@ -40,7 +40,7 @@ import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mix
|
|
|
40
40
|
* @private
|
|
41
41
|
*/
|
|
42
42
|
export class MultiSelectComboBoxItem extends ComboBoxItemMixin(
|
|
43
|
-
|
|
43
|
+
LumoInjectionMixin(ThemableMixin(DirMixin(PolylitMixin(LitElement)))),
|
|
44
44
|
) {
|
|
45
45
|
static get is() {
|
|
46
46
|
return 'vaadin-multi-select-combo-box-item';
|
|
@@ -10,7 +10,7 @@ import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
|
|
|
10
10
|
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
|
|
11
11
|
import { overlayStyles } from '@vaadin/overlay/src/styles/vaadin-overlay-core-styles.js';
|
|
12
12
|
import { OverlayMixin } from '@vaadin/overlay/src/vaadin-overlay-mixin.js';
|
|
13
|
-
import {
|
|
13
|
+
import { LumoInjectionMixin } from '@vaadin/vaadin-themable-mixin/lumo-injection-mixin.js';
|
|
14
14
|
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
15
15
|
import { multiSelectComboBoxOverlayStyles } from './styles/vaadin-multi-select-combo-box-overlay-core-styles.js';
|
|
16
16
|
|
|
@@ -26,7 +26,7 @@ import { multiSelectComboBoxOverlayStyles } from './styles/vaadin-multi-select-c
|
|
|
26
26
|
* @private
|
|
27
27
|
*/
|
|
28
28
|
class MultiSelectComboBoxOverlay extends ComboBoxOverlayMixin(
|
|
29
|
-
OverlayMixin(DirMixin(
|
|
29
|
+
OverlayMixin(DirMixin(LumoInjectionMixin(ThemableMixin(PolylitMixin(LitElement))))),
|
|
30
30
|
) {
|
|
31
31
|
static get is() {
|
|
32
32
|
return 'vaadin-multi-select-combo-box-overlay';
|
|
@@ -8,7 +8,6 @@ import { ComboBoxPlaceholder } from '@vaadin/combo-box/src/vaadin-combo-box-plac
|
|
|
8
8
|
import { ComboBoxScrollerMixin } from '@vaadin/combo-box/src/vaadin-combo-box-scroller-mixin.js';
|
|
9
9
|
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
10
10
|
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
|
|
11
|
-
import { CSSInjectionMixin } from '@vaadin/vaadin-themable-mixin/css-injection-mixin.js';
|
|
12
11
|
import { multiSelectComboBoxScrollerStyles } from './styles/vaadin-multi-select-combo-box-scroller-core-styles.js';
|
|
13
12
|
|
|
14
13
|
/**
|
|
@@ -19,7 +18,7 @@ import { multiSelectComboBoxScrollerStyles } from './styles/vaadin-multi-select-
|
|
|
19
18
|
* @mixes ComboBoxScrollerMixin
|
|
20
19
|
* @private
|
|
21
20
|
*/
|
|
22
|
-
export class MultiSelectComboBoxScroller extends ComboBoxScrollerMixin(
|
|
21
|
+
export class MultiSelectComboBoxScroller extends ComboBoxScrollerMixin(PolylitMixin(LitElement)) {
|
|
23
22
|
static get is() {
|
|
24
23
|
return 'vaadin-multi-select-combo-box-scroller';
|
|
25
24
|
}
|
|
@@ -130,7 +130,6 @@ export interface MultiSelectComboBoxEventMap<TItem> extends HTMLElementEventMap
|
|
|
130
130
|
* `--vaadin-field-default-width` | Default width of the field | `12em`
|
|
131
131
|
* `--vaadin-multi-select-combo-box-overlay-width` | Width of the overlay | `auto`
|
|
132
132
|
* `--vaadin-multi-select-combo-box-overlay-max-height` | Max height of the overlay | `65vh`
|
|
133
|
-
* `--vaadin-multi-select-combo-box-chip-min-width` | Min width of the chip | `50px`
|
|
134
133
|
* `--vaadin-multi-select-combo-box-input-min-width` | Min width of the input | `4em`
|
|
135
134
|
*
|
|
136
135
|
* ### Internal components
|
|
@@ -12,7 +12,7 @@ import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
|
12
12
|
import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
|
|
13
13
|
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
|
|
14
14
|
import { inputFieldShared } from '@vaadin/field-base/src/styles/input-field-shared-styles.js';
|
|
15
|
-
import {
|
|
15
|
+
import { LumoInjectionMixin } from '@vaadin/vaadin-themable-mixin/lumo-injection-mixin.js';
|
|
16
16
|
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
17
17
|
import { multiSelectComboBoxStyles } from './styles/vaadin-multi-select-combo-box-core-styles.js';
|
|
18
18
|
import { MultiSelectComboBoxMixin } from './vaadin-multi-select-combo-box-mixin.js';
|
|
@@ -69,7 +69,6 @@ import { MultiSelectComboBoxMixin } from './vaadin-multi-select-combo-box-mixin.
|
|
|
69
69
|
* `--vaadin-field-default-width` | Default width of the field | `12em`
|
|
70
70
|
* `--vaadin-multi-select-combo-box-overlay-width` | Width of the overlay | `auto`
|
|
71
71
|
* `--vaadin-multi-select-combo-box-overlay-max-height` | Max height of the overlay | `65vh`
|
|
72
|
-
* `--vaadin-multi-select-combo-box-chip-min-width` | Min width of the chip | `50px`
|
|
73
72
|
* `--vaadin-multi-select-combo-box-input-min-width` | Min width of the input | `4em`
|
|
74
73
|
*
|
|
75
74
|
* ### Internal components
|
|
@@ -101,7 +100,7 @@ import { MultiSelectComboBoxMixin } from './vaadin-multi-select-combo-box-mixin.
|
|
|
101
100
|
* @mixes MultiSelectComboBoxMixin
|
|
102
101
|
*/
|
|
103
102
|
class MultiSelectComboBox extends MultiSelectComboBoxMixin(
|
|
104
|
-
|
|
103
|
+
LumoInjectionMixin(ThemableMixin(ElementMixin(PolylitMixin(LitElement)))),
|
|
105
104
|
) {
|
|
106
105
|
static get is() {
|
|
107
106
|
return 'vaadin-multi-select-combo-box';
|
|
@@ -122,6 +121,7 @@ class MultiSelectComboBox extends MultiSelectComboBoxMixin(
|
|
|
122
121
|
|
|
123
122
|
<vaadin-multi-select-combo-box-internal
|
|
124
123
|
id="comboBox"
|
|
124
|
+
.owner="${this}"
|
|
125
125
|
.filteredItems="${this.filteredItems}"
|
|
126
126
|
.items="${this.items}"
|
|
127
127
|
.itemIdPath="${this.itemIdPath}"
|
|
@@ -59,6 +59,10 @@ registerStyles(
|
|
|
59
59
|
);
|
|
60
60
|
|
|
61
61
|
const multiSelectComboBox = css`
|
|
62
|
+
:host {
|
|
63
|
+
--_wrapper-gap: 0;
|
|
64
|
+
}
|
|
65
|
+
|
|
62
66
|
:host([has-value]) {
|
|
63
67
|
padding-inline-start: 0;
|
|
64
68
|
}
|
|
@@ -77,7 +81,6 @@ const multiSelectComboBox = css`
|
|
|
77
81
|
min-height: auto;
|
|
78
82
|
padding: 0.3125em calc(0.5em + var(--lumo-border-radius-s) / 4);
|
|
79
83
|
color: var(--lumo-body-text-color);
|
|
80
|
-
-webkit-mask-image: none;
|
|
81
84
|
mask-image: none;
|
|
82
85
|
}
|
|
83
86
|
|
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": "25.0.0-
|
|
4
|
+
"version": "25.0.0-alpha7",
|
|
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-
|
|
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.",
|
|
12
12
|
"attributes": [
|
|
13
13
|
{
|
|
14
14
|
"name": "disabled",
|
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": "25.0.0-
|
|
4
|
+
"version": "25.0.0-alpha7",
|
|
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-
|
|
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.",
|
|
20
20
|
"extension": true,
|
|
21
21
|
"attributes": [
|
|
22
22
|
{
|