@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/combo-box",
3
- "version": "24.2.0-dev.e9803eea7",
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.2.0-dev.e9803eea7",
42
- "@vaadin/component-base": "24.2.0-dev.e9803eea7",
43
- "@vaadin/field-base": "24.2.0-dev.e9803eea7",
44
- "@vaadin/input-container": "24.2.0-dev.e9803eea7",
45
- "@vaadin/item": "24.2.0-dev.e9803eea7",
46
- "@vaadin/lit-renderer": "24.2.0-dev.e9803eea7",
47
- "@vaadin/overlay": "24.2.0-dev.e9803eea7",
48
- "@vaadin/vaadin-lumo-styles": "24.2.0-dev.e9803eea7",
49
- "@vaadin/vaadin-material-styles": "24.2.0-dev.e9803eea7",
50
- "@vaadin/vaadin-themable-mixin": "24.2.0-dev.e9803eea7"
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.4.3",
55
- "@vaadin/text-field": "24.2.0-dev.e9803eea7",
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": "a065b79b9d5a189e457fab312cc8aff0d7f2f910"
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
- customElements.define(ComboBoxItem.is, ComboBoxItem);
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
- customElements.define(ComboBoxLight.is, ComboBoxLight);
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 ? this.get(this.itemLabelPath, item) : undefined;
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 ? this.get(this.itemValuePath, item) : undefined;
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 (this.value !== this._lastCommittedValue) {
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
- customElements.define(ComboBoxOverlay.is, ComboBoxOverlay);
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 this.get(itemIdPath, item) === this.get(itemIdPath, selectedItem);
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
- customElements.define(ComboBoxScroller.is, ComboBoxScroller);
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.
@@ -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
- customElements.define(ComboBox.is, ComboBox);
288
+ defineCustomElement(ComboBox);
286
289
 
287
290
  export { ComboBox };