@vonage/vivid 4.27.0 → 4.29.0

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.
Files changed (79) hide show
  1. package/custom-elements.json +357 -80
  2. package/lib/audio-player/audio-player.d.ts +4 -3
  3. package/lib/data-grid/data-grid.d.ts +2 -0
  4. package/lib/data-grid/locale.d.ts +1 -0
  5. package/lib/date-picker/date-picker.d.ts +4 -2
  6. package/lib/date-time-picker/date-time-picker.d.ts +6 -3
  7. package/lib/divider/definition.d.ts +1 -0
  8. package/lib/divider/divider.d.ts +5 -1
  9. package/lib/option/option.d.ts +4 -7
  10. package/lib/rich-text-editor/facades/prose-mirror-vivid.schema.d.ts +2 -1
  11. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +2 -2
  12. package/lib/rich-text-editor/image-placeholder/definition.d.ts +2 -0
  13. package/lib/rich-text-editor/image-placeholder/image-placeholder.d.ts +7 -0
  14. package/lib/rich-text-editor/image-placeholder/image-placeholder.template.d.ts +4 -0
  15. package/lib/rich-text-editor/menubar/consts.d.ts +2 -2
  16. package/lib/rich-text-editor/menubar/definition.d.ts +2 -2
  17. package/lib/rich-text-editor/menubar/menubar.d.ts +2 -2
  18. package/lib/rich-text-editor/menubar/menubar.template.d.ts +2 -2
  19. package/lib/rich-text-editor/rich-text-editor.d.ts +1 -0
  20. package/lib/time-picker/time-picker.d.ts +4 -2
  21. package/locales/de-DE.cjs +2 -1
  22. package/locales/de-DE.js +2 -1
  23. package/locales/en-GB.cjs +2 -1
  24. package/locales/en-GB.js +2 -1
  25. package/locales/en-US.cjs +2 -1
  26. package/locales/en-US.js +2 -1
  27. package/locales/ja-JP.cjs +2 -1
  28. package/locales/ja-JP.js +2 -1
  29. package/locales/zh-CN.cjs +2 -1
  30. package/locales/zh-CN.js +2 -1
  31. package/package.json +2 -1
  32. package/shared/calendar-picker.template.cjs +8 -9
  33. package/shared/calendar-picker.template.js +8 -9
  34. package/shared/definition16.cjs +33 -30
  35. package/shared/definition16.js +33 -30
  36. package/shared/definition17.cjs +137 -1
  37. package/shared/definition17.js +138 -2
  38. package/shared/definition23.cjs +12 -7
  39. package/shared/definition23.js +12 -7
  40. package/shared/definition30.cjs +2 -1
  41. package/shared/definition30.js +2 -1
  42. package/shared/definition31.cjs +5 -1
  43. package/shared/definition31.js +5 -1
  44. package/shared/definition36.cjs +1 -1
  45. package/shared/definition36.js +1 -1
  46. package/shared/definition44.cjs +184 -55
  47. package/shared/definition44.js +184 -55
  48. package/shared/definition45.cjs +12 -5
  49. package/shared/definition45.js +12 -5
  50. package/shared/definition5.cjs +86 -30
  51. package/shared/definition5.js +86 -30
  52. package/shared/definition61.cjs +11 -0
  53. package/shared/definition61.js +11 -0
  54. package/shared/definition64.cjs +1 -1
  55. package/shared/definition64.js +1 -1
  56. package/shared/divider.cjs +7 -2
  57. package/shared/divider.js +7 -2
  58. package/shared/option.cjs +36 -38
  59. package/shared/option.js +37 -39
  60. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +1 -0
  61. package/shared/picker-field/mixins/single-date-picker.d.ts +4 -2
  62. package/shared/picker-field/mixins/single-value-picker.d.ts +2 -1
  63. package/shared/picker-field/mixins/time-selection-picker.d.ts +4 -2
  64. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +4 -2
  65. package/shared/single-value-picker.cjs +40 -6
  66. package/shared/single-value-picker.js +40 -6
  67. package/shared/text-field.cjs +1 -1
  68. package/shared/text-field.js +1 -1
  69. package/shared/time-selection-picker.template.cjs +71 -22
  70. package/shared/time-selection-picker.template.js +71 -22
  71. package/shared/vivid-element.cjs +1 -1
  72. package/shared/vivid-element.js +1 -1
  73. package/styles/core/all.css +1 -1
  74. package/styles/core/theme.css +1 -1
  75. package/styles/core/typography.css +1 -1
  76. package/styles/tokens/theme-dark.css +4 -4
  77. package/styles/tokens/theme-light.css +4 -4
  78. package/styles/tokens/vivid-2-compat.css +1 -1
  79. package/vivid.api.json +211 -126
