@luzmo/ngx-lucero 1.0.3-alpha.7 → 1.0.3-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/components/menu-divider.d.ts +29 -0
- package/esm/components/menu-divider.js +69 -0
- package/esm/components/menu-group.d.ts +55 -0
- package/esm/components/menu-group.js +229 -0
- package/esm/components/menu-item.d.ts +64 -0
- package/esm/components/menu-item.js +249 -0
- package/esm/components/menu.d.ts +1 -0
- package/esm/components/menu.js +1 -1
- package/esm/components/prompt-box.d.ts +7 -3
- package/esm/components/prompt-box.js +17 -1
- package/esm/index.d.ts +8 -2
- package/esm/index.js +12 -0
- package/package.json +2 -2
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import '@luzmo/lucero/menu';
|
|
3
|
+
import type { LuzmoMenuDivider as LuzmoMenuDividerHostElement } from '@luzmo/lucero/menu';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export type { MenuChildItem, MenuItemChildren } from '@luzmo/lucero/menu';
|
|
6
|
+
export declare class LuzmoMenuDivider 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(): LuzmoMenuDividerHostElement;
|
|
14
|
+
size?: ('xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl');
|
|
15
|
+
constructor();
|
|
16
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
17
|
+
/**
|
|
18
|
+
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
19
|
+
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
20
|
+
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
21
|
+
* undefined / null by clearing their bindings.
|
|
22
|
+
*/
|
|
23
|
+
private setHostProperty;
|
|
24
|
+
private bindEvents;
|
|
25
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoMenuDivider, never>;
|
|
26
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoMenuDivider, "luzmo-menu-divider", ["luzmoMenuDivider"], { "size": { "alias": "size"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
27
|
+
}
|
|
28
|
+
/** The underlying custom element type for LuzmoMenuDivider */
|
|
29
|
+
export type LuzmoMenuDividerElement = LuzmoMenuDividerHostElement;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, Renderer2 } from '@angular/core';
|
|
2
|
+
import '@luzmo/lucero/menu';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
const _c0 = ["*"];
|
|
5
|
+
/**
|
|
6
|
+
* Angular wrapper component for <luzmo-menu-divider>
|
|
7
|
+
*/
|
|
8
|
+
export class LuzmoMenuDivider {
|
|
9
|
+
elementRef = inject(ElementRef);
|
|
10
|
+
renderer = inject(Renderer2);
|
|
11
|
+
destroyRef = inject(DestroyRef);
|
|
12
|
+
host = this.elementRef.nativeElement;
|
|
13
|
+
listenerCleanup = [];
|
|
14
|
+
/** The underlying custom element instance. Use to call imperative methods. */
|
|
15
|
+
get nativeElement() {
|
|
16
|
+
return this.host;
|
|
17
|
+
}
|
|
18
|
+
size;
|
|
19
|
+
constructor() {
|
|
20
|
+
this.bindEvents();
|
|
21
|
+
this.destroyRef.onDestroy(() => {
|
|
22
|
+
for (const cleanup of this.listenerCleanup) {
|
|
23
|
+
cleanup();
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
ngOnChanges(changes) {
|
|
28
|
+
for (const key of Object.keys(changes)) {
|
|
29
|
+
switch (key) {
|
|
30
|
+
case 'size':
|
|
31
|
+
this.setHostProperty('size', changes['size'].currentValue);
|
|
32
|
+
break;
|
|
33
|
+
default:
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
40
|
+
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
41
|
+
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
42
|
+
* undefined / null by clearing their bindings.
|
|
43
|
+
*/
|
|
44
|
+
setHostProperty(key, value) {
|
|
45
|
+
this.renderer.setProperty(this.host, key, value);
|
|
46
|
+
}
|
|
47
|
+
bindEvents() {
|
|
48
|
+
// No custom events for this wrapper.
|
|
49
|
+
}
|
|
50
|
+
static ɵfac = function LuzmoMenuDivider_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoMenuDivider)(); };
|
|
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
|
+
i0.ɵɵprojectionDef();
|
|
53
|
+
i0.ɵɵprojection(0);
|
|
54
|
+
} }, encapsulation: 2 });
|
|
55
|
+
}
|
|
56
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoMenuDivider, [{
|
|
57
|
+
type: Component,
|
|
58
|
+
args: [{
|
|
59
|
+
selector: 'luzmo-menu-divider',
|
|
60
|
+
exportAs: 'luzmoMenuDivider',
|
|
61
|
+
standalone: true,
|
|
62
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
63
|
+
template: '<ng-content />'
|
|
64
|
+
}]
|
|
65
|
+
}], () => [], { size: [{
|
|
66
|
+
type: Input,
|
|
67
|
+
args: [{ alias: 'size' }]
|
|
68
|
+
}] }); })();
|
|
69
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoMenuDivider, { className: "LuzmoMenuDivider", filePath: "components/menu-divider.ts", lineNumber: 16 }); })();
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
+
import '@luzmo/lucero/menu';
|
|
4
|
+
import type { LuzmoMenuGroup as LuzmoMenuGroupHostElement } from '@luzmo/lucero/menu';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export type { MenuChildItem, MenuItemChildren } from '@luzmo/lucero/menu';
|
|
7
|
+
export declare class LuzmoMenuGroup implements OnChanges, ControlValueAccessor {
|
|
8
|
+
private readonly elementRef;
|
|
9
|
+
private readonly renderer;
|
|
10
|
+
private readonly destroyRef;
|
|
11
|
+
private readonly host;
|
|
12
|
+
private readonly listenerCleanup;
|
|
13
|
+
/** The underlying custom element instance. Use to call imperative methods. */
|
|
14
|
+
get nativeElement(): LuzmoMenuGroupHostElement;
|
|
15
|
+
size?: ('xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl');
|
|
16
|
+
label?: string;
|
|
17
|
+
ignore?: boolean;
|
|
18
|
+
variant?: 'checkmarks' | 'highlight';
|
|
19
|
+
selects?: never | 'inherit' | 'single' | 'multiple';
|
|
20
|
+
value?: string;
|
|
21
|
+
valueSeparator?: string;
|
|
22
|
+
selected?: string[];
|
|
23
|
+
selectedItems?: unknown;
|
|
24
|
+
menuSlot?: unknown;
|
|
25
|
+
focusedItemIndex?: number;
|
|
26
|
+
focusInItemIndex?: number;
|
|
27
|
+
handleSubmenuClosed?: unknown;
|
|
28
|
+
handleSubmenuOpened?: unknown;
|
|
29
|
+
/** Announces that the `value` of the element has changed */
|
|
30
|
+
readonly changeEvent: import("@angular/core").OutputEmitterRef<Event>;
|
|
31
|
+
readonly closeEvent: import("@angular/core").OutputEmitterRef<Event>;
|
|
32
|
+
constructor();
|
|
33
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
34
|
+
/**
|
|
35
|
+
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
36
|
+
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
37
|
+
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
38
|
+
* undefined / null by clearing their bindings.
|
|
39
|
+
*/
|
|
40
|
+
private setHostProperty;
|
|
41
|
+
private bindEvents;
|
|
42
|
+
private onChange;
|
|
43
|
+
private onTouched;
|
|
44
|
+
private isWritingValue;
|
|
45
|
+
private lastCvaValue;
|
|
46
|
+
writeValue(value: string): void;
|
|
47
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
48
|
+
registerOnTouched(fn: () => void): void;
|
|
49
|
+
setDisabledState(isDisabled: boolean): void;
|
|
50
|
+
focus({ preventScroll }: FocusOptions): void;
|
|
51
|
+
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>;
|
|
53
|
+
}
|
|
54
|
+
/** The underlying custom element type for LuzmoMenuGroup */
|
|
55
|
+
export type LuzmoMenuGroupElement = LuzmoMenuGroupHostElement;
|
|
@@ -0,0 +1,229 @@
|
|
|
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/menu';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
const _c0 = ["*"];
|
|
6
|
+
/**
|
|
7
|
+
* Angular wrapper component for <luzmo-menu-group>
|
|
8
|
+
*
|
|
9
|
+
* @slot header - headline of the menu group
|
|
10
|
+
* @slot (default) - menu items to be listed in the group
|
|
11
|
+
*/
|
|
12
|
+
export class LuzmoMenuGroup {
|
|
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
|
+
size;
|
|
23
|
+
label;
|
|
24
|
+
ignore;
|
|
25
|
+
variant;
|
|
26
|
+
selects;
|
|
27
|
+
value;
|
|
28
|
+
valueSeparator;
|
|
29
|
+
selected;
|
|
30
|
+
selectedItems;
|
|
31
|
+
menuSlot;
|
|
32
|
+
focusedItemIndex;
|
|
33
|
+
focusInItemIndex;
|
|
34
|
+
handleSubmenuClosed;
|
|
35
|
+
handleSubmenuOpened;
|
|
36
|
+
/** Announces that the `value` of the element has changed */
|
|
37
|
+
changeEvent = output({ alias: 'change' });
|
|
38
|
+
closeEvent = output({ alias: 'close' });
|
|
39
|
+
constructor() {
|
|
40
|
+
this.bindEvents();
|
|
41
|
+
this.destroyRef.onDestroy(() => {
|
|
42
|
+
for (const cleanup of this.listenerCleanup) {
|
|
43
|
+
cleanup();
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
ngOnChanges(changes) {
|
|
48
|
+
for (const key of Object.keys(changes)) {
|
|
49
|
+
switch (key) {
|
|
50
|
+
case 'size':
|
|
51
|
+
this.setHostProperty('size', changes['size'].currentValue);
|
|
52
|
+
break;
|
|
53
|
+
case 'label':
|
|
54
|
+
this.setHostProperty('label', changes['label'].currentValue);
|
|
55
|
+
break;
|
|
56
|
+
case 'ignore':
|
|
57
|
+
this.setHostProperty('ignore', changes['ignore'].currentValue);
|
|
58
|
+
break;
|
|
59
|
+
case 'variant':
|
|
60
|
+
this.setHostProperty('variant', changes['variant'].currentValue);
|
|
61
|
+
break;
|
|
62
|
+
case 'selects':
|
|
63
|
+
this.setHostProperty('selects', changes['selects'].currentValue);
|
|
64
|
+
break;
|
|
65
|
+
case 'value':
|
|
66
|
+
this.setHostProperty('value', changes['value'].currentValue);
|
|
67
|
+
break;
|
|
68
|
+
case 'valueSeparator':
|
|
69
|
+
this.setHostProperty('valueSeparator', changes['valueSeparator'].currentValue);
|
|
70
|
+
break;
|
|
71
|
+
case 'selected':
|
|
72
|
+
this.setHostProperty('selected', changes['selected'].currentValue);
|
|
73
|
+
break;
|
|
74
|
+
case 'selectedItems':
|
|
75
|
+
this.setHostProperty('selectedItems', changes['selectedItems'].currentValue);
|
|
76
|
+
break;
|
|
77
|
+
case 'menuSlot':
|
|
78
|
+
this.setHostProperty('menuSlot', changes['menuSlot'].currentValue);
|
|
79
|
+
break;
|
|
80
|
+
case 'focusedItemIndex':
|
|
81
|
+
this.setHostProperty('focusedItemIndex', changes['focusedItemIndex'].currentValue);
|
|
82
|
+
break;
|
|
83
|
+
case 'focusInItemIndex':
|
|
84
|
+
this.setHostProperty('focusInItemIndex', changes['focusInItemIndex'].currentValue);
|
|
85
|
+
break;
|
|
86
|
+
case 'handleSubmenuClosed':
|
|
87
|
+
this.setHostProperty('handleSubmenuClosed', changes['handleSubmenuClosed'].currentValue);
|
|
88
|
+
break;
|
|
89
|
+
case 'handleSubmenuOpened':
|
|
90
|
+
this.setHostProperty('handleSubmenuOpened', changes['handleSubmenuOpened'].currentValue);
|
|
91
|
+
break;
|
|
92
|
+
default:
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
99
|
+
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
100
|
+
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
101
|
+
* undefined / null by clearing their bindings.
|
|
102
|
+
*/
|
|
103
|
+
setHostProperty(key, value) {
|
|
104
|
+
this.renderer.setProperty(this.host, key, value);
|
|
105
|
+
}
|
|
106
|
+
bindEvents() {
|
|
107
|
+
this.listenerCleanup.push(this.renderer.listen(this.host, 'change', (event) => {
|
|
108
|
+
this.changeEvent.emit(event);
|
|
109
|
+
if (!this.isWritingValue) {
|
|
110
|
+
const eventWithDetail = event;
|
|
111
|
+
const eventTarget = event.target;
|
|
112
|
+
const detail = 'detail' in eventWithDetail ? eventWithDetail.detail : undefined;
|
|
113
|
+
const detailRecord = detail != null && typeof detail === 'object' ? detail : undefined;
|
|
114
|
+
const hostRecord = this.host;
|
|
115
|
+
const nextValue = (detailRecord != null && 'value' in detailRecord
|
|
116
|
+
? detailRecord['value']
|
|
117
|
+
: (detailRecord === undefined ? detail : undefined)
|
|
118
|
+
?? eventTarget?.['value']
|
|
119
|
+
?? hostRecord['value']);
|
|
120
|
+
if (Object.is(this.lastCvaValue, nextValue)) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
this.lastCvaValue = nextValue;
|
|
124
|
+
this.setHostProperty('value', nextValue);
|
|
125
|
+
this.onChange(nextValue);
|
|
126
|
+
}
|
|
127
|
+
}));
|
|
128
|
+
this.listenerCleanup.push(this.renderer.listen(this.host, 'close', (event) => {
|
|
129
|
+
this.closeEvent.emit(event);
|
|
130
|
+
}));
|
|
131
|
+
this.listenerCleanup.push(this.renderer.listen(this.host, 'blur', () => {
|
|
132
|
+
this.onTouched();
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
onChange = () => { };
|
|
136
|
+
onTouched = () => { };
|
|
137
|
+
isWritingValue = false;
|
|
138
|
+
lastCvaValue;
|
|
139
|
+
writeValue(value) {
|
|
140
|
+
this.isWritingValue = true;
|
|
141
|
+
this.lastCvaValue = value;
|
|
142
|
+
this.setHostProperty('value', value);
|
|
143
|
+
this.isWritingValue = false;
|
|
144
|
+
}
|
|
145
|
+
registerOnChange(fn) {
|
|
146
|
+
this.onChange = fn;
|
|
147
|
+
}
|
|
148
|
+
registerOnTouched(fn) {
|
|
149
|
+
this.onTouched = fn;
|
|
150
|
+
}
|
|
151
|
+
setDisabledState(isDisabled) {
|
|
152
|
+
// Underlying element does not declare a 'disabled' field; nothing to do.
|
|
153
|
+
void isDisabled;
|
|
154
|
+
}
|
|
155
|
+
focus({ preventScroll }) {
|
|
156
|
+
return this.host.focus({ preventScroll });
|
|
157
|
+
}
|
|
158
|
+
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([
|
|
160
|
+
{
|
|
161
|
+
provide: NG_VALUE_ACCESSOR,
|
|
162
|
+
useExisting: forwardRef(() => LuzmoMenuGroup),
|
|
163
|
+
multi: true
|
|
164
|
+
}
|
|
165
|
+
]), i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoMenuGroup_Template(rf, ctx) { if (rf & 1) {
|
|
166
|
+
i0.ɵɵprojectionDef();
|
|
167
|
+
i0.ɵɵprojection(0);
|
|
168
|
+
} }, encapsulation: 2 });
|
|
169
|
+
}
|
|
170
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoMenuGroup, [{
|
|
171
|
+
type: Component,
|
|
172
|
+
args: [{
|
|
173
|
+
selector: 'luzmo-menu-group',
|
|
174
|
+
exportAs: 'luzmoMenuGroup',
|
|
175
|
+
standalone: true,
|
|
176
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
177
|
+
template: '<ng-content />',
|
|
178
|
+
providers: [
|
|
179
|
+
{
|
|
180
|
+
provide: NG_VALUE_ACCESSOR,
|
|
181
|
+
useExisting: forwardRef(() => LuzmoMenuGroup),
|
|
182
|
+
multi: true
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
}]
|
|
186
|
+
}], () => [], { size: [{
|
|
187
|
+
type: Input,
|
|
188
|
+
args: [{ alias: 'size' }]
|
|
189
|
+
}], label: [{
|
|
190
|
+
type: Input,
|
|
191
|
+
args: [{ alias: 'label' }]
|
|
192
|
+
}], ignore: [{
|
|
193
|
+
type: Input,
|
|
194
|
+
args: [{ alias: 'ignore' }]
|
|
195
|
+
}], variant: [{
|
|
196
|
+
type: Input,
|
|
197
|
+
args: [{ alias: 'variant' }]
|
|
198
|
+
}], selects: [{
|
|
199
|
+
type: Input,
|
|
200
|
+
args: [{ alias: 'selects' }]
|
|
201
|
+
}], value: [{
|
|
202
|
+
type: Input,
|
|
203
|
+
args: [{ alias: 'value' }]
|
|
204
|
+
}], valueSeparator: [{
|
|
205
|
+
type: Input,
|
|
206
|
+
args: [{ alias: 'valueSeparator' }]
|
|
207
|
+
}], selected: [{
|
|
208
|
+
type: Input,
|
|
209
|
+
args: [{ alias: 'selected' }]
|
|
210
|
+
}], selectedItems: [{
|
|
211
|
+
type: Input,
|
|
212
|
+
args: [{ alias: 'selectedItems' }]
|
|
213
|
+
}], menuSlot: [{
|
|
214
|
+
type: Input,
|
|
215
|
+
args: [{ alias: 'menuSlot' }]
|
|
216
|
+
}], focusedItemIndex: [{
|
|
217
|
+
type: Input,
|
|
218
|
+
args: [{ alias: 'focusedItemIndex' }]
|
|
219
|
+
}], focusInItemIndex: [{
|
|
220
|
+
type: Input,
|
|
221
|
+
args: [{ alias: 'focusInItemIndex' }]
|
|
222
|
+
}], handleSubmenuClosed: [{
|
|
223
|
+
type: Input,
|
|
224
|
+
args: [{ alias: 'handleSubmenuClosed' }]
|
|
225
|
+
}], handleSubmenuOpened: [{
|
|
226
|
+
type: Input,
|
|
227
|
+
args: [{ alias: 'handleSubmenuOpened' }]
|
|
228
|
+
}], changeEvent: [{ type: i0.Output, args: ["change"] }], closeEvent: [{ type: i0.Output, args: ["close"] }] }); })();
|
|
229
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoMenuGroup, { className: "LuzmoMenuGroup", filePath: "components/menu-group.ts", lineNumber: 27 }); })();
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import '@luzmo/lucero/menu';
|
|
3
|
+
import type { LuzmoMenuItem as LuzmoMenuItemHostElement } from '@luzmo/lucero/menu';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export type { MenuChildItem, MenuItemChildren } from '@luzmo/lucero/menu';
|
|
6
|
+
export declare class LuzmoMenuItem 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(): LuzmoMenuItemHostElement;
|
|
14
|
+
abortControllerSubmenu?: unknown;
|
|
15
|
+
active?: boolean;
|
|
16
|
+
focused?: boolean;
|
|
17
|
+
selected?: boolean;
|
|
18
|
+
value?: string;
|
|
19
|
+
hasSubmenu?: boolean;
|
|
20
|
+
tooltip?: string;
|
|
21
|
+
tooltipPlacement?: 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end';
|
|
22
|
+
contentSlot?: unknown;
|
|
23
|
+
iconSlot?: unknown;
|
|
24
|
+
noWrap?: boolean;
|
|
25
|
+
overlayElement?: unknown;
|
|
26
|
+
open?: boolean;
|
|
27
|
+
menuData?: unknown;
|
|
28
|
+
/** Causes the browser to treat the linked URL as a download. */
|
|
29
|
+
download?: string;
|
|
30
|
+
/** An accessible label that describes the component. It will be applied to aria-label, but not visually rendered. */
|
|
31
|
+
label?: string;
|
|
32
|
+
/** The URL that the hyperlink points to. */
|
|
33
|
+
href?: string;
|
|
34
|
+
/** Where to display the linked URL, as the name for a browsing context (a tab, window, or <iframe>). */
|
|
35
|
+
target?: '_blank' | '_parent' | '_self' | '_top';
|
|
36
|
+
/** How much of the referrer to send when following the link. */
|
|
37
|
+
referrerpolicy?: 'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url';
|
|
38
|
+
/** The relationship of the linked URL as space-separated link types. */
|
|
39
|
+
rel?: string;
|
|
40
|
+
managePresenceObservedSlot?: unknown;
|
|
41
|
+
/** Disable this control. It will not receive focus or events */
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
/** The tab index to apply to this control. See general documentation about the tabindex HTML property */
|
|
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>>;
|
|
47
|
+
/** Trick :focus-visible polyfill into thinking keyboard based focus */
|
|
48
|
+
readonly keydownEvent: import("@angular/core").OutputEmitterRef<unknown>;
|
|
49
|
+
constructor();
|
|
50
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
51
|
+
/**
|
|
52
|
+
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
53
|
+
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
54
|
+
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
55
|
+
* undefined / null by clearing their bindings.
|
|
56
|
+
*/
|
|
57
|
+
private setHostProperty;
|
|
58
|
+
private bindEvents;
|
|
59
|
+
focus(options?: FocusOptions): void;
|
|
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>;
|
|
62
|
+
}
|
|
63
|
+
/** The underlying custom element type for LuzmoMenuItem */
|
|
64
|
+
export type LuzmoMenuItemElement = LuzmoMenuItemHostElement;
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, output, Renderer2 } from '@angular/core';
|
|
2
|
+
import '@luzmo/lucero/menu';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
const _c0 = ["*"];
|
|
5
|
+
/**
|
|
6
|
+
* Angular wrapper component for <luzmo-menu-item>
|
|
7
|
+
*
|
|
8
|
+
* @slot (default) - text content to display within the Menu Item
|
|
9
|
+
* @slot description - description to be placed below the label of the Menu Item
|
|
10
|
+
* @slot icon - icon element to be placed at the start of the Menu Item
|
|
11
|
+
* @slot value - content placed at the end of the Menu Item like values, keyboard shortcuts, etc.
|
|
12
|
+
* @slot submenu - content placed in a submenu
|
|
13
|
+
*/
|
|
14
|
+
export class LuzmoMenuItem {
|
|
15
|
+
elementRef = inject(ElementRef);
|
|
16
|
+
renderer = inject(Renderer2);
|
|
17
|
+
destroyRef = inject(DestroyRef);
|
|
18
|
+
host = this.elementRef.nativeElement;
|
|
19
|
+
listenerCleanup = [];
|
|
20
|
+
/** The underlying custom element instance. Use to call imperative methods. */
|
|
21
|
+
get nativeElement() {
|
|
22
|
+
return this.host;
|
|
23
|
+
}
|
|
24
|
+
abortControllerSubmenu;
|
|
25
|
+
active;
|
|
26
|
+
focused;
|
|
27
|
+
selected;
|
|
28
|
+
value;
|
|
29
|
+
hasSubmenu;
|
|
30
|
+
tooltip;
|
|
31
|
+
tooltipPlacement;
|
|
32
|
+
contentSlot;
|
|
33
|
+
iconSlot;
|
|
34
|
+
noWrap;
|
|
35
|
+
overlayElement;
|
|
36
|
+
open;
|
|
37
|
+
menuData;
|
|
38
|
+
/** Causes the browser to treat the linked URL as a download. */
|
|
39
|
+
download;
|
|
40
|
+
/** An accessible label that describes the component. It will be applied to aria-label, but not visually rendered. */
|
|
41
|
+
label;
|
|
42
|
+
/** The URL that the hyperlink points to. */
|
|
43
|
+
href;
|
|
44
|
+
/** Where to display the linked URL, as the name for a browsing context (a tab, window, or <iframe>). */
|
|
45
|
+
target;
|
|
46
|
+
/** How much of the referrer to send when following the link. */
|
|
47
|
+
referrerpolicy;
|
|
48
|
+
/** The relationship of the linked URL as space-separated link types. */
|
|
49
|
+
rel;
|
|
50
|
+
managePresenceObservedSlot;
|
|
51
|
+
/** Disable this control. It will not receive focus or events */
|
|
52
|
+
disabled;
|
|
53
|
+
/** The tab index to apply to this control. See general documentation about the tabindex HTML property */
|
|
54
|
+
tabIndex;
|
|
55
|
+
/** announces the item has been added so a parent menu can take ownerships */
|
|
56
|
+
luzmoMenuItemAddedEvent = output({ alias: 'luzmo-menu-item-added' });
|
|
57
|
+
/** Trick :focus-visible polyfill into thinking keyboard based focus */
|
|
58
|
+
keydownEvent = output({ alias: 'keydown' });
|
|
59
|
+
constructor() {
|
|
60
|
+
this.bindEvents();
|
|
61
|
+
this.destroyRef.onDestroy(() => {
|
|
62
|
+
for (const cleanup of this.listenerCleanup) {
|
|
63
|
+
cleanup();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
ngOnChanges(changes) {
|
|
68
|
+
for (const key of Object.keys(changes)) {
|
|
69
|
+
switch (key) {
|
|
70
|
+
case 'abortControllerSubmenu':
|
|
71
|
+
this.setHostProperty('abortControllerSubmenu', changes['abortControllerSubmenu'].currentValue);
|
|
72
|
+
break;
|
|
73
|
+
case 'active':
|
|
74
|
+
this.setHostProperty('active', changes['active'].currentValue);
|
|
75
|
+
break;
|
|
76
|
+
case 'focused':
|
|
77
|
+
this.setHostProperty('focused', changes['focused'].currentValue);
|
|
78
|
+
break;
|
|
79
|
+
case 'selected':
|
|
80
|
+
this.setHostProperty('selected', changes['selected'].currentValue);
|
|
81
|
+
break;
|
|
82
|
+
case 'value':
|
|
83
|
+
this.setHostProperty('value', changes['value'].currentValue);
|
|
84
|
+
break;
|
|
85
|
+
case 'hasSubmenu':
|
|
86
|
+
this.setHostProperty('hasSubmenu', changes['hasSubmenu'].currentValue);
|
|
87
|
+
break;
|
|
88
|
+
case 'tooltip':
|
|
89
|
+
this.setHostProperty('tooltip', changes['tooltip'].currentValue);
|
|
90
|
+
break;
|
|
91
|
+
case 'tooltipPlacement':
|
|
92
|
+
this.setHostProperty('tooltipPlacement', changes['tooltipPlacement'].currentValue);
|
|
93
|
+
break;
|
|
94
|
+
case 'contentSlot':
|
|
95
|
+
this.setHostProperty('contentSlot', changes['contentSlot'].currentValue);
|
|
96
|
+
break;
|
|
97
|
+
case 'iconSlot':
|
|
98
|
+
this.setHostProperty('iconSlot', changes['iconSlot'].currentValue);
|
|
99
|
+
break;
|
|
100
|
+
case 'noWrap':
|
|
101
|
+
this.setHostProperty('noWrap', changes['noWrap'].currentValue);
|
|
102
|
+
break;
|
|
103
|
+
case 'overlayElement':
|
|
104
|
+
this.setHostProperty('overlayElement', changes['overlayElement'].currentValue);
|
|
105
|
+
break;
|
|
106
|
+
case 'open':
|
|
107
|
+
this.setHostProperty('open', changes['open'].currentValue);
|
|
108
|
+
break;
|
|
109
|
+
case 'menuData':
|
|
110
|
+
this.setHostProperty('menuData', changes['menuData'].currentValue);
|
|
111
|
+
break;
|
|
112
|
+
case 'download':
|
|
113
|
+
this.setHostProperty('download', changes['download'].currentValue);
|
|
114
|
+
break;
|
|
115
|
+
case 'label':
|
|
116
|
+
this.setHostProperty('label', changes['label'].currentValue);
|
|
117
|
+
break;
|
|
118
|
+
case 'href':
|
|
119
|
+
this.setHostProperty('href', changes['href'].currentValue);
|
|
120
|
+
break;
|
|
121
|
+
case 'target':
|
|
122
|
+
this.setHostProperty('target', changes['target'].currentValue);
|
|
123
|
+
break;
|
|
124
|
+
case 'referrerpolicy':
|
|
125
|
+
this.setHostProperty('referrerpolicy', changes['referrerpolicy'].currentValue);
|
|
126
|
+
break;
|
|
127
|
+
case 'rel':
|
|
128
|
+
this.setHostProperty('rel', changes['rel'].currentValue);
|
|
129
|
+
break;
|
|
130
|
+
case 'managePresenceObservedSlot':
|
|
131
|
+
this.setHostProperty('managePresenceObservedSlot', changes['managePresenceObservedSlot'].currentValue);
|
|
132
|
+
break;
|
|
133
|
+
case 'disabled':
|
|
134
|
+
this.setHostProperty('disabled', changes['disabled'].currentValue);
|
|
135
|
+
break;
|
|
136
|
+
case 'tabIndex':
|
|
137
|
+
this.setHostProperty('tabIndex', changes['tabIndex'].currentValue);
|
|
138
|
+
break;
|
|
139
|
+
default:
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
146
|
+
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
147
|
+
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
148
|
+
* undefined / null by clearing their bindings.
|
|
149
|
+
*/
|
|
150
|
+
setHostProperty(key, value) {
|
|
151
|
+
this.renderer.setProperty(this.host, key, value);
|
|
152
|
+
}
|
|
153
|
+
bindEvents() {
|
|
154
|
+
this.listenerCleanup.push(this.renderer.listen(this.host, 'luzmo-menu-item-added', (event) => {
|
|
155
|
+
this.luzmoMenuItemAddedEvent.emit(event);
|
|
156
|
+
}));
|
|
157
|
+
this.listenerCleanup.push(this.renderer.listen(this.host, 'keydown', (event) => {
|
|
158
|
+
this.keydownEvent.emit(event);
|
|
159
|
+
}));
|
|
160
|
+
}
|
|
161
|
+
focus(options) {
|
|
162
|
+
return this.host.focus(options);
|
|
163
|
+
}
|
|
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) {
|
|
166
|
+
i0.ɵɵprojectionDef();
|
|
167
|
+
i0.ɵɵprojection(0);
|
|
168
|
+
} }, encapsulation: 2 });
|
|
169
|
+
}
|
|
170
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LuzmoMenuItem, [{
|
|
171
|
+
type: Component,
|
|
172
|
+
args: [{
|
|
173
|
+
selector: 'luzmo-menu-item',
|
|
174
|
+
exportAs: 'luzmoMenuItem',
|
|
175
|
+
standalone: true,
|
|
176
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
177
|
+
template: '<ng-content />'
|
|
178
|
+
}]
|
|
179
|
+
}], () => [], { abortControllerSubmenu: [{
|
|
180
|
+
type: Input,
|
|
181
|
+
args: [{ alias: 'abortControllerSubmenu' }]
|
|
182
|
+
}], active: [{
|
|
183
|
+
type: Input,
|
|
184
|
+
args: [{ alias: 'active' }]
|
|
185
|
+
}], focused: [{
|
|
186
|
+
type: Input,
|
|
187
|
+
args: [{ alias: 'focused' }]
|
|
188
|
+
}], selected: [{
|
|
189
|
+
type: Input,
|
|
190
|
+
args: [{ alias: 'selected' }]
|
|
191
|
+
}], value: [{
|
|
192
|
+
type: Input,
|
|
193
|
+
args: [{ alias: 'value' }]
|
|
194
|
+
}], hasSubmenu: [{
|
|
195
|
+
type: Input,
|
|
196
|
+
args: [{ alias: 'hasSubmenu' }]
|
|
197
|
+
}], tooltip: [{
|
|
198
|
+
type: Input,
|
|
199
|
+
args: [{ alias: 'tooltip' }]
|
|
200
|
+
}], tooltipPlacement: [{
|
|
201
|
+
type: Input,
|
|
202
|
+
args: [{ alias: 'tooltipPlacement' }]
|
|
203
|
+
}], contentSlot: [{
|
|
204
|
+
type: Input,
|
|
205
|
+
args: [{ alias: 'contentSlot' }]
|
|
206
|
+
}], iconSlot: [{
|
|
207
|
+
type: Input,
|
|
208
|
+
args: [{ alias: 'iconSlot' }]
|
|
209
|
+
}], noWrap: [{
|
|
210
|
+
type: Input,
|
|
211
|
+
args: [{ alias: 'noWrap' }]
|
|
212
|
+
}], overlayElement: [{
|
|
213
|
+
type: Input,
|
|
214
|
+
args: [{ alias: 'overlayElement' }]
|
|
215
|
+
}], open: [{
|
|
216
|
+
type: Input,
|
|
217
|
+
args: [{ alias: 'open' }]
|
|
218
|
+
}], menuData: [{
|
|
219
|
+
type: Input,
|
|
220
|
+
args: [{ alias: 'menuData' }]
|
|
221
|
+
}], download: [{
|
|
222
|
+
type: Input,
|
|
223
|
+
args: [{ alias: 'download' }]
|
|
224
|
+
}], label: [{
|
|
225
|
+
type: Input,
|
|
226
|
+
args: [{ alias: 'label' }]
|
|
227
|
+
}], href: [{
|
|
228
|
+
type: Input,
|
|
229
|
+
args: [{ alias: 'href' }]
|
|
230
|
+
}], target: [{
|
|
231
|
+
type: Input,
|
|
232
|
+
args: [{ alias: 'target' }]
|
|
233
|
+
}], referrerpolicy: [{
|
|
234
|
+
type: Input,
|
|
235
|
+
args: [{ alias: 'referrerpolicy' }]
|
|
236
|
+
}], rel: [{
|
|
237
|
+
type: Input,
|
|
238
|
+
args: [{ alias: 'rel' }]
|
|
239
|
+
}], managePresenceObservedSlot: [{
|
|
240
|
+
type: Input,
|
|
241
|
+
args: [{ alias: 'managePresenceObservedSlot' }]
|
|
242
|
+
}], disabled: [{
|
|
243
|
+
type: Input,
|
|
244
|
+
args: [{ alias: 'disabled' }]
|
|
245
|
+
}], tabIndex: [{
|
|
246
|
+
type: Input,
|
|
247
|
+
args: [{ alias: 'tabIndex' }]
|
|
248
|
+
}], luzmoMenuItemAddedEvent: [{ type: i0.Output, args: ["luzmo-menu-item-added"] }], keydownEvent: [{ type: i0.Output, args: ["keydown"] }] }); })();
|
|
249
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoMenuItem, { className: "LuzmoMenuItem", filePath: "components/menu-item.ts", lineNumber: 22 }); })();
|
package/esm/components/menu.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { ControlValueAccessor } from '@angular/forms';
|
|
|
3
3
|
import '@luzmo/lucero/menu';
|
|
4
4
|
import type { LuzmoMenu as LuzmoMenuHostElement } from '@luzmo/lucero/menu';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
export type { MenuChildItem, MenuItemChildren } from '@luzmo/lucero/menu';
|
|
6
7
|
export declare class LuzmoMenu implements OnChanges, ControlValueAccessor {
|
|
7
8
|
private readonly elementRef;
|
|
8
9
|
private readonly renderer;
|
package/esm/components/menu.js
CHANGED
|
@@ -225,4 +225,4 @@ export class LuzmoMenu {
|
|
|
225
225
|
type: Input,
|
|
226
226
|
args: [{ alias: 'size' }]
|
|
227
227
|
}], changeEvent: [{ type: i0.Output, args: ["change"] }], closeEvent: [{ type: i0.Output, args: ["close"] }] }); })();
|
|
228
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoMenu, { className: "LuzmoMenu", filePath: "components/menu.ts", lineNumber:
|
|
228
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoMenu, { className: "LuzmoMenu", filePath: "components/menu.ts", lineNumber: 26 }); })();
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { OnChanges, SimpleChanges } from '@angular/core';
|
|
2
2
|
import '@luzmo/lucero/prompt-box';
|
|
3
|
-
import type { LuzmoPromptBox as LuzmoPromptBoxHostElement, PromptBoxSegment, TriggerConfig } from '@luzmo/lucero/prompt-box';
|
|
3
|
+
import type { LuzmoPromptBox as LuzmoPromptBoxHostElement, PromptBoxFileIcons, PromptBoxSegment, TriggerConfig } from '@luzmo/lucero/prompt-box';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export type { ActionValue, PromptBoxAttachment, PromptBoxElement, PromptBoxElementInsertedDetail, PromptBoxElementRemovedDetail, PromptBoxRecordErrorDetail, PromptBoxRecordingCompleteDetail, PromptBoxSegment, PromptBoxSubmitDetail, TriggerConfig, TriggerMenuChangeDetail, TriggerMenuSelectDetail, TriggerOption } from '@luzmo/lucero/prompt-box';
|
|
5
|
+
export type { ActionValue, PromptBoxAttachment, PromptBoxElement, PromptBoxElementInsertedDetail, PromptBoxElementRemovedDetail, PromptBoxFileIcons, PromptBoxRecordErrorDetail, PromptBoxRecordingCompleteDetail, PromptBoxSegment, PromptBoxSubmitDetail, TriggerConfig, TriggerMenuChangeDetail, TriggerMenuSelectDetail, TriggerOption } from '@luzmo/lucero/prompt-box';
|
|
6
6
|
export declare class LuzmoPromptBox implements OnChanges {
|
|
7
7
|
private readonly elementRef;
|
|
8
8
|
private readonly renderer;
|
|
@@ -45,6 +45,10 @@ export declare class LuzmoPromptBox implements OnChanges {
|
|
|
45
45
|
allowFiles?: boolean;
|
|
46
46
|
/** Accepted file types for attachments (MIME types or extensions). */
|
|
47
47
|
acceptedFileTypes?: string[];
|
|
48
|
+
/** Custom icons for file attachment tiles, keyed by extension without a leading dot (e.g. `pdf`, `csv`, `svg`). Merged over the built-in defaults (`DEFAULT_FILE_ICONS`); unmatched extensions fall back to the generic document icon. ```ts promptBox.fileIcons = { pdf: luzmoHeart, svg: luzmoFileImage }; ``` */
|
|
49
|
+
fileIcons?: PromptBoxFileIcons;
|
|
50
|
+
/** Formats the accessible name for attachment remove buttons. Override to localize; receives the file name. ```ts promptBox.removeAttachmentLabel = (name) => `Verwijder ${name}`; ``` */
|
|
51
|
+
removeAttachmentLabel?: unknown;
|
|
48
52
|
/** Whether to enable rich input mode with inline element badges. When enabled, the textarea is replaced with a contenteditable div. */
|
|
49
53
|
allowElements?: boolean;
|
|
50
54
|
/** Optional filter for accepted element types during drag-and-drop. */
|
|
@@ -87,7 +91,7 @@ export declare class LuzmoPromptBox implements OnChanges {
|
|
|
87
91
|
clear(): void;
|
|
88
92
|
submit(): void;
|
|
89
93
|
static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoPromptBox, never>;
|
|
90
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoPromptBox, "luzmo-prompt-box", ["luzmoPromptBox"], { "rows": { "alias": "rows"; "required": false; }; "grows": { "alias": "grows"; "required": false; }; "maxRows": { "alias": "maxRows"; "required": false; }; "recording": { "alias": "recording"; "required": false; }; "hideSubmit": { "alias": "hideSubmit"; "required": false; }; "disableSubmit": { "alias": "disableSubmit"; "required": false; }; "singleLine": { "alias": "singleLine"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "stoppable": { "alias": "stoppable"; "required": false; }; "allowImages": { "alias": "allowImages"; "required": false; }; "allowFiles": { "alias": "allowFiles"; "required": false; }; "acceptedFileTypes": { "alias": "acceptedFileTypes"; "required": false; }; "allowElements": { "alias": "allowElements"; "required": false; }; "acceptedElementTypes": { "alias": "acceptedElementTypes"; "required": false; }; "triggers": { "alias": "triggers"; "required": false; }; "segments": { "alias": "segments"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "luzmoSubmitEvent": "luzmo-submit"; "luzmoStopEvent": "luzmo-stop"; "luzmoTriggerChangeEvent": "luzmo-trigger-change"; "luzmoElementInsertedEvent": "luzmo-element-inserted"; "luzmoElementRemovedEvent": "luzmo-element-removed"; "luzmoAttachmentsChangeEvent": "luzmo-attachments-change"; "luzmoRecordEvent": "luzmo-record"; "luzmoRecordingCompleteEvent": "luzmo-recording-complete"; "luzmoRecordCancelEvent": "luzmo-record-cancel"; "luzmoRecordErrorEvent": "luzmo-record-error"; }, never, ["*"], true, never>;
|
|
94
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoPromptBox, "luzmo-prompt-box", ["luzmoPromptBox"], { "rows": { "alias": "rows"; "required": false; }; "grows": { "alias": "grows"; "required": false; }; "maxRows": { "alias": "maxRows"; "required": false; }; "recording": { "alias": "recording"; "required": false; }; "hideSubmit": { "alias": "hideSubmit"; "required": false; }; "disableSubmit": { "alias": "disableSubmit"; "required": false; }; "singleLine": { "alias": "singleLine"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "stoppable": { "alias": "stoppable"; "required": false; }; "allowImages": { "alias": "allowImages"; "required": false; }; "allowFiles": { "alias": "allowFiles"; "required": false; }; "acceptedFileTypes": { "alias": "acceptedFileTypes"; "required": false; }; "fileIcons": { "alias": "fileIcons"; "required": false; }; "removeAttachmentLabel": { "alias": "removeAttachmentLabel"; "required": false; }; "allowElements": { "alias": "allowElements"; "required": false; }; "acceptedElementTypes": { "alias": "acceptedElementTypes"; "required": false; }; "triggers": { "alias": "triggers"; "required": false; }; "segments": { "alias": "segments"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "luzmoSubmitEvent": "luzmo-submit"; "luzmoStopEvent": "luzmo-stop"; "luzmoTriggerChangeEvent": "luzmo-trigger-change"; "luzmoElementInsertedEvent": "luzmo-element-inserted"; "luzmoElementRemovedEvent": "luzmo-element-removed"; "luzmoAttachmentsChangeEvent": "luzmo-attachments-change"; "luzmoRecordEvent": "luzmo-record"; "luzmoRecordingCompleteEvent": "luzmo-recording-complete"; "luzmoRecordCancelEvent": "luzmo-record-cancel"; "luzmoRecordErrorEvent": "luzmo-record-error"; }, never, ["*"], true, never>;
|
|
91
95
|
}
|
|
92
96
|
/** The underlying custom element type for LuzmoPromptBox */
|
|
93
97
|
export type LuzmoPromptBoxElement = LuzmoPromptBoxHostElement;
|
|
@@ -55,6 +55,10 @@ export class LuzmoPromptBox {
|
|
|
55
55
|
allowFiles;
|
|
56
56
|
/** Accepted file types for attachments (MIME types or extensions). */
|
|
57
57
|
acceptedFileTypes;
|
|
58
|
+
/** Custom icons for file attachment tiles, keyed by extension without a leading dot (e.g. `pdf`, `csv`, `svg`). Merged over the built-in defaults (`DEFAULT_FILE_ICONS`); unmatched extensions fall back to the generic document icon. ```ts promptBox.fileIcons = { pdf: luzmoHeart, svg: luzmoFileImage }; ``` */
|
|
59
|
+
fileIcons;
|
|
60
|
+
/** Formats the accessible name for attachment remove buttons. Override to localize; receives the file name. ```ts promptBox.removeAttachmentLabel = (name) => `Verwijder ${name}`; ``` */
|
|
61
|
+
removeAttachmentLabel;
|
|
58
62
|
/** Whether to enable rich input mode with inline element badges. When enabled, the textarea is replaced with a contenteditable div. */
|
|
59
63
|
allowElements;
|
|
60
64
|
/** Optional filter for accepted element types during drag-and-drop. */
|
|
@@ -145,6 +149,12 @@ export class LuzmoPromptBox {
|
|
|
145
149
|
case 'acceptedFileTypes':
|
|
146
150
|
this.setHostProperty('acceptedFileTypes', changes['acceptedFileTypes'].currentValue);
|
|
147
151
|
break;
|
|
152
|
+
case 'fileIcons':
|
|
153
|
+
this.setHostProperty('fileIcons', changes['fileIcons'].currentValue);
|
|
154
|
+
break;
|
|
155
|
+
case 'removeAttachmentLabel':
|
|
156
|
+
this.setHostProperty('removeAttachmentLabel', changes['removeAttachmentLabel'].currentValue);
|
|
157
|
+
break;
|
|
148
158
|
case 'allowElements':
|
|
149
159
|
this.setHostProperty('allowElements', changes['allowElements'].currentValue);
|
|
150
160
|
break;
|
|
@@ -216,7 +226,7 @@ export class LuzmoPromptBox {
|
|
|
216
226
|
return this.host.submit();
|
|
217
227
|
}
|
|
218
228
|
static ɵfac = function LuzmoPromptBox_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoPromptBox)(); };
|
|
219
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoPromptBox, selectors: [["luzmo-prompt-box"]], inputs: { rows: "rows", grows: "grows", maxRows: "maxRows", recording: "recording", hideSubmit: "hideSubmit", disableSubmit: "disableSubmit", singleLine: "singleLine", placeholder: "placeholder", value: "value", disabled: "disabled", readonly: "readonly", maxlength: "maxlength", pending: "pending", stoppable: "stoppable", allowImages: "allowImages", allowFiles: "allowFiles", acceptedFileTypes: "acceptedFileTypes", allowElements: "allowElements", acceptedElementTypes: "acceptedElementTypes", triggers: "triggers", segments: "segments", size: "size" }, outputs: { luzmoSubmitEvent: "luzmo-submit", luzmoStopEvent: "luzmo-stop", luzmoTriggerChangeEvent: "luzmo-trigger-change", luzmoElementInsertedEvent: "luzmo-element-inserted", luzmoElementRemovedEvent: "luzmo-element-removed", luzmoAttachmentsChangeEvent: "luzmo-attachments-change", luzmoRecordEvent: "luzmo-record", luzmoRecordingCompleteEvent: "luzmo-recording-complete", luzmoRecordCancelEvent: "luzmo-record-cancel", luzmoRecordErrorEvent: "luzmo-record-error" }, exportAs: ["luzmoPromptBox"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoPromptBox_Template(rf, ctx) { if (rf & 1) {
|
|
229
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoPromptBox, selectors: [["luzmo-prompt-box"]], inputs: { rows: "rows", grows: "grows", maxRows: "maxRows", recording: "recording", hideSubmit: "hideSubmit", disableSubmit: "disableSubmit", singleLine: "singleLine", placeholder: "placeholder", value: "value", disabled: "disabled", readonly: "readonly", maxlength: "maxlength", pending: "pending", stoppable: "stoppable", allowImages: "allowImages", allowFiles: "allowFiles", acceptedFileTypes: "acceptedFileTypes", fileIcons: "fileIcons", removeAttachmentLabel: "removeAttachmentLabel", allowElements: "allowElements", acceptedElementTypes: "acceptedElementTypes", triggers: "triggers", segments: "segments", size: "size" }, outputs: { luzmoSubmitEvent: "luzmo-submit", luzmoStopEvent: "luzmo-stop", luzmoTriggerChangeEvent: "luzmo-trigger-change", luzmoElementInsertedEvent: "luzmo-element-inserted", luzmoElementRemovedEvent: "luzmo-element-removed", luzmoAttachmentsChangeEvent: "luzmo-attachments-change", luzmoRecordEvent: "luzmo-record", luzmoRecordingCompleteEvent: "luzmo-recording-complete", luzmoRecordCancelEvent: "luzmo-record-cancel", luzmoRecordErrorEvent: "luzmo-record-error" }, exportAs: ["luzmoPromptBox"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoPromptBox_Template(rf, ctx) { if (rf & 1) {
|
|
220
230
|
i0.ɵɵprojectionDef();
|
|
221
231
|
i0.ɵɵprojection(0);
|
|
222
232
|
} }, encapsulation: 2 });
|
|
@@ -281,6 +291,12 @@ export class LuzmoPromptBox {
|
|
|
281
291
|
}], acceptedFileTypes: [{
|
|
282
292
|
type: Input,
|
|
283
293
|
args: [{ alias: 'acceptedFileTypes' }]
|
|
294
|
+
}], fileIcons: [{
|
|
295
|
+
type: Input,
|
|
296
|
+
args: [{ alias: 'fileIcons' }]
|
|
297
|
+
}], removeAttachmentLabel: [{
|
|
298
|
+
type: Input,
|
|
299
|
+
args: [{ alias: 'removeAttachmentLabel' }]
|
|
284
300
|
}], allowElements: [{
|
|
285
301
|
type: Input,
|
|
286
302
|
args: [{ alias: 'allowElements' }]
|
package/esm/index.d.ts
CHANGED
|
@@ -33,6 +33,9 @@ import { LuzmoIcon } from './components/icon.js';
|
|
|
33
33
|
import { LuzmoInfieldButton } from './components/infield-button.js';
|
|
34
34
|
import { LuzmoLabel } from './components/label.js';
|
|
35
35
|
import { LuzmoMenu } from './components/menu.js';
|
|
36
|
+
import { LuzmoMenuDivider } from './components/menu-divider.js';
|
|
37
|
+
import { LuzmoMenuGroup } from './components/menu-group.js';
|
|
38
|
+
import { LuzmoMenuItem } from './components/menu-item.js';
|
|
36
39
|
import { LuzmoMultiLanguageField } from './components/multi-language-field.js';
|
|
37
40
|
import { LuzmoNumberField } from './components/number-field.js';
|
|
38
41
|
import { LuzmoOptions } from './components/options.js';
|
|
@@ -100,6 +103,9 @@ export { LuzmoIcon, type LuzmoIconElement } from './components/icon.js';
|
|
|
100
103
|
export { LuzmoInfieldButton, type LuzmoInfieldButtonElement } from './components/infield-button.js';
|
|
101
104
|
export { LuzmoLabel, type LuzmoLabelElement } from './components/label.js';
|
|
102
105
|
export { LuzmoMenu, type LuzmoMenuElement } from './components/menu.js';
|
|
106
|
+
export { LuzmoMenuDivider, type LuzmoMenuDividerElement } from './components/menu-divider.js';
|
|
107
|
+
export { LuzmoMenuGroup, type LuzmoMenuGroupElement } from './components/menu-group.js';
|
|
108
|
+
export { LuzmoMenuItem, type LuzmoMenuItemElement } from './components/menu-item.js';
|
|
103
109
|
export { LuzmoMultiLanguageField, type LuzmoMultiLanguageFieldElement } from './components/multi-language-field.js';
|
|
104
110
|
export { LuzmoNumberField, type LuzmoNumberFieldElement } from './components/number-field.js';
|
|
105
111
|
export { LuzmoOptions, type LuzmoOptionsElement } from './components/options.js';
|
|
@@ -132,6 +138,6 @@ export { LuzmoToast, type LuzmoToastElement } from './components/toast.js';
|
|
|
132
138
|
export { LuzmoTooltip, type LuzmoTooltipElement } from './components/tooltip.js';
|
|
133
139
|
export { LuzmoTopNav, type LuzmoTopNavElement } from './components/top-nav.js';
|
|
134
140
|
export { LuzmoTopNavItem, type LuzmoTopNavItemElement } from './components/top-nav-item.js';
|
|
135
|
-
export declare const LUZMO_ANGULAR_COMPONENTS: readonly [typeof LuzmoAccordion, typeof LuzmoAccordionItem, typeof LuzmoActionBar, typeof LuzmoActionButton, typeof LuzmoActionGroup, typeof LuzmoActionMenu, typeof LuzmoAvatar, typeof LuzmoBadge, typeof LuzmoButton, typeof LuzmoButtonGroup, typeof LuzmoCalendar, typeof LuzmoChatMessage, typeof LuzmoChatMessageGroup, typeof LuzmoCheckbox, typeof LuzmoClearButton, typeof LuzmoCloseButton, typeof LuzmoColorArea, typeof LuzmoColorField, typeof LuzmoColorHandle, typeof LuzmoColorLoupe, typeof LuzmoColorMenu, typeof LuzmoColorPalette, typeof LuzmoColorPaletteGroup, typeof LuzmoColorPicker, typeof LuzmoColorSlider, typeof LuzmoDateRangePicker, typeof LuzmoDateTimePicker, typeof LuzmoDivider, typeof LuzmoFieldGroup, typeof LuzmoFieldLabel, typeof LuzmoHelpText, typeof LuzmoIcon, typeof LuzmoInfieldButton, typeof LuzmoLabel, typeof LuzmoMenu, typeof LuzmoMultiLanguageField, typeof LuzmoNumberField, typeof LuzmoOptions, typeof LuzmoOverlay, typeof LuzmoPicker, typeof LuzmoPickerButton, typeof LuzmoPopover, typeof LuzmoProgressBar, typeof LuzmoProgressCircle, typeof LuzmoProgressSteps, typeof LuzmoPromptBox, typeof LuzmoRadio, typeof LuzmoRadioGroup, typeof LuzmoSearch, typeof LuzmoSelect, typeof LuzmoSkeletonLoader, typeof LuzmoSlider, typeof LuzmoStatusLight, typeof LuzmoSwatch, typeof LuzmoSwatchGroup, typeof LuzmoSwitch, typeof LuzmoTab, typeof LuzmoTabPanel, typeof LuzmoTabs, typeof LuzmoTabsOverflow, typeof LuzmoTag, typeof LuzmoTags, typeof LuzmoTextField, typeof LuzmoToast, typeof LuzmoTooltip, typeof LuzmoTopNav, typeof LuzmoTopNavItem];
|
|
136
|
-
export declare const LUZMO_ANGULAR_COMPONENT_NAMES: readonly ["LuzmoAccordion", "LuzmoAccordionItem", "LuzmoActionBar", "LuzmoActionButton", "LuzmoActionGroup", "LuzmoActionMenu", "LuzmoAvatar", "LuzmoBadge", "LuzmoButton", "LuzmoButtonGroup", "LuzmoCalendar", "LuzmoChatMessage", "LuzmoChatMessageGroup", "LuzmoCheckbox", "LuzmoClearButton", "LuzmoCloseButton", "LuzmoColorArea", "LuzmoColorField", "LuzmoColorHandle", "LuzmoColorLoupe", "LuzmoColorMenu", "LuzmoColorPalette", "LuzmoColorPaletteGroup", "LuzmoColorPicker", "LuzmoColorSlider", "LuzmoDateRangePicker", "LuzmoDateTimePicker", "LuzmoDivider", "LuzmoFieldGroup", "LuzmoFieldLabel", "LuzmoHelpText", "LuzmoIcon", "LuzmoInfieldButton", "LuzmoLabel", "LuzmoMenu", "LuzmoMultiLanguageField", "LuzmoNumberField", "LuzmoOptions", "LuzmoOverlay", "LuzmoPicker", "LuzmoPickerButton", "LuzmoPopover", "LuzmoProgressBar", "LuzmoProgressCircle", "LuzmoProgressSteps", "LuzmoPromptBox", "LuzmoRadio", "LuzmoRadioGroup", "LuzmoSearch", "LuzmoSelect", "LuzmoSkeletonLoader", "LuzmoSlider", "LuzmoStatusLight", "LuzmoSwatch", "LuzmoSwatchGroup", "LuzmoSwitch", "LuzmoTab", "LuzmoTabPanel", "LuzmoTabs", "LuzmoTabsOverflow", "LuzmoTag", "LuzmoTags", "LuzmoTextField", "LuzmoToast", "LuzmoTooltip", "LuzmoTopNav", "LuzmoTopNavItem"];
|
|
141
|
+
export declare const LUZMO_ANGULAR_COMPONENTS: readonly [typeof LuzmoAccordion, typeof LuzmoAccordionItem, typeof LuzmoActionBar, typeof LuzmoActionButton, typeof LuzmoActionGroup, typeof LuzmoActionMenu, typeof LuzmoAvatar, typeof LuzmoBadge, typeof LuzmoButton, typeof LuzmoButtonGroup, typeof LuzmoCalendar, typeof LuzmoChatMessage, typeof LuzmoChatMessageGroup, typeof LuzmoCheckbox, typeof LuzmoClearButton, typeof LuzmoCloseButton, typeof LuzmoColorArea, typeof LuzmoColorField, typeof LuzmoColorHandle, typeof LuzmoColorLoupe, typeof LuzmoColorMenu, typeof LuzmoColorPalette, typeof LuzmoColorPaletteGroup, typeof LuzmoColorPicker, typeof LuzmoColorSlider, typeof LuzmoDateRangePicker, typeof LuzmoDateTimePicker, typeof LuzmoDivider, typeof LuzmoFieldGroup, typeof LuzmoFieldLabel, typeof LuzmoHelpText, typeof LuzmoIcon, typeof LuzmoInfieldButton, typeof LuzmoLabel, typeof LuzmoMenu, typeof LuzmoMenuDivider, typeof LuzmoMenuGroup, typeof LuzmoMenuItem, typeof LuzmoMultiLanguageField, typeof LuzmoNumberField, typeof LuzmoOptions, typeof LuzmoOverlay, typeof LuzmoPicker, typeof LuzmoPickerButton, typeof LuzmoPopover, typeof LuzmoProgressBar, typeof LuzmoProgressCircle, typeof LuzmoProgressSteps, typeof LuzmoPromptBox, typeof LuzmoRadio, typeof LuzmoRadioGroup, typeof LuzmoSearch, typeof LuzmoSelect, typeof LuzmoSkeletonLoader, typeof LuzmoSlider, typeof LuzmoStatusLight, typeof LuzmoSwatch, typeof LuzmoSwatchGroup, typeof LuzmoSwitch, typeof LuzmoTab, typeof LuzmoTabPanel, typeof LuzmoTabs, typeof LuzmoTabsOverflow, typeof LuzmoTag, typeof LuzmoTags, typeof LuzmoTextField, typeof LuzmoToast, typeof LuzmoTooltip, typeof LuzmoTopNav, typeof LuzmoTopNavItem];
|
|
142
|
+
export declare const LUZMO_ANGULAR_COMPONENT_NAMES: readonly ["LuzmoAccordion", "LuzmoAccordionItem", "LuzmoActionBar", "LuzmoActionButton", "LuzmoActionGroup", "LuzmoActionMenu", "LuzmoAvatar", "LuzmoBadge", "LuzmoButton", "LuzmoButtonGroup", "LuzmoCalendar", "LuzmoChatMessage", "LuzmoChatMessageGroup", "LuzmoCheckbox", "LuzmoClearButton", "LuzmoCloseButton", "LuzmoColorArea", "LuzmoColorField", "LuzmoColorHandle", "LuzmoColorLoupe", "LuzmoColorMenu", "LuzmoColorPalette", "LuzmoColorPaletteGroup", "LuzmoColorPicker", "LuzmoColorSlider", "LuzmoDateRangePicker", "LuzmoDateTimePicker", "LuzmoDivider", "LuzmoFieldGroup", "LuzmoFieldLabel", "LuzmoHelpText", "LuzmoIcon", "LuzmoInfieldButton", "LuzmoLabel", "LuzmoMenu", "LuzmoMenuDivider", "LuzmoMenuGroup", "LuzmoMenuItem", "LuzmoMultiLanguageField", "LuzmoNumberField", "LuzmoOptions", "LuzmoOverlay", "LuzmoPicker", "LuzmoPickerButton", "LuzmoPopover", "LuzmoProgressBar", "LuzmoProgressCircle", "LuzmoProgressSteps", "LuzmoPromptBox", "LuzmoRadio", "LuzmoRadioGroup", "LuzmoSearch", "LuzmoSelect", "LuzmoSkeletonLoader", "LuzmoSlider", "LuzmoStatusLight", "LuzmoSwatch", "LuzmoSwatchGroup", "LuzmoSwitch", "LuzmoTab", "LuzmoTabPanel", "LuzmoTabs", "LuzmoTabsOverflow", "LuzmoTag", "LuzmoTags", "LuzmoTextField", "LuzmoToast", "LuzmoTooltip", "LuzmoTopNav", "LuzmoTopNavItem"];
|
|
137
143
|
export type LuzmoAngularComponentName = (typeof LUZMO_ANGULAR_COMPONENT_NAMES)[number];
|
package/esm/index.js
CHANGED
|
@@ -34,6 +34,9 @@ import { LuzmoIcon } from './components/icon.js';
|
|
|
34
34
|
import { LuzmoInfieldButton } from './components/infield-button.js';
|
|
35
35
|
import { LuzmoLabel } from './components/label.js';
|
|
36
36
|
import { LuzmoMenu } from './components/menu.js';
|
|
37
|
+
import { LuzmoMenuDivider } from './components/menu-divider.js';
|
|
38
|
+
import { LuzmoMenuGroup } from './components/menu-group.js';
|
|
39
|
+
import { LuzmoMenuItem } from './components/menu-item.js';
|
|
37
40
|
import { LuzmoMultiLanguageField } from './components/multi-language-field.js';
|
|
38
41
|
import { LuzmoNumberField } from './components/number-field.js';
|
|
39
42
|
import { LuzmoOptions } from './components/options.js';
|
|
@@ -101,6 +104,9 @@ export { LuzmoIcon } from './components/icon.js';
|
|
|
101
104
|
export { LuzmoInfieldButton } from './components/infield-button.js';
|
|
102
105
|
export { LuzmoLabel } from './components/label.js';
|
|
103
106
|
export { LuzmoMenu } from './components/menu.js';
|
|
107
|
+
export { LuzmoMenuDivider } from './components/menu-divider.js';
|
|
108
|
+
export { LuzmoMenuGroup } from './components/menu-group.js';
|
|
109
|
+
export { LuzmoMenuItem } from './components/menu-item.js';
|
|
104
110
|
export { LuzmoMultiLanguageField } from './components/multi-language-field.js';
|
|
105
111
|
export { LuzmoNumberField } from './components/number-field.js';
|
|
106
112
|
export { LuzmoOptions } from './components/options.js';
|
|
@@ -169,6 +175,9 @@ export const LUZMO_ANGULAR_COMPONENTS = [
|
|
|
169
175
|
LuzmoInfieldButton,
|
|
170
176
|
LuzmoLabel,
|
|
171
177
|
LuzmoMenu,
|
|
178
|
+
LuzmoMenuDivider,
|
|
179
|
+
LuzmoMenuGroup,
|
|
180
|
+
LuzmoMenuItem,
|
|
172
181
|
LuzmoMultiLanguageField,
|
|
173
182
|
LuzmoNumberField,
|
|
174
183
|
LuzmoOptions,
|
|
@@ -238,6 +247,9 @@ export const LUZMO_ANGULAR_COMPONENT_NAMES = [
|
|
|
238
247
|
'LuzmoInfieldButton',
|
|
239
248
|
'LuzmoLabel',
|
|
240
249
|
'LuzmoMenu',
|
|
250
|
+
'LuzmoMenuDivider',
|
|
251
|
+
'LuzmoMenuGroup',
|
|
252
|
+
'LuzmoMenuItem',
|
|
241
253
|
'LuzmoMultiLanguageField',
|
|
242
254
|
'LuzmoNumberField',
|
|
243
255
|
'LuzmoOptions',
|
package/package.json
CHANGED
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"@angular/core": "^17.3.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0",
|
|
31
31
|
"@angular/forms": "^17.3.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0",
|
|
32
|
-
"@luzmo/lucero": "1.0.3-alpha.
|
|
32
|
+
"@luzmo/lucero": "1.0.3-alpha.9"
|
|
33
33
|
},
|
|
34
|
-
"version": "1.0.3-alpha.
|
|
34
|
+
"version": "1.0.3-alpha.9",
|
|
35
35
|
"peerDependenciesMeta": {
|
|
36
36
|
"@angular/forms": {
|
|
37
37
|
"optional": true
|