@vaadin/number-field 24.2.0-alpha9 → 24.2.0-beta2

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/number-field",
3
- "version": "24.2.0-alpha9",
3
+ "version": "24.2.0-beta2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -38,13 +38,13 @@
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-alpha9",
42
- "@vaadin/component-base": "24.2.0-alpha9",
43
- "@vaadin/field-base": "24.2.0-alpha9",
44
- "@vaadin/input-container": "24.2.0-alpha9",
45
- "@vaadin/vaadin-lumo-styles": "24.2.0-alpha9",
46
- "@vaadin/vaadin-material-styles": "24.2.0-alpha9",
47
- "@vaadin/vaadin-themable-mixin": "24.2.0-alpha9",
41
+ "@vaadin/a11y-base": "24.2.0-beta2",
42
+ "@vaadin/component-base": "24.2.0-beta2",
43
+ "@vaadin/field-base": "24.2.0-beta2",
44
+ "@vaadin/input-container": "24.2.0-beta2",
45
+ "@vaadin/vaadin-lumo-styles": "24.2.0-beta2",
46
+ "@vaadin/vaadin-material-styles": "24.2.0-beta2",
47
+ "@vaadin/vaadin-themable-mixin": "24.2.0-beta2",
48
48
  "lit": "^2.0.0"
49
49
  },
50
50
  "devDependencies": {
@@ -56,5 +56,5 @@
56
56
  "web-types.json",
57
57
  "web-types.lit.json"
58
58
  ],
59
- "gitHead": "e9765733fea96542e379e02e6f42b07145893140"
59
+ "gitHead": "4b852f9a12d4dade7f0fb3c73b7212436cebf310"
60
60
  }
@@ -10,6 +10,7 @@ import type { FocusMixinClass } from '@vaadin/a11y-base/src/focus-mixin.js';
10
10
  import type { KeyboardMixinClass } from '@vaadin/a11y-base/src/keyboard-mixin.js';
11
11
  import type { ControllerMixinClass } from '@vaadin/component-base/src/controller-mixin.js';
12
12
  import type { DelegateStateMixinClass } from '@vaadin/component-base/src/delegate-state-mixin.js';
13
+ import type { SlotStylesMixinClass } from '@vaadin/component-base/src/slot-styles-mixin.js';
13
14
  import type { ClearButtonMixinClass } from '@vaadin/field-base/src/clear-button-mixin.js';
14
15
  import type { FieldMixinClass } from '@vaadin/field-base/src/field-mixin.js';
15
16
  import type { InputConstraintsMixinClass } from '@vaadin/field-base/src/input-constraints-mixin.js';
@@ -17,7 +18,6 @@ import type { InputControlMixinClass } from '@vaadin/field-base/src/input-contro
17
18
  import type { InputFieldMixinClass } from '@vaadin/field-base/src/input-field-mixin.js';
18
19
  import type { InputMixinClass } from '@vaadin/field-base/src/input-mixin.js';
19
20
  import type { LabelMixinClass } from '@vaadin/field-base/src/label-mixin.js';
20
- import type { SlotStylesMixinClass } from '@vaadin/field-base/src/slot-styles-mixin.js';
21
21
  import type { ValidateMixinClass } from '@vaadin/field-base/src/validate-mixin.js';
22
22
 
23
23
  /**
@@ -66,6 +66,7 @@ export const NumberFieldMixin = (superClass) =>
66
66
  constructor() {
67
67
  super();
68
68
  this._setType('number');
69
+ this.__onWheel = this.__onWheel.bind(this);
69
70
  }
70
71
 
71
72
  /** @protected */
@@ -134,6 +135,50 @@ export const NumberFieldMixin = (superClass) =>
134
135
  return !this.invalid;
135
136
  }
136
137
 
138
+ /**
139
+ * Override the method from `InputMixin` to add
140
+ * a wheel event listener to the input element.
141
+ *
142
+ * @param {HTMLElement} input
143
+ * @override
144
+ * @protected
145
+ */
146
+ _addInputListeners(input) {
147
+ super._addInputListeners(input);
148
+ input.addEventListener('wheel', this.__onWheel);
149
+ }
150
+
151
+ /**
152
+ * Override the method from `InputMixin` to remove
153
+ * the wheel event listener from the input element.
154
+ *
155
+ * @param {HTMLElement} input
156
+ * @override
157
+ * @protected
158
+ */
159
+ _removeInputListeners(input) {
160
+ super._removeInputListeners(input);
161
+ input.removeEventListener('wheel', this.__onWheel);
162
+ }
163
+
164
+ /**
165
+ * Prevents default browser behavior for wheel events on the input element
166
+ * when it's focused. More precisely, this prevents the browser from attempting
167
+ * to increment or decrement the value when the mouse wheel is used within
168
+ * the input element.
169
+ *
170
+ * CAVEAT: As a side-effect, this also prevents page scrolling when
171
+ * the pointer is positioned over the field and the field is focused.
172
+ *
173
+ * @param {WheelEvent} event
174
+ * @private
175
+ */
176
+ __onWheel(event) {
177
+ if (this.hasAttribute('focused')) {
178
+ event.preventDefault();
179
+ }
180
+ }
181
+
137
182
  /** @protected */
