@luzmo/ngx-lucero 2.1.0 → 2.2.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 (104) hide show
  1. package/README.md +14 -0
  2. package/esm/components/accordion-item.d.ts +2 -2
  3. package/esm/components/accordion-item.js +5 -5
  4. package/esm/components/action-bar.d.ts +1 -1
  5. package/esm/components/action-bar.js +3 -3
  6. package/esm/components/action-button.d.ts +2 -2
  7. package/esm/components/action-button.js +11 -12
  8. package/esm/components/action-group.d.ts +1 -1
  9. package/esm/components/action-group.js +3 -3
  10. package/esm/components/action-menu.d.ts +1 -1
  11. package/esm/components/action-menu.js +10 -11
  12. package/esm/components/avatar.d.ts +1 -1
  13. package/esm/components/avatar.js +3 -3
  14. package/esm/components/button.d.ts +1 -1
  15. package/esm/components/button.js +3 -3
  16. package/esm/components/calendar.d.ts +4 -4
  17. package/esm/components/calendar.js +14 -15
  18. package/esm/components/checkbox.d.ts +1 -1
  19. package/esm/components/checkbox.js +8 -9
  20. package/esm/components/clear-button.d.ts +1 -1
  21. package/esm/components/clear-button.js +3 -3
  22. package/esm/components/close-button.d.ts +1 -1
  23. package/esm/components/close-button.js +3 -3
  24. package/esm/components/color-area.d.ts +1 -1
  25. package/esm/components/color-area.js +4 -4
  26. package/esm/components/color-field.d.ts +1 -1
  27. package/esm/components/color-field.js +11 -12
  28. package/esm/components/color-menu.d.ts +1 -1
  29. package/esm/components/color-menu.js +4 -4
  30. package/esm/components/color-palette-group.d.ts +1 -1
  31. package/esm/components/color-palette-group.js +3 -3
  32. package/esm/components/color-palette.d.ts +1 -1
  33. package/esm/components/color-palette.js +3 -3
  34. package/esm/components/color-picker.d.ts +1 -1
  35. package/esm/components/color-picker.js +4 -4
  36. package/esm/components/color-slider.d.ts +1 -1
  37. package/esm/components/color-slider.js +10 -11
  38. package/esm/components/date-range-picker.d.ts +1 -1
  39. package/esm/components/date-range-picker.js +5 -5
  40. package/esm/components/date-time-picker.d.ts +1 -1
  41. package/esm/components/date-time-picker.js +10 -11
  42. package/esm/components/infield-button.d.ts +1 -1
  43. package/esm/components/infield-button.js +3 -3
  44. package/esm/components/menu-group.d.ts +1 -1
  45. package/esm/components/menu-group.js +9 -10
  46. package/esm/components/menu-item.d.ts +2 -2
  47. package/esm/components/menu-item.js +5 -5
  48. package/esm/components/menu.d.ts +1 -1
  49. package/esm/components/menu.js +9 -10
  50. package/esm/components/multi-language-field.d.ts +1 -1
  51. package/esm/components/multi-language-field.js +8 -9
  52. package/esm/components/notice.d.ts +2 -2
  53. package/esm/components/notice.js +4 -4
  54. package/esm/components/number-field.d.ts +1 -1
  55. package/esm/components/number-field.js +11 -12
  56. package/esm/components/option.d.ts +1 -1
  57. package/esm/components/option.js +3 -3
  58. package/esm/components/options.d.ts +5 -5
  59. package/esm/components/options.js +15 -16
  60. package/esm/components/overlay-trigger.d.ts +3 -3
  61. package/esm/components/overlay-trigger.js +6 -6
  62. package/esm/components/overlay.d.ts +4 -4
  63. package/esm/components/overlay.js +8 -8
  64. package/esm/components/picker-button.d.ts +1 -1
  65. package/esm/components/picker-button.js +3 -3
  66. package/esm/components/picker.d.ts +3 -3
  67. package/esm/components/picker.js +14 -15
  68. package/esm/components/progress-steps.d.ts +3 -3
  69. package/esm/components/progress-steps.js +6 -6
  70. package/esm/components/prompt-box.d.ts +11 -11
  71. package/esm/components/prompt-box.js +22 -22
  72. package/esm/components/question-box.d.ts +4 -4
  73. package/esm/components/question-box.js +15 -16
  74. package/esm/components/radio-group.d.ts +1 -1
  75. package/esm/components/radio-group.js +3 -3
  76. package/esm/components/radio.d.ts +1 -1
  77. package/esm/components/radio.js +9 -10
  78. package/esm/components/search.d.ts +1 -1
  79. package/esm/components/search.js +12 -13
  80. package/esm/components/select.d.ts +5 -5
  81. package/esm/components/select.js +17 -18
  82. package/esm/components/slider-handle.d.ts +1 -1
  83. package/esm/components/slider-handle.js +9 -10
  84. package/esm/components/slider.d.ts +1 -1
  85. package/esm/components/slider.js +10 -11
  86. package/esm/components/split-view.d.ts +2 -2
  87. package/esm/components/split-view.js +7 -7
  88. package/esm/components/swatch-group.d.ts +1 -1
  89. package/esm/components/swatch-group.js +3 -3
  90. package/esm/components/swatch.d.ts +1 -1
  91. package/esm/components/swatch.js +9 -10
  92. package/esm/components/switch.d.ts +1 -1
  93. package/esm/components/switch.js +9 -10
  94. package/esm/components/tabs.d.ts +1 -1
  95. package/esm/components/tabs.js +4 -4
  96. package/esm/components/tag.d.ts +2 -2
  97. package/esm/components/tag.js +4 -4
  98. package/esm/components/text-field.d.ts +1 -1
  99. package/esm/components/text-field.js +11 -12
  100. package/esm/components/toast.d.ts +1 -1
  101. package/esm/components/toast.js +3 -3
  102. package/esm/components/top-nav.d.ts +1 -1
  103. package/esm/components/top-nav.js +4 -4
  104. package/package.json +2 -2
package/README.md CHANGED
@@ -35,6 +35,20 @@ The wrapper class name mirrors the host element (`LuzmoButton`); the
35
35
  underlying `HTMLElement` subclass type is re-exported as
36
36
  `LuzmoButtonElement` for `@ViewChild` / `ElementRef<T>` use cases.
37
37
 
38
+ ## Events
39
+
40
+ Native events keep their DOM names, such as `(change)`. Typed Angular outputs
41
+ for reserved native event names append `Event` to avoid subscribing the same
42
+ callback to both the native and Angular event paths:
43
+
44
+ ```html
45
+ <luzmo-slider (changeEvent)="onSliderChange($event)"></luzmo-slider>
46
+ ```
47
+
48
+ The output is also available for programmatic subscriptions through the
49
+ wrapper instance's `changeEvent` property. Non-reserved custom events keep
50
+ their existing names, such as `(luzmo-opened)`.
51
+
38
52
  ## Router links
