@vaadin/combo-box 24.2.0-dev.e9803eea7 → 24.3.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.
- package/package.json +14 -14
- package/src/vaadin-combo-box-item.js +3 -1
- package/src/vaadin-combo-box-light.d.ts +8 -0
- package/src/vaadin-combo-box-light.js +3 -1
- package/src/vaadin-combo-box-mixin.js +9 -3
- package/src/vaadin-combo-box-overlay.js +3 -1
- package/src/vaadin-combo-box-scroller-mixin.js +2 -1
- package/src/vaadin-combo-box-scroller.js +3 -1
- package/src/vaadin-combo-box.d.ts +8 -0
- package/src/vaadin-combo-box.js +4 -1
- package/web-types.json +1240 -0
- package/web-types.lit.json +601 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/combo-box",
|
|
3
|
-
"version": "24.
|
|
3
|
+
"version": "24.3.0-alpha1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -38,21 +38,21 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@open-wc/dedupe-mixin": "^1.3.0",
|
|
40
40
|
"@polymer/polymer": "^3.0.0",
|
|
41
|
-
"@vaadin/a11y-base": "24.
|
|
42
|
-
"@vaadin/component-base": "24.
|
|
43
|
-
"@vaadin/field-base": "24.
|
|
44
|
-
"@vaadin/input-container": "24.
|
|
45
|
-
"@vaadin/item": "24.
|
|
46
|
-
"@vaadin/lit-renderer": "24.
|
|
47
|
-
"@vaadin/overlay": "24.
|
|
48
|
-
"@vaadin/vaadin-lumo-styles": "24.
|
|
49
|
-
"@vaadin/vaadin-material-styles": "24.
|
|
50
|
-
"@vaadin/vaadin-themable-mixin": "24.
|
|
41
|
+
"@vaadin/a11y-base": "24.3.0-alpha1",
|
|
42
|
+
"@vaadin/component-base": "24.3.0-alpha1",
|
|
43
|
+
"@vaadin/field-base": "24.3.0-alpha1",
|
|
44
|
+
"@vaadin/input-container": "24.3.0-alpha1",
|
|
45
|
+
"@vaadin/item": "24.3.0-alpha1",
|
|
46
|
+
"@vaadin/lit-renderer": "24.3.0-alpha1",
|
|
47
|
+
"@vaadin/overlay": "24.3.0-alpha1",
|
|
48
|
+
"@vaadin/vaadin-lumo-styles": "24.3.0-alpha1",
|
|
49
|
+
"@vaadin/vaadin-material-styles": "24.3.0-alpha1",
|
|
50
|
+
"@vaadin/vaadin-themable-mixin": "24.3.0-alpha1"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@esm-bundle/chai": "^4.3.4",
|
|
54
|
-
"@vaadin/testing-helpers": "^0.
|
|
55
|
-
"@vaadin/text-field": "24.
|
|
54
|
+
"@vaadin/testing-helpers": "^0.5.0",
|
|
55
|
+
"@vaadin/text-field": "24.3.0-alpha1",
|
|
56
56
|
"lit": "^2.0.0",
|
|
57
57
|
"sinon": "^13.0.2"
|
|
58
58
|
},
|
|
@@ -60,5 +60,5 @@
|
|
|
60
60
|
"web-types.json",
|
|
61
61
|
"web-types.lit.json"
|
|
62
62
|
],
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "9ca6f3ca220a777e8eea181a1f5717e39a732240"
|
|
64
64
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
6
|
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
|
|
7
|
+
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
7
8
|
import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
|
|
8
9
|
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
9
10
|
import { ComboBoxItemMixin } from './vaadin-combo-box-item-mixin.js';
|
|
@@ -29,6 +30,7 @@ import { ComboBoxItemMixin } from './vaadin-combo-box-item-mixin.js';
|
|
|
29
30
|
*
|
|
30
31
|
* See [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.
|
|
31
32
|
*
|
|
33
|
+
* @customElement
|
|
32
34
|
* @mixes ComboBoxItemMixin
|
|
33
35
|
* @mixes ThemableMixin
|
|
34
36
|
* @mixes DirMixin
|
|
@@ -58,4 +60,4 @@ export class ComboBoxItem extends ComboBoxItemMixin(ThemableMixin(DirMixin(Polym
|
|
|
58
60
|
}
|
|
59
61
|
}
|
|
60
62
|
|
|
61
|
-
|
|
63
|
+
defineCustomElement(ComboBoxItem);
|
|
@@ -41,6 +41,11 @@ export type ComboBoxLightOpenedChangedEvent = CustomEvent<{ value: boolean }>;
|
|
|
41
41
|
*/
|
|
42
42
|
export type ComboBoxLightInvalidChangedEvent = CustomEvent<{ value: boolean }>;
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Fired when the `dirty` property changes.
|
|
46
|
+
*/
|
|
47
|
+
export type ComboBoxLightDirtyChangedEvent = CustomEvent<{ value: boolean }>;
|
|
48
|
+
|
|
44
49
|
/**
|
|
45
50
|
* Fired when the `value` property changes.
|
|
46
51
|
*/
|
|
@@ -72,6 +77,8 @@ export interface ComboBoxLightEventMap<TItem> extends HTMLElementEventMap {
|
|
|
72
77
|
|
|
73
78
|
'invalid-changed': ComboBoxLightInvalidChangedEvent;
|
|
74
79
|
|
|
80
|
+
'dirty-changed': ComboBoxLightDirtyChangedEvent;
|
|
81
|
+
|
|
75
82
|
'value-changed': ComboBoxLightValueChangedEvent;
|
|
76
83
|
|
|
77
84
|
'selected-item-changed': ComboBoxLightSelectedItemChangedEvent<TItem>;
|
|
@@ -122,6 +129,7 @@ export interface ComboBoxLightEventMap<TItem> extends HTMLElementEventMap {
|
|
|
122
129
|
* @fires {CustomEvent} invalid-changed - Fired when the `invalid` property changes.
|
|
123
130
|
* @fires {CustomEvent} opened-changed - Fired when the `opened` property changes.
|
|
124
131
|
* @fires {CustomEvent} selected-item-changed - Fired when the `selectedItem` property changes.
|
|
132
|
+
* @fires {CustomEvent} dirty-changed - Fired when the `dirty` property changes.
|
|
125
133
|
* @fires {CustomEvent} value-changed - Fired when the `value` property changes.
|
|
126
134
|
* @fires {CustomEvent} validated - Fired whenever the field is validated.
|
|
127
135
|
*/
|
|
@@ -9,6 +9,7 @@ import './vaadin-combo-box-scroller.js';
|
|
|
9
9
|
import { dashToCamelCase } from '@polymer/polymer/lib/utils/case-map.js';
|
|
10
10
|
import { afterNextRender } from '@polymer/polymer/lib/utils/render-status.js';
|
|
11
11
|
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
|
|
12
|
+
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
12
13
|
import { ValidateMixin } from '@vaadin/field-base/src/validate-mixin.js';
|
|
13
14
|
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
14
15
|
import { ComboBoxDataProviderMixin } from './vaadin-combo-box-data-provider-mixin.js';
|
|
@@ -60,6 +61,7 @@ import { ComboBoxMixin } from './vaadin-combo-box-mixin.js';
|
|
|
60
61
|
* @fires {CustomEvent} value-changed - Fired when the `value` property changes.
|
|
61
62
|
* @fires {CustomEvent} validated - Fired whenever the field is validated.
|
|
62
63
|
*
|
|
64
|
+
* @customElement
|
|
63
65
|
* @extends HTMLElement
|
|
64
66
|
* @mixes ComboBoxDataProviderMixin
|
|
65
67
|
* @mixes ComboBoxMixin
|
|
@@ -212,6 +214,6 @@ class ComboBoxLight extends ComboBoxDataProviderMixin(ComboBoxMixin(ValidateMixi
|
|
|
212
214
|
}
|
|
213
215
|
}
|
|
214
216
|
|
|
215
|
-
|
|
217
|
+
defineCustomElement(ComboBoxLight);
|
|
216
218
|
|
|
217
219
|
export { ComboBoxLight };
|
|
@@ -10,6 +10,7 @@ import { KeyboardMixin } from '@vaadin/a11y-base/src/keyboard-mixin.js';
|
|
|
10
10
|
import { isTouch } from '@vaadin/component-base/src/browser-utils.js';
|
|
11
11
|
import { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js';
|
|
12
12
|
import { OverlayClassMixin } from '@vaadin/component-base/src/overlay-class-mixin.js';
|
|
13
|
+
import { get } from '@vaadin/component-base/src/path-utils.js';
|
|
13
14
|
import { processTemplates } from '@vaadin/component-base/src/templates.js';
|
|
14
15
|
import { InputMixin } from '@vaadin/field-base/src/input-mixin.js';
|
|
15
16
|
import { ValidateMixin } from '@vaadin/field-base/src/validate-mixin.js';
|
|
@@ -661,7 +662,7 @@ export const ComboBoxMixin = (subclass) =>
|
|
|
661
662
|
|
|
662
663
|
/** @private */
|
|
663
664
|
_getItemLabel(item) {
|
|
664
|
-
let label = item && this.itemLabelPath ?
|
|
665
|
+
let label = item && this.itemLabelPath ? get(this.itemLabelPath, item) : undefined;
|
|
665
666
|
if (label === undefined || label === null) {
|
|
666
667
|
label = item ? item.toString() : '';
|
|
667
668
|
}
|
|
@@ -670,7 +671,7 @@ export const ComboBoxMixin = (subclass) =>
|
|
|
670
671
|
|
|
671
672
|
/** @private */
|
|
672
673
|
_getItemValue(item) {
|
|
673
|
-
let value = item && this.itemValuePath ?
|
|
674
|
+
let value = item && this.itemValuePath ? get(this.itemValuePath, item) : undefined;
|
|
674
675
|
if (value === undefined) {
|
|
675
676
|
value = item ? item.toString() : '';
|
|
676
677
|
}
|
|
@@ -1086,13 +1087,18 @@ export const ComboBoxMixin = (subclass) =>
|
|
|
1086
1087
|
|
|
1087
1088
|
/** @private */
|
|
1088
1089
|
_detectAndDispatchChange() {
|
|
1090
|
+
const isValueChanged = this.value !== this._lastCommittedValue;
|
|
1091
|
+
if (isValueChanged) {
|
|
1092
|
+
this.dirty = true;
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1089
1095
|
// Do not validate when focusout is caused by document
|
|
1090
1096
|
// losing focus, which happens on browser tab switch.
|
|
1091
1097
|
if (document.hasFocus()) {
|
|
1092
1098
|
this.validate();
|
|
1093
1099
|
}
|
|
1094
1100
|
|
|
1095
|
-
if (
|
|
1101
|
+
if (isValueChanged) {
|
|
1096
1102
|
this.dispatchEvent(new CustomEvent('change', { bubbles: true }));
|
|
1097
1103
|
this._lastCommittedValue = this.value;
|
|
1098
1104
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
6
|
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
|
|
7
|
+
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
7
8
|
import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
|
|
8
9
|
import { OverlayMixin } from '@vaadin/overlay/src/vaadin-overlay-mixin.js';
|
|
9
10
|
import { overlayStyles } from '@vaadin/overlay/src/vaadin-overlay-styles.js';
|
|
@@ -29,6 +30,7 @@ registerStyles('vaadin-combo-box-overlay', [overlayStyles, comboBoxOverlayStyles
|
|
|
29
30
|
/**
|
|
30
31
|
* An element used internally by `<vaadin-combo-box>`. Not intended to be used separately.
|
|
31
32
|
*
|
|
33
|
+
* @customElement
|
|
32
34
|
* @extends HTMLElement
|
|
33
35
|
* @mixes ComboBoxOverlayMixin
|
|
34
36
|
* @mixes DirMixin
|
|
@@ -52,4 +54,4 @@ export class ComboBoxOverlay extends ComboBoxOverlayMixin(OverlayMixin(DirMixin(
|
|
|
52
54
|
}
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
|
|
57
|
+
defineCustomElement(ComboBoxOverlay);
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright (c) 2015 - 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 { get } from '@vaadin/component-base/src/path-utils.js';
|
|
6
7
|
import { generateUniqueId } from '@vaadin/component-base/src/unique-id-utils.js';
|
|
7
8
|
import { Virtualizer } from '@vaadin/component-base/src/virtualizer.js';
|
|
8
9
|
import { ComboBoxPlaceholder } from './vaadin-combo-box-placeholder.js';
|
|
@@ -202,7 +203,7 @@ export const ComboBoxScrollerMixin = (superClass) =>
|
|
|
202
203
|
if (item instanceof ComboBoxPlaceholder) {
|
|
203
204
|
return false;
|
|
204
205
|
} else if (itemIdPath && item !== undefined && selectedItem !== undefined) {
|
|
205
|
-
return
|
|
206
|
+
return get(itemIdPath, item) === get(itemIdPath, selectedItem);
|
|
206
207
|
}
|
|
207
208
|
return item === selectedItem;
|
|
208
209
|
}
|
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
6
|
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
|
|
7
|
+
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
7
8
|
import { ComboBoxScrollerMixin } from './vaadin-combo-box-scroller-mixin.js';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* An element used internally by `<vaadin-combo-box>`. Not intended to be used separately.
|
|
11
12
|
*
|
|
13
|
+
* @customElement
|
|
12
14
|
* @extends HTMLElement
|
|
13
15
|
* @mixes ComboBoxScrollerMixin
|
|
14
16
|
* @private
|
|
@@ -50,4 +52,4 @@ export class ComboBoxScroller extends ComboBoxScrollerMixin(PolymerElement) {
|
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
|
|
55
|
+
defineCustomElement(ComboBoxScroller);
|
|
@@ -53,6 +53,11 @@ export type ComboBoxOpenedChangedEvent = CustomEvent<{ value: boolean }>;
|
|
|
53
53
|
*/
|
|
54
54
|
export type ComboBoxInvalidChangedEvent = CustomEvent<{ value: boolean }>;
|
|
55
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Fired when the `dirty` property changes.
|
|
58
|
+
*/
|
|
59
|
+
export type ComboBoxDirtyChangedEvent = CustomEvent<{ value: boolean }>;
|
|
60
|
+
|
|
56
61
|
/**
|
|
57
62
|
* Fired when the `value` property changes.
|
|
58
63
|
*/
|
|
@@ -84,6 +89,8 @@ export interface ComboBoxEventMap<TItem> extends HTMLElementEventMap {
|
|
|
84
89
|
|
|
85
90
|
'invalid-changed': ComboBoxInvalidChangedEvent;
|
|
86
91
|
|
|
92
|
+
'dirty-changed': ComboBoxDirtyChangedEvent;
|
|
93
|
+
|
|
87
94
|
'value-changed': ComboBoxValueChangedEvent;
|
|
88
95
|
|
|
89
96
|
'selected-item-changed': ComboBoxSelectedItemChangedEvent<TItem>;
|
|
@@ -212,6 +219,7 @@ export interface ComboBoxEventMap<TItem> extends HTMLElementEventMap {
|
|
|
212
219
|
* @fires {CustomEvent} filter-changed - Fired when the `filter` property changes.
|
|
213
220
|
* @fires {CustomEvent} invalid-changed - Fired when the `invalid` property changes.
|
|
214
221
|
* @fires {CustomEvent} opened-changed - Fired when the `opened` property changes.
|
|
222
|
+
* @fires {CustomEvent} dirty-changed - Fired when the `dirty` property changes.
|
|
215
223
|
* @fires {CustomEvent} selected-item-changed - Fired when the `selectedItem` property changes.
|
|
216
224
|
* @fires {CustomEvent} value-changed - Fired when the `value` property changes.
|
|
217
225
|
* @fires {CustomEvent} validated - Fired whenever the field is validated.
|
package/src/vaadin-combo-box.js
CHANGED
|
@@ -8,6 +8,7 @@ import './vaadin-combo-box-item.js';
|
|
|
8
8
|
import './vaadin-combo-box-overlay.js';
|
|
9
9
|
import './vaadin-combo-box-scroller.js';
|
|
10
10
|
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
|
|
11
|
+
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
11
12
|
import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
|
|
12
13
|
import { TooltipController } from '@vaadin/component-base/src/tooltip-controller.js';
|
|
13
14
|
import { InputControlMixin } from '@vaadin/field-base/src/input-control-mixin.js';
|
|
@@ -146,6 +147,7 @@ registerStyles('vaadin-combo-box', inputFieldShared, { moduleId: 'vaadin-combo-b
|
|
|
146
147
|
* @fires {CustomEvent} value-changed - Fired when the `value` property changes.
|
|
147
148
|
* @fires {CustomEvent} validated - Fired whenever the field is validated.
|
|
148
149
|
*
|
|
150
|
+
* @customElement
|
|
149
151
|
* @extends HTMLElement
|
|
150
152
|
* @mixes ElementMixin
|
|
151
153
|
* @mixes ThemableMixin
|
|
@@ -248,6 +250,7 @@ class ComboBox extends ComboBoxDataProviderMixin(
|
|
|
248
250
|
this._tooltipController = new TooltipController(this);
|
|
249
251
|
this.addController(this._tooltipController);
|
|
250
252
|
this._tooltipController.setPosition('top');
|
|
253
|
+
this._tooltipController.setAriaTarget(this.inputElement);
|
|
251
254
|
this._tooltipController.setShouldShow((target) => !target.opened);
|
|
252
255
|
|
|
253
256
|
this._positionTarget = this.shadowRoot.querySelector('[part="input-field"]');
|
|
@@ -282,6 +285,6 @@ class ComboBox extends ComboBoxDataProviderMixin(
|
|
|
282
285
|
}
|
|
283
286
|
}
|
|
284
287
|
|
|
285
|
-
|
|
288
|
+
defineCustomElement(ComboBox);
|
|
286
289
|
|
|
287
290
|
export { ComboBox };
|