@luzmo/ngx-lucero 1.0.1-alpha.78

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 (136) hide show
  1. package/README.md +41 -0
  2. package/esm/components/accordion-item.d.ts +32 -0
  3. package/esm/components/accordion-item.js +89 -0
  4. package/esm/components/accordion.d.ts +38 -0
  5. package/esm/components/accordion.js +107 -0
  6. package/esm/components/action-bar.d.ts +32 -0
  7. package/esm/components/action-bar.js +83 -0
  8. package/esm/components/action-button.d.ts +59 -0
  9. package/esm/components/action-button.js +205 -0
  10. package/esm/components/action-group.d.ts +42 -0
  11. package/esm/components/action-group.js +155 -0
  12. package/esm/components/action-menu.d.ts +75 -0
  13. package/esm/components/action-menu.js +337 -0
  14. package/esm/components/avatar.d.ts +35 -0
  15. package/esm/components/avatar.js +94 -0
  16. package/esm/components/badge.d.ts +31 -0
  17. package/esm/components/badge.js +86 -0
  18. package/esm/components/button-group.d.ts +28 -0
  19. package/esm/components/button-group.js +71 -0
  20. package/esm/components/button.d.ts +40 -0
  21. package/esm/components/button.js +140 -0
  22. package/esm/components/calendar.d.ts +64 -0
  23. package/esm/components/calendar.js +218 -0
  24. package/esm/components/chat-message-group.d.ts +29 -0
  25. package/esm/components/chat-message-group.js +76 -0
  26. package/esm/components/chat-message.d.ts +50 -0
  27. package/esm/components/chat-message.js +156 -0
  28. package/esm/components/checkbox.d.ts +55 -0
  29. package/esm/components/checkbox.js +196 -0
  30. package/esm/components/clear-button.d.ts +32 -0
  31. package/esm/components/clear-button.js +88 -0
  32. package/esm/components/close-button.d.ts +33 -0
  33. package/esm/components/close-button.js +95 -0
  34. package/esm/components/color-area.d.ts +45 -0
  35. package/esm/components/color-area.js +167 -0
  36. package/esm/components/color-field.d.ts +91 -0
  37. package/esm/components/color-field.js +321 -0
  38. package/esm/components/color-handle.d.ts +31 -0
  39. package/esm/components/color-handle.js +90 -0
  40. package/esm/components/color-loupe.d.ts +29 -0
  41. package/esm/components/color-loupe.js +76 -0
  42. package/esm/components/color-menu.d.ts +36 -0
  43. package/esm/components/color-menu.js +97 -0
  44. package/esm/components/color-palette-group.d.ts +40 -0
  45. package/esm/components/color-palette-group.js +117 -0
  46. package/esm/components/color-palette.d.ts +43 -0
  47. package/esm/components/color-palette.js +126 -0
  48. package/esm/components/color-picker.d.ts +49 -0
  49. package/esm/components/color-picker.js +143 -0
  50. package/esm/components/color-slider.d.ts +53 -0
  51. package/esm/components/color-slider.js +215 -0
  52. package/esm/components/date-range-picker.d.ts +69 -0
  53. package/esm/components/date-range-picker.js +228 -0
  54. package/esm/components/date-time-picker.d.ts +71 -0
  55. package/esm/components/date-time-picker.js +249 -0
  56. package/esm/components/divider.d.ts +31 -0
  57. package/esm/components/divider.js +78 -0
  58. package/esm/components/field-group.d.ts +32 -0
  59. package/esm/components/field-group.js +101 -0
  60. package/esm/components/field-label.d.ts +37 -0
  61. package/esm/components/field-label.js +104 -0
  62. package/esm/components/help-text.d.ts +30 -0
  63. package/esm/components/help-text.js +77 -0
  64. package/esm/components/icon.d.ts +33 -0
  65. package/esm/components/icon.js +104 -0
  66. package/esm/components/infield-button.d.ts +35 -0
  67. package/esm/components/infield-button.js +103 -0
  68. package/esm/components/label.d.ts +29 -0
  69. package/esm/components/label.js +76 -0
  70. package/esm/components/menu.d.ts +53 -0
  71. package/esm/components/menu.js +218 -0
  72. package/esm/components/multi-language-field.d.ts +58 -0
  73. package/esm/components/multi-language-field.js +263 -0
  74. package/esm/components/number-field.d.ts +103 -0
  75. package/esm/components/number-field.js +372 -0
  76. package/esm/components/options.d.ts +58 -0
  77. package/esm/components/options.js +207 -0
  78. package/esm/components/overlay.d.ts +67 -0
  79. package/esm/components/overlay.js +212 -0
  80. package/esm/components/picker-button.d.ts +32 -0
  81. package/esm/components/picker-button.js +94 -0
  82. package/esm/components/picker.d.ts +79 -0
  83. package/esm/components/picker.js +340 -0
  84. package/esm/components/popover.d.ts +33 -0
  85. package/esm/components/popover.js +93 -0
  86. package/esm/components/progress-bar.d.ts +35 -0
  87. package/esm/components/progress-bar.js +121 -0
  88. package/esm/components/progress-circle.d.ts +35 -0
  89. package/esm/components/progress-circle.js +94 -0
  90. package/esm/components/progress-steps.d.ts +46 -0
  91. package/esm/components/progress-steps.js +127 -0
  92. package/esm/components/prompt-box.d.ts +88 -0
  93. package/esm/components/prompt-box.js +280 -0
  94. package/esm/components/radio-group.d.ts +39 -0
  95. package/esm/components/radio-group.js +136 -0
  96. package/esm/components/radio.d.ts +46 -0
  97. package/esm/components/radio.js +172 -0
  98. package/esm/components/search.d.ts +95 -0
  99. package/esm/components/search.js +351 -0
  100. package/esm/components/select.d.ts +82 -0
  101. package/esm/components/select.js +351 -0
  102. package/esm/components/slider.d.ts +47 -0
  103. package/esm/components/slider.js +185 -0
  104. package/esm/components/status-light.d.ts +30 -0
  105. package/esm/components/status-light.js +78 -0
  106. package/esm/components/swatch-group.d.ts +37 -0
  107. package/esm/components/swatch-group.js +126 -0
  108. package/esm/components/swatch.d.ts +49 -0
  109. package/esm/components/swatch.js +197 -0
  110. package/esm/components/switch.d.ts +48 -0
  111. package/esm/components/switch.js +160 -0
  112. package/esm/components/tab-panel.d.ts +29 -0
  113. package/esm/components/tab-panel.js +78 -0
  114. package/esm/components/tab.d.ts +32 -0
  115. package/esm/components/tab.js +100 -0
  116. package/esm/components/tabs-overflow.d.ts +33 -0
  117. package/esm/components/tabs-overflow.js +97 -0
  118. package/esm/components/tabs.d.ts +43 -0
  119. package/esm/components/tabs.js +150 -0
  120. package/esm/components/tag.d.ts +31 -0
  121. package/esm/components/tag.js +90 -0
  122. package/esm/components/tags.d.ts +30 -0
  123. package/esm/components/tags.js +81 -0
  124. package/esm/components/text-field.d.ts +87 -0
  125. package/esm/components/text-field.js +308 -0
  126. package/esm/components/toast.d.ts +30 -0
  127. package/esm/components/toast.js +68 -0
  128. package/esm/components/tooltip.d.ts +44 -0
  129. package/esm/components/tooltip.js +154 -0
  130. package/esm/components/top-nav-item.d.ts +35 -0
  131. package/esm/components/top-nav-item.js +120 -0
  132. package/esm/components/top-nav.d.ts +35 -0
  133. package/esm/components/top-nav.js +110 -0
  134. package/esm/index.d.ts +135 -0
  135. package/esm/index.js +269 -0
  136. package/package.json +40 -0