39
53
 
40
54
  Angular 20 and newer recognize Lucero components with an `href` property as
@@ -18,7 +18,7 @@ export declare class LuzmoAccordionItem implements OnChanges {
18
18
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
19
19
  tabIndex?: number;
20
20
  /** Announce that an accordion item has been toggled while allowing the event to be cancelled. */
21
- readonly luzmoAccordionItemToggleEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
21
+ readonly luzmoAccordionItemToggle: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
22
22
  /** Trick :focus-visible polyfill into thinking keyboard based focus */
23
23
  readonly keydownEvent: import("@angular/core").OutputEmitterRef<unknown>;
24
24
  constructor();
@@ -33,7 +33,7 @@ export declare class LuzmoAccordionItem implements OnChanges {
33
33
  private bindEvents;
34
34
  focus(options?: FocusOptions): void;
35
35
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoAccordionItem, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoAccordionItem, "luzmo-accordion-item", ["luzmoAccordionItem"], { "open": { "alias": "open"; "required": false; }; "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "luzmoAccordionItemToggleEvent": "luzmo-accordion-item-toggle"; "keydownEvent": "keydown"; }, never, ["*"], true, never>;
36
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoAccordionItem, "luzmo-accordion-item", ["luzmoAccordionItem"], { "open": { "alias": "open"; "required": false; }; "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "luzmoAccordionItemToggle": "luzmo-accordion-item-toggle"; "keydownEvent": "keydownEvent"; }, never, ["*"], true, never>;
37
37
  }
38
38
  /** The underlying custom element type for LuzmoAccordionItem */
39
39
  export type LuzmoAccordionItemElement = LuzmoAccordionItemHostElement;
@@ -25,9 +25,9 @@ export class LuzmoAccordionItem {
25
25
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
26
26
  tabIndex;
27
27
  /** Announce that an accordion item has been toggled while allowing the event to be cancelled. */
28
- luzmoAccordionItemToggleEvent = output({ alias: 'luzmo-accordion-item-toggle' });
28
+ luzmoAccordionItemToggle = output({ alias: 'luzmo-accordion-item-toggle' });
29
29
  /** Trick :focus-visible polyfill into thinking keyboard based focus */
30
- keydownEvent = output({ alias: 'keydown' });
30
+ keydownEvent = output();
31
31
  constructor() {
32
32
  this.bindEvents();
33
33
  this.destroyRef.onDestroy(() => {
@@ -70,7 +70,7 @@ export class LuzmoAccordionItem {
70
70
  }
71
71
  bindEvents() {
72
72
  this.listenerCleanup.push(this.renderer.listen(this.host, 'luzmo-accordion-item-toggle', (event) => {
73
- this.luzmoAccordionItemToggleEvent.emit(event);
73
+ this.luzmoAccordionItemToggle.emit(event);
74
74
  }));
75
75
  this.listenerCleanup.push(this.renderer.listen(this.host, 'keydown', (event) => {
76
76
  this.keydownEvent.emit(event);
@@ -80,7 +80,7 @@ export class LuzmoAccordionItem {
80
80
  return this.host.focus(options);
81
81
  }
82
82
  static ɵfac = function LuzmoAccordionItem_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoAccordionItem)(); };
83
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoAccordionItem, selectors: [["luzmo-accordion-item"]], inputs: { open: "open", label: "label", disabled: "disabled", size: "size", tabIndex: "tabIndex" }, outputs: { luzmoAccordionItemToggleEvent: "luzmo-accordion-item-toggle", keydownEvent: "keydown" }, exportAs: ["luzmoAccordionItem"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoAccordionItem_Template(rf, ctx) { if (rf & 1) {
83
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoAccordionItem, selectors: [["luzmo-accordion-item"]], inputs: { open: "open", label: "label", disabled: "disabled", size: "size", tabIndex: "tabIndex" }, outputs: { luzmoAccordionItemToggle: "luzmo-accordion-item-toggle", keydownEvent: "keydownEvent" }, exportAs: ["luzmoAccordionItem"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoAccordionItem_Template(rf, ctx) { if (rf & 1) {
84
84
  i0.ɵɵprojectionDef();
85
85
  i0.ɵɵprojection(0);
86
86
  } }, encapsulation: 2 });
@@ -109,5 +109,5 @@ export class LuzmoAccordionItem {
109
109
  }], tabIndex: [{
110
110
  type: Input,
111
111
  args: [{ alias: 'tabIndex' }]
112
- }], luzmoAccordionItemToggleEvent: [{ type: i0.Output, args: ["luzmo-accordion-item-toggle"] }], keydownEvent: [{ type: i0.Output, args: ["keydown"] }] }); })();
112
+ }], luzmoAccordionItemToggle: [{ type: i0.Output, args: ["luzmo-accordion-item-toggle"] }], keydownEvent: [{ type: i0.Output, args: ["keydownEvent"] }] }); })();
113
113
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoAccordionItem, { className: "LuzmoAccordionItem", filePath: "components/accordion-item.ts", lineNumber: 17 }); })();
@@ -26,7 +26,7 @@ export declare class LuzmoActionBar implements OnChanges {
26
26
  private setHostProperty;
27
27
  private bindEvents;
28
28
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoActionBar, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionBar, "luzmo-action-bar", ["luzmoActionBar"], { "emphasized": { "alias": "emphasized"; "required": false; }; "open": { "alias": "open"; "required": false; }; }, { "closeEvent": "close"; }, never, ["*"], true, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionBar, "luzmo-action-bar", ["luzmoActionBar"], { "emphasized": { "alias": "emphasized"; "required": false; }; "open": { "alias": "open"; "required": false; }; }, { "closeEvent": "closeEvent"; }, never, ["*"], true, never>;
30
30
  }
31
31
  /** The underlying custom element type for LuzmoActionBar */
32
32
  export type LuzmoActionBarElement = LuzmoActionBarHostElement;
@@ -21,7 +21,7 @@ export class LuzmoActionBar {
21
21
  emphasized;
22
22
  /** The `open` attribute is used to control the visibility of the popover. */
23
23
  open;
24
- closeEvent = output({ alias: 'close' });
24
+ closeEvent = output();
25
25
  constructor() {
26
26
  this.bindEvents();
27
27
  this.destroyRef.onDestroy(() => {
@@ -59,7 +59,7 @@ export class LuzmoActionBar {
59
59
  }));
60
60
  }
61
61
  static ɵfac = function LuzmoActionBar_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoActionBar)(); };