package/shared/option.cjs CHANGED
@@ -29,11 +29,8 @@ class ListboxOption extends hostSemantics.HostSemantics(
29
29
  * @internal
30
30
  */
31
31
  this.dirtySelected = false;
32
- this.selected = this.defaultSelected;
33
- /**
34
- * Track whether the value has been changed from the initial value
35
- */
36
- this.dirtyValue = false;
32
+ // eslint-disable-next-line @repo/repo/no-attribute-default-value
33
+ this.value = "";
37
34
  this._highlighted = false;
38
35
  this._displayCheckmark = false;
39
36
  this._vvdSearchText = "";
@@ -42,7 +39,7 @@ class ListboxOption extends hostSemantics.HostSemantics(
42
39
  this.text = text;
43
40
  }
44
41
  if (value) {
45
- this.initialValue = value;
42
+ this.value = value;
46
43
  }
47
44
  if (defaultSelected) {
48
45
  this.defaultSelected = defaultSelected;
@@ -52,8 +49,7 @@ class ListboxOption extends hostSemantics.HostSemantics(
52
49
  }
53
50
  this.proxy = new Option(
54
51
  this.text,
55
- // @ts-expect-error Propery is used before it is assigned
56
- this.initialValue,
52
+ this.value,
57
53
  this.defaultSelected,
58
54
  this.selected
59
55
  );
@@ -66,17 +62,23 @@ class ListboxOption extends hostSemantics.HostSemantics(
66
62
  this.proxy.selected = this.defaultSelected;
67
63
  }
68
64
  }
65
+ if (this.proxy instanceof HTMLOptionElement) {
66
+ this.proxy.defaultSelected = this.defaultSelected;
67
+ }
69
68
  }
70
69
  disabledChanged() {
71
70
  if (this.proxy instanceof HTMLOptionElement) {
72
71
  this.proxy.disabled = this.disabled;
73
72
  }
74
73
  }
