@luzmo/ngx-lucero 1.0.3-alpha.8 → 2.0.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 (105) hide show
  1. package/README.md +37 -0
  2. package/esm/components/accordion-item.js +1 -1
  3. package/esm/components/accordion.js +1 -1
  4. package/esm/components/action-bar.js +1 -1
  5. package/esm/components/action-button.d.ts +6 -4
  6. package/esm/components/action-button.js +11 -3
  7. package/esm/components/action-group.js +1 -1
  8. package/esm/components/action-menu.d.ts +2 -1
  9. package/esm/components/action-menu.js +9 -2
  10. package/esm/components/avatar.d.ts +5 -1
  11. package/esm/components/avatar.js +18 -2
  12. package/esm/components/badge.js +1 -1
  13. package/esm/components/button-group.js +1 -1
  14. package/esm/components/button.d.ts +1 -3
  15. package/esm/components/button.js +3 -8
  16. package/esm/components/calendar.js +1 -1
  17. package/esm/components/chat-message-group.js +1 -1
  18. package/esm/components/chat-message.js +1 -1
  19. package/esm/components/checkbox.js +3 -2
  20. package/esm/components/clear-button.js +1 -1
  21. package/esm/components/close-button.js +1 -1
  22. package/esm/components/color-area.js +1 -1
  23. package/esm/components/color-field.js +1 -1
  24. package/esm/components/color-handle.js +1 -1
  25. package/esm/components/color-loupe.js +1 -1
  26. package/esm/components/color-menu.js +1 -1
  27. package/esm/components/color-palette-group.js +1 -1
  28. package/esm/components/color-palette.js +1 -1
  29. package/esm/components/color-picker.js +1 -1
  30. package/esm/components/color-slider.js +1 -1
  31. package/esm/components/date-range-picker.js +1 -1
  32. package/esm/components/date-time-picker.js +1 -1
  33. package/esm/components/divider.js +1 -1
  34. package/esm/components/field-group.js +1 -1
  35. package/esm/components/field-label.js +1 -1
  36. package/esm/components/help-text.js +1 -1
  37. package/esm/components/icon.js +1 -1
  38. package/esm/components/infield-button.js +1 -1
  39. package/esm/components/label.js +1 -1
  40. package/esm/components/menu-divider.js +1 -1
  41. package/esm/components/menu-group.d.ts +3 -1
  42. package/esm/components/menu-group.js +16 -2
  43. package/esm/components/menu-item.d.ts +3 -3
  44. package/esm/components/menu-item.js +7 -7
  45. package/esm/components/menu.d.ts +5 -3
  46. package/esm/components/menu.js +16 -2
  47. package/esm/components/multi-language-field.js +1 -1
  48. package/esm/components/notice.d.ts +49 -0
  49. package/esm/components/notice.js +145 -0
  50. package/esm/components/number-field.js +1 -1
  51. package/esm/components/option.d.ts +66 -0
  52. package/esm/components/option.js +241 -0
  53. package/esm/components/options-divider.d.ts +29 -0
  54. package/esm/components/options-divider.js +69 -0
  55. package/esm/components/options.d.ts +7 -6
  56. package/esm/components/options.js +2 -2
  57. package/esm/components/overlay-trigger.d.ts +45 -0
  58. package/esm/components/overlay-trigger.js +155 -0
  59. package/esm/components/overlay.d.ts +5 -3
  60. package/esm/components/overlay.js +2 -2
  61. package/esm/components/picker-button.js +1 -1
  62. package/esm/components/picker.d.ts +2 -1
  63. package/esm/components/picker.js +9 -2
  64. package/esm/components/popover.js +1 -1
  65. package/esm/components/progress-bar.js +1 -1
  66. package/esm/components/progress-circle.js +1 -1
  67. package/esm/components/progress-steps.js +1 -1
  68. package/esm/components/prompt-box.d.ts +7 -3
  69. package/esm/components/prompt-box.js +20 -3
  70. package/esm/components/question-box.d.ts +78 -0
  71. package/esm/components/question-box.js +253 -0
  72. package/esm/components/radio-group.d.ts +3 -2
  73. package/esm/components/radio-group.js +8 -7
  74. package/esm/components/radio.d.ts +1 -1
  75. package/esm/components/radio.js +4 -3
  76. package/esm/components/search.js +1 -1
  77. package/esm/components/select.js +1 -1
  78. package/esm/components/skeleton-loader.js +1 -1
  79. package/esm/components/slider-handle.d.ts +63 -0
  80. package/esm/components/slider-handle.js +218 -0
  81. package/esm/components/slider.d.ts +59 -8
  82. package/esm/components/slider.js +205 -27
  83. package/esm/components/status-light.js +1 -1
  84. package/esm/components/swatch-group.js +1 -1
  85. package/esm/components/swatch.d.ts +1 -1
  86. package/esm/components/swatch.js +1 -1
  87. package/esm/components/switch.js +1 -1
  88. package/esm/components/tab-panel.js +1 -1
  89. package/esm/components/tab.js +1 -1
  90. package/esm/components/tabs-overflow.js +1 -1
  91. package/esm/components/tabs.d.ts +1 -1
  92. package/esm/components/tabs.js +1 -1
  93. package/esm/components/tag.d.ts +1 -1
  94. package/esm/components/tag.js +2 -2
  95. package/esm/components/tags.js +1 -1
  96. package/esm/components/text-field.d.ts +3 -3
  97. package/esm/components/text-field.js +1 -1
  98. package/esm/components/toast.js +1 -1
  99. package/esm/components/tooltip.js +1 -1
  100. package/esm/components/top-nav-item.js +1 -1
  101. package/esm/components/top-nav.d.ts +2 -2
  102. package/esm/components/top-nav.js +1 -1
  103. package/esm/index.d.ts +14 -2
  104. package/esm/index.js +24 -0
  105. package/package.json +2 -2