138
183
  _onDecreaseButtonTouchend(e) {
139
184
  // Cancel the following click and focus events
@@ -217,6 +262,7 @@ export const NumberFieldMixin = (superClass) =>
217
262
  /** @private */
218
263
  _setValue(value) {
219
264
  this.value = this.inputElement.value = String(parseFloat(value));
265
+ this.validate();
220
266
  this.dispatchEvent(new CustomEvent('change', { bubbles: true }));
221
267
  }
222
268
 
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import '@vaadin/input-container/src/vaadin-input-container.js';
7
7
  import { html, PolymerElement } from '@polymer/polymer';
8
+ import { defineCustomElement } from '@vaadin/component-base/src/define.js';
8
9
  import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
9
10
  import { TooltipController } from '@vaadin/component-base/src/tooltip-controller.js';
10
11
  import { inputFieldShared } from '@vaadin/field-base/src/styles/input-field-shared-styles.js';
@@ -45,6 +46,7 @@ registerStyles('vaadin-number-field', [inputFieldShared, numberFieldStyles], {
45
46
  * @fires {CustomEvent} value-changed - Fired when the `value` property changes.
46
47
  * @fires {CustomEvent} validated - Fired whenever the field is validated.
47
48
  *
49
+ * @customElement
48
50
  * @extends HTMLElement
49
51
  * @mixes NumberFieldMixin
50
52
  * @mixes ElementMixin
@@ -114,7 +116,8 @@ export class NumberField extends NumberFieldMixin(ThemableMixin(ElementMixin(Pol
114
116
  this._tooltipController = new TooltipController(this);
115
117
  this.addController(this._tooltipController);
116
118
  this._tooltipController.setPosition('top');
119
+ this._tooltipController.setAriaTarget(this.inputElement);
117
120
  }
118
121
  }
119
122
 
120
- customElements.define(NumberField.is, NumberField);
123
+ defineCustomElement(NumberField);
package/web-types.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@vaadin/number-field",
4
- "version": "24.2.0-alpha9",
4
+ "version": "24.2.0-beta2",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "elements": [
9
9
  {
10
10
  "name": "vaadin-number-field",
11
- "description": "`<vaadin-number-field>` is an input field web component that only accepts numeric input.\n\n```html\n<vaadin-number-field label=\"Balance\"></vaadin-number-field>\n```\n\n### Styling\n\n`<vaadin-number-field>` provides the same set of shadow DOM parts and state attributes as `<vaadin-text-field>`.\nSee [`<vaadin-text-field>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha9/#/elements/vaadin-text-field) for the styling documentation.\n\nIn addition to `<vaadin-text-field>` parts, the following parts are available for theming:\n\nPart name | Description\n------------------|-------------------------\n`increase-button` | Increase (\"plus\") button\n`decrease-button` | Decrease (\"minus\") button\n\nNote, the `input-prevented` state attribute is only supported when `allowedCharPattern` is set.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
11
+ "description": "`<vaadin-number-field>` is an input field web component that only accepts numeric input.\n\n```html\n<vaadin-number-field label=\"Balance\"></vaadin-number-field>\n```\n\n### Styling\n\n`<vaadin-number-field>` provides the same set of shadow DOM parts and state attributes as `<vaadin-text-field>`.\nSee [`<vaadin-text-field>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-beta2/#/elements/vaadin-text-field) for the styling documentation.\n\nIn addition to `<vaadin-text-field>` parts, the following parts are available for theming:\n\nPart name | Description\n------------------|-------------------------\n`increase-button` | Increase (\"plus\") button\n`decrease-button` | Decrease (\"minus\") button\n\nNote, the `input-prevented` state attribute is only supported when `allowedCharPattern` is set.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
12
12
  "attributes": [
13
13
  {
14
14
  "name": "disabled",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@vaadin/number-field",
4
- "version": "24.2.0-alpha9",
4
+ "version": "24.2.0-beta2",
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-number-field",
19
- "description": "`<vaadin-number-field>` is an input field web component that only accepts numeric input.\n\n```html\n<vaadin-number-field label=\"Balance\"></vaadin-number-field>\n```\n\n### Styling\n\n`<vaadin-number-field>` provides the same set of shadow DOM parts and state attributes as `<vaadin-text-field>`.\nSee [`<vaadin-text-field>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha9/#/elements/vaadin-text-field) for the styling documentation.\n\nIn addition to `<vaadin-text-field>` parts, the following parts are available for theming:\n\nPart name | Description\n------------------|-------------------------\n`increase-button` | Increase (\"plus\") button\n`decrease-button` | Decrease (\"minus\") button\n\nNote, the `input-prevented` state attribute is only supported when `allowedCharPattern` is set.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
19
+ "description": "`<vaadin-number-field>` is an input field web component that only accepts numeric input.\n\n```html\n<vaadin-number-field label=\"Balance\"></vaadin-number-field>\n```\n\n### Styling\n\n`<vaadin-number-field>` provides the same set of shadow DOM parts and state attributes as `<vaadin-text-field>`.\nSee [`<vaadin-text-field>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-beta2/#/elements/vaadin-text-field) for the styling documentation.\n\nIn addition to `<vaadin-text-field>` parts, the following parts are available for theming:\n\nPart name | Description\n------------------|-------------------------\n`increase-button` | Increase (\"plus\") button\n`decrease-button` | Decrease (\"minus\") button\n\nNote, the `input-prevented` state attribute is only supported when `allowedCharPattern` is set.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
20
20
  "extension": true,
21
21
  "attributes": [
22
22
  {