@@ -0,0 +1,39 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
2
+ import '@luzmo/lucero/radio';
3
+ import type { LuzmoRadioGroup as LuzmoRadioGroupHostElement } from '@luzmo/lucero/radio';
4
+ import * as i0 from "@angular/core";
5
+ export declare class LuzmoRadioGroup implements OnChanges {
6
+ private readonly elementRef;
7
+ private readonly renderer;
8
+ private readonly destroyRef;
9
+ private readonly host;
10
+ private readonly listenerCleanup;
11
+ /** The underlying custom element instance. Use to call imperative methods. */
12
+ get nativeElement(): LuzmoRadioGroupHostElement;
13
+ name?: string;
14
+ defaultNodes?: unknown;
15
+ rovingTabindexController?: unknown;
16
+ selected?: string;
17
+ helpTextManager?: unknown;
18
+ horizontal?: boolean;
19
+ invalid?: boolean;
20
+ label?: string;
21
+ vertical?: boolean;
22
+ /** An alteration to the value of the element has been committed by the user. */
23
+ readonly changeEvent: import("@angular/core").OutputEmitterRef<Event>;
24
+ constructor();
25
+ ngOnChanges(changes: SimpleChanges): void;
26
+ /**
27
+ * Forward a wrapper @Input to the underlying host element via Renderer2 so
28
+ * the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
29
+ * Unlike a "skip undefined" guard, this lets consumers reset values back to
30
+ * undefined / null by clearing their bindings.
31
+ */
32
+ private setHostProperty;
33
+ private bindEvents;
34
+ focus(): void;
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoRadioGroup, never>;
36
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoRadioGroup, "luzmo-radio-group", ["luzmoRadioGroup"], { "name": { "alias": "name"; "required": false; }; "defaultNodes": { "alias": "default-nodes"; "required": false; }; "rovingTabindexController": { "alias": "roving-tabindex-controller"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "helpTextManager": { "alias": "help-text-manager"; "required": false; }; "horizontal": { "alias": "horizontal"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "label": { "alias": "label"; "required": false; }; "vertical": { "alias": "vertical"; "required": false; }; }, { "changeEvent": "change"; }, never, ["*"], true, never>;
37
+ }
38
+ /** The underlying custom element type for LuzmoRadioGroup */
39
+ export type LuzmoRadioGroupElement = LuzmoRadioGroupHostElement;
@@ -0,0 +1,136 @@
1
+ import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, output, Renderer2 } from '@angular/core';
2
+ import '@luzmo/lucero/radio';
3
+ import * as i0 from "@angular/core";
4
+ const _c0 = ["*"];
5
+ /**
6
+ * Angular wrapper component for <luzmo-radio-group>
7
+ *
8
+ * @slot (default) - The `luzmo-radio` elements to display/manage in the group.
9
+ * @slot help-text - default or non-negative help text to associate to your form element
10
+ * @slot negative-help-text - negative help text to associate to your form element when `invalid`
11
+ */
12
+ export class LuzmoRadioGroup {
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
+ name;
23
+ defaultNodes;
24
+ rovingTabindexController;
25
+ selected;
26
+ helpTextManager;
27
+ horizontal;
28
+ invalid;
29
+ label;
30
+ vertical;
31
+ /** An alteration to the value of the element has been committed by the user. */
32
+ changeEvent = output({ alias: 'change' });
33
+ constructor() {
34
+ this.bindEvents();
35
+ this.destroyRef.onDestroy(() => {
36
+ for (const cleanup of this.listenerCleanup) {
37
+ cleanup();
38
+ }
39
+ });
40
+ }
41
+ ngOnChanges(changes) {
42
+ for (const key of Object.keys(changes)) {
43
+ switch (key) {
44
+ case 'name':
45
+ this.setHostProperty('name', changes['name'].currentValue);
46
+ break;
47
+ case 'defaultNodes':
48
+ this.setHostProperty('defaultNodes', changes['defaultNodes'].currentValue);
49
+ break;
50
+ case 'rovingTabindexController':
51
+ this.setHostProperty('rovingTabindexController', changes['rovingTabindexController'].currentValue);
52
+ break;
53
+ case 'selected':
54
+ this.setHostProperty('selected', changes['selected'].currentValue);
55
+ break;
56
+ case 'helpTextManager':
57
+ this.setHostProperty('helpTextManager', changes['helpTextManager'].currentValue);
58
+ break;
59
+ case 'horizontal':
60
+ this.setHostProperty('horizontal', changes['horizontal'].currentValue);
61
+ break;
62
+ case 'invalid':
63
+ this.setHostProperty('invalid', changes['invalid'].currentValue);
64
+ break;
65
+ case 'label':
66
+ this.setHostProperty('label', changes['label'].currentValue);
67
+ break;
68
+ case 'vertical':
69
+ this.setHostProperty('vertical', changes['vertical'].currentValue);
70
+ break;
71
+ default:
72
+ break;
73
+ }
74
+ }
75
+ }
76
+ /**
77
+ * Forward a wrapper @Input to the underlying host element via Renderer2 so
78
+ * the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
79
+ * Unlike a "skip undefined" guard, this lets consumers reset values back to
80
+ * undefined / null by clearing their bindings.
81
+ */
82
+ setHostProperty(key, value) {
83
+ this.renderer.setProperty(this.host, key, value);
84
+ }
85
+ bindEvents() {
86
+ this.listenerCleanup.push(this.renderer.listen(this.host, 'change', (event) => {
87
+ this.changeEvent.emit(event);
88
+ }));
89
+ }
90
+ focus() {
91
+ return this.host.focus();
92
+ }
93
+ static ɵfac = function LuzmoRadioGroup_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoRadioGroup)(); };
94
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoRadioGroup, selectors: [["luzmo-radio-group"]], inputs: { name: "name", defaultNodes: [0, "default-nodes", "defaultNodes"], rovingTabindexController: [0, "roving-tabindex-controller", "rovingTabindexController"], selected: "selected", helpTextManager: [0, "help-text-manager", "helpTextManager"], horizontal: "horizontal", invalid: "invalid", label: "label", vertical: "vertical" }, outputs: { changeEvent: "change" }, exportAs: ["luzmoRadioGroup"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoRadioGroup_Template(rf, ctx) { if (rf & 1) {
95
+ i0.ɵɵprojectionDef();
96
+ i0.ɵɵprojection(0);
97
+ } }, encapsulation: 2, changeDetection: 0 });
98
+ }
99
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoRadioGroup, [{
100
+ type: Component,
101
+ args: [{
102
+ selector: 'luzmo-radio-group',
103
+ exportAs: 'luzmoRadioGroup',
104
+ standalone: true,
105
+ changeDetection: ChangeDetectionStrategy.OnPush,
106
+ template: '<ng-content />'
107
+ }]
108
+ }], () => [], { name: [{
109
+ type: Input,
110
+ args: [{ alias: 'name' }]
111
+ }], defaultNodes: [{
112
+ type: Input,
113
+ args: [{ alias: 'default-nodes' }]
114
+ }], rovingTabindexController: [{
115
+ type: Input,
116
+ args: [{ alias: 'roving-tabindex-controller' }]
117
+ }], selected: [{
118
+ type: Input,
119
+ args: [{ alias: 'selected' }]
120
+ }], helpTextManager: [{
121
+ type: Input,
122
+ args: [{ alias: 'help-text-manager' }]
123
+ }], horizontal: [{
124
+ type: Input,
125
+ args: [{ alias: 'horizontal' }]
126
+ }], invalid: [{
127
+ type: Input,
128
+ args: [{ alias: 'invalid' }]
129
+ }], label: [{
130
+ type: Input,
131
+ args: [{ alias: 'label' }]
132
+ }], vertical: [{
133
+ type: Input,
134
+ args: [{ alias: 'vertical' }]
135
+ }], changeEvent: [{ type: i0.Output, args: ["change"] }] }); })();
136
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoRadioGroup, { className: "LuzmoRadioGroup", filePath: "components/radio-group.ts", lineNumber: 19 }); })();
@@ -0,0 +1,46 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+ import '@luzmo/lucero/radio';
4
+ import type { LuzmoRadio as LuzmoRadioHostElement } from '@luzmo/lucero/radio';
5
+ import * as i0 from "@angular/core";
6
+ export declare class LuzmoRadio implements OnChanges, ControlValueAccessor {
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(): LuzmoRadioHostElement;
14
+ value?: string;
15
+ checked?: boolean;
16
+ disabled?: boolean;
17
+ emphasized?: boolean;
18
+ invalid?: boolean;
19
+ readonly?: boolean;
20
+ /** Trick :focus-visible polyfill into thinking keyboard based focus */
21
+ readonly keydownEvent: import("@angular/core").OutputEmitterRef<unknown>;
22
+ /** When the input is interacted with and its state is changed */
23
+ readonly changeEvent: import("@angular/core").OutputEmitterRef<Event>;
24
+ constructor();
25
+ ngOnChanges(changes: SimpleChanges): void;
26
+ /**
27
+ * Forward a wrapper @Input to the underlying host element via Renderer2 so
28
+ * the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
29
+ * Unlike a "skip undefined" guard, this lets consumers reset values back to
30
+ * undefined / null by clearing their bindings.
31
+ */
32
+ private setHostProperty;
33
+ private bindEvents;
34
+ private onChange;
35
+ private onTouched;
36
+ private isWritingValue;
37
+ private lastCvaValue;
38
+ writeValue(value: string): void;
39
+ registerOnChange(fn: (value: string) => void): void;
40
+ registerOnTouched(fn: () => void): void;
41
+ setDisabledState(isDisabled: boolean): void;
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoRadio, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoRadio, "luzmo-radio", ["luzmoRadio"], { "value": { "alias": "value"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "emphasized": { "alias": "emphasized"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, { "keydownEvent": "keydown"; "changeEvent": "change"; }, never, ["*"], true, never>;
44
+ }
45
+ /** The underlying custom element type for LuzmoRadio */
46
+ export type LuzmoRadioElement = LuzmoRadioHostElement;
@@ -0,0 +1,172 @@
1
+ import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, forwardRef, inject, Input, output, Renderer2 } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import '@luzmo/lucero/radio';
4
+ import * as i0 from "@angular/core";
5
+ const _c0 = ["*"];
6
+ /**
7
+ * Angular wrapper component for <luzmo-radio>
8
+ *
9
+ * @slot (default) - text label of the Radio button
10
+ */
11
+ export class LuzmoRadio {
12
+ elementRef = inject(ElementRef);
13
+ renderer = inject(Renderer2);
14
+ destroyRef = inject(DestroyRef);
15
+ host = this.elementRef.nativeElement;
16
+ listenerCleanup = [];
17
+ /** The underlying custom element instance. Use to call imperative methods. */
18
+ get nativeElement() {
19
+ return this.host;
20
+ }
21
+ value;
22
+ checked;
23
+ disabled;
24
+ emphasized;
25
+ invalid;
26
+ readonly;
27
+ /** Trick :focus-visible polyfill into thinking keyboard based focus */
28
+ keydownEvent = output({ alias: 'keydown' });
29
+ /** When the input is interacted with and its state is changed */
30
+ changeEvent = output({ alias: 'change' });
31
+ constructor() {
32
+ this.bindEvents();
33
+ this.destroyRef.onDestroy(() => {
34
+ for (const cleanup of this.listenerCleanup) {
35
+ cleanup();
36
+ }
37
+ });
38
+ }
39
+ ngOnChanges(changes) {
40
+ for (const key of Object.keys(changes)) {
41
+ switch (key) {
42
+ case 'value':
43
+ this.setHostProperty('value', changes['value'].currentValue);
44
+ break;
45
+ case 'checked':
46
+ this.setHostProperty('checked', changes['checked'].currentValue);
47
+ break;
48
+ case 'disabled':
49
+ this.setHostProperty('disabled', changes['disabled'].currentValue);
50
+ break;
51
+ case 'emphasized':
52
+ this.setHostProperty('emphasized', changes['emphasized'].currentValue);
53
+ break;
54
+ case 'invalid':
55
+ this.setHostProperty('invalid', changes['invalid'].currentValue);
56
+ break;
57
+ case 'readonly':
58
+ this.setHostProperty('readonly', changes['readonly'].currentValue);
59
+ break;
60
+ default:
61
+ break;
62
+ }
63
+ }
64
+ }
65
+ /**
66
+ * Forward a wrapper @Input to the underlying host element via Renderer2 so
67
+ * the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
68
+ * Unlike a "skip undefined" guard, this lets consumers reset values back to
69
+ * undefined / null by clearing their bindings.
70
+ */
71
+ setHostProperty(key, value) {
72
+ this.renderer.setProperty(this.host, key, value);
73
+ }
74
+ bindEvents() {
75
+ this.listenerCleanup.push(this.renderer.listen(this.host, 'keydown', (event) => {
76
+ this.keydownEvent.emit(event);
77
+ }));
78
+ this.listenerCleanup.push(this.renderer.listen(this.host, 'change', (event) => {
79
+ this.changeEvent.emit(event);
80
+ if (!this.isWritingValue) {
81
+ const eventWithDetail = event;
82
+ const eventTarget = event.target;
83
+ const detail = 'detail' in eventWithDetail ? eventWithDetail.detail : undefined;
84
+ const hostRecord = this.host;
85
+ const nextValue = (detail
86
+ ?? eventTarget?.['value']
87
+ ?? hostRecord['value']);
88
+ if (Object.is(this.lastCvaValue, nextValue)) {
89
+ return;
90
+ }
91
+ this.lastCvaValue = nextValue;
92
+ this.setHostProperty('value', nextValue);
93
+ this.onChange(nextValue);
94
+ }
95
+ }));
96
+ this.listenerCleanup.push(this.renderer.listen(this.host, 'blur', () => {
97
+ this.onTouched();
98
+ }));
99
+ }
100
+ onChange = () => { };
101
+ onTouched = () => { };
102
+ isWritingValue = false;
103
+ lastCvaValue;
104
+ writeValue(value) {
105
+ this.isWritingValue = true;
106
+ this.lastCvaValue = value;
107
+ this.setHostProperty('value', value);
108
+ this.isWritingValue = false;
109
+ }
110
+ registerOnChange(fn) {
111
+ this.onChange = fn;
112
+ }
113
+ registerOnTouched(fn) {
114
+ this.onTouched = fn;
115
+ }
116
+ setDisabledState(isDisabled) {
117
+ this.setHostProperty('disabled', isDisabled);
118
+ if (isDisabled) {
119
+ this.renderer.setAttribute(this.host, 'disabled', '');
120
+ }
121
+ else {
122
+ this.renderer.removeAttribute(this.host, 'disabled');
123
+ }
124
+ }
125
+ static ɵfac = function LuzmoRadio_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoRadio)(); };
126
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoRadio, selectors: [["luzmo-radio"]], inputs: { value: "value", checked: "checked", disabled: "disabled", emphasized: "emphasized", invalid: "invalid", readonly: "readonly" }, outputs: { keydownEvent: "keydown", changeEvent: "change" }, exportAs: ["luzmoRadio"], features: [i0.ɵɵProvidersFeature([
127
+ {
128
+ provide: NG_VALUE_ACCESSOR,
129
+ useExisting: forwardRef(() => LuzmoRadio),
130
+ multi: true
131
+ }
132
+ ]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoRadio_Template(rf, ctx) { if (rf & 1) {
133
+ i0.ɵɵprojectionDef();
134
+ i0.ɵɵprojection(0);
135
+ } }, encapsulation: 2, changeDetection: 0 });
136
+ }
137
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoRadio, [{
138
+ type: Component,
139
+ args: [{
140
+ selector: 'luzmo-radio',
141
+ exportAs: 'luzmoRadio',
142
+ standalone: true,
143
+ changeDetection: ChangeDetectionStrategy.OnPush,
144
+ template: '<ng-content />',
145
+ providers: [
146
+ {
147
+ provide: NG_VALUE_ACCESSOR,
148
+ useExisting: forwardRef(() => LuzmoRadio),
149
+ multi: true
150
+ }
151
+ ]
152
+ }]
153
+ }], () => [], { value: [{
154
+ type: Input,
155
+ args: [{ alias: 'value' }]
156
+ }], checked: [{
157
+ type: Input,
158
+ args: [{ alias: 'checked' }]
159
+ }], disabled: [{
160
+ type: Input,
161
+ args: [{ alias: 'disabled' }]
162
+ }], emphasized: [{
163
+ type: Input,
164
+ args: [{ alias: 'emphasized' }]
165
+ }], invalid: [{
166
+ type: Input,
167
+ args: [{ alias: 'invalid' }]
168
+ }], readonly: [{
169
+ type: Input,
170
+ args: [{ alias: 'readonly' }]
171
+ }], keydownEvent: [{ type: i0.Output, args: ["keydown"] }], changeEvent: [{ type: i0.Output, args: ["change"] }] }); })();
172
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoRadio, { className: "LuzmoRadio", filePath: "components/radio.ts", lineNumber: 25 }); })();
@@ -0,0 +1,95 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+ import '@luzmo/lucero/search';
4
+ import type { LuzmoSearch as LuzmoSearchHostElement } from '@luzmo/lucero/search';
5
+ import * as i0 from "@angular/core";
6
+ export declare class LuzmoSearch implements OnChanges, ControlValueAccessor {
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(): LuzmoSearchHostElement;
14
+ action?: string;
15
+ /** A string applied via `aria-label` to the form control when a user visible label is not provided. */
16
+ label?: string;
17
+ border?: 'none';
18
+ method?: 'get' | 'post' | 'dialog';
19
+ /** Text that appears in the form control when it has no value set */
20
+ placeholder?: string;
21
+ holdValueOnEscape?: boolean;
22
+ form?: unknown;
23
+ /** The value held by the form control */
24
+ value?: string | number;
25
+ helpTextManager?: unknown;
26
+ /** A regular expression outlining the keys that will be allowed to update the value of the form control. */
27
+ allowedKeys?: string;
28
+ /** Whether the `value` held by the form control is invalid. */
29
+ invalid?: boolean;
30
+ /** Name of the form control. */
31
+ name?: string;
32
+ type?: unknown;
33
+ /** Pattern the `value` must match to be valid */
34
+ pattern?: string;
35
+ /** Whether a form control delivered with the `multiline` attribute will change size vertically to accomodate longer input */
36
+ grows?: boolean;
37
+ /** Defines the maximum string length that the user can enter */
38
+ maxlength?: number;
39
+ /** Defines the minimum string length that the user can enter */
40
+ minlength?: number;
41
+ /** Whether the form control should accept a value longer than one line */
42
+ multiline?: boolean;
43
+ /** Whether a user can interact with the value of the form control */
44
+ readonly?: boolean;
45
+ /** The specific number of rows the form control should provide in the user interface */
46
+ rows?: number;
47
+ /** The maximum number of rows the form control should grow to when `grows` is enabled. When content exceeds this limit, the textarea will show a scrollbar. A value of -1 means no maximum (unlimited growth). When set, the value must be >= 1; values < 1 will be disregarded. */
48
+ maxRows?: number;
49
+ /** Whether the `value` held by the form control is valid. */
50
+ valid?: boolean;
51
+ /** Whether to hide the validation state icons (valid/invalid icons). */
52
+ hideValidationIcons?: boolean;
53
+ /** Whether to display the form control with no visible background */
54
+ quiet?: boolean;
55
+ /** Whether the form control will be found to be invalid when it holds no `value` */
56
+ required?: boolean;
57
+ /** What form of assistance should be provided when attempting to supply a value to the form control */
58
+ autocomplete?: unknown;
59
+ /** The search form has been submitted. */
60
+ readonly submitEvent: import("@angular/core").OutputEmitterRef<Event>;
61
+ /** An alteration to the value of the element has been committed by the user. */
62
+ readonly changeEvent: import("@angular/core").OutputEmitterRef<Event>;
63
+ /** The value of the element has changed. */
64
+ readonly inputEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
65
+ /** A key has been pressed. */
66
+ readonly keypressEvent: import("@angular/core").OutputEmitterRef<CustomEvent<unknown>>;
67
+ constructor();
68
+ ngOnChanges(changes: SimpleChanges): void;
69
+ /**
70
+ * Forward a wrapper @Input to the underlying host element via Renderer2 so
71
+ * the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
72
+ * Unlike a "skip undefined" guard, this lets consumers reset values back to
73
+ * undefined / null by clearing their bindings.
74
+ */
75
+ private setHostProperty;
76
+ private bindEvents;
77
+ private onChange;
78
+ private onTouched;
79
+ private isWritingValue;
80
+ private lastCvaValue;
81
+ writeValue(value: string | number): void;
82
+ registerOnChange(fn: (value: string | number) => void): void;
83
+ registerOnTouched(fn: () => void): void;
84
+ setDisabledState(isDisabled: boolean): void;
85
+ reset(): Promise<void>;
86
+ /** Sets the start and end positions of the current selection. */
87
+ setSelectionRange(selectionStart: number, selectionEnd: number, selectionDirection?: 'forward' | 'backward' | 'none'): void;
88
+ /** Selects all the text. */
89
+ select(): void;
90
+ checkValidity(): boolean;
91
+ static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoSearch, never>;
92
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoSearch, "luzmo-search", ["luzmoSearch"], { "action": { "alias": "action"; "required": false; }; "label": { "alias": "label"; "required": false; }; "border": { "alias": "border"; "required": false; }; "method": { "alias": "method"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "holdValueOnEscape": { "alias": "hold-value-on-escape"; "required": false; }; "form": { "alias": "form"; "required": false; }; "value": { "alias": "value"; "required": false; }; "helpTextManager": { "alias": "help-text-manager"; "required": false; }; "allowedKeys": { "alias": "allowed-keys"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "name": { "alias": "name"; "required": false; }; "type": { "alias": "type"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "grows": { "alias": "grows"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "minlength": { "alias": "minlength"; "required": false; }; "multiline": { "alias": "multiline"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "maxRows": { "alias": "max-rows"; "required": false; }; "valid": { "alias": "valid"; "required": false; }; "hideValidationIcons": { "alias": "hide-validation-icons"; "required": false; }; "quiet": { "alias": "quiet"; "required": false; }; "required": { "alias": "required"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; }, { "submitEvent": "submit"; "changeEvent": "change"; "inputEvent": "input"; "keypressEvent": "keypress"; }, never, ["*"], true, never>;
93
+ }
94
+ /** The underlying custom element type for LuzmoSearch */
95
+ export type LuzmoSearchElement = LuzmoSearchHostElement;