62
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionBar, selectors: [["luzmo-action-bar"]], inputs: { emphasized: "emphasized", open: "open" }, outputs: { closeEvent: "close" }, exportAs: ["luzmoActionBar"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoActionBar_Template(rf, ctx) { if (rf & 1) {
62
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionBar, selectors: [["luzmo-action-bar"]], inputs: { emphasized: "emphasized", open: "open" }, outputs: { closeEvent: "closeEvent" }, exportAs: ["luzmoActionBar"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoActionBar_Template(rf, ctx) { if (rf & 1) {
63
63
  i0.ɵɵprojectionDef();
64
64
  i0.ɵɵprojection(0);
65
65
  } }, encapsulation: 2 });
@@ -79,5 +79,5 @@ export class LuzmoActionBar {
79
79
  }], open: [{
80
80
  type: Input,
81
81
  args: [{ alias: 'open' }]
82
- }], closeEvent: [{ type: i0.Output, args: ["close"] }] }); })();
82
+ }], closeEvent: [{ type: i0.Output, args: ["closeEvent"] }] }); })();
83
83
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoActionBar, { className: "LuzmoActionBar", filePath: "components/action-bar.ts", lineNumber: 17 }); })();
@@ -53,7 +53,7 @@ export declare class LuzmoActionButton implements OnChanges, ControlValueAccesso
53
53
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
54
54
  tabIndex?: number;
55
55
  /** Synthesizes a "longpress" interaction that signifies a `pointerdown` event that is >=300ms or a keyboard event where code is `Space` or code is `ArrowDown` while `altKey===true`. */
56
- readonly longpressEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
56
+ readonly longpress: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
57
57
  /** Announces a change in the `selected` property of an action button */
58
58
  readonly changeEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
59
59
  /** Trick :focus-visible polyfill into thinking keyboard based focus */
@@ -78,7 +78,7 @@ export declare class LuzmoActionButton implements OnChanges, ControlValueAccesso
78
78
  setDisabledState(isDisabled: boolean): void;
79
79
  focus(options?: FocusOptions): void;
