@vaadin/time-picker 24.2.0-alpha12 → 24.2.0-alpha13

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/time-picker",
3
- "version": "24.2.0-alpha12",
3
+ "version": "24.2.0-alpha13",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -36,15 +36,15 @@
36
36
  ],
37
37
  "dependencies": {
38
38
  "@polymer/polymer": "^3.0.0",
39
- "@vaadin/combo-box": "24.2.0-alpha12",
40
- "@vaadin/component-base": "24.2.0-alpha12",
41
- "@vaadin/field-base": "24.2.0-alpha12",
42
- "@vaadin/input-container": "24.2.0-alpha12",
43
- "@vaadin/item": "24.2.0-alpha12",
44
- "@vaadin/overlay": "24.2.0-alpha12",
45
- "@vaadin/vaadin-lumo-styles": "24.2.0-alpha12",
46
- "@vaadin/vaadin-material-styles": "24.2.0-alpha12",
47
- "@vaadin/vaadin-themable-mixin": "24.2.0-alpha12"
39
+ "@vaadin/combo-box": "24.2.0-alpha13",
40
+ "@vaadin/component-base": "24.2.0-alpha13",
41
+ "@vaadin/field-base": "24.2.0-alpha13",
42
+ "@vaadin/input-container": "24.2.0-alpha13",
43
+ "@vaadin/item": "24.2.0-alpha13",
44
+ "@vaadin/overlay": "24.2.0-alpha13",
45
+ "@vaadin/vaadin-lumo-styles": "24.2.0-alpha13",
46
+ "@vaadin/vaadin-material-styles": "24.2.0-alpha13",
47
+ "@vaadin/vaadin-themable-mixin": "24.2.0-alpha13"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@esm-bundle/chai": "^4.3.4",
@@ -55,5 +55,5 @@
55
55
  "web-types.json",
56
56
  "web-types.lit.json"
57
57
  ],
58
- "gitHead": "854d2809340ef73f765350808bb92ed5c840d147"
58
+ "gitHead": "703d17b2149ce7d756518731d8770b0ba6ed8305"
59
59
  }