@@ -163,7 +163,7 @@ export class LuzmoColorSlider {
163
163
  ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoColorSlider_Template(rf, ctx) { if (rf & 1) {
164
164
  i0.ɵɵprojectionDef();
165
165
  i0.ɵɵprojection(0);
166
- } }, encapsulation: 2, changeDetection: 0 });
166
+ } }, encapsulation: 2 });
167
167
  }
168
168
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoColorSlider, [{
169
169
  type: Component,
@@ -178,7 +178,7 @@ export class LuzmoDateRangePicker {
178
178
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoDateRangePicker, selectors: [["luzmo-date-range-picker"]], inputs: { startDate: "startDate", endDate: "endDate", min: "min", max: "max", dateFormat: "dateFormat", dateSeparator: "dateSeparator", precision: "precision", calendars: "calendars", showDefinedRanges: "showDefinedRanges", definedRanges: "definedRanges", invalid: "invalid", readonly: "readonly", quiet: "quiet", placement: "placement", timeZone: "timeZone", language: "language", labels: "labels", focused: "focused", helpTextManager: "helpTextManager", size: "size", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { changeEvent: "change", inputEvent: "input", keydownEvent: "keydown" }, exportAs: ["luzmoDateRangePicker"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoDateRangePicker_Template(rf, ctx) { if (rf & 1) {
179
179
  i0.ɵɵprojectionDef();
180
180
  i0.ɵɵprojection(0);
181
- } }, encapsulation: 2, changeDetection: 0 });
181
+ } }, encapsulation: 2 });
182
182
  }
183
183
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoDateRangePicker, [{
184
184
  type: Component,
@@ -212,7 +212,7 @@ export class LuzmoDateTimePicker {
212
212
  ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoDateTimePicker_Template(rf, ctx) { if (rf & 1) {
213
213
  i0.ɵɵprojectionDef();
214
214
  i0.ɵɵprojection(0);
215
- } }, encapsulation: 2, changeDetection: 0 });
215
+ } }, encapsulation: 2 });
216
216
  }
217
217
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoDateTimePicker, [{
218
218
  type: Component,
@@ -61,7 +61,7 @@ export class LuzmoDivider {
61
61
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoDivider, selectors: [["luzmo-divider"]], inputs: { vertical: "vertical", staticColor: "staticColor", size: "size" }, exportAs: ["luzmoDivider"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoDivider_Template(rf, ctx) { if (rf & 1) {
62
62
  i0.ɵɵprojectionDef();
63
63
  i0.ɵɵprojection(0);
64
- } }, encapsulation: 2, changeDetection: 0 });
64
+ } }, encapsulation: 2 });
65
65
  }
66
66
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoDivider, [{
67
67
  type: Component,
@@ -71,7 +71,7 @@ export class LuzmoFieldGroup {
71
71
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoFieldGroup, selectors: [["luzmo-field-group"]], inputs: { horizontal: "horizontal", invalid: "invalid", label: "label", vertical: "vertical", helpTextManager: "helpTextManager" }, exportAs: ["luzmoFieldGroup"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoFieldGroup_Template(rf, ctx) { if (rf & 1) {
72
72
  i0.ɵɵprojectionDef();
73
73
  i0.ɵɵprojection(0);
74
- } }, encapsulation: 2, changeDetection: 0 });
74
+ } }, encapsulation: 2 });
75
75
  }
76
76
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoFieldGroup, [{
77
77
  type: Component,
@@ -78,7 +78,7 @@ export class LuzmoFieldLabel {
78
78
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoFieldLabel, selectors: [["luzmo-field-label"]], inputs: { disabled: "disabled", for: "for", required: "required", slotEl: "slotEl", sideAligned: "sideAligned", size: "size" }, exportAs: ["luzmoFieldLabel"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoFieldLabel_Template(rf, ctx) { if (rf & 1) {
79
79
  i0.ɵɵprojectionDef();
80
80
  i0.ɵɵprojection(0);
81
- } }, encapsulation: 2, changeDetection: 0 });
81
+ } }, encapsulation: 2 });
82
82
  }
83
83
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoFieldLabel, [{
84
84
  type: Component,
@@ -60,7 +60,7 @@ export class LuzmoHelpText {
60
60
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoHelpText, selectors: [["luzmo-help-text"]], inputs: { icon: "icon", variant: "variant", size: "size" }, exportAs: ["luzmoHelpText"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoHelpText_Template(rf, ctx) { if (rf & 1) {
61
61
  i0.ɵɵprojectionDef();
62
62
  i0.ɵɵprojection(0);
63
- } }, encapsulation: 2, changeDetection: 0 });
63
+ } }, encapsulation: 2 });
64
64
  }
65
65
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoHelpText, [{
66
66
  type: Component,
@@ -71,7 +71,7 @@ export class LuzmoIcon {
71
71
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoIcon, selectors: [["luzmo-icon"]], inputs: { src: "src", options: "options", icon: "icon", block: "block", label: "label", size: "size" }, exportAs: ["luzmoIcon"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoIcon_Template(rf, ctx) { if (rf & 1) {
72
72
  i0.ɵɵprojectionDef();
73
73
  i0.ɵɵprojection(0);
74
- } }, encapsulation: 2, changeDetection: 0 });
74
+ } }, encapsulation: 2 });
75
75
  }
76
76
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoIcon, [{
77
77
  type: Component,
@@ -124,7 +124,7 @@ export class LuzmoInfieldButton {
124
124
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoInfieldButton, selectors: [["luzmo-infield-button"]], inputs: { block: "block", inline: "inline", quiet: "quiet", 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: ["luzmoInfieldButton"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoInfieldButton_Template(rf, ctx) { if (rf & 1) {
125
125
  i0.ɵɵprojectionDef();
126
126
  i0.ɵɵprojection(0);
127
- } }, encapsulation: 2, changeDetection: 0 });
127
+ } }, encapsulation: 2 });
128
128
  }