75
- selectedAttributeChanged() {
76
- this.defaultSelected = this.selectedAttribute;
77
- if (this.proxy instanceof HTMLOptionElement) {
78
- this.proxy.defaultSelected = this.defaultSelected;
79
- }
74
+ /**
75
+ * @deprecated Use `defaultSelected` instead.
76
+ */
77
+ get selectedAttribute() {
78
+ return this.defaultSelected;
79
+ }
80
+ set selectedAttribute(value) {
81
+ this.defaultSelected = value;
80
82
  }
81
83
  selectedChanged() {
82
84
  if (!this.dirtySelected) {
@@ -86,10 +88,13 @@ class ListboxOption extends hostSemantics.HostSemantics(
86
88
  this.proxy.selected = this.selected;
87
89
  }
88
90
  }
89
- initialValueChanged() {
90
- if (!this.dirtyValue) {
91
- this.value = this.initialValue;
92
- this.dirtyValue = false;
91
+ valueChanged() {
92
+ if (typeof this.value !== "string") {
93
+ this.value = "";
94
+ return;
95
+ }
96
+ if (this.proxy instanceof HTMLOptionElement) {
97
+ this.proxy.value = this.value;
93
98
  }
94
99
  }
95
100
  get label() {
@@ -104,19 +109,6 @@ class ListboxOption extends hostSemantics.HostSemantics(
104
109
  get text() {
105
110
  return this._text ?? "";
106
111
  }
107
- set value(next) {
108
- const newValue = `${next ?? ""}`;
109
- this._value = newValue;
110
- this.dirtyValue = true;
111
- if (this.proxy instanceof HTMLOptionElement) {
112
- this.proxy.value = newValue;
113
- }
114
- vividElement.Observable.notify(this, "value");
115
- }
116
- get value() {
117
- vividElement.Observable.track(this, "value");
118
- return this._value ?? this.text;
119
- }
120
112
  get form() {
121
113
  return null;
122
114
  }
@@ -134,27 +126,33 @@ class ListboxOption extends hostSemantics.HostSemantics(
134
126
  }
135
127
  return { from: 0, to: 0 };
136
128
  }
129
+ /**
130
+ * @internal
131
+ */
132
+ connectedCallback() {
133
+ super.connectedCallback();
134
+ if (!this.dirtySelected) {
135
+ this.selected = this.defaultSelected;
136
+ this.dirtySelected = false;
137
+ }
138
+ }
137
139
  }
138
140
  __decorateClass([
139
141
  vividElement.observable
140
142
  ], ListboxOption.prototype, "checked", 2);
141
143
  __decorateClass([
142
- vividElement.observable
144
+ vividElement.attr({ attribute: "selected", mode: "boolean" })
143
145
  ], ListboxOption.prototype, "defaultSelected", 2);
144
146
  // @ts-expect-error Type is incorrectly non-optional
145
147
  __decorateClass([
146
148
  vividElement.attr({ mode: "boolean" })
147
149
  ], ListboxOption.prototype, "disabled", 2);
148
- // @ts-expect-error Type is incorrectly non-optional
149
150
  __decorateClass([
150
- vividElement.attr({ attribute: "selected", mode: "boolean" })
151
- ], ListboxOption.prototype, "selectedAttribute", 2);
152
- __decorateClass([
153
- vividElement.observable
151
+ vividElement.attr({ attribute: "current-selected", mode: "boolean" })
154
152
  ], ListboxOption.prototype, "selected", 2);
155
153
  __decorateClass([
156
- vividElement.attr({ attribute: "value", mode: "fromView" })
157
- ], ListboxOption.prototype, "initialValue", 2);
154
+ vividElement.attr({ attribute: "value" })
155
+ ], ListboxOption.prototype, "value", 2);
158
156
  __decorateClass([
159
157
  vividElement.attr({
160
158
  attribute: "label"
package/shared/option.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { A as AffixIconWithTrailing } from './affix.js';
2
- import { O as Observable, V as VividElement, o as observable, a as attr, v as volatile } from './vivid-element.js';
2
+ import { V as VividElement, o as observable, a as attr, v as volatile } from './vivid-element.js';
3
3
  import { H as HostSemantics } from './host-semantics.js';
4
4
  import { i as isHTMLElement } from './dom.js';
5
5
 
@@ -27,11 +27,8 @@ class ListboxOption extends HostSemantics(
27
27
  * @internal
28
28
  */
29
29
  this.dirtySelected = false;
30
- this.selected = this.defaultSelected;
31
- /**
32
- * Track whether the value has been changed from the initial value
33
- */
34
- this.dirtyValue = false;
30
+ // eslint-disable-next-line @repo/repo/no-attribute-default-value
31
+ this.value = "";
35
32
  this._highlighted = false;
36
33
  this._displayCheckmark = false;
37
34
  this._vvdSearchText = "";
@@ -40,7 +37,7 @@ class ListboxOption extends HostSemantics(
40
37
  this.text = text;
41
38
  }
42
39
  if (value) {
43
- this.initialValue = value;
40
+ this.value = value;
44
41
  }
45
42
  if (defaultSelected) {
46
43
  this.defaultSelected = defaultSelected;
@@ -50,8 +47,7 @@ class ListboxOption extends HostSemantics(
50
47
  }
51
48
  this.proxy = new Option(
52
49
  this.text,
53
- // @ts-expect-error Propery is used before it is assigned
54
- this.initialValue,
50
+ this.value,
55
51
  this.defaultSelected,
56
52
  this.selected
57
53
  );
@@ -64,17 +60,23 @@ class ListboxOption extends HostSemantics(
64
60
  this.proxy.selected = this.defaultSelected;
65
61
  }
66
62
  }
63
+ if (this.proxy instanceof HTMLOptionElement) {
64
+ this.proxy.defaultSelected = this.defaultSelected;
65
+ }
67
66
  }
68
67
  disabledChanged() {
69
68
  if (this.proxy instanceof HTMLOptionElement) {
70
69
  this.proxy.disabled = this.disabled;
71
70
  }
72
71
  }
73
- selectedAttributeChanged() {
74
- this.defaultSelected = this.selectedAttribute;
75
- if (this.proxy instanceof HTMLOptionElement) {
76
- this.proxy.defaultSelected = this.defaultSelected;
77
- }
72
+ /**
73
+ * @deprecated Use `defaultSelected` instead.
74
+ */
75
+ get selectedAttribute() {
76
+ return this.defaultSelected;
77
+ }
78
+ set selectedAttribute(value) {
79
+ this.defaultSelected = value;
78
80
  }
79
81
  selectedChanged() {
80
82
  if (!this.dirtySelected) {
@@ -84,10 +86,13 @@ class ListboxOption extends HostSemantics(
84
86
  this.proxy.selected = this.selected;
85
87
  }
86
88
  }
87
- initialValueChanged() {
88
- if (!this.dirtyValue) {
89
- this.value = this.initialValue;
90
- this.dirtyValue = false;
89
+ valueChanged() {
90
+ if (typeof this.value !== "string") {
91
+ this.value = "";
92
+ return;
93
+ }
94
+ if (this.proxy instanceof HTMLOptionElement) {
95
+ this.proxy.value = this.value;
91
96
  }
92
97
  }
93
98
  get label() {
@@ -102,19 +107,6 @@ class ListboxOption extends HostSemantics(
102
107
  get text() {
103
108
  return this._text ?? "";
104
109
  }
105
- set value(next) {
106
- const newValue = `${next ?? ""}`;
107
- this._value = newValue;
108
- this.dirtyValue = true;
109
- if (this.proxy instanceof HTMLOptionElement) {
110
- this.proxy.value = newValue;
111
- }
112
- Observable.notify(this, "value");
113
- }
114
- get value() {
115
- Observable.track(this, "value");
116
- return this._value ?? this.text;
117
- }
118
110
  get form() {
119
111
  return null;
120
112
  }
@@ -132,27 +124,33 @@ class ListboxOption extends HostSemantics(
132
124
  }
133
125
  return { from: 0, to: 0 };
134
126
  }
127
+ /**
128
+ * @internal
129
+ */
130
+ connectedCallback() {
131
+ super.connectedCallback();
132
+ if (!this.dirtySelected) {
133
+ this.selected = this.defaultSelected;
134
+ this.dirtySelected = false;
135
+ }
136
+ }
135
137
  }
136
138
  __decorateClass([
137
139
  observable
138
140
  ], ListboxOption.prototype, "checked", 2);
139
141
  __decorateClass([
140
- observable
142
+ attr({ attribute: "selected", mode: "boolean" })
141
143
  ], ListboxOption.prototype, "defaultSelected", 2);
142
144
  // @ts-expect-error Type is incorrectly non-optional
143
145
  __decorateClass([
144
146
  attr({ mode: "boolean" })
145
147
  ], ListboxOption.prototype, "disabled", 2);
146
- // @ts-expect-error Type is incorrectly non-optional
147
148
  __decorateClass([
148
- attr({ attribute: "selected", mode: "boolean" })
149
- ], ListboxOption.prototype, "selectedAttribute", 2);
150
- __decorateClass([
151
- observable
149
+ attr({ attribute: "current-selected", mode: "boolean" })
152
150
  ], ListboxOption.prototype, "selected", 2);
153
151
  __decorateClass([
154
- attr({ attribute: "value", mode: "fromView" })
155
- ], ListboxOption.prototype, "initialValue", 2);
152
+ attr({ attribute: "value" })
153
+ ], ListboxOption.prototype, "value", 2);
156
154
  __decorateClass([
157
155
  attr({
158
156
  attribute: "label"
@@ -345,6 +345,7 @@ export declare class InlineTimePicker extends InlineTimePicker_base {
345
345
  clock: '12h' | '24h';
346
346
  min?: string;
347
347
  max?: string;
348
+ focusedPickerClass: string;
348
349
  scrollSelectedOptionsToTop(): void;
349
350
  focus(options?: FocusOptions): void;
350
351
  }
@@ -811,10 +811,12 @@ export declare const SingleDatePickerMixin: <T_6 extends AbstractConstructor<{
811
811
  _isValidValue(value: string): boolean;
812
812
  _toPresentationValue(value: string): string;
813
813
  _parsePresentationValue(presentationValue: string): string;
814
+ _isInternalValueUpdate: boolean;
814
815
  valueChanged(previous: string, next: string): void;
815
816
  _updatePresentationValue(): void;
816
817
  _updateValueDueToUserInteraction(newValue: string): void;
817
818
  _onTextFieldChange(): void;
819
+ _onTextFieldInput(event: Event): void;
818
820
  _isPresentationValueInvalid(): boolean;
819
821
  _onClearClick(): void;
820
822
  readOnly: boolean;
@@ -846,7 +848,6 @@ export declare const SingleDatePickerMixin: <T_6 extends AbstractConstructor<{
846
848
  _presentationValueChanged(): void;
847
849
  readonly _textFieldPlaceholder: string;
848
850
  _textFieldSize?: string | undefined;
849
- _onTextFieldInput(event: Event): void;
850
851
  readonly _pickerButtonLabel: string;
851
852
  readonly _pickerButtonIcon: string;
852
853
  _onPickerButtonClick(): void;
@@ -1654,7 +1655,7 @@ export declare const SingleDatePickerMixin: <T_6 extends AbstractConstructor<{
1654
1655
  _updatePresentationValue: (() => void) & (() => void);
1655
1656
  readonly _textFieldPlaceholder: string;
1656
1657
  _textFieldSize?: string | undefined;
1657
- _onTextFieldInput(event: Event): void;
1658
+ _onTextFieldInput: ((event: Event) => void) & ((event: Event) => void);
1658
1659
  _onTextFieldChange: (() => void) & (() => void);
1659
1660
  readonly _pickerButtonLabel: string;
1660
1661
  readonly _pickerButtonIcon: string;
@@ -2389,6 +2390,7 @@ export declare const SingleDatePickerMixin: <T_6 extends AbstractConstructor<{
2389
2390
  _isValidValue(value: string): boolean;
2390
2391
  _toPresentationValue(value: string): string;
2391
2392
  _parsePresentationValue(presentationValue: string): string;
2393
+ _isInternalValueUpdate: boolean;
2392
2394
  _updateValueDueToUserInteraction(newValue: string): void;
2393
2395
  _isPresentationValueInvalid(): boolean;
2394
2396
  }) & T_6;
@@ -4,10 +4,12 @@ export declare const SingleValuePicker: <T extends AbstractConstructor<PickerFie
4
4
  _isValidValue(value: string): boolean;
5
5
  _toPresentationValue(value: string): string;
6
6
  _parsePresentationValue(presentationValue: string): string;
7
+ _isInternalValueUpdate: boolean;
7
8
  valueChanged(previous: string, next: string): void;
8
9
  _updatePresentationValue(): void;
9
10
  _updateValueDueToUserInteraction(newValue: string): void;
10
11
  _onTextFieldChange(): void;
12
+ _onTextFieldInput(event: Event): void;
11
13
  _isPresentationValueInvalid(): boolean;
12
14
  _onClearClick(): void;
13
15
  readOnly: boolean;
@@ -39,7 +41,6 @@ export declare const SingleValuePicker: <T extends AbstractConstructor<PickerFie
39
41
  _presentationValueChanged(): void;
40
42
  readonly _textFieldPlaceholder: string;
41
43
  _textFieldSize?: string | undefined;
42
- _onTextFieldInput(event: Event): void;
43
44
  readonly _pickerButtonLabel: string;
44
45
  readonly _pickerButtonIcon: string;
45
46
  _onPickerButtonClick(): void;
@@ -6,10 +6,12 @@ export declare const TimeSelectionPicker: <T_5 extends AbstractConstructor<{
6
6
  _isValidValue(value: string): boolean;
7
7
  _toPresentationValue(value: string): string;
8
8
  _parsePresentationValue(presentationValue: string): string;
9
+ _isInternalValueUpdate: boolean;
9
10
  valueChanged(previous: string, next: string): void;
10
11
  _updatePresentationValue(): void;
11
12
  _updateValueDueToUserInteraction(newValue: string): void;
12
13
  _onTextFieldChange(): void;
14
+ _onTextFieldInput(event: Event): void;
13
15
  _isPresentationValueInvalid(): boolean;
14
16
  _onClearClick(): void;
15
17
  readOnly: boolean;
@@ -41,7 +43,6 @@ export declare const TimeSelectionPicker: <T_5 extends AbstractConstructor<{
41
43
  _presentationValueChanged(): void;
42
44
  readonly _textFieldPlaceholder: string;
43
45
  _textFieldSize?: string | undefined;
44
- _onTextFieldInput(event: Event): void;
45
46
  readonly _pickerButtonLabel: string;
46
47
  readonly _pickerButtonIcon: string;
47
48
  _onPickerButtonClick(): void;
@@ -798,10 +799,12 @@ export declare const TimeSelectionPicker: <T_5 extends AbstractConstructor<{
798
799
  _isValidValue(value: string): boolean;
799
800
  _toPresentationValue(value: string): string;
800
801
  _parsePresentationValue(presentationValue: string): string;
802
+ _isInternalValueUpdate: boolean;
801
803
  valueChanged: ((previous: string, next: string) => void) & ((_previous: string, _next: string) => void) & ((_previous: string, _next: string) => void);
802
804
  _updatePresentationValue: (() => void) & (() => void);
803
805
  _updateValueDueToUserInteraction(newValue: string): void;
804
806
  _onTextFieldChange: (() => void) & (() => void);
807
+ _onTextFieldInput: ((event: Event) => void) & ((event: Event) => void);
805
808
  _isPresentationValueInvalid(): boolean;
806
809
  _onClearClick: (() => void) & (() => void);
807
810
  readOnly: boolean;
@@ -831,7 +834,6 @@ export declare const TimeSelectionPicker: <T_5 extends AbstractConstructor<{
831
834
  _presentationValueChanged(): void;
832
835
  readonly _textFieldPlaceholder: string;
833
836
  _textFieldSize?: string | undefined;
834
- _onTextFieldInput(event: Event): void;
835
837
  readonly _pickerButtonLabel: string;
836
838
  readonly _pickerButtonIcon: string;
837
839
  _onOkClick(): void;
@@ -26,10 +26,12 @@ export declare const TimeSelectionPickerTemplate: (context: VividElementDefiniti
26
26
  _isValidValue(value: string): boolean;
27
27
  _toPresentationValue(value: string): string;
28
28
  _parsePresentationValue(presentationValue: string): string;
29
+ _isInternalValueUpdate: boolean;
29
30
  valueChanged: ((previous: string, next: string) => void) & ((_previous: string, _next: string) => void) & ((_previous: string, _next: string) => void);
30
31
  _updatePresentationValue: (() => void) & (() => void);
31
32
  _updateValueDueToUserInteraction(newValue: string): void;
32
33
  _onTextFieldChange: (() => void) & (() => void);
34
+ _onTextFieldInput: ((event: Event) => void) & ((event: Event) => void);
33
35
  _isPresentationValueInvalid(): boolean;
34
36
  _onClearClick: (() => void) & (() => void);
35
37
  readOnly: boolean;
@@ -59,7 +61,6 @@ export declare const TimeSelectionPickerTemplate: (context: VividElementDefiniti
59
61
  _presentationValueChanged(): void;
60
62
  readonly _textFieldPlaceholder: string;
61
63
  _textFieldSize?: string | undefined;
62
- _onTextFieldInput(event: Event): void;
63
64
  readonly _pickerButtonLabel: string;
64
65
  readonly _pickerButtonIcon: string;
65
66
  _onOkClick(): void;
@@ -793,10 +794,12 @@ export declare const TimeSelectionPickerTemplate: (context: VividElementDefiniti
793
794
  _isValidValue(value: string): boolean;
794
795
  _toPresentationValue(value: string): string;
795
796
  _parsePresentationValue(presentationValue: string): string;
797
+ _isInternalValueUpdate: boolean;
796
798
  valueChanged(previous: string, next: string): void;
797
799
  _updatePresentationValue(): void;
798
800
  _updateValueDueToUserInteraction(newValue: string): void;
799
801
  _onTextFieldChange(): void;
802
+ _onTextFieldInput(event: Event): void;
800
803
  _isPresentationValueInvalid(): boolean;
801
804
  _onClearClick(): void;
802
805
  readOnly: boolean;
@@ -828,7 +831,6 @@ export declare const TimeSelectionPickerTemplate: (context: VividElementDefiniti
828
831
  _presentationValueChanged(): void;
829
832
  readonly _textFieldPlaceholder: string;
830
833
  _textFieldSize?: string | undefined;
831
- _onTextFieldInput(event: Event): void;
832
834
  readonly _pickerButtonLabel: string;
833
835
  readonly _pickerButtonIcon: string;
834
836
  _onPickerButtonClick(): void;
@@ -2,6 +2,13 @@
2
2
 
3
3
  const SingleValuePicker = (Base) => {
4
4
  class SingleValuePickerElement extends Base {
5
+ constructor() {
6
+ super(...arguments);
7
+ /**
8
+ * @internal
9
+ */
10
+ this._isInternalValueUpdate = false;
11
+ }
5
12
  /**
6
13
  * @internal
7
14
  */
@@ -13,7 +20,9 @@ const SingleValuePicker = (Base) => {
13
20
  return;
14
21
  }
15
22
  }
16
- this._updatePresentationValue();
23
+ if (!this._isInternalValueUpdate) {
24
+ this._updatePresentationValue();
25
+ }
17
26
  }
18
27
  /**
19
28
  * @internal
@@ -38,20 +47,45 @@ const SingleValuePicker = (Base) => {
38
47
  */
39
48
  _onTextFieldChange() {
40
49
  if (this._presentationValue === "") {
41
- this._updateValueDueToUserInteraction("");
50
+ this.value = "";
51
+ this.$emit("change");
42
52
  return;
43
53
  }
44
54
  try {
45
- this._updateValueDueToUserInteraction(
46
- this._parsePresentationValue(this._presentationValue)
47
- );
55
+ this.value = this._parsePresentationValue(this._presentationValue);
56
+ this.$emit("change");
48
57
  } catch (_) {
49
58
  const invalidPresentationValue = this._presentationValue;
50
- this._updateValueDueToUserInteraction("");
59
+ this.value = "";
60
+ this.$emit("change");
51
61
  this._presentationValue = invalidPresentationValue;
52
62
  return;
53
63
  }
54
64
  }
65
+ /**
66
+ * @internal
67
+ */
68
+ _onTextFieldInput(event) {
69
+ super._onTextFieldInput(event);
70
+ this._isInternalValueUpdate = true;
71
+ if (this._presentationValue === "") {
72
+ this.value = "";
73
+ this.$emit("input");
74
+ return;
75
+ }
76
+ try {
77
+ const parsedValue = this._parsePresentationValue(
78
+ this._presentationValue
79
+ );
80
+ if (this.value !== parsedValue) {
81
+ this.value = parsedValue;
82
+ this.$emit("input");
83
+ }
84
+ } catch (_) {
85
+ return;
86
+ }
87
+ this._isInternalValueUpdate = false;
88
+ }
55
89
  /**
56
90
  * @internal
57
91
  */
@@ -1,5 +1,12 @@
1
1
  const SingleValuePicker = (Base) => {
2
2
  class SingleValuePickerElement extends Base {
3
+ constructor() {
4
+ super(...arguments);
5
+ /**
6
+ * @internal
7
+ */
8
+ this._isInternalValueUpdate = false;
9
+ }
3
10
  /**
4
11
  * @internal
5
12
  */
@@ -11,7 +18,9 @@ const SingleValuePicker = (Base) => {
11
18
  return;
12
19
  }
13
20
  }
14
- this._updatePresentationValue();
21
+ if (!this._isInternalValueUpdate) {
22
+ this._updatePresentationValue();
23
+ }
15
24
  }
16
25
  /**
17
26
  * @internal
@@ -36,20 +45,45 @@ const SingleValuePicker = (Base) => {
36
45
  */
37
46
  _onTextFieldChange() {
38
47
  if (this._presentationValue === "") {
39
- this._updateValueDueToUserInteraction("");
48
+ this.value = "";
49
+ this.$emit("change");
40
50
  return;
41
51
  }
42
52
  try {
43
- this._updateValueDueToUserInteraction(
44
- this._parsePresentationValue(this._presentationValue)
45
- );
53
+ this.value = this._parsePresentationValue(this._presentationValue);
54
+ this.$emit("change");
46
55
  } catch (_) {
47
56
  const invalidPresentationValue = this._presentationValue;
48
- this._updateValueDueToUserInteraction("");
57
+ this.value = "";
58
+ this.$emit("change");
49
59
  this._presentationValue = invalidPresentationValue;
50
60
  return;
51
61
  }
52
62
  }
63
+ /**
64
+ * @internal
65
+ */
66
+ _onTextFieldInput(event) {
67
+ super._onTextFieldInput(event);
68
+ this._isInternalValueUpdate = true;
69
+ if (this._presentationValue === "") {
70
+ this.value = "";
71
+ this.$emit("input");
72
+ return;
73
+ }
74
+ try {
75
+ const parsedValue = this._parsePresentationValue(
76
+ this._presentationValue
77
+ );
78
+ if (this.value !== parsedValue) {
79
+ this.value = parsedValue;
80
+ this.$emit("input");
81
+ }
82
+ } catch (_) {
83
+ return;
84
+ }
85
+ this._isInternalValueUpdate = false;
86
+ }
53
87
  /**
54
88
  * @internal
55
89
  */
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
2
 
3
- const styles = ":host{display:inline-block}.base{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.base.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.base:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.base:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.base:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.base:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.base:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.base{--_connotation-color-primary: var(--vvd-text-field-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-text-field-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-text-field-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-text-field-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-firm: var(--vvd-text-field-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-text-field-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-faint: var(--vvd-text-field-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-text-field-accent-soft, var(--vvd-color-neutral-100))}.base{--_text-field-gutter-start: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;--_text-field-gutter-end: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;--_text-field-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_text-field-block-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_text-field-border-radius: 8px;--_text-field-pill-border-radius: 24px;display:inline-grid;width:100%;gap:4px;grid-template-columns:min-content 1fr max-content}.base.size-condensed{--_text-field-gutter-start: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_text-field-gutter-end: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_text-field-icon-size: calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_text-field-block-size: calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_text-field-border-radius: 4px}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){--_low-ink-color: var(--vvd-color-neutral-600)}.base.disabled{--_low-ink-color: var(--_appearance-color-text)}.label:not(slot),.label::slotted(label){box-sizing:initial!important;padding:initial!important;margin:initial!important;color:var(--vvd-color-canvas-text)!important;contain:inline-size!important;font:var(--vvd-typography-base);grid-column:1/4;grid-row:1}.char-count+.label:not(slot),.char-count+.label::slotted(label){grid-column:1/3}.char-count{color:var(--_low-ink-color);font:var(--vvd-typography-base);grid-column:3/4}.fieldset{position:relative;display:flex;align-items:center;background-color:var(--_appearance-color-fill);font:var(--vvd-typography-base);grid-column:1/4;padding-block:0;transition:color .2s,background-color .2s}.fieldset:after{position:absolute;display:block;border-radius:inherit;block-size:100%;box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);content:\"\";inline-size:100%;pointer-events:none;transition:box-shadow .2s}.fieldset:focus-visible{outline:none}.base>.fieldset{block-size:var(--_text-field-block-size)}.base:not(.shape-pill) .fieldset{border-radius:var(--_text-field-border-radius)}.base.shape-pill .fieldset{border-radius:var(--_text-field-pill-border-radius)}.wrapper{border-radius:inherit;block-size:100%;inline-size:100%}.control{border-radius:inherit;text-align:start}.control:not(slot),.control::slotted(input){width:100%!important;box-sizing:border-box!important;border:0 none!important;border-radius:inherit!important;margin:initial!important;appearance:none!important;background-color:transparent!important;block-size:100%!important;color:inherit!important;font:inherit;outline:transparent;padding-block:0!important;padding-inline:var(--_text-field-gutter-start) var(--_text-field-gutter-end)!important;text-align:inherit}.control:not(slot):disabled,.control::slotted(input:disabled){cursor:not-allowed!important;opacity:1!important;-webkit-text-fill-color:var(--_appearance-color-text)!important}.control:not(slot)::placeholder{opacity:1!important;-webkit-text-fill-color:var(--_low-ink-color)!important}.control::slotted(input:-webkit-autofill),.control:not(slot):-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--_appearance-color-fill) inset;-webkit-text-fill-color:var(--_appearance-color-text)!important}.has-icon .control:not(slot),.has-icon .control::slotted(input){padding-inline-start:calc(var(--_text-field-icon-size) + var(--_text-field-gutter-start) * 2)!important}.icon{position:absolute;z-index:1;color:var(--_low-ink-color);font-size:var(--_text-field-icon-size);inset-block-start:50%;inset-inline-start:calc(100% + var(--_text-field-gutter-start));line-height:1;transform:translateY(-50%)}.leading-items-wrapper{position:relative}.base.no-leading .leading-items-wrapper{display:none}.action-items-wrapper{margin-inline-end:4px}.base:not(.action-items) .action-items-wrapper{display:none}@supports selector(:has(*)){.fieldset:has(.wrapper .control:focus-within):after{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px))}}@supports not selector(:has(*)){.wrapper:focus-within:after{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}}:host([internal-part]) .fieldset{background-color:transparent;font:var(--vvd-typography-heading-4);line-height:1.1}:host([internal-part]) .fieldset:not(:focus-within):after{block-size:1px;inset-block-end:0}@supports selector(:has(*)){:host([internal-part]) .fieldset:has(.action-items-wrapper:focus-within):after{block-size:1px;inset-block-end:0}}:host([internal-part]) .control{text-align:center}slot[name=_mirrored-helper-text]{display:none}";
3
+ const styles = ":host{display:inline-block}.base{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.base.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.base:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.base:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.base:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.base:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.base:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.base{--_connotation-color-primary: var(--vvd-text-field-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-text-field-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-text-field-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-text-field-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-firm: var(--vvd-text-field-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-text-field-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-faint: var(--vvd-text-field-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-text-field-accent-soft, var(--vvd-color-neutral-100))}.base{--_text-field-gutter-start: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;--_text-field-gutter-end: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;--_text-field-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_text-field-block-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_text-field-border-radius: 8px;--_text-field-pill-border-radius: 24px;display:inline-grid;width:100%;gap:4px;grid-template-columns:min-content 1fr max-content}.base.size-condensed{--_text-field-gutter-start: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_text-field-gutter-end: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_text-field-icon-size: calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_text-field-block-size: calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_text-field-border-radius: 4px}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){--_low-ink-color: var(--vvd-color-neutral-600)}.base.disabled{--_low-ink-color: var(--_appearance-color-text)}.label:not(slot),.label::slotted(label){box-sizing:initial!important;padding:initial!important;margin:initial!important;color:var(--vvd-color-canvas-text)!important;contain:inline-size!important;font:var(--vvd-typography-base);grid-column:1/4;grid-row:1}.char-count+.label:not(slot),.char-count+.label::slotted(label){grid-column:1/3}.char-count{color:var(--_low-ink-color);font:var(--vvd-typography-base);grid-column:3/4}.fieldset{position:relative;display:flex;align-items:center;background-color:var(--_appearance-color-fill);font:var(--vvd-typography-base);grid-column:1/4;padding-block:0;transition:color .2s,background-color .2s}.fieldset:after{position:absolute;display:block;border-radius:inherit;block-size:100%;box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);content:\"\";inline-size:100%;pointer-events:none;transition:box-shadow .2s}.fieldset:focus-visible{outline:none}.base>.fieldset{block-size:var(--_text-field-block-size)}.base:not(.shape-pill) .fieldset{border-radius:var(--_text-field-border-radius)}.base.shape-pill .fieldset{border-radius:var(--_text-field-pill-border-radius)}.wrapper{border-radius:inherit;block-size:100%;inline-size:100%}.control{border-radius:inherit;text-align:start}.control:not(slot),.control::slotted(input){width:100%!important;box-sizing:border-box!important;border:0 none!important;border-radius:inherit!important;margin:initial!important;appearance:none!important;background-color:transparent!important;block-size:100%!important;color:inherit!important;font:inherit;outline:transparent;padding-block:0!important;padding-inline:var(--_text-field-gutter-start) var(--_text-field-gutter-end)!important;text-align:inherit}.control:not(slot):disabled,.control::slotted(input:disabled){cursor:not-allowed!important;opacity:1!important;-webkit-text-fill-color:var(--_appearance-color-text)!important}.control:not(slot)::placeholder{opacity:1!important;-webkit-text-fill-color:var(--_low-ink-color)!important}.control::slotted(input:-webkit-autofill),.control:not(slot):-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--_appearance-color-fill) inset;-webkit-text-fill-color:var(--_appearance-color-text)!important}.has-icon .control:not(slot),.has-icon .control::slotted(input){padding-inline-start:calc(var(--_text-field-icon-size) + var(--_text-field-gutter-start) * 2)!important}.icon{position:absolute;z-index:1;color:var(--_low-ink-color);font-size:var(--_text-field-icon-size);inset-block-start:50%;inset-inline-start:calc(100% + var(--_text-field-gutter-start));line-height:1;transform:translateY(-50%)}.leading-items-wrapper{position:relative}.base.no-leading .leading-items-wrapper{display:none}.action-items-wrapper{margin-inline-end:4px}.base:not(.action-items) .action-items-wrapper{display:none}@supports selector(:has(*)){.base:not(.has-activedescendant) .fieldset:has(.wrapper .control:focus-within):after{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px))}}@supports not selector(:has(*)){.base:not(.has-activedescendant) .wrapper:focus-within:after{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}}:host([internal-part]) .fieldset{background-color:transparent;font:var(--vvd-typography-heading-4);line-height:1.1}:host([internal-part]) .fieldset:not(:focus-within):after{block-size:1px;inset-block-end:0}@supports selector(:has(*)){:host([internal-part]) .fieldset:has(.action-items-wrapper:focus-within):after{block-size:1px;inset-block-end:0}}:host([internal-part]) .control{text-align:center}slot[name=_mirrored-helper-text]{display:none}";
4
4
 
5
5
  exports.styles = styles;