@@ -18,13 +18,6 @@ import { registerStyles, ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaa
18
18
  const MIN_ALLOWED_TIME = '00:00:00.000';
19
19
  const MAX_ALLOWED_TIME = '23:59:59.999';
20
20
 
21
- const TEST_TIME_OBJ = {
22
- hours: 0,
23
- minutes: 0,
24
- seconds: 0,
25
- milliseconds: 0,
26
- };
27
-
28
21
  registerStyles('vaadin-time-picker', inputFieldShared, { moduleId: 'vaadin-time-picker-styles' });
29
22
 
30
23
  /**
@@ -235,7 +228,6 @@ class TimePicker extends PatternMixin(InputControlMixin(ThemableMixin(ElementMix
235
228
  */
236
229
  step: {
237
230
  type: Number,
238
- observer: '__stepChanged',
239
231
  },
240
232
 
241
233
  /**
@@ -468,9 +460,19 @@ class TimePicker extends PatternMixin(InputControlMixin(ThemableMixin(ElementMix
468
460
 
469
461
  /** @private */
470
462
  __onArrowPressWithStep(step) {
471
- const parsedObj = this.i18n.parseTime(this._comboBoxValue);
472
- const objWithStep = this.__addStep(this.__getMsec(parsedObj), step, true);
473
- this._comboBoxValue = this.i18n.formatTime(objWithStep);
463
+ const objWithStep = this.__addStep(this.__getMsec(this.__memoValue), step, true);
464
+ this.__memoValue = objWithStep;
465
+
466
+ // Setting `value` property triggers the synchronous observer
467
+ // that in turn updates `_comboBoxValue` (actual input value)
468
+ // with its own observer where the value can be parsed again,
469
+ // so we set this flag to ensure it does not alter the value.
470
+ this.__useMemo = true;
471
+ this.__skipCommittedValueUpdate = true;
472
+ this.value = this.__formatISO(objWithStep);
473
+ this.__skipCommittedValueUpdate = false;
474
+ this.__useMemo = false;
475
+
474
476
  this.validate();
475
477
  this.__commitPendingValue();
476
478
  }
@@ -597,7 +599,7 @@ class TimePicker extends PatternMixin(InputControlMixin(ThemableMixin(ElementMix
597
599
  * @override
598
600
  */
599
601
  _valueChanged(value, oldValue) {
600
- const parsedObj = this.__parseISO(value);
602
+ const parsedObj = (this.__memoValue = this.__parseISO(value));
601
603
  const newValue = this.__formatISO(parsedObj) || '';
602
604
 
603
605
  // Mark value set programmatically by the user
@@ -629,7 +631,7 @@ class TimePicker extends PatternMixin(InputControlMixin(ThemableMixin(ElementMix
629
631
  return;
630
632
  }
631
633
 
632
- const parsedObj = this.i18n.parseTime(value);
634
+ const parsedObj = this.__useMemo ? this.__memoValue : this.i18n.parseTime(value);
633
635
  const newValue = this.i18n.formatTime(parsedObj) || '';
634
636
 
635
637
  if (parsedObj) {
@@ -674,28 +676,6 @@ class TimePicker extends PatternMixin(InputControlMixin(ThemableMixin(ElementMix
674
676
  this.validate();
675
677
  }
676
678
 
677
- /** @private */
678
- __stepChanged(step) {
679
- if (step == null) {
680
- return;
681
- }
682
-
683
- const parsedObj = this.i18n.parseTime(this.i18n.formatTime(TEST_TIME_OBJ));
684
- if (
685
- (step % 1 !== 0 && !parsedObj.milliseconds) ||
686
- (step % 60 !== 0 && !parsedObj.seconds) ||
687
- (step % (60 * 60) !== 0 && !parsedObj.minutes)
688
- ) {
689
- console.warn(
690
- `<vaadin-time-picker> The step ${step} seconds has been rejected because it's not compatible with the provided time formatter.`,
691
- );
692
- this.step = this.__previousStep;
693
- return;
694
- }
695
-
696
- this.__previousStep = step;
697
- }
698
-
699
679
  /** @private */
700
680
  __updateValue(obj) {
701
681
  const timeString = this.__formatISO(this.__validateTime(obj)) || '';
package/web-types.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@vaadin/time-picker",
4
- "version": "24.2.0-alpha12",
4
+ "version": "24.2.0-alpha13",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "elements": [
9
9
  {
10
10
  "name": "vaadin-time-picker",
11
- "description": "`<vaadin-time-picker>` is a Web Component providing a time-selection field.\n\n```html\n<vaadin-time-picker></vaadin-time-picker>\n```\n```js\ntimePicker.value = '14:30';\n```\n\nWhen the selected `value` is changed, a `value-changed` event is triggered.\n\n### Styling\n\nThe following custom properties are available for styling:\n\nCustom property | Description | Default\n----------------------------------------|----------------------------|---------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n`--vaadin-combo-box-overlay-max-height` | Max height of the overlay | `65vh`\n\n`<vaadin-time-picker>` 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-alpha12/#/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`toggle-button` | The toggle button\n\nIn addition to `<vaadin-text-field>` state attributes, the following state attributes are available for theming:\n\nAttribute | Description\n----------|------------------------------------------\n`opened` | Set when the time-picker dropdown is open\n\n### Internal components\n\nIn addition to `<vaadin-time-picker>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-time-picker-combo-box>` - has the same API as [`<vaadin-combo-box-light>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha12/#/elements/vaadin-combo-box-light).\n- `<vaadin-time-picker-overlay>` - has the same API as [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha12/#/elements/vaadin-overlay).\n- `<vaadin-time-picker-item>` - has the same API as [`<vaadin-item>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha12/#/elements/vaadin-item).\n- [`<vaadin-input-container>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha12/#/elements/vaadin-input-container) - an internal element wrapping the input.\n\nNote: the `theme` attribute value set on `<vaadin-time-picker>` is\npropagated to the internal components listed above.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
11
+ "description": "`<vaadin-time-picker>` is a Web Component providing a time-selection field.\n\n```html\n<vaadin-time-picker></vaadin-time-picker>\n```\n```js\ntimePicker.value = '14:30';\n```\n\nWhen the selected `value` is changed, a `value-changed` event is triggered.\n\n### Styling\n\nThe following custom properties are available for styling:\n\nCustom property | Description | Default\n----------------------------------------|----------------------------|---------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n`--vaadin-combo-box-overlay-max-height` | Max height of the overlay | `65vh`\n\n`<vaadin-time-picker>` 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-alpha13/#/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`toggle-button` | The toggle button\n\nIn addition to `<vaadin-text-field>` state attributes, the following state attributes are available for theming:\n\nAttribute | Description\n----------|------------------------------------------\n`opened` | Set when the time-picker dropdown is open\n\n### Internal components\n\nIn addition to `<vaadin-time-picker>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-time-picker-combo-box>` - has the same API as [`<vaadin-combo-box-light>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha13/#/elements/vaadin-combo-box-light).\n- `<vaadin-time-picker-overlay>` - has the same API as [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha13/#/elements/vaadin-overlay).\n- `<vaadin-time-picker-item>` - has the same API as [`<vaadin-item>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha13/#/elements/vaadin-item).\n- [`<vaadin-input-container>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha13/#/elements/vaadin-input-container) - an internal element wrapping the input.\n\nNote: the `theme` attribute value set on `<vaadin-time-picker>` is\npropagated to the internal components listed above.\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/time-picker",
4
- "version": "24.2.0-alpha12",
4
+ "version": "24.2.0-alpha13",
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-time-picker",
19
- "description": "`<vaadin-time-picker>` is a Web Component providing a time-selection field.\n\n```html\n<vaadin-time-picker></vaadin-time-picker>\n```\n```js\ntimePicker.value = '14:30';\n```\n\nWhen the selected `value` is changed, a `value-changed` event is triggered.\n\n### Styling\n\nThe following custom properties are available for styling:\n\nCustom property | Description | Default\n----------------------------------------|----------------------------|---------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n`--vaadin-combo-box-overlay-max-height` | Max height of the overlay | `65vh`\n\n`<vaadin-time-picker>` 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-alpha12/#/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`toggle-button` | The toggle button\n\nIn addition to `<vaadin-text-field>` state attributes, the following state attributes are available for theming:\n\nAttribute | Description\n----------|------------------------------------------\n`opened` | Set when the time-picker dropdown is open\n\n### Internal components\n\nIn addition to `<vaadin-time-picker>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-time-picker-combo-box>` - has the same API as [`<vaadin-combo-box-light>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha12/#/elements/vaadin-combo-box-light).\n- `<vaadin-time-picker-overlay>` - has the same API as [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha12/#/elements/vaadin-overlay).\n- `<vaadin-time-picker-item>` - has the same API as [`<vaadin-item>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha12/#/elements/vaadin-item).\n- [`<vaadin-input-container>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha12/#/elements/vaadin-input-container) - an internal element wrapping the input.\n\nNote: the `theme` attribute value set on `<vaadin-time-picker>` is\npropagated to the internal components listed above.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
19
+ "description": "`<vaadin-time-picker>` is a Web Component providing a time-selection field.\n\n```html\n<vaadin-time-picker></vaadin-time-picker>\n```\n```js\ntimePicker.value = '14:30';\n```\n\nWhen the selected `value` is changed, a `value-changed` event is triggered.\n\n### Styling\n\nThe following custom properties are available for styling:\n\nCustom property | Description | Default\n----------------------------------------|----------------------------|---------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n`--vaadin-combo-box-overlay-max-height` | Max height of the overlay | `65vh`\n\n`<vaadin-time-picker>` 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-alpha13/#/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`toggle-button` | The toggle button\n\nIn addition to `<vaadin-text-field>` state attributes, the following state attributes are available for theming:\n\nAttribute | Description\n----------|------------------------------------------\n`opened` | Set when the time-picker dropdown is open\n\n### Internal components\n\nIn addition to `<vaadin-time-picker>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-time-picker-combo-box>` - has the same API as [`<vaadin-combo-box-light>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha13/#/elements/vaadin-combo-box-light).\n- `<vaadin-time-picker-overlay>` - has the same API as [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha13/#/elements/vaadin-overlay).\n- `<vaadin-time-picker-item>` - has the same API as [`<vaadin-item>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha13/#/elements/vaadin-item).\n- [`<vaadin-input-container>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha13/#/elements/vaadin-input-container) - an internal element wrapping the input.\n\nNote: the `theme` attribute value set on `<vaadin-time-picker>` is\npropagated to the internal components listed above.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
20
20
  "extension": true,
21
21
  "attributes": [
22
22
  {