129
129
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoInfieldButton, [{
130
130
  type: Component,
@@ -55,7 +55,7 @@ export class LuzmoLabel {
55
55
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoLabel, selectors: [["luzmo-label"]], inputs: { label: "label", tooltip: "tooltip" }, exportAs: ["luzmoLabel"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoLabel_Template(rf, ctx) { if (rf & 1) {
56
56
  i0.ɵɵprojectionDef();
57
57
  i0.ɵɵprojection(0);
58
- } }, encapsulation: 2, changeDetection: 0 });
58
+ } }, encapsulation: 2 });
59
59
  }
60
60
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoLabel, [{
61
61
  type: Component,
@@ -51,7 +51,7 @@ export class LuzmoMenuDivider {
51
51
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoMenuDivider, selectors: [["luzmo-menu-divider"]], inputs: { size: "size" }, exportAs: ["luzmoMenuDivider"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoMenuDivider_Template(rf, ctx) { if (rf & 1) {
52
52
  i0.ɵɵprojectionDef();
53
53
  i0.ɵɵprojection(0);
54
- } }, encapsulation: 2, changeDetection: 0 });
54
+ } }, encapsulation: 2 });
55
55
  }
56
56
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoMenuDivider, [{
57
57
  type: Component,
@@ -24,6 +24,8 @@ export declare class LuzmoMenuGroup implements OnChanges, ControlValueAccessor {
24
24
  menuSlot?: unknown;
25
25
  focusedItemIndex?: number;
26
26
  focusInItemIndex?: number;
27
+ shouldSupportDragAndSelect?: boolean;
28
+ isScrolling?: boolean;
27
29
  handleSubmenuClosed?: unknown;
28
30
  handleSubmenuOpened?: unknown;
29
31
  /** Announces that the `value` of the element has changed */
@@ -49,7 +51,7 @@ export declare class LuzmoMenuGroup implements OnChanges, ControlValueAccessor {
49
51
  setDisabledState(isDisabled: boolean): void;
50
52
  focus({ preventScroll }: FocusOptions): void;
51
53
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoMenuGroup, never>;
52
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoMenuGroup, "luzmo-menu-group", ["luzmoMenuGroup"], { "size": { "alias": "size"; "required": false; }; "label": { "alias": "label"; "required": false; }; "ignore": { "alias": "ignore"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "selects": { "alias": "selects"; "required": false; }; "value": { "alias": "value"; "required": false; }; "valueSeparator": { "alias": "valueSeparator"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "menuSlot": { "alias": "menuSlot"; "required": false; }; "focusedItemIndex": { "alias": "focusedItemIndex"; "required": false; }; "focusInItemIndex": { "alias": "focusInItemIndex"; "required": false; }; "handleSubmenuClosed": { "alias": "handleSubmenuClosed"; "required": false; }; "handleSubmenuOpened": { "alias": "handleSubmenuOpened"; "required": false; }; }, { "changeEvent": "change"; "closeEvent": "close"; }, never, ["*"], true, never>;
54
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoMenuGroup, "luzmo-menu-group", ["luzmoMenuGroup"], { "size": { "alias": "size"; "required": false; }; "label": { "alias": "label"; "required": false; }; "ignore": { "alias": "ignore"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "selects": { "alias": "selects"; "required": false; }; "value": { "alias": "value"; "required": false; }; "valueSeparator": { "alias": "valueSeparator"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "menuSlot": { "alias": "menuSlot"; "required": false; }; "focusedItemIndex": { "alias": "focusedItemIndex"; "required": false; }; "focusInItemIndex": { "alias": "focusInItemIndex"; "required": false; }; "shouldSupportDragAndSelect": { "alias": "shouldSupportDragAndSelect"; "required": false; }; "isScrolling": { "alias": "isScrolling"; "required": false; }; "handleSubmenuClosed": { "alias": "handleSubmenuClosed"; "required": false; }; "handleSubmenuOpened": { "alias": "handleSubmenuOpened"; "required": false; }; }, { "changeEvent": "change"; "closeEvent": "close"; }, never, ["*"], true, never>;
53
55
  }
54
56
  /** The underlying custom element type for LuzmoMenuGroup */
55
57
  export type LuzmoMenuGroupElement = LuzmoMenuGroupHostElement;
@@ -31,6 +31,8 @@ export class LuzmoMenuGroup {
31
31
  menuSlot;
32
32
  focusedItemIndex;
33
33
  focusInItemIndex;
34
+ shouldSupportDragAndSelect;
35
+ isScrolling;
34
36
  handleSubmenuClosed;
35
37
  handleSubmenuOpened;
36
38
  /** Announces that the `value` of the element has changed */
@@ -83,6 +85,12 @@ export class LuzmoMenuGroup {
83
85
  case 'focusInItemIndex':
84
86
  this.setHostProperty('focusInItemIndex', changes['focusInItemIndex'].currentValue);
85
87
  break;
88
+ case 'shouldSupportDragAndSelect':
89
+ this.setHostProperty('shouldSupportDragAndSelect', changes['shouldSupportDragAndSelect'].currentValue);
90
+ break;
91
+ case 'isScrolling':
92
+ this.setHostProperty('isScrolling', changes['isScrolling'].currentValue);
93
+ break;
86
94
  case 'handleSubmenuClosed':
87
95
  this.setHostProperty('handleSubmenuClosed', changes['handleSubmenuClosed'].currentValue);
88
96
  break;
@@ -156,7 +164,7 @@ export class LuzmoMenuGroup {
156
164
  return this.host.focus({ preventScroll });
157
165
  }
158
166
  static ɵfac = function LuzmoMenuGroup_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoMenuGroup)(); };
159
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoMenuGroup, selectors: [["luzmo-menu-group"]], inputs: { size: "size", label: "label", ignore: "ignore", variant: "variant", selects: "selects", value: "value", valueSeparator: "valueSeparator", selected: "selected", selectedItems: "selectedItems", menuSlot: "menuSlot", focusedItemIndex: "focusedItemIndex", focusInItemIndex: "focusInItemIndex", handleSubmenuClosed: "handleSubmenuClosed", handleSubmenuOpened: "handleSubmenuOpened" }, outputs: { changeEvent: "change", closeEvent: "close" }, exportAs: ["luzmoMenuGroup"], features: [i0.ɵɵProvidersFeature([
167
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoMenuGroup, selectors: [["luzmo-menu-group"]], inputs: { size: "size", label: "label", ignore: "ignore", variant: "variant", selects: "selects", value: "value", valueSeparator: "valueSeparator", selected: "selected", selectedItems: "selectedItems", menuSlot: "menuSlot", focusedItemIndex: "focusedItemIndex", focusInItemIndex: "focusInItemIndex", shouldSupportDragAndSelect: "shouldSupportDragAndSelect", isScrolling: "isScrolling", handleSubmenuClosed: "handleSubmenuClosed", handleSubmenuOpened: "handleSubmenuOpened" }, outputs: { changeEvent: "change", closeEvent: "close" }, exportAs: ["luzmoMenuGroup"], features: [i0.ɵɵProvidersFeature([
160
168
  {
161
169
  provide: NG_VALUE_ACCESSOR,
162
170
  useExisting: forwardRef(() => LuzmoMenuGroup),
@@ -165,7 +173,7 @@ export class LuzmoMenuGroup {
165
173
  ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoMenuGroup_Template(rf, ctx) { if (rf & 1) {
166
174
  i0.ɵɵprojectionDef();
167
175
  i0.ɵɵprojection(0);
168
- } }, encapsulation: 2, changeDetection: 0 });
176
+ } }, encapsulation: 2 });
169
177
  }
170
178
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoMenuGroup, [{
171
179
  type: Component,
@@ -219,6 +227,12 @@ export class LuzmoMenuGroup {
219
227
  }], focusInItemIndex: [{
220
228
  type: Input,
221
229
  args: [{ alias: 'focusInItemIndex' }]
230
+ }], shouldSupportDragAndSelect: [{
231
+ type: Input,
232
+ args: [{ alias: 'shouldSupportDragAndSelect' }]
233
+ }], isScrolling: [{
234
+ type: Input,
235
+ args: [{ alias: 'isScrolling' }]
222
236
  }], handleSubmenuClosed: [{
223
237
  type: Input,
224
238
  args: [{ alias: 'handleSubmenuClosed' }]
@@ -42,8 +42,8 @@ export declare class LuzmoMenuItem implements OnChanges {
42
42
  disabled?: boolean;
43
43
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
44
44
  tabIndex?: number;
45
- /** announces the item has been added so a parent menu can take ownerships */
46
- readonly luzmoMenuItemAddedEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
45
+ /** announces the item has been added or updated so a parent menu can take ownership */
46
+ readonly luzmoMenuItemAddedOrUpdatedEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
47
47
  /** Trick :focus-visible polyfill into thinking keyboard based focus */
48
48
  readonly keydownEvent: import("@angular/core").OutputEmitterRef<unknown>;
49
49
  constructor();
@@ -58,7 +58,7 @@ export declare class LuzmoMenuItem implements OnChanges {
58
58
  private bindEvents;
59
59
  focus(options?: FocusOptions): void;
60
60
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoMenuItem, never>;
61
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoMenuItem, "luzmo-menu-item", ["luzmoMenuItem"], { "abortControllerSubmenu": { "alias": "abortControllerSubmenu"; "required": false; }; "active": { "alias": "active"; "required": false; }; "focused": { "alias": "focused"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "value": { "alias": "value"; "required": false; }; "hasSubmenu": { "alias": "hasSubmenu"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "tooltipPlacement": { "alias": "tooltipPlacement"; "required": false; }; "contentSlot": { "alias": "contentSlot"; "required": false; }; "iconSlot": { "alias": "iconSlot"; "required": false; }; "noWrap": { "alias": "noWrap"; "required": false; }; "overlayElement": { "alias": "overlayElement"; "required": false; }; "open": { "alias": "open"; "required": false; }; "menuData": { "alias": "menuData"; "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; }; "managePresenceObservedSlot": { "alias": "managePresenceObservedSlot"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "luzmoMenuItemAddedEvent": "luzmo-menu-item-added"; "keydownEvent": "keydown"; }, never, ["*"], true, never>;
61
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoMenuItem, "luzmo-menu-item", ["luzmoMenuItem"], { "abortControllerSubmenu": { "alias": "abortControllerSubmenu"; "required": false; }; "active": { "alias": "active"; "required": false; }; "focused": { "alias": "focused"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "value": { "alias": "value"; "required": false; }; "hasSubmenu": { "alias": "hasSubmenu"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "tooltipPlacement": { "alias": "tooltipPlacement"; "required": false; }; "contentSlot": { "alias": "contentSlot"; "required": false; }; "iconSlot": { "alias": "iconSlot"; "required": false; }; "noWrap": { "alias": "noWrap"; "required": false; }; "overlayElement": { "alias": "overlayElement"; "required": false; }; "open": { "alias": "open"; "required": false; }; "menuData": { "alias": "menuData"; "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; }; "managePresenceObservedSlot": { "alias": "managePresenceObservedSlot"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "luzmoMenuItemAddedOrUpdatedEvent": "luzmo-menu-item-added-or-updated"; "keydownEvent": "keydown"; }, never, ["*"], true, never>;
62
62
  }
63
63
  /** The underlying custom element type for LuzmoMenuItem */
64
64
  export type LuzmoMenuItemElement = LuzmoMenuItemHostElement;
@@ -52,8 +52,8 @@ export class LuzmoMenuItem {
52
52
  disabled;
53
53
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
54
54
  tabIndex;
55
- /** announces the item has been added so a parent menu can take ownerships */
56
- luzmoMenuItemAddedEvent = output({ alias: 'luzmo-menu-item-added' });
55
+ /** announces the item has been added or updated so a parent menu can take ownership */
56
+ luzmoMenuItemAddedOrUpdatedEvent = output({ alias: 'luzmo-menu-item-added-or-updated' });
57
57
  /** Trick :focus-visible polyfill into thinking keyboard based focus */
58
58
  keydownEvent = output({ alias: 'keydown' });
59
59
  constructor() {
@@ -151,8 +151,8 @@ export class LuzmoMenuItem {
151
151
  this.renderer.setProperty(this.host, key, value);
152
152
  }
153
153
  bindEvents() {
154
- this.listenerCleanup.push(this.renderer.listen(this.host, 'luzmo-menu-item-added', (event) => {
155
- this.luzmoMenuItemAddedEvent.emit(event);
154
+ this.listenerCleanup.push(this.renderer.listen(this.host, 'luzmo-menu-item-added-or-updated', (event) => {
155
+ this.luzmoMenuItemAddedOrUpdatedEvent.emit(event);
156
156
  }));
157
157
  this.listenerCleanup.push(this.renderer.listen(this.host, 'keydown', (event) => {
158
158
  this.keydownEvent.emit(event);
@@ -162,10 +162,10 @@ export class LuzmoMenuItem {
162
162
  return this.host.focus(options);
163
163
  }
164
164
  static ɵfac = function LuzmoMenuItem_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoMenuItem)(); };
165
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoMenuItem, selectors: [["luzmo-menu-item"]], inputs: { abortControllerSubmenu: "abortControllerSubmenu", active: "active", focused: "focused", selected: "selected", value: "value", hasSubmenu: "hasSubmenu", tooltip: "tooltip", tooltipPlacement: "tooltipPlacement", contentSlot: "contentSlot", iconSlot: "iconSlot", noWrap: "noWrap", overlayElement: "overlayElement", open: "open", menuData: "menuData", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", managePresenceObservedSlot: "managePresenceObservedSlot", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { luzmoMenuItemAddedEvent: "luzmo-menu-item-added", keydownEvent: "keydown" }, exportAs: ["luzmoMenuItem"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoMenuItem_Template(rf, ctx) { if (rf & 1) {
165
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoMenuItem, selectors: [["luzmo-menu-item"]], inputs: { abortControllerSubmenu: "abortControllerSubmenu", active: "active", focused: "focused", selected: "selected", value: "value", hasSubmenu: "hasSubmenu", tooltip: "tooltip", tooltipPlacement: "tooltipPlacement", contentSlot: "contentSlot", iconSlot: "iconSlot", noWrap: "noWrap", overlayElement: "overlayElement", open: "open", menuData: "menuData", download: "download", label: "label", href: "href", target: "target", referrerpolicy: "referrerpolicy", rel: "rel", managePresenceObservedSlot: "managePresenceObservedSlot", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { luzmoMenuItemAddedOrUpdatedEvent: "luzmo-menu-item-added-or-updated", keydownEvent: "keydown" }, exportAs: ["luzmoMenuItem"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoMenuItem_Template(rf, ctx) { if (rf & 1) {
166
166
  i0.ɵɵprojectionDef();
167
167
  i0.ɵɵprojection(0);
168
- } }, encapsulation: 2, changeDetection: 0 });
168
+ } }, encapsulation: 2 });
169
169
  }
170
170
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoMenuItem, [{
171
171
  type: Component,
@@ -245,5 +245,5 @@ export class LuzmoMenuItem {
245
245
  }], tabIndex: [{
246
246
  type: Input,
247
247
  args: [{ alias: 'tabIndex' }]
248
- }], luzmoMenuItemAddedEvent: [{ type: i0.Output, args: ["luzmo-menu-item-added"] }], keydownEvent: [{ type: i0.Output, args: ["keydown"] }] }); })();
248
+ }], luzmoMenuItemAddedOrUpdatedEvent: [{ type: i0.Output, args: ["luzmo-menu-item-added-or-updated"] }], keydownEvent: [{ type: i0.Output, args: ["keydown"] }] }); })();
249
249
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoMenuItem, { className: "LuzmoMenuItem", filePath: "components/menu-item.ts", lineNumber: 22 }); })();
@@ -1,7 +1,7 @@
1
1
  import { OnChanges, SimpleChanges } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
3
  import '@luzmo/lucero/menu';
4
- import type { LuzmoMenu as LuzmoMenuHostElement } from '@luzmo/lucero/menu';
4
+ import type { LuzmoMenu as LuzmoMenuHostElement, LuzmoMenuItem } from '@luzmo/lucero/menu';
5
5
  import * as i0 from "@angular/core";
6
6
  export type { MenuChildItem, MenuItemChildren } from '@luzmo/lucero/menu';
7
7
  export declare class LuzmoMenu implements OnChanges, ControlValueAccessor {
@@ -19,10 +19,12 @@ export declare class LuzmoMenu implements OnChanges, ControlValueAccessor {
19
19
  value?: string;
20
20
  valueSeparator?: string;
21
21
  selected?: string[];
22
- selectedItems?: unknown;
22
+ selectedItems?: LuzmoMenuItem[];
23
23
  menuSlot?: unknown;
24
24
  focusedItemIndex?: number;
25
25
  focusInItemIndex?: number;
26
+ shouldSupportDragAndSelect?: boolean;
27
+ isScrolling?: boolean;
26
28
  handleSubmenuClosed?: unknown;
27
29
  handleSubmenuOpened?: unknown;
28
30
  size?: ('xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl');
@@ -49,7 +51,7 @@ export declare class LuzmoMenu implements OnChanges, ControlValueAccessor {
49
51
  setDisabledState(isDisabled: boolean): void;
50
52
  focus({ preventScroll }: FocusOptions): void;
51
53
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoMenu, never>;
52
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoMenu, "luzmo-menu", ["luzmoMenu"], { "label": { "alias": "label"; "required": false; }; "ignore": { "alias": "ignore"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "selects": { "alias": "selects"; "required": false; }; "value": { "alias": "value"; "required": false; }; "valueSeparator": { "alias": "valueSeparator"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "menuSlot": { "alias": "menuSlot"; "required": false; }; "focusedItemIndex": { "alias": "focusedItemIndex"; "required": false; }; "focusInItemIndex": { "alias": "focusInItemIndex"; "required": false; }; "handleSubmenuClosed": { "alias": "handleSubmenuClosed"; "required": false; }; "handleSubmenuOpened": { "alias": "handleSubmenuOpened"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "changeEvent": "change"; "closeEvent": "close"; }, never, ["*"], true, never>;
54
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoMenu, "luzmo-menu", ["luzmoMenu"], { "label": { "alias": "label"; "required": false; }; "ignore": { "alias": "ignore"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "selects": { "alias": "selects"; "required": false; }; "value": { "alias": "value"; "required": false; }; "valueSeparator": { "alias": "valueSeparator"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "menuSlot": { "alias": "menuSlot"; "required": false; }; "focusedItemIndex": { "alias": "focusedItemIndex"; "required": false; }; "focusInItemIndex": { "alias": "focusInItemIndex"; "required": false; }; "shouldSupportDragAndSelect": { "alias": "shouldSupportDragAndSelect"; "required": false; }; "isScrolling": { "alias": "isScrolling"; "required": false; }; "handleSubmenuClosed": { "alias": "handleSubmenuClosed"; "required": false; }; "handleSubmenuOpened": { "alias": "handleSubmenuOpened"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "changeEvent": "change"; "closeEvent": "close"; }, never, ["*"], true, never>;
53
55
  }
54
56
  /** The underlying custom element type for LuzmoMenu */
55
57
  export type LuzmoMenuElement = LuzmoMenuHostElement;
@@ -29,6 +29,8 @@ export class LuzmoMenu {
29
29
  menuSlot;
30
30
  focusedItemIndex;
31
31
  focusInItemIndex;
32
+ shouldSupportDragAndSelect;
33
+ isScrolling;
32
34
  handleSubmenuClosed;
33
35
  handleSubmenuOpened;
34
36
  size;
@@ -79,6 +81,12 @@ export class LuzmoMenu {
79
81
  case 'focusInItemIndex':
80
82
  this.setHostProperty('focusInItemIndex', changes['focusInItemIndex'].currentValue);
81
83
  break;
84
+ case 'shouldSupportDragAndSelect':
85
+ this.setHostProperty('shouldSupportDragAndSelect', changes['shouldSupportDragAndSelect'].currentValue);
86
+ break;
87
+ case 'isScrolling':
88
+ this.setHostProperty('isScrolling', changes['isScrolling'].currentValue);
89
+ break;
82
90
  case 'handleSubmenuClosed':
83
91
  this.setHostProperty('handleSubmenuClosed', changes['handleSubmenuClosed'].currentValue);
84
92
  break;
@@ -155,7 +163,7 @@ export class LuzmoMenu {
155
163
  return this.host.focus({ preventScroll });
156
164
  }
157
165
  static ɵfac = function LuzmoMenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoMenu)(); };
158
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoMenu, selectors: [["luzmo-menu"]], inputs: { label: "label", ignore: "ignore", variant: "variant", selects: "selects", value: "value", valueSeparator: "valueSeparator", selected: "selected", selectedItems: "selectedItems", menuSlot: "menuSlot", focusedItemIndex: "focusedItemIndex", focusInItemIndex: "focusInItemIndex", handleSubmenuClosed: "handleSubmenuClosed", handleSubmenuOpened: "handleSubmenuOpened", size: "size" }, outputs: { changeEvent: "change", closeEvent: "close" }, exportAs: ["luzmoMenu"], features: [i0.ɵɵProvidersFeature([
166
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoMenu, selectors: [["luzmo-menu"]], inputs: { label: "label", ignore: "ignore", variant: "variant", selects: "selects", value: "value", valueSeparator: "valueSeparator", selected: "selected", selectedItems: "selectedItems", menuSlot: "menuSlot", focusedItemIndex: "focusedItemIndex", focusInItemIndex: "focusInItemIndex", shouldSupportDragAndSelect: "shouldSupportDragAndSelect", isScrolling: "isScrolling", handleSubmenuClosed: "handleSubmenuClosed", handleSubmenuOpened: "handleSubmenuOpened", size: "size" }, outputs: { changeEvent: "change", closeEvent: "close" }, exportAs: ["luzmoMenu"], features: [i0.ɵɵProvidersFeature([
159
167
  {
160
168
  provide: NG_VALUE_ACCESSOR,
161
169
  useExisting: forwardRef(() => LuzmoMenu),
@@ -164,7 +172,7 @@ export class LuzmoMenu {
164
172
  ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoMenu_Template(rf, ctx) { if (rf & 1) {
165
173
  i0.ɵɵprojectionDef();
166
174
  i0.ɵɵprojection(0);
167
- } }, encapsulation: 2, changeDetection: 0 });
175
+ } }, encapsulation: 2 });
168
176
  }
169
177
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoMenu, [{
170
178
  type: Component,
@@ -215,6 +223,12 @@ export class LuzmoMenu {
215
223
  }], focusInItemIndex: [{
216
224
  type: Input,
217
225
  args: [{ alias: 'focusInItemIndex' }]
226
+ }], shouldSupportDragAndSelect: [{
227
+ type: Input,
228
+ args: [{ alias: 'shouldSupportDragAndSelect' }]
229
+ }], isScrolling: [{
230
+ type: Input,
231
+ args: [{ alias: 'isScrolling' }]
218
232
  }], handleSubmenuClosed: [{
219
233
  type: Input,
220
234
  args: [{ alias: 'handleSubmenuClosed' }]
@@ -188,7 +188,7 @@ export class LuzmoMultiLanguageField {
188
188
  ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoMultiLanguageField_Template(rf, ctx) { if (rf & 1) {
189
189
  i0.ɵɵprojectionDef();
190
190
  i0.ɵɵprojection(0);
191
- } }, encapsulation: 2, changeDetection: 0 });
191
+ } }, encapsulation: 2 });
192
192
  }
193
193
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoMultiLanguageField, [{
194
194
  type: Component,
@@ -0,0 +1,49 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
2
+ import '@luzmo/lucero/notice';
3
+ import type { LuzmoNotice as LuzmoNoticeHostElement, NoticeCloseDetail, NoticeLabels, NoticeVariant } from '@luzmo/lucero/notice';
4
+ import * as i0 from "@angular/core";
5
+ export type { NoticeCloseDetail, NoticeCloseReason, NoticeLabels, NoticeVariant } from '@luzmo/lucero/notice';
6
+ export declare class LuzmoNotice implements OnChanges {
7
+ private readonly elementRef;
8
+ private readonly renderer;
9
+ private readonly destroyRef;
10
+ private readonly host;
11
+ private readonly listenerCleanup;
12
+ /** The underlying custom element instance. Use to call imperative methods. */
13
+ get nativeElement(): LuzmoNoticeHostElement;
14
+ /** Whether the notice is visible. */
15
+ open?: boolean;
16
+ /** The semantic appearance and live-region priority. */
17
+ variant?: NoticeVariant;
18
+ /** Whether to hide the automatic semantic icon. */
19
+ hideIcon?: boolean;
20
+ /** Whether to render a manual close control. Timed notices always render it. */
21
+ closeable?: boolean;
22
+ /** Plain-text heading fallback for the `heading` slot. */
23
+ heading?: string;
24
+ /** Plain-text description fallback for the default slot. */
25
+ description?: string;
26
+ /** Automatic-close delay in seconds. Positive values are clamped to at least six seconds; null and non-positive values disable automatic closing. Hover pauses the countdown while the pointer stays inside. The first keyboard focus latches the pause until the notice is dismissed. */
27
+ duration?: number | null;
28
+ /** Localized close-control and semantic-icon labels. */
29
+ labels?: NoticeLabels;
30
+ size?: ('xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl');
31
+ /** Cancelable request to close the notice. Detail contains the `manual`, `automatic`, or `programmatic` reason. */
32
+ readonly luzmoNoticeCloseEvent: import("@angular/core").OutputEmitterRef<CustomEvent<NoticeCloseDetail>>;
33
+ constructor();
34
+ ngOnChanges(changes: SimpleChanges): void;
35
+ /**
36
+ * Forward a wrapper @Input to the underlying host element via Renderer2 so
37
+ * the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
38
+ * Unlike a "skip undefined" guard, this lets consumers reset values back to
39
+ * undefined / null by clearing their bindings.
40
+ */
41
+ private setHostProperty;
42
+ private bindEvents;
43
+ /** Requests closure and emits the cancelable `luzmo-notice-close` event. */
44
+ close(reason?: 'manual' | 'automatic' | 'programmatic'): void;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoNotice, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoNotice, "luzmo-notice", ["luzmoNotice"], { "open": { "alias": "open"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "hideIcon": { "alias": "hideIcon"; "required": false; }; "closeable": { "alias": "closeable"; "required": false; }; "heading": { "alias": "heading"; "required": false; }; "description": { "alias": "description"; "required": false; }; "duration": { "alias": "duration"; "required": false; }; "labels": { "alias": "labels"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "luzmoNoticeCloseEvent": "luzmo-notice-close"; }, never, ["*"], true, never>;
47
+ }
48
+ /** The underlying custom element type for LuzmoNotice */
49
+ export type LuzmoNoticeElement = LuzmoNoticeHostElement;
@@ -0,0 +1,145 @@
1
+ import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, output, Renderer2 } from '@angular/core';
2
+ import '@luzmo/lucero/notice';
3
+ import * as i0 from "@angular/core";
4
+ const _c0 = ["*"];
5
+ /**
6
+ * An inline semantic message with optional dismissal behavior.
7
+ *
8
+ * @slot (default) - Rich description content. Replaces the `description` fallback.
9
+ * @slot heading - Rich heading content. Replaces the `heading` fallback.
10
+ * @slot icon - Icon that replaces the automatic semantic icon.
11
+ */
12
+ export class LuzmoNotice {
13
+ elementRef = inject(ElementRef);
14
+ renderer = inject(Renderer2);
15
+ destroyRef = inject(DestroyRef);
16
+ host = this.elementRef.nativeElement;
17
+ listenerCleanup = [];
18
+ /** The underlying custom element instance. Use to call imperative methods. */
19
+ get nativeElement() {
20
+ return this.host;
21
+ }
22
+ /** Whether the notice is visible. */
23
+ open;
24
+ /** The semantic appearance and live-region priority. */
25
+ variant;
26
+ /** Whether to hide the automatic semantic icon. */
27
+ hideIcon;
28
+ /** Whether to render a manual close control. Timed notices always render it. */
29
+ closeable;
30
+ /** Plain-text heading fallback for the `heading` slot. */
31
+ heading;
32
+ /** Plain-text description fallback for the default slot. */
33
+ description;
34
+ /** Automatic-close delay in seconds. Positive values are clamped to at least six seconds; null and non-positive values disable automatic closing. Hover pauses the countdown while the pointer stays inside. The first keyboard focus latches the pause until the notice is dismissed. */
35
+ duration;
36
+ /** Localized close-control and semantic-icon labels. */
37
+ labels;
38
+ size;
39
+ /** Cancelable request to close the notice. Detail contains the `manual`, `automatic`, or `programmatic` reason. */
40
+ luzmoNoticeCloseEvent = output({ alias: 'luzmo-notice-close' });
41
+ constructor() {
42
+ this.bindEvents();
43
+ this.destroyRef.onDestroy(() => {
44
+ for (const cleanup of this.listenerCleanup) {
45
+ cleanup();
46
+ }
47
+ });
48
+ }
49
+ ngOnChanges(changes) {
50
+ for (const key of Object.keys(changes)) {
51
+ switch (key) {
52
+ case 'open':
53
+ this.setHostProperty('open', changes['open'].currentValue);
54
+ break;
55
+ case 'variant':
56
+ this.setHostProperty('variant', changes['variant'].currentValue);
57
+ break;
58
+ case 'hideIcon':
59
+ this.setHostProperty('hideIcon', changes['hideIcon'].currentValue);
60
+ break;
61
+ case 'closeable':
62
+ this.setHostProperty('closeable', changes['closeable'].currentValue);
63
+ break;
64
+ case 'heading':
65
+ this.setHostProperty('heading', changes['heading'].currentValue);
66
+ break;
67
+ case 'description':
68
+ this.setHostProperty('description', changes['description'].currentValue);
69
+ break;
70
+ case 'duration':
71
+ this.setHostProperty('duration', changes['duration'].currentValue);
72
+ break;
73
+ case 'labels':
74
+ this.setHostProperty('labels', changes['labels'].currentValue);
75
+ break;
76
+ case 'size':
77
+ this.setHostProperty('size', changes['size'].currentValue);
78
+ break;
79
+ default:
80
+ break;
81
+ }
82
+ }
83
+ }
84
+ /**
85
+ * Forward a wrapper @Input to the underlying host element via Renderer2 so
86
+ * the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
87
+ * Unlike a "skip undefined" guard, this lets consumers reset values back to
88
+ * undefined / null by clearing their bindings.
89
+ */
90
+ setHostProperty(key, value) {
91
+ this.renderer.setProperty(this.host, key, value);
92
+ }
93
+ bindEvents() {
94
+ this.listenerCleanup.push(this.renderer.listen(this.host, 'luzmo-notice-close', (event) => {
95
+ this.luzmoNoticeCloseEvent.emit(event);
96
+ }));
97
+ }
98
+ /** Requests closure and emits the cancelable `luzmo-notice-close` event. */
99
+ close(reason) {
100
+ return this.host.close(reason);
101
+ }
102
+ static ɵfac = function LuzmoNotice_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoNotice)(); };
103
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoNotice, selectors: [["luzmo-notice"]], inputs: { open: "open", variant: "variant", hideIcon: "hideIcon", closeable: "closeable", heading: "heading", description: "description", duration: "duration", labels: "labels", size: "size" }, outputs: { luzmoNoticeCloseEvent: "luzmo-notice-close" }, exportAs: ["luzmoNotice"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoNotice_Template(rf, ctx) { if (rf & 1) {
104
+ i0.ɵɵprojectionDef();
105
+ i0.ɵɵprojection(0);
106
+ } }, encapsulation: 2 });
107
+ }
108
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoNotice, [{
109
+ type: Component,
110
+ args: [{
111
+ selector: 'luzmo-notice',
112
+ exportAs: 'luzmoNotice',
113
+ standalone: true,
114
+ changeDetection: ChangeDetectionStrategy.OnPush,
115
+ template: '<ng-content />'
116
+ }]
117
+ }], () => [], { open: [{
118
+ type: Input,
119
+ args: [{ alias: 'open' }]
120
+ }], variant: [{
121
+ type: Input,
122
+ args: [{ alias: 'variant' }]
123
+ }], hideIcon: [{
124
+ type: Input,
125
+ args: [{ alias: 'hideIcon' }]
126
+ }], closeable: [{
127
+ type: Input,
128
+ args: [{ alias: 'closeable' }]
129
+ }], heading: [{
130
+ type: Input,
131
+ args: [{ alias: 'heading' }]
132
+ }], description: [{
133
+ type: Input,
134
+ args: [{ alias: 'description' }]
135
+ }], duration: [{
136
+ type: Input,
137
+ args: [{ alias: 'duration' }]
138
+ }], labels: [{
139
+ type: Input,
140
+ args: [{ alias: 'labels' }]
141
+ }], size: [{
142
+ type: Input,
143
+ args: [{ alias: 'size' }]
144
+ }], luzmoNoticeCloseEvent: [{ type: i0.Output, args: ["luzmo-notice-close"] }] }); })();
145
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoNotice, { className: "LuzmoNotice", filePath: "components/notice.ts", lineNumber: 20 }); })();
@@ -293,7 +293,7 @@ export class LuzmoNumberField {
293
293
  ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoNumberField_Template(rf, ctx) { if (rf & 1) {
294
294
  i0.ɵɵprojectionDef();
295
295
  i0.ɵɵprojection(0);
296
- } }, encapsulation: 2, changeDetection: 0 });
296
+ } }, encapsulation: 2 });
297
297
  }
298
298
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoNumberField, [{
299
299
  type: Component,