80
80
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoActionButton, never>;
81
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionButton, "luzmo-action-button", ["luzmoActionButton"], { "emphasized": { "alias": "emphasized"; "required": false; }; "holdAffordance": { "alias": "holdAffordance"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "treatment": { "alias": "treatment"; "required": false; }; "role": { "alias": "role"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "toggles": { "alias": "toggles"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "value": { "alias": "value"; "required": false; }; "size": { "alias": "size"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "active": { "alias": "active"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "longpressEvent": "longpress"; "changeEvent": "change"; "keydownEvent": "keydown"; }, never, ["*"], true, never>;
81
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionButton, "luzmo-action-button", ["luzmoActionButton"], { "emphasized": { "alias": "emphasized"; "required": false; }; "holdAffordance": { "alias": "holdAffordance"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "treatment": { "alias": "treatment"; "required": false; }; "role": { "alias": "role"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "toggles": { "alias": "toggles"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "value": { "alias": "value"; "required": false; }; "size": { "alias": "size"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "active": { "alias": "active"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "longpress": "longpress"; "changeEvent": "changeEvent"; "keydownEvent": "keydownEvent"; }, never, ["*"], true, never>;
82
82
  }
83
83
  /** The underlying custom element type for LuzmoActionButton */
84
84
  export type LuzmoActionButtonElement = LuzmoActionButtonHostElement;
@@ -60,11 +60,11 @@ export class LuzmoActionButton {
60
60
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
61
61
  tabIndex;
62
62
  /** Synthesizes a "longpress" interaction that signifies a `pointerdown` event that is >=300ms or a keyboard event where code is `Space` or code is `ArrowDown` while `altKey===true`. */
63
- longpressEvent = output({ alias: 'longpress' });
63
+ longpress = output({ alias: 'longpress' });
64
64
  /** Announces a change in the `selected` property of an action button */
65
- changeEvent = output({ alias: 'change' });
65
+ changeEvent = output();
66
66
  /** Trick :focus-visible polyfill into thinking keyboard based focus */
67
- keydownEvent = output({ alias: 'keydown' });
67
+ keydownEvent = output();
68
68
  constructor() {
69
69
  this.bindEvents();
70
70
  this.destroyRef.onDestroy(() => {
@@ -155,10 +155,9 @@ export class LuzmoActionButton {
155
155
  }
156
156
  bindEvents() {
157
157
  this.listenerCleanup.push(this.renderer.listen(this.host, 'longpress', (event) => {
158
- this.longpressEvent.emit(event);
158
+ this.longpress.emit(event);
159
159
  }));
160
160
  this.listenerCleanup.push(this.renderer.listen(this.host, 'change', (event) => {
161
- this.changeEvent.emit(event);
162
161
  if (!this.isWritingValue) {
163
162
  const eventWithDetail = event;
164
163
  const eventTarget = event.target;
@@ -170,13 +169,13 @@ export class LuzmoActionButton {
170
169
  : (detailRecord === undefined ? detail : undefined)
171
170
  ?? eventTarget?.['value']
172
171
  ?? hostRecord['value']);
173
- if (Object.is(this.lastCvaValue, nextValue)) {
174
- return;
172
+ if (!Object.is(this.lastCvaValue, nextValue)) {
173
+ this.lastCvaValue = nextValue;
174
+ this.setHostProperty('value', nextValue);
175
+ this.onChange(nextValue);
175
176
  }
176
- this.lastCvaValue = nextValue;
177
- this.setHostProperty('value', nextValue);
178
- this.onChange(nextValue);
179
177
  }
178
+ this.changeEvent.emit(event);
180
179
  }));
181
180
  this.listenerCleanup.push(this.renderer.listen(this.host, 'keydown', (event) => {
182
181
  this.keydownEvent.emit(event);
@@ -214,7 +213,7 @@ export class LuzmoActionButton {
214
213
  return this.host.focus(options);
215
214
  }
216
215
  static ɵfac = function LuzmoActionButton_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoActionButton)(); };
217
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionButton, selectors: [["luzmo-action-button"]], inputs: { emphasized: "emphasized", holdAffordance: "holdAffordance", quiet: "quiet", treatment: "treatment", role: "role", selected: "selected", toggles: "toggles", staticColor: "staticColor", variant: "variant", value: "value", size: "size", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", active: "active", type: "type", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { longpressEvent: "longpress", changeEvent: "change", keydownEvent: "keydown" }, exportAs: ["luzmoActionButton"], features: [i0.ɵɵProvidersFeature([
216
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionButton, selectors: [["luzmo-action-button"]], inputs: { emphasized: "emphasized", holdAffordance: "holdAffordance", quiet: "quiet", treatment: "treatment", role: "role", selected: "selected", toggles: "toggles", staticColor: "staticColor", variant: "variant", value: "value", size: "size", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", active: "active", type: "type", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { longpress: "longpress", changeEvent: "changeEvent", keydownEvent: "keydownEvent" }, exportAs: ["luzmoActionButton"], features: [i0.ɵɵProvidersFeature([
218
217
  {
219
218
  provide: NG_VALUE_ACCESSOR,
220
219
  useExisting: forwardRef(() => LuzmoActionButton),
@@ -304,5 +303,5 @@ export class LuzmoActionButton {
304
303
  }], tabIndex: [{
305
304
  type: Input,
306
305
  args: [{ alias: 'tabIndex' }]
307
- }], longpressEvent: [{ type: i0.Output, args: ["longpress"] }], changeEvent: [{ type: i0.Output, args: ["change"] }], keydownEvent: [{ type: i0.Output, args: ["keydown"] }] }); })();
306
+ }], longpress: [{ type: i0.Output, args: ["longpress"] }], changeEvent: [{ type: i0.Output, args: ["changeEvent"] }], keydownEvent: [{ type: i0.Output, args: ["keydownEvent"] }] }); })();
308
307
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoActionButton, { className: "LuzmoActionButton", filePath: "components/action-button.ts", lineNumber: 27 }); })();
@@ -37,7 +37,7 @@ export declare class LuzmoActionGroup implements OnChanges {
37
37
  private bindEvents;
38
38
  focus(options?: FocusOptions): void;
39
39
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoActionGroup, never>;
40
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionGroup, "luzmo-action-group", ["luzmoActionGroup"], { "buttons": { "alias": "buttons"; "required": false; }; "rovingTabindexController": { "alias": "rovingTabindexController"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "emphasized": { "alias": "emphasized"; "required": false; }; "justified": { "alias": "justified"; "required": false; }; "label": { "alias": "label"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "selects": { "alias": "selects"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "vertical": { "alias": "vertical"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "slotElement": { "alias": "slotElement"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "changeEvent": "change"; }, never, ["*"], true, never>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionGroup, "luzmo-action-group", ["luzmoActionGroup"], { "buttons": { "alias": "buttons"; "required": false; }; "rovingTabindexController": { "alias": "rovingTabindexController"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "emphasized": { "alias": "emphasized"; "required": false; }; "justified": { "alias": "justified"; "required": false; }; "label": { "alias": "label"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "selects": { "alias": "selects"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "vertical": { "alias": "vertical"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "slotElement": { "alias": "slotElement"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "changeEvent": "changeEvent"; }, never, ["*"], true, never>;
41
41
  }
42
42
  /** The underlying custom element type for LuzmoActionGroup */
43
43
  export type LuzmoActionGroupElement = LuzmoActionGroupHostElement;
@@ -31,7 +31,7 @@ export class LuzmoActionGroup {
31
31
  slotElement;
32
32
  size;
33
33
  /** Announces that selection state has been changed by user */
34
- changeEvent = output({ alias: 'change' });
34
+ changeEvent = output();
35
35
  constructor() {
36
36
  this.bindEvents();
37
37
  this.destroyRef.onDestroy(() => {
@@ -105,7 +105,7 @@ export class LuzmoActionGroup {
105
105
  return this.host.focus(options);
106
106
  }
107
107
  static ɵfac = function LuzmoActionGroup_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoActionGroup)(); };
108
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionGroup, selectors: [["luzmo-action-group"]], inputs: { buttons: "buttons", rovingTabindexController: "rovingTabindexController", compact: "compact", emphasized: "emphasized", justified: "justified", label: "label", quiet: "quiet", selects: "selects", staticColor: "staticColor", vertical: "vertical", selected: "selected", slotElement: "slotElement", size: "size" }, outputs: { changeEvent: "change" }, exportAs: ["luzmoActionGroup"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoActionGroup_Template(rf, ctx) { if (rf & 1) {
108
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionGroup, selectors: [["luzmo-action-group"]], inputs: { buttons: "buttons", rovingTabindexController: "rovingTabindexController", compact: "compact", emphasized: "emphasized", justified: "justified", label: "label", quiet: "quiet", selects: "selects", staticColor: "staticColor", vertical: "vertical", selected: "selected", slotElement: "slotElement", size: "size" }, outputs: { changeEvent: "changeEvent" }, exportAs: ["luzmoActionGroup"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoActionGroup_Template(rf, ctx) { if (rf & 1) {
109
109
  i0.ɵɵprojectionDef();
110
110
  i0.ɵɵprojection(0);
111
111
  } }, encapsulation: 2 });
@@ -158,5 +158,5 @@ export class LuzmoActionGroup {
158
158
  }], size: [{
159
159
  type: Input,
160
160
  args: [{ alias: 'size' }]
161
- }], changeEvent: [{ type: i0.Output, args: ["change"] }] }); })();
161
+ }], changeEvent: [{ type: i0.Output, args: ["changeEvent"] }] }); })();
162
162
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoActionGroup, { className: "LuzmoActionGroup", filePath: "components/action-group.ts", lineNumber: 17 }); })();
@@ -76,7 +76,7 @@ export declare class LuzmoActionMenu implements OnChanges, ControlValueAccessor
76
76
  toggle(target?: boolean): void;
77
77
  close(): void;
78
78
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoActionMenu, never>;
79
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionMenu, "luzmo-action-menu", ["luzmoActionMenu"], { "selects": { "alias": "selects"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "handleSlottableRequest": { "alias": "handleSlottableRequest"; "required": false; }; "managePresenceObservedSlot": { "alias": "managePresenceObservedSlot"; "required": false; }; "size": { "alias": "size"; "required": false; }; "appliedLabel": { "alias": "appliedLabel"; "required": false; }; "button": { "alias": "button"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "focused": { "alias": "focused"; "required": false; }; "icons": { "alias": "icons"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "pendingLabel": { "alias": "pendingLabel"; "required": false; }; "label": { "alias": "label"; "required": false; }; "open": { "alias": "open"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "labelAlignment": { "alias": "labelAlignment"; "required": false; }; "optionsMenu": { "alias": "optionsMenu"; "required": false; }; "overlayElement": { "alias": "overlayElement"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "value": { "alias": "value"; "required": false; }; "selectedItem": { "alias": "selectedItem"; "required": false; }; "dependencyManager": { "alias": "dependencyManager"; "required": false; }; "isMobile": { "alias": "isMobile"; "required": false; }; "isTouchDevice": { "alias": "isTouchDevice"; "required": false; }; "strategy": { "alias": "strategy"; "required": false; }; "pendingStateController": { "alias": "pendingStateController"; "required": false; }; "applyFocusElementLabel": { "alias": "applyFocusElementLabel"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "changeEvent": "change"; "scrollEvent": "scroll"; "keydownEvent": "keydown"; }, never, ["*"], true, never>;
79
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoActionMenu, "luzmo-action-menu", ["luzmoActionMenu"], { "selects": { "alias": "selects"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "handleSlottableRequest": { "alias": "handleSlottableRequest"; "required": false; }; "managePresenceObservedSlot": { "alias": "managePresenceObservedSlot"; "required": false; }; "size": { "alias": "size"; "required": false; }; "appliedLabel": { "alias": "appliedLabel"; "required": false; }; "button": { "alias": "button"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "focused": { "alias": "focused"; "required": false; }; "icons": { "alias": "icons"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "pendingLabel": { "alias": "pendingLabel"; "required": false; }; "label": { "alias": "label"; "required": false; }; "open": { "alias": "open"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "labelAlignment": { "alias": "labelAlignment"; "required": false; }; "optionsMenu": { "alias": "optionsMenu"; "required": false; }; "overlayElement": { "alias": "overlayElement"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "value": { "alias": "value"; "required": false; }; "selectedItem": { "alias": "selectedItem"; "required": false; }; "dependencyManager": { "alias": "dependencyManager"; "required": false; }; "isMobile": { "alias": "isMobile"; "required": false; }; "isTouchDevice": { "alias": "isTouchDevice"; "required": false; }; "strategy": { "alias": "strategy"; "required": false; }; "pendingStateController": { "alias": "pendingStateController"; "required": false; }; "applyFocusElementLabel": { "alias": "applyFocusElementLabel"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "changeEvent": "changeEvent"; "scrollEvent": "scrollEvent"; "keydownEvent": "keydownEvent"; }, never, ["*"], true, never>;
80
80
  }
81
81
  /** The underlying custom element type for LuzmoActionMenu */
82
82
  export type LuzmoActionMenuElement = LuzmoActionMenuHostElement;
@@ -61,10 +61,10 @@ export class LuzmoActionMenu {
61
61
  applyFocusElementLabel;
62
62
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
63
63
  tabIndex;
64
- changeEvent = output({ alias: 'change' });
65
- scrollEvent = output({ alias: 'scroll' });
64
+ changeEvent = output();
65
+ scrollEvent = output();
66
66
  /** Trick :focus-visible polyfill into thinking keyboard based focus */
67
- keydownEvent = output({ alias: 'keydown' });
67
+ keydownEvent = output();
68
68
  constructor() {
69
69
  this.bindEvents();
70
70
  this.destroyRef.onDestroy(() => {
@@ -185,7 +185,6 @@ export class LuzmoActionMenu {
185
185
  }
186
186
  bindEvents() {
187
187
  this.listenerCleanup.push(this.renderer.listen(this.host, 'change', (event) => {
188
- this.changeEvent.emit(event);
189
188
  if (!this.isWritingValue) {
190
189
  const eventWithDetail = event;
191
190
  const eventTarget = event.target;
@@ -197,13 +196,13 @@ export class LuzmoActionMenu {
197
196
  : (detailRecord === undefined ? detail : undefined)
198
197
  ?? eventTarget?.['value']
199
198
  ?? hostRecord['value']);
200
- if (Object.is(this.lastCvaValue, nextValue)) {
201
- return;
199
+ if (!Object.is(this.lastCvaValue, nextValue)) {
200
+ this.lastCvaValue = nextValue;
201
+ this.setHostProperty('value', nextValue);
202
+ this.onChange(nextValue);
202
203
  }
203
- this.lastCvaValue = nextValue;
204
- this.setHostProperty('value', nextValue);
205
- this.onChange(nextValue);
206
204
  }
205
+ this.changeEvent.emit(event);
207
206
  }));
208
207
  this.listenerCleanup.push(this.renderer.listen(this.host, 'scroll', (event) => {
209
208
  this.scrollEvent.emit(event);
@@ -250,7 +249,7 @@ export class LuzmoActionMenu {
250
249
  return this.host.close();
251
250
  }
252
251
  static ɵfac = function LuzmoActionMenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoActionMenu)(); };
253
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionMenu, selectors: [["luzmo-action-menu"]], inputs: { selects: "selects", staticColor: "staticColor", handleSlottableRequest: "handleSlottableRequest", managePresenceObservedSlot: "managePresenceObservedSlot", size: "size", appliedLabel: "appliedLabel", button: "button", disabled: "disabled", focused: "focused", icons: "icons", variant: "variant", invalid: "invalid", pending: "pending", pendingLabel: "pendingLabel", label: "label", open: "open", readonly: "readonly", labelAlignment: "labelAlignment", optionsMenu: "optionsMenu", overlayElement: "overlayElement", placement: "placement", quiet: "quiet", value: "value", selectedItem: "selectedItem", dependencyManager: "dependencyManager", isMobile: "isMobile", isTouchDevice: "isTouchDevice", strategy: "strategy", pendingStateController: "pendingStateController", applyFocusElementLabel: "applyFocusElementLabel", tabIndex: "tabIndex" }, outputs: { changeEvent: "change", scrollEvent: "scroll", keydownEvent: "keydown" }, exportAs: ["luzmoActionMenu"], features: [i0.ɵɵProvidersFeature([
252
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoActionMenu, selectors: [["luzmo-action-menu"]], inputs: { selects: "selects", staticColor: "staticColor", handleSlottableRequest: "handleSlottableRequest", managePresenceObservedSlot: "managePresenceObservedSlot", size: "size", appliedLabel: "appliedLabel", button: "button", disabled: "disabled", focused: "focused", icons: "icons", variant: "variant", invalid: "invalid", pending: "pending", pendingLabel: "pendingLabel", label: "label", open: "open", readonly: "readonly", labelAlignment: "labelAlignment", optionsMenu: "optionsMenu", overlayElement: "overlayElement", placement: "placement", quiet: "quiet", value: "value", selectedItem: "selectedItem", dependencyManager: "dependencyManager", isMobile: "isMobile", isTouchDevice: "isTouchDevice", strategy: "strategy", pendingStateController: "pendingStateController", applyFocusElementLabel: "applyFocusElementLabel", tabIndex: "tabIndex" }, outputs: { changeEvent: "changeEvent", scrollEvent: "scrollEvent", keydownEvent: "keydownEvent" }, exportAs: ["luzmoActionMenu"], features: [i0.ɵɵProvidersFeature([
254
253
  {
255
254
  provide: NG_VALUE_ACCESSOR,
256
255
  useExisting: forwardRef(() => LuzmoActionMenu),
@@ -370,5 +369,5 @@ export class LuzmoActionMenu {
370
369
  }], tabIndex: [{
371
370
  type: Input,
372
371
  args: [{ alias: 'tabIndex' }]
373
- }], changeEvent: [{ type: i0.Output, args: ["change"] }], scrollEvent: [{ type: i0.Output, args: ["scroll"] }], keydownEvent: [{ type: i0.Output, args: ["keydown"] }] }); })();
372
+ }], changeEvent: [{ type: i0.Output, args: ["changeEvent"] }], scrollEvent: [{ type: i0.Output, args: ["scrollEvent"] }], keydownEvent: [{ type: i0.Output, args: ["keydownEvent"] }] }); })();
374
373
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoActionMenu, { className: "LuzmoActionMenu", filePath: "components/action-menu.ts", lineNumber: 29 }); })();
@@ -53,7 +53,7 @@ export declare class LuzmoAvatar implements OnChanges {
53
53
  private bindEvents;
54
54
  focus(options?: FocusOptions): void;
55
55
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoAvatar, never>;
56
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoAvatar, "luzmo-avatar", ["luzmoAvatar"], { "border": { "alias": "border"; "required": false; }; "rounding": { "alias": "rounding"; "required": false; }; "src": { "alias": "src"; "required": false; }; "letter": { "alias": "letter"; "required": false; }; "colorFromLetter": { "alias": "colorFromLetter"; "required": false; }; "isDecorative": { "alias": "isDecorative"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "keydownEvent": "keydown"; }, never, ["*"], true, never>;
56
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoAvatar, "luzmo-avatar", ["luzmoAvatar"], { "border": { "alias": "border"; "required": false; }; "rounding": { "alias": "rounding"; "required": false; }; "src": { "alias": "src"; "required": false; }; "letter": { "alias": "letter"; "required": false; }; "colorFromLetter": { "alias": "colorFromLetter"; "required": false; }; "isDecorative": { "alias": "isDecorative"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "keydownEvent": "keydownEvent"; }, never, ["*"], true, never>;
57
57
  }
58
58
  /** The underlying custom element type for LuzmoAvatar */
59
59
  export type LuzmoAvatarElement = LuzmoAvatarHostElement;
@@ -45,7 +45,7 @@ export class LuzmoAvatar {
45
45
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
46
46
  tabIndex;
47
47
  /** Trick :focus-visible polyfill into thinking keyboard based focus */
48
- keydownEvent = output({ alias: 'keydown' });
48
+ keydownEvent = output();
49
49
  constructor() {
50
50
  this.bindEvents();
51
51
  this.destroyRef.onDestroy(() => {
@@ -125,7 +125,7 @@ export class LuzmoAvatar {
125
125
  return this.host.focus(options);
126
126
  }
127
127
  static ɵfac = function LuzmoAvatar_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoAvatar)(); };
128
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoAvatar, selectors: [["luzmo-avatar"]], inputs: { border: "border", rounding: "rounding", src: "src", letter: "letter", colorFromLetter: "colorFromLetter", isDecorative: "isDecorative", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", size: "size", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { keydownEvent: "keydown" }, exportAs: ["luzmoAvatar"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoAvatar_Template(rf, ctx) { if (rf & 1) {
128
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoAvatar, selectors: [["luzmo-avatar"]], inputs: { border: "border", rounding: "rounding", src: "src", letter: "letter", colorFromLetter: "colorFromLetter", isDecorative: "isDecorative", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", size: "size", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { keydownEvent: "keydownEvent" }, exportAs: ["luzmoAvatar"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoAvatar_Template(rf, ctx) { if (rf & 1) {
129
129
  i0.ɵɵprojectionDef();
130
130
  i0.ɵɵprojection(0);
131
131
  } }, encapsulation: 2 });
@@ -184,5 +184,5 @@ export class LuzmoAvatar {
184
184
  }], tabIndex: [{
185
185
  type: Input,
186
186
  args: [{ alias: 'tabIndex' }]
187
- }], keydownEvent: [{ type: i0.Output, args: ["keydown"] }] }); })();
187
+ }], keydownEvent: [{ type: i0.Output, args: ["keydownEvent"] }] }); })();
188
188
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoAvatar, { className: "LuzmoAvatar", filePath: "components/avatar.ts", lineNumber: 15 }); })();
@@ -52,7 +52,7 @@ export declare class LuzmoButton implements OnChanges {
52
52
  private bindEvents;
53
53
  focus(options?: FocusOptions): void;
54
54
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoButton, never>;
55
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoButton, "luzmo-button", ["luzmoButton"], { "pendingLabel": { "alias": "pendingLabel"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "treatment": { "alias": "treatment"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "noWrap": { "alias": "noWrap"; "required": false; }; "pendingStateController": { "alias": "pendingStateController"; "required": false; }; "size": { "alias": "size"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "active": { "alias": "active"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "keydownEvent": "keydown"; }, never, ["*"], true, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoButton, "luzmo-button", ["luzmoButton"], { "pendingLabel": { "alias": "pendingLabel"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "staticColor": { "alias": "staticColor"; "required": false; }; "treatment": { "alias": "treatment"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "noWrap": { "alias": "noWrap"; "required": false; }; "pendingStateController": { "alias": "pendingStateController"; "required": false; }; "size": { "alias": "size"; "required": false; }; "download": { "alias": "download"; "required": false; }; "label": { "alias": "label"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "referrerpolicy": { "alias": "referrerpolicy"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "active": { "alias": "active"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "keydownEvent": "keydownEvent"; }, never, ["*"], true, never>;
56
56
  }
57
57
  /** The underlying custom element type for LuzmoButton */
58
58
  export type LuzmoButtonElement = LuzmoButtonHostElement;
@@ -47,7 +47,7 @@ export class LuzmoButton {
47
47
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
48
48
  tabIndex;
49
49
  /** Trick :focus-visible polyfill into thinking keyboard based focus */
50
- keydownEvent = output({ alias: 'keydown' });
50
+ keydownEvent = output();
51
51
  constructor() {
52
52
  this.bindEvents();
53
53
  this.destroyRef.onDestroy(() => {
@@ -139,7 +139,7 @@ export class LuzmoButton {
139
139
  return this.host.focus(options);
140
140
  }
141
141
  static ɵfac = function LuzmoButton_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoButton)(); };
142
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoButton, selectors: [["luzmo-button"]], inputs: { pendingLabel: "pendingLabel", pending: "pending", variant: "variant", staticColor: "staticColor", treatment: "treatment", quiet: "quiet", noWrap: "noWrap", pendingStateController: "pendingStateController", size: "size", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", active: "active", type: "type", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { keydownEvent: "keydown" }, exportAs: ["luzmoButton"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoButton_Template(rf, ctx) { if (rf & 1) {
142
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoButton, selectors: [["luzmo-button"]], inputs: { pendingLabel: "pendingLabel", pending: "pending", variant: "variant", staticColor: "staticColor", treatment: "treatment", quiet: "quiet", noWrap: "noWrap", pendingStateController: "pendingStateController", size: "size", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", active: "active", type: "type", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { keydownEvent: "keydownEvent" }, exportAs: ["luzmoButton"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoButton_Template(rf, ctx) { if (rf & 1) {
143
143
  i0.ɵɵprojectionDef();
144
144
  i0.ɵɵprojection(0);
145
145
  } }, encapsulation: 2 });
@@ -210,5 +210,5 @@ export class LuzmoButton {
210
210
  }], tabIndex: [{
211
211
  type: Input,
212
212
  args: [{ alias: 'tabIndex' }]
213
- }], keydownEvent: [{ type: i0.Output, args: ["keydown"] }] }); })();
213
+ }], keydownEvent: [{ type: i0.Output, args: ["keydownEvent"] }] }); })();
214
214
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoButton, { className: "LuzmoButton", filePath: "components/button.ts", lineNumber: 18 }); })();
@@ -34,10 +34,10 @@ export declare class LuzmoCalendar implements OnChanges, ControlValueAccessor {
34
34
  /** The date being hovered, used for range preview between start and end during range selection. Can be set externally to synchronize hover previews across multiple calendar instances. */
35
35
  hoveredDate?: __extt_CalendarDate;
36
36
  size?: ('xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl');
37
- readonly monthChangeEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
37
+ readonly monthChange: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
38
38
  readonly changeEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
39
- readonly rangeSelectEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
40
- readonly hoverDateEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
39
+ readonly rangeSelect: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
40
+ readonly hoverDate: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
41
41
  constructor();
42
42
  ngOnChanges(changes: SimpleChanges): void;
43
43
  /**
@@ -59,7 +59,7 @@ export declare class LuzmoCalendar implements OnChanges, ControlValueAccessor {
59
59
  /** Resets the component's value */
60
60
  clear(): void;
61
61
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoCalendar, never>;
62
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoCalendar, "luzmo-calendar", ["luzmoCalendar"], { "value": { "alias": "value"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "language": { "alias": "language"; "required": false; }; "labels": { "alias": "labels"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "startDate": { "alias": "startDate"; "required": false; }; "endDate": { "alias": "endDate"; "required": false; }; "hoveredDate": { "alias": "hoveredDate"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "monthChangeEvent": "month-change"; "changeEvent": "change"; "rangeSelectEvent": "range-select"; "hoverDateEvent": "hover-date"; }, never, ["*"], true, never>;
62
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoCalendar, "luzmo-calendar", ["luzmoCalendar"], { "value": { "alias": "value"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "language": { "alias": "language"; "required": false; }; "labels": { "alias": "labels"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "startDate": { "alias": "startDate"; "required": false; }; "endDate": { "alias": "endDate"; "required": false; }; "hoveredDate": { "alias": "hoveredDate"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "monthChange": "month-change"; "changeEvent": "changeEvent"; "rangeSelect": "range-select"; "hoverDate": "hover-date"; }, never, ["*"], true, never>;
63
63
  }
64
64
  /** The underlying custom element type for LuzmoCalendar */
65
65
  export type LuzmoCalendarElement = LuzmoCalendarHostElement;
@@ -37,10 +37,10 @@ export class LuzmoCalendar {
37
37
  /** The date being hovered, used for range preview between start and end during range selection. Can be set externally to synchronize hover previews across multiple calendar instances. */
38
38
  hoveredDate;
39
39
  size;
40
- monthChangeEvent = output({ alias: 'month-change' });
41
- changeEvent = output({ alias: 'change' });
42
- rangeSelectEvent = output({ alias: 'range-select' });
43
- hoverDateEvent = output({ alias: 'hover-date' });
40
+ monthChange = output({ alias: 'month-change' });
41
+ changeEvent = output();
42
+ rangeSelect = output({ alias: 'range-select' });
43
+ hoverDate = output({ alias: 'hover-date' });
44
44
  constructor() {
45
45
  this.bindEvents();
46
46
  this.destroyRef.onDestroy(() => {
@@ -101,10 +101,9 @@ export class LuzmoCalendar {
101
101
  }
102
102
  bindEvents() {
103
103
  this.listenerCleanup.push(this.renderer.listen(this.host, 'month-change', (event) => {
104
- this.monthChangeEvent.emit(event);
104
+ this.monthChange.emit(event);
105
105
  }));
106
106
  this.listenerCleanup.push(this.renderer.listen(this.host, 'change', (event) => {
107
- this.changeEvent.emit(event);
108
107
  if (!this.isWritingValue) {
109
108
  const eventWithDetail = event;
110
109
  const eventTarget = event.target;
@@ -116,19 +115,19 @@ export class LuzmoCalendar {
116
115
  : (detailRecord === undefined ? detail : undefined)
117
116
  ?? eventTarget?.['value']
118
117
  ?? hostRecord['value']);
119
- if (Object.is(this.lastCvaValue, nextValue)) {
120
- return;
118
+ if (!Object.is(this.lastCvaValue, nextValue)) {
119
+ this.lastCvaValue = nextValue;
120
+ this.setHostProperty('value', nextValue);
121
+ this.onChange(nextValue);
121
122
  }
122
- this.lastCvaValue = nextValue;
123
- this.setHostProperty('value', nextValue);
124
- this.onChange(nextValue);
125
123
  }
124
+ this.changeEvent.emit(event);
126
125
  }));
127
126
  this.listenerCleanup.push(this.renderer.listen(this.host, 'range-select', (event) => {
128
- this.rangeSelectEvent.emit(event);
127
+ this.rangeSelect.emit(event);
129
128
  }));
130
129
  this.listenerCleanup.push(this.renderer.listen(this.host, 'hover-date', (event) => {
131
- this.hoverDateEvent.emit(event);
130
+ this.hoverDate.emit(event);
132
131
  }));
133
132
  this.listenerCleanup.push(this.renderer.listen(this.host, 'blur', () => {
134
133
  this.onTouched();
@@ -164,7 +163,7 @@ export class LuzmoCalendar {
164
163
  return this.host.clear();
165
164
  }
166
165
  static ɵfac = function LuzmoCalendar_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoCalendar)(); };
167
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoCalendar, selectors: [["luzmo-calendar"]], inputs: { value: "value", min: "min", max: "max", disabled: "disabled", language: "language", labels: "labels", selectionMode: "selectionMode", startDate: "startDate", endDate: "endDate", hoveredDate: "hoveredDate", size: "size" }, outputs: { monthChangeEvent: "month-change", changeEvent: "change", rangeSelectEvent: "range-select", hoverDateEvent: "hover-date" }, exportAs: ["luzmoCalendar"], features: [i0.ɵɵProvidersFeature([
166
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoCalendar, selectors: [["luzmo-calendar"]], inputs: { value: "value", min: "min", max: "max", disabled: "disabled", language: "language", labels: "labels", selectionMode: "selectionMode", startDate: "startDate", endDate: "endDate", hoveredDate: "hoveredDate", size: "size" }, outputs: { monthChange: "month-change", changeEvent: "changeEvent", rangeSelect: "range-select", hoverDate: "hover-date" }, exportAs: ["luzmoCalendar"], features: [i0.ɵɵProvidersFeature([
168
167
  {
169
168
  provide: NG_VALUE_ACCESSOR,
170
169
  useExisting: forwardRef(() => LuzmoCalendar),
@@ -224,5 +223,5 @@ export class LuzmoCalendar {
224
223
  }], size: [{
225
224
  type: Input,
226
225
  args: [{ alias: 'size' }]
227
- }], monthChangeEvent: [{ type: i0.Output, args: ["month-change"] }], changeEvent: [{ type: i0.Output, args: ["change"] }], rangeSelectEvent: [{ type: i0.Output, args: ["range-select"] }], hoverDateEvent: [{ type: i0.Output, args: ["hover-date"] }] }); })();
226
+ }], monthChange: [{ type: i0.Output, args: ["month-change"] }], changeEvent: [{ type: i0.Output, args: ["changeEvent"] }], rangeSelect: [{ type: i0.Output, args: ["range-select"] }], hoverDate: [{ type: i0.Output, args: ["hover-date"] }] }); })();
228
227
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoCalendar, { className: "LuzmoCalendar", filePath: "components/calendar.ts", lineNumber: 25 }); })();
@@ -50,7 +50,7 @@ export declare class LuzmoCheckbox implements OnChanges, ControlValueAccessor {
50
50
  registerOnTouched(fn: () => void): void;
51
51
  setDisabledState(isDisabled: boolean): void;
52
52
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoCheckbox, never>;
53
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoCheckbox, "luzmo-checkbox", ["luzmoCheckbox"], { "disabled": { "alias": "disabled"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "emphasized": { "alias": "emphasized"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "size": { "alias": "size"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; "name": { "alias": "name"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, { "changeEvent": "change"; }, never, ["*"], true, never>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoCheckbox, "luzmo-checkbox", ["luzmoCheckbox"], { "disabled": { "alias": "disabled"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "emphasized": { "alias": "emphasized"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "size": { "alias": "size"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; "name": { "alias": "name"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, { "changeEvent": "changeEvent"; }, never, ["*"], true, never>;
54
54
  }
55
55
  /** The underlying custom element type for LuzmoCheckbox */
56
56
  export type LuzmoCheckboxElement = LuzmoCheckboxHostElement;
@@ -38,7 +38,7 @@ export class LuzmoCheckbox {
38
38
  /** Whether the element is read-only */
39
39
  readonly;
40
40
  /** Announces a change in the `checked` property of a Checkbox */
41
- changeEvent = output({ alias: 'change' });
41
+ changeEvent = output();
42
42
  constructor() {
43
43
  this.bindEvents();
44
44
  this.destroyRef.onDestroy(() => {
@@ -96,7 +96,6 @@ export class LuzmoCheckbox {
96
96
  }
97
97
  bindEvents() {
98
98
  this.listenerCleanup.push(this.renderer.listen(this.host, 'change', (event) => {
99
- this.changeEvent.emit(event);
100
99
  if (!this.isWritingValue) {
101
100
  const eventWithDetail = event;
102
101
  const eventTarget = event.target;
@@ -108,13 +107,13 @@ export class LuzmoCheckbox {
108
107
  : (detailRecord === undefined ? detail : undefined)
109
108
  ?? eventTarget?.['checked']
110
109
  ?? hostRecord['checked']);
111
- if (Object.is(this.lastCvaValue, nextValue)) {
112
- return;
110
+ if (!Object.is(this.lastCvaValue, nextValue)) {
111
+ this.lastCvaValue = nextValue;
112
+ this.setHostProperty('checked', nextValue);
113
+ this.onChange(nextValue);
113
114
  }
114
- this.lastCvaValue = nextValue;
115
- this.setHostProperty('checked', nextValue);
116
- this.onChange(nextValue);
117
115
  }
116
+ this.changeEvent.emit(event);
118
117
  }));
119
118
  this.listenerCleanup.push(this.renderer.listen(this.host, 'blur', () => {
120
119
  this.onTouched();
@@ -146,7 +145,7 @@ export class LuzmoCheckbox {
146
145
  }
147
146
  }
148
147
  static ɵfac = function LuzmoCheckbox_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoCheckbox)(); };
149
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoCheckbox, selectors: [["luzmo-checkbox"]], inputs: { disabled: "disabled", indeterminate: "indeterminate", autofocus: "autofocus", invalid: "invalid", emphasized: "emphasized", tabIndex: "tabIndex", size: "size", checked: "checked", name: "name", readonly: "readonly" }, outputs: { changeEvent: "change" }, exportAs: ["luzmoCheckbox"], features: [i0.ɵɵProvidersFeature([
148
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoCheckbox, selectors: [["luzmo-checkbox"]], inputs: { disabled: "disabled", indeterminate: "indeterminate", autofocus: "autofocus", invalid: "invalid", emphasized: "emphasized", tabIndex: "tabIndex", size: "size", checked: "checked", name: "name", readonly: "readonly" }, outputs: { changeEvent: "changeEvent" }, exportAs: ["luzmoCheckbox"], features: [i0.ɵɵProvidersFeature([
150
149
  {
151
150
  provide: NG_VALUE_ACCESSOR,
152
151
  useExisting: forwardRef(() => LuzmoCheckbox),
@@ -203,5 +202,5 @@ export class LuzmoCheckbox {
203
202
  }], readonly: [{
204
203
  type: Input,
205
204
  args: [{ alias: 'readonly' }]
206
- }], changeEvent: [{ type: i0.Output, args: ["change"] }] }); })();
205
+ }], changeEvent: [{ type: i0.Output, args: ["changeEvent"] }] }); })();
207
206
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoCheckbox, { className: "LuzmoCheckbox", filePath: "components/checkbox.ts", lineNumber: 26 }); })();