@egose/shadcn-theme-ng 0.0.25 → 0.0.27

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 (100) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +107 -2
  3. package/alert/fesm2022/alert.mjs +19 -19
  4. package/alert/fesm2022/alert.mjs.map +1 -1
  5. package/badge/fesm2022/badge.mjs +4 -4
  6. package/badge/fesm2022/badge.mjs.map +1 -1
  7. package/basic-alert/fesm2022/basic-alert.mjs +4 -4
  8. package/basic-alert/fesm2022/basic-alert.mjs.map +1 -1
  9. package/button/fesm2022/button.mjs +8 -8
  10. package/button/fesm2022/button.mjs.map +1 -1
  11. package/calendar/fesm2022/calendar.mjs +16 -16
  12. package/calendar/fesm2022/calendar.mjs.map +1 -1
  13. package/date-picker/fesm2022/date-picker.mjs +19 -19
  14. package/date-picker/fesm2022/date-picker.mjs.map +1 -1
  15. package/form-date-picker/fesm2022/form-date-picker.mjs +4 -4
  16. package/form-date-picker/fesm2022/form-date-picker.mjs.map +1 -1
  17. package/form-field/fesm2022/form-field.mjs +16 -16
  18. package/form-field/fesm2022/form-field.mjs.map +1 -1
  19. package/form-field-simple/fesm2022/form-field-simple.mjs +4 -4
  20. package/form-field-simple/fesm2022/form-field-simple.mjs.map +1 -1
  21. package/form-select/fesm2022/form-select.mjs +5 -5
  22. package/form-select/fesm2022/form-select.mjs.map +1 -1
  23. package/form-text-input/fesm2022/form-text-input.mjs +8 -8
  24. package/form-text-input/fesm2022/form-text-input.mjs.map +1 -1
  25. package/form-textarea/fesm2022/form-textarea.mjs +4 -4
  26. package/form-textarea/fesm2022/form-textarea.mjs.map +1 -1
  27. package/icon/fesm2022/icon.mjs +8 -8
  28. package/icon/fesm2022/icon.mjs.map +1 -1
  29. package/input/fesm2022/input.mjs +8 -8
  30. package/input/fesm2022/input.mjs.map +1 -1
  31. package/label/fesm2022/label.mjs +8 -8
  32. package/label/fesm2022/label.mjs.map +1 -1
  33. package/package.json +7 -57
  34. package/popover/fesm2022/popover.mjs +12 -12
  35. package/popover/fesm2022/popover.mjs.map +1 -1
  36. package/select/fesm2022/select.mjs +40 -40
  37. package/select/fesm2022/select.mjs.map +1 -1
  38. package/separator/fesm2022/separator.mjs +8 -8
  39. package/separator/fesm2022/separator.mjs.map +1 -1
  40. package/sheet/fesm2022/sheet.mjs +36 -37
  41. package/sheet/fesm2022/sheet.mjs.map +1 -1
  42. package/sonner/fesm2022/sonner.mjs +8 -8
  43. package/sonner/fesm2022/sonner.mjs.map +1 -1
  44. package/spinner/fesm2022/spinner.mjs +8 -8
  45. package/spinner/fesm2022/spinner.mjs.map +1 -1
  46. package/switch/fesm2022/switch.mjs +12 -12
  47. package/switch/fesm2022/switch.mjs.map +1 -1
  48. package/accordion/README.md +0 -64
  49. package/accordion/fesm2022/accordion.mjs +0 -155
  50. package/accordion/fesm2022/accordion.mjs.map +0 -1
  51. package/accordion/index.d.ts +0 -49
  52. package/autocomplete/README.md +0 -64
  53. package/autocomplete/fesm2022/autocomplete.mjs +0 -543
  54. package/autocomplete/fesm2022/autocomplete.mjs.map +0 -1
  55. package/autocomplete/index.d.ts +0 -162
  56. package/checkbox/README.md +0 -64
  57. package/checkbox/fesm2022/checkbox.mjs +0 -146
  58. package/checkbox/fesm2022/checkbox.mjs.map +0 -1
  59. package/checkbox/index.d.ts +0 -55
  60. package/confirmation-dialog/README.md +0 -64
  61. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +0 -93
  62. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +0 -1
  63. package/confirmation-dialog/index.d.ts +0 -24
  64. package/dialog/README.md +0 -64
  65. package/dialog/fesm2022/dialog.mjs +0 -278
  66. package/dialog/fesm2022/dialog.mjs.map +0 -1
  67. package/dialog/index.d.ts +0 -89
  68. package/exports.json +0 -1
  69. package/form-checkbox/README.md +0 -64
  70. package/form-checkbox/fesm2022/form-checkbox.mjs +0 -137
  71. package/form-checkbox/fesm2022/form-checkbox.mjs.map +0 -1
  72. package/form-checkbox/index.d.ts +0 -27
  73. package/form-searchable-multiselect/README.md +0 -64
  74. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +0 -139
  75. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +0 -1
  76. package/form-searchable-multiselect/index.d.ts +0 -30
  77. package/layout-simple/README.md +0 -64
  78. package/layout-simple/fesm2022/layout-simple.mjs +0 -591
  79. package/layout-simple/fesm2022/layout-simple.mjs.map +0 -1
  80. package/layout-simple/index.d.ts +0 -140
  81. package/menu/README.md +0 -64
  82. package/menu/fesm2022/menu.mjs +0 -449
  83. package/menu/fesm2022/menu.mjs.map +0 -1
  84. package/menu/index.d.ts +0 -137
  85. package/radio-group/README.md +0 -64
  86. package/radio-group/fesm2022/radio-group.mjs +0 -170
  87. package/radio-group/fesm2022/radio-group.mjs.map +0 -1
  88. package/radio-group/index.d.ts +0 -63
  89. package/searchable-multiselect/README.md +0 -64
  90. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +0 -221
  91. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +0 -1
  92. package/searchable-multiselect/index.d.ts +0 -50
  93. package/tabs/README.md +0 -64
  94. package/tabs/fesm2022/tabs.mjs +0 -258
  95. package/tabs/fesm2022/tabs.mjs.map +0 -1
  96. package/tabs/index.d.ts +0 -71
  97. package/tooltip/README.md +0 -64
  98. package/tooltip/fesm2022/tooltip.mjs +0 -93
  99. package/tooltip/fesm2022/tooltip.mjs.map +0 -1
  100. package/tooltip/index.d.ts +0 -21
@@ -1,591 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { input, Component, viewChild, output, inject, signal, resource, ChangeDetectionStrategy, effect, computed } from '@angular/core';
3
- import { RouterLink, RouterModule } from '@angular/router';
4
- import * as i1$2 from '@angular/cdk/layout';
5
- import { Breakpoints } from '@angular/cdk/layout';
6
- import { NgIcon, provideIcons } from '@ng-icons/core';
7
- import { lucideUser, lucideMenu } from '@ng-icons/lucide';
8
- import { hlm } from '@egose/shadcn-theme-ng/utils';
9
- import * as i4 from '@egose/shadcn-theme-ng/button';
10
- import { HlmButton, HlmButtonImports } from '@egose/shadcn-theme-ng/button';
11
- import { HlmMenu, HlmMenuItem, HlmMenuLabel, HlmMenuSeparator, HlmMenuGroup } from '@egose/shadcn-theme-ng/menu';
12
- import { BrnMenuTrigger } from '@spartan-ng/brain/menu';
13
- import * as i2 from '@angular/forms';
14
- import { FormBuilder, Validators, ReactiveFormsModule } from '@angular/forms';
15
- import * as i1 from '@egose/shadcn-theme-ng/autocomplete';
16
- import { provideHlmAutocompleteConfig, HlmAutocompleteImports } from '@egose/shadcn-theme-ng/autocomplete';
17
- import { HlmSpinner } from '@egose/shadcn-theme-ng/spinner';
18
- import * as i1$1 from '@angular/common';
19
- import { CommonModule } from '@angular/common';
20
- import * as i2$1 from '@spartan-ng/brain/sheet';
21
- import { BrnSheet, BrnSheetImports } from '@spartan-ng/brain/sheet';
22
- import { HlmLabelImports } from '@egose/shadcn-theme-ng/label';
23
- import * as i3 from '@egose/shadcn-theme-ng/sheet';
24
- import { HlmSheetImports } from '@egose/shadcn-theme-ng/sheet';
25
-
26
- class EgLayoutSimpleUserMenu {
27
- menus = input([], ...(ngDevMode ? [{ debugName: "menus" }] : []));
28
- hlm = hlm;
29
- lucideUser = lucideUser;
30
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgLayoutSimpleUserMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.1", type: EgLayoutSimpleUserMenu, isStandalone: true, selector: "eg-layout-simple-user-menu", inputs: { menus: { classPropertyName: "menus", publicName: "menus", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
32
- provideIcons({
33
- lucideUser,
34
- }),
35
- ], ngImport: i0, template: `
36
- <ng-template #iconTemplate>
37
- <ng-icon [svg]="lucideUser" size="1.5rem" class="[&_svg]:w-[inherit]! [&_svg]:h-[inherit]!" />
38
- </ng-template>
39
-
40
- <div class="flex w-full items-center justify-center pt-[20%]">
41
- <button
42
- hlmButton
43
- variant="primary"
44
- size="icon"
45
- align="end"
46
- [brnMenuTriggerFor]="menu"
47
- [icon]="iconTemplate"
48
- class="rounded-full border border-gray-400"
49
- ></button>
50
- </div>
51
-
52
- <ng-template #menu>
53
- <hlm-menu class="w-56">
54
- @for (section of menus(); track section) {
55
- @if (section.label) {
56
- <hlm-menu-label>{{ section.label }}</hlm-menu-label>
57
- }
58
- @if (section.items?.length) {
59
- <hlm-menu-group>
60
- @for (item of section.items; track item) {
61
- @if (item.link) {
62
- <a
63
- hlmMenuItem
64
- [routerLink]="item.link"
65
- [class]="hlm('cursor-pointer no-underline', item.class)"
66
- >
67
- @if (item.icon) {
68
- <ng-icon
69
- [svg]="item.icon"
70
- size="1rem"
71
- [class]="
72
- hlm('[_svg]:text-[inherit]! [_svg]:bg-[inherit]! cursor-pointer mr-2', item.class)
73
- "
74
- />
75
- }
76
- <span>{{ item.label }}</span>
77
- </a>
78
- } @else {
79
- <button
80
- hlmMenuItem
81
- (click)="item.action?.()"
82
- [class]="hlm('cursor-pointer no-underline', item.class)"
83
- >
84
- @if (item.icon) {
85
- <ng-icon
86
- [svg]="item.icon"
87
- size="1rem"
88
- [class]="
89
- hlm('[_svg]:text-[inherit]! [_svg]:bg-[inherit]! cursor-pointer mr-2', item.class)
90
- "
91
- />
92
- }
93
- <span>{{ item.label }}</span>
94
- </button>
95
- }
96
- }
97
- </hlm-menu-group>
98
- }
99
- @if (section.separator) {
100
- <hlm-menu-separator />
101
- }
102
- }
103
- </hlm-menu>
104
- </ng-template>
105
- `, isInline: true, dependencies: [{ kind: "directive", type: BrnMenuTrigger, selector: "[brnMenuTriggerFor]", inputs: ["align"] }, { kind: "component", type: HlmMenu, selector: "hlm-menu", inputs: ["class", "variant"] }, { kind: "directive", type: HlmMenuItem, selector: "[hlmMenuItem]", inputs: ["variant", "inset", "class"] }, { kind: "component", type: HlmMenuLabel, selector: "hlm-menu-label", inputs: ["inset", "class"] }, { kind: "component", type: HlmMenuSeparator, selector: "hlm-menu-separator", inputs: ["class"] }, { kind: "component", type: HlmMenuGroup, selector: "hlm-menu-group" }, { kind: "component", type: HlmButton, selector: "button[hlmButton], a[hlmButton]", inputs: ["variant", "size", "appearance", "loading", "icon", "iconPosition", "class", "spinnerUserClass", "disabled", "type"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
106
- }
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgLayoutSimpleUserMenu, decorators: [{
108
- type: Component,
109
- args: [{
110
- selector: 'eg-layout-simple-user-menu',
111
- imports: [
112
- BrnMenuTrigger,
113
- HlmMenu,
114
- HlmMenuItem,
115
- HlmMenuLabel,
116
- HlmMenuSeparator,
117
- HlmMenuGroup,
118
- HlmButton,
119
- NgIcon,
120
- RouterLink,
121
- ],
122
- providers: [
123
- provideIcons({
124
- lucideUser,
125
- }),
126
- ],
127
- template: `
128
- <ng-template #iconTemplate>
129
- <ng-icon [svg]="lucideUser" size="1.5rem" class="[&_svg]:w-[inherit]! [&_svg]:h-[inherit]!" />
130
- </ng-template>
131
-
132
- <div class="flex w-full items-center justify-center pt-[20%]">
133
- <button
134
- hlmButton
135
- variant="primary"
136
- size="icon"
137
- align="end"
138
- [brnMenuTriggerFor]="menu"
139
- [icon]="iconTemplate"
140
- class="rounded-full border border-gray-400"
141
- ></button>
142
- </div>
143
-
144
- <ng-template #menu>
145
- <hlm-menu class="w-56">
146
- @for (section of menus(); track section) {
147
- @if (section.label) {
148
- <hlm-menu-label>{{ section.label }}</hlm-menu-label>
149
- }
150
- @if (section.items?.length) {
151
- <hlm-menu-group>
152
- @for (item of section.items; track item) {
153
- @if (item.link) {
154
- <a
155
- hlmMenuItem
156
- [routerLink]="item.link"
157
- [class]="hlm('cursor-pointer no-underline', item.class)"
158
- >
159
- @if (item.icon) {
160
- <ng-icon
161
- [svg]="item.icon"
162
- size="1rem"
163
- [class]="
164
- hlm('[_svg]:text-[inherit]! [_svg]:bg-[inherit]! cursor-pointer mr-2', item.class)
165
- "
166
- />
167
- }
168
- <span>{{ item.label }}</span>
169
- </a>
170
- } @else {
171
- <button
172
- hlmMenuItem
173
- (click)="item.action?.()"
174
- [class]="hlm('cursor-pointer no-underline', item.class)"
175
- >
176
- @if (item.icon) {
177
- <ng-icon
178
- [svg]="item.icon"
179
- size="1rem"
180
- [class]="
181
- hlm('[_svg]:text-[inherit]! [_svg]:bg-[inherit]! cursor-pointer mr-2', item.class)
182
- "
183
- />
184
- }
185
- <span>{{ item.label }}</span>
186
- </button>
187
- }
188
- }
189
- </hlm-menu-group>
190
- }
191
- @if (section.separator) {
192
- <hlm-menu-separator />
193
- }
194
- }
195
- </hlm-menu>
196
- </ng-template>
197
- `,
198
- }]
199
- }] });
200
-
201
- const transformValueToSearchMap = {};
202
- class EgGenericAutocomplete {
203
- defaultOptionTemplate = viewChild('defaultOption', ...(ngDevMode ? [{ debugName: "defaultOptionTemplate" }] : []));
204
- controlId = input(crypto.randomUUID(), ...(ngDevMode ? [{ debugName: "controlId" }] : []));
205
- placeholderText = input('Select an option', ...(ngDevMode ? [{ debugName: "placeholderText" }] : []));
206
- emptyText = input('No options found', ...(ngDevMode ? [{ debugName: "emptyText" }] : []));
207
- optionTemplate = input(this.defaultOptionTemplate, ...(ngDevMode ? [{ debugName: "optionTemplate" }] : []));
208
- loaderFn = input(async () => [], ...(ngDevMode ? [{ debugName: "loaderFn" }] : []));
209
- transformValueToSearch = input((value) => String(value), ...(ngDevMode ? [{ debugName: "transformValueToSearch" }] : []));
210
- optionChange = output();
211
- _formBuilder = inject(FormBuilder);
212
- form = this._formBuilder.group({
213
- option: [null, Validators.required],
214
- });
215
- search = signal('', ...(ngDevMode ? [{ debugName: "search" }] : []));
216
- options = resource({
217
- defaultValue: [],
218
- params: () => ({ search: this.search(), negajjang: '1111' }),
219
- loader: async ({ params }) => {
220
- const fn = this.loaderFn();
221
- if (!fn) {
222
- return [];
223
- }
224
- return fn(params);
225
- },
226
- });
227
- ngOnInit() {
228
- transformValueToSearchMap[this.controlId()] = this.transformValueToSearch();
229
- this.form.controls['option'].valueChanges.subscribe((value) => {
230
- if (value !== null) {
231
- this.optionChange.emit(value);
232
- }
233
- });
234
- }
235
- ngOnDestroy() {
236
- delete transformValueToSearchMap[this.controlId()];
237
- }
238
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgGenericAutocomplete, deps: [], target: i0.ɵɵFactoryTarget.Component });
239
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.1", type: EgGenericAutocomplete, isStandalone: true, selector: "eg-generic-autocomplete", inputs: { controlId: { classPropertyName: "controlId", publicName: "controlId", isSignal: true, isRequired: false, transformFunction: null }, placeholderText: { classPropertyName: "placeholderText", publicName: "placeholderText", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, loaderFn: { classPropertyName: "loaderFn", publicName: "loaderFn", isSignal: true, isRequired: false, transformFunction: null }, transformValueToSearch: { classPropertyName: "transformValueToSearch", publicName: "transformValueToSearch", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { optionChange: "optionChange" }, viewQueries: [{ propertyName: "defaultOptionTemplate", first: true, predicate: ["defaultOption"], descendants: true, isSignal: true }], ngImport: i0, template: `
240
- <form [formGroup]="form" class="space-y-8">
241
- <hlm-autocomplete
242
- [inputId]="controlId()"
243
- [filteredOptions]="options.value()"
244
- [optionTemplate]="optionTemplate()"
245
- [loading]="options.isLoading()"
246
- [(search)]="search"
247
- [searchPlaceholderText]="placeholderText()"
248
- [emptyText]="emptyText()"
249
- formControlName="option"
250
- class="bg-white"
251
- >
252
- <hlm-spinner loading />
253
- </hlm-autocomplete>
254
- </form>
255
- <ng-template #defaultOption let-option>
256
- {{ option }}
257
- </ng-template>
258
- `, isInline: true, dependencies: [{ kind: "component", type: HlmSpinner, selector: "hlm-spinner", inputs: ["size", "show", "class", "spinnerClass"] }, { kind: "component", type: i1.HlmAutocomplete, selector: "hlm-autocomplete", inputs: ["onSelect", "class", "autocompleteListClass", "autocompleteEmptyClass", "filteredOptions", "value", "search", "transformValueToSearch", "optionTemplate", "loading", "searchPlaceholderText", "loadingText", "emptyText", "ariaLabelToggleButton", "inputId", "disabled"], outputs: ["valueChange", "searchChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], viewProviders: [
259
- provideHlmAutocompleteConfig({
260
- transformValueToSearch: (params, inputId) => {
261
- const fn = transformValueToSearchMap[inputId];
262
- return fn(params);
263
- },
264
- }),
265
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
266
- }
267
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgGenericAutocomplete, decorators: [{
268
- type: Component,
269
- args: [{
270
- selector: 'eg-generic-autocomplete',
271
- imports: [HlmSpinner, HlmAutocompleteImports, ReactiveFormsModule],
272
- template: `
273
- <form [formGroup]="form" class="space-y-8">
274
- <hlm-autocomplete
275
- [inputId]="controlId()"
276
- [filteredOptions]="options.value()"
277
- [optionTemplate]="optionTemplate()"
278
- [loading]="options.isLoading()"
279
- [(search)]="search"
280
- [searchPlaceholderText]="placeholderText()"
281
- [emptyText]="emptyText()"
282
- formControlName="option"
283
- class="bg-white"
284
- >
285
- <hlm-spinner loading />
286
- </hlm-autocomplete>
287
- </form>
288
- <ng-template #defaultOption let-option>
289
- {{ option }}
290
- </ng-template>
291
- `,
292
- changeDetection: ChangeDetectionStrategy.OnPush,
293
- viewProviders: [
294
- provideHlmAutocompleteConfig({
295
- transformValueToSearch: (params, inputId) => {
296
- const fn = transformValueToSearchMap[inputId];
297
- return fn(params);
298
- },
299
- }),
300
- ],
301
- }]
302
- }] });
303
-
304
- class EgLayoutSimpleSidebar {
305
- viewchildSheetRef = viewChild(BrnSheet, ...(ngDevMode ? [{ debugName: "viewchildSheetRef" }] : []));
306
- side = input('left', ...(ngDevMode ? [{ debugName: "side" }] : []));
307
- title = input('', ...(ngDevMode ? [{ debugName: "title" }] : []));
308
- content = input(...(ngDevMode ? [undefined, { debugName: "content" }] : []));
309
- contentContext = input(...(ngDevMode ? [undefined, { debugName: "contentContext" }] : []));
310
- constructor() {
311
- effect(() => { });
312
- }
313
- openSheet() {
314
- this.viewchildSheetRef()?.open();
315
- }
316
- closeSheet() {
317
- this.viewchildSheetRef()?.close();
318
- }
319
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgLayoutSimpleSidebar, deps: [], target: i0.ɵɵFactoryTarget.Component });
320
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.1", type: EgLayoutSimpleSidebar, isStandalone: true, selector: "eg-layout-simple-sidebar", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, contentContext: { classPropertyName: "contentContext", publicName: "contentContext", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "viewchildSheetRef", first: true, predicate: BrnSheet, descendants: true, isSignal: true }], ngImport: i0, template: `
321
- @let _title = title();
322
- @let _content = content();
323
-
324
- <hlm-sheet [side]="side() ?? 'left'">
325
- <hlm-sheet-content *brnSheetContent="let ctx" class="gap-0">
326
- @if (_title) {
327
- <hlm-sheet-header>
328
- <h3 hlmSheetTitle>{{ _title }}</h3>
329
- </hlm-sheet-header>
330
- }
331
-
332
- @if (_content) {
333
- <ng-container *ngTemplateOutlet="_content; context: contentContext()"></ng-container>
334
- }
335
-
336
- <hlm-sheet-footer>
337
- <button brnSheetClose hlmButton variant="secondary" appearance="outline-filled">Close</button>
338
- </hlm-sheet-footer>
339
- </hlm-sheet-content>
340
- </hlm-sheet>
341
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$1.BrnSheetClose, selector: "button[brnSheetClose]" }, { kind: "directive", type: i2$1.BrnSheetContent, selector: "[brnSheetContent]" }, { kind: "component", type: i3.HlmSheet, selector: "hlm-sheet", exportAs: ["hlmSheet"] }, { kind: "component", type: i3.HlmSheetContent, selector: "hlm-sheet-content", inputs: ["class"] }, { kind: "component", type: i3.HlmSheetFooter, selector: "hlm-sheet-footer", inputs: ["class"] }, { kind: "component", type: i3.HlmSheetHeader, selector: "hlm-sheet-header", inputs: ["class"] }, { kind: "directive", type: i3.HlmSheetTitle, selector: "[hlmSheetTitle]", inputs: ["class"] }, { kind: "component", type: i4.HlmButton, selector: "button[hlmButton], a[hlmButton]", inputs: ["variant", "size", "appearance", "loading", "icon", "iconPosition", "class", "spinnerUserClass", "disabled", "type"] }] });
342
- }
343
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgLayoutSimpleSidebar, decorators: [{
344
- type: Component,
345
- args: [{
346
- selector: 'eg-layout-simple-sidebar',
347
- standalone: true,
348
- imports: [CommonModule, RouterModule, BrnSheetImports, HlmSheetImports, HlmButtonImports, HlmLabelImports],
349
- template: `
350
- @let _title = title();
351
- @let _content = content();
352
-
353
- <hlm-sheet [side]="side() ?? 'left'">
354
- <hlm-sheet-content *brnSheetContent="let ctx" class="gap-0">
355
- @if (_title) {
356
- <hlm-sheet-header>
357
- <h3 hlmSheetTitle>{{ _title }}</h3>
358
- </hlm-sheet-header>
359
- }
360
-
361
- @if (_content) {
362
- <ng-container *ngTemplateOutlet="_content; context: contentContext()"></ng-container>
363
- }
364
-
365
- <hlm-sheet-footer>
366
- <button brnSheetClose hlmButton variant="secondary" appearance="outline-filled">Close</button>
367
- </hlm-sheet-footer>
368
- </hlm-sheet-content>
369
- </hlm-sheet>
370
- `,
371
- }]
372
- }], ctorParameters: () => [] });
373
-
374
- class EgLayoutSimpleMobileMenuGroup {
375
- hlm = hlm;
376
- label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
377
- items = input(...(ngDevMode ? [undefined, { debugName: "items" }] : []));
378
- itemClick = output();
379
- handleClick(item) {
380
- item.action?.();
381
- this.itemClick.emit(item);
382
- }
383
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgLayoutSimpleMobileMenuGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
384
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.1", type: EgLayoutSimpleMobileMenuGroup, isStandalone: true, selector: "eg-layout-simple-mobile-menu-group", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick" }, providers: [], ngImport: i0, template: `
385
- @let _label = label();
386
- @let _items = items();
387
-
388
- @if (_items && _items.length > 0) {
389
- @if (_label) {
390
- <hlm-menu-label>{{ _label }}</hlm-menu-label>
391
- }
392
- <hlm-menu-group>
393
- @for (item of _items; track item.label) {
394
- @if (item.link) {
395
- <a
396
- hlmMenuItem
397
- [routerLink]="item.link"
398
- [class]="hlm('cursor-pointer no-underline')"
399
- (click)="handleClick(item)"
400
- >
401
- @if (item.icon) {
402
- <ng-icon
403
- [svg]="item.icon"
404
- size="1rem"
405
- [class]="hlm('[_svg]:text-[inherit]! [_svg]:bg-[inherit]! cursor-pointer mr-2')"
406
- >
407
- </ng-icon>
408
- }
409
- <span>{{ item.label }}</span>
410
- </a>
411
- } @else {
412
- <button hlmMenuItem (click)="handleClick(item)" [class]="hlm('cursor-pointer no-underline')">
413
- @if (item.icon) {
414
- <ng-icon
415
- [svg]="item.icon"
416
- size="1rem"
417
- [class]="hlm('[_svg]:text-[inherit]! [_svg]:bg-[inherit]! cursor-pointer mr-2')"
418
- >
419
- </ng-icon>
420
- }
421
- <span>{{ item.label }}</span>
422
- </button>
423
- }
424
- }
425
- </hlm-menu-group>
426
- }
427
- `, isInline: true, dependencies: [{ kind: "directive", type: HlmMenuItem, selector: "[hlmMenuItem]", inputs: ["variant", "inset", "class"] }, { kind: "component", type: HlmMenuLabel, selector: "hlm-menu-label", inputs: ["inset", "class"] }, { kind: "component", type: HlmMenuGroup, selector: "hlm-menu-group" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
428
- }
429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgLayoutSimpleMobileMenuGroup, decorators: [{
430
- type: Component,
431
- args: [{
432
- selector: 'eg-layout-simple-mobile-menu-group',
433
- imports: [HlmMenuItem, HlmMenuLabel, HlmMenuGroup, NgIcon, RouterLink],
434
- providers: [],
435
- template: `
436
- @let _label = label();
437
- @let _items = items();
438
-
439
- @if (_items && _items.length > 0) {
440
- @if (_label) {
441
- <hlm-menu-label>{{ _label }}</hlm-menu-label>
442
- }
443
- <hlm-menu-group>
444
- @for (item of _items; track item.label) {
445
- @if (item.link) {
446
- <a
447
- hlmMenuItem
448
- [routerLink]="item.link"
449
- [class]="hlm('cursor-pointer no-underline')"
450
- (click)="handleClick(item)"
451
- >
452
- @if (item.icon) {
453
- <ng-icon
454
- [svg]="item.icon"
455
- size="1rem"
456
- [class]="hlm('[_svg]:text-[inherit]! [_svg]:bg-[inherit]! cursor-pointer mr-2')"
457
- >
458
- </ng-icon>
459
- }
460
- <span>{{ item.label }}</span>
461
- </a>
462
- } @else {
463
- <button hlmMenuItem (click)="handleClick(item)" [class]="hlm('cursor-pointer no-underline')">
464
- @if (item.icon) {
465
- <ng-icon
466
- [svg]="item.icon"
467
- size="1rem"
468
- [class]="hlm('[_svg]:text-[inherit]! [_svg]:bg-[inherit]! cursor-pointer mr-2')"
469
- >
470
- </ng-icon>
471
- }
472
- <span>{{ item.label }}</span>
473
- </button>
474
- }
475
- }
476
- </hlm-menu-group>
477
- }
478
- `,
479
- }]
480
- }] });
481
-
482
- const commonLinkGroupClasses = 'hidden md:flex space-x-4 items-center';
483
- const commonLinkClasses = 'text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline';
484
- class EgLayoutSimple {
485
- breakpointObserver;
486
- hlm = hlm;
487
- menuIcon = lucideMenu;
488
- sidebarEnabled = input(false, ...(ngDevMode ? [{ debugName: "sidebarEnabled" }] : []));
489
- sidebarTitle = input('Menu', ...(ngDevMode ? [{ debugName: "sidebarTitle" }] : []));
490
- sidebarContent = input(...(ngDevMode ? [undefined, { debugName: "sidebarContent" }] : []));
491
- /** Menu data inputs */
492
- leftMenus = input([], ...(ngDevMode ? [{ debugName: "leftMenus" }] : []));
493
- rightMenus = input([], ...(ngDevMode ? [{ debugName: "rightMenus" }] : []));
494
- userMenus = input([], ...(ngDevMode ? [{ debugName: "userMenus" }] : []));
495
- logo = input('assets/logo.png', ...(ngDevMode ? [{ debugName: "logo" }] : []));
496
- logoLink = input('/', ...(ngDevMode ? [{ debugName: "logoLink" }] : []));
497
- logoClass = input('', ...(ngDevMode ? [{ debugName: "logoClass", alias: 'logoClass' }] : [{ alias: 'logoClass' }]));
498
- headerClass = input('', ...(ngDevMode ? [{ debugName: "headerClass", alias: 'headerClass' }] : [{ alias: 'headerClass' }]));
499
- contentClass = input('', ...(ngDevMode ? [{ debugName: "contentClass", alias: 'contentClass' }] : [{ alias: 'contentClass' }]));
500
- contentBottomClass = input('', ...(ngDevMode ? [{ debugName: "contentBottomClass", alias: 'contentBottomClass' }] : [{ alias: 'contentBottomClass' }]));
501
- /** Container class inputs */
502
- leftMenuClass = input('', ...(ngDevMode ? [{ debugName: "leftMenuClass", alias: 'leftClass' }] : [{ alias: 'leftClass' }]));
503
- rightMenuClass = input('', ...(ngDevMode ? [{ debugName: "rightMenuClass", alias: 'rightClass' }] : [{ alias: 'rightClass' }]));
504
- /** Link/button base class inputs */
505
- leftLinkClass = input('', ...(ngDevMode ? [{ debugName: "leftLinkClass", alias: 'leftLinkClass' }] : [{ alias: 'leftLinkClass' }]));
506
- rightLinkClass = input('', ...(ngDevMode ? [{ debugName: "rightLinkClass", alias: 'rightLinkClass' }] : [{ alias: 'rightLinkClass' }]));
507
- searchEnabled = input(false, ...(ngDevMode ? [{ debugName: "searchEnabled" }] : []));
508
- loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
509
- searchPlaceholderText = input('Select an page', ...(ngDevMode ? [{ debugName: "searchPlaceholderText" }] : []));
510
- searchEmptyText = input('No pages found', ...(ngDevMode ? [{ debugName: "searchEmptyText" }] : []));
511
- searchOptionTemplate = input(...(ngDevMode ? [undefined, { debugName: "searchOptionTemplate" }] : []));
512
- searchLoaderFn = input(...(ngDevMode ? [undefined, { debugName: "searchLoaderFn" }] : []));
513
- searchTransformValueToSearch = input(...(ngDevMode ? [undefined, { debugName: "searchTransformValueToSearch" }] : []));
514
- searchOptionChange = output();
515
- _logoClass = computed(() => hlm('h-10', this.logoClass()), ...(ngDevMode ? [{ debugName: "_logoClass" }] : []));
516
- _headerClass = computed(() => hlm('px-4 py-2 flex items-center justify-between bg-gray-100 border-b border-gray-300', this.headerClass()), ...(ngDevMode ? [{ debugName: "_headerClass" }] : []));
517
- _contentClass = computed(() => hlm('p-4 flex flex-col flex-1', this.contentClass()), ...(ngDevMode ? [{ debugName: "_contentClass" }] : []));
518
- _contentBottomClass = computed(() => hlm('flex-1', this.contentBottomClass()), ...(ngDevMode ? [{ debugName: "_contentBottomClass" }] : []));
519
- /** Computed merged classes for containers */
520
- _computedLeftClass = computed(() => hlm(commonLinkGroupClasses, this.leftMenuClass()), ...(ngDevMode ? [{ debugName: "_computedLeftClass" }] : []));
521
- _computedRightClass = computed(() => hlm(commonLinkGroupClasses, this.rightMenuClass()), ...(ngDevMode ? [{ debugName: "_computedRightClass" }] : []));
522
- /** Computed merged classes for link/button elements */
523
- _computedLeftLinkClass = computed(() => hlm(commonLinkClasses, this.leftLinkClass()), ...(ngDevMode ? [{ debugName: "_computedLeftLinkClass" }] : []));
524
- _computedRightLinkClass = computed(() => hlm(commonLinkClasses, this.rightLinkClass()), ...(ngDevMode ? [{ debugName: "_computedRightLinkClass" }] : []));
525
- mobileMenuItemClass = commonLinkClasses;
526
- footerEnabled = input(false, ...(ngDevMode ? [{ debugName: "footerEnabled" }] : []));
527
- footerMenus = input([], ...(ngDevMode ? [{ debugName: "footerMenus" }] : []));
528
- footerMenuClass = input('', ...(ngDevMode ? [{ debugName: "footerMenuClass", alias: 'footerMenuClass' }] : [{ alias: 'footerMenuClass' }]));
529
- footerLinkClass = input('', ...(ngDevMode ? [{ debugName: "footerLinkClass", alias: 'footerLinkClass' }] : [{ alias: 'footerLinkClass' }]));
530
- footerContent = input('© 2024 My Company', ...(ngDevMode ? [{ debugName: "footerContent" }] : []));
531
- footerClass = input('', ...(ngDevMode ? [{ debugName: "footerClass", alias: 'footerClass' }] : [{ alias: 'footerClass' }]));
532
- _footerClass = computed(() => hlm('px-4 py-4 bg-gray-100 border-t border-gray-300 text-sm text-gray-600', this.footerClass()), ...(ngDevMode ? [{ debugName: "_footerClass" }] : []));
533
- _computedFooterMenuClass = computed(() => hlm('flex flex-wrap justify-center space-x-4', this.footerMenuClass()), ...(ngDevMode ? [{ debugName: "_computedFooterMenuClass" }] : []));
534
- _computedFooterLinkClass = computed(() => hlm('text-secondary hover:text-primary cursor-pointer no-underline', this.footerLinkClass()), ...(ngDevMode ? [{ debugName: "_computedFooterLinkClass" }] : []));
535
- /** Mobile menu state */
536
- mobileMenuOpen = false;
537
- isMobile = signal(false, ...(ngDevMode ? [{ debugName: "isMobile" }] : []));
538
- constructor(breakpointObserver) {
539
- this.breakpointObserver = breakpointObserver;
540
- this.breakpointObserver.observe([Breakpoints.Handset]).subscribe((result) => {
541
- this.isMobile.set(result.matches);
542
- });
543
- }
544
- toggleMobileMenu() {
545
- this.mobileMenuOpen = !this.mobileMenuOpen;
546
- }
547
- onSearchOptionChange(value) {
548
- this.searchOptionChange.emit(value);
549
- }
550
- viewchildSheetRef = viewChild(EgLayoutSimpleSidebar, ...(ngDevMode ? [{ debugName: "viewchildSheetRef" }] : []));
551
- openSidebar() {
552
- this.viewchildSheetRef()?.openSheet();
553
- }
554
- closeSidebar() {
555
- this.viewchildSheetRef()?.closeSheet();
556
- }
557
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgLayoutSimple, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
558
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.1", type: EgLayoutSimple, isStandalone: true, selector: "eg-layout-simple", inputs: { sidebarEnabled: { classPropertyName: "sidebarEnabled", publicName: "sidebarEnabled", isSignal: true, isRequired: false, transformFunction: null }, sidebarTitle: { classPropertyName: "sidebarTitle", publicName: "sidebarTitle", isSignal: true, isRequired: false, transformFunction: null }, sidebarContent: { classPropertyName: "sidebarContent", publicName: "sidebarContent", isSignal: true, isRequired: false, transformFunction: null }, leftMenus: { classPropertyName: "leftMenus", publicName: "leftMenus", isSignal: true, isRequired: false, transformFunction: null }, rightMenus: { classPropertyName: "rightMenus", publicName: "rightMenus", isSignal: true, isRequired: false, transformFunction: null }, userMenus: { classPropertyName: "userMenus", publicName: "userMenus", isSignal: true, isRequired: false, transformFunction: null }, logo: { classPropertyName: "logo", publicName: "logo", isSignal: true, isRequired: false, transformFunction: null }, logoLink: { classPropertyName: "logoLink", publicName: "logoLink", isSignal: true, isRequired: false, transformFunction: null }, logoClass: { classPropertyName: "logoClass", publicName: "logoClass", isSignal: true, isRequired: false, transformFunction: null }, headerClass: { classPropertyName: "headerClass", publicName: "headerClass", isSignal: true, isRequired: false, transformFunction: null }, contentClass: { classPropertyName: "contentClass", publicName: "contentClass", isSignal: true, isRequired: false, transformFunction: null }, contentBottomClass: { classPropertyName: "contentBottomClass", publicName: "contentBottomClass", isSignal: true, isRequired: false, transformFunction: null }, leftMenuClass: { classPropertyName: "leftMenuClass", publicName: "leftClass", isSignal: true, isRequired: false, transformFunction: null }, rightMenuClass: { classPropertyName: "rightMenuClass", publicName: "rightClass", isSignal: true, isRequired: false, transformFunction: null }, leftLinkClass: { classPropertyName: "leftLinkClass", publicName: "leftLinkClass", isSignal: true, isRequired: false, transformFunction: null }, rightLinkClass: { classPropertyName: "rightLinkClass", publicName: "rightLinkClass", isSignal: true, isRequired: false, transformFunction: null }, searchEnabled: { classPropertyName: "searchEnabled", publicName: "searchEnabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholderText: { classPropertyName: "searchPlaceholderText", publicName: "searchPlaceholderText", isSignal: true, isRequired: false, transformFunction: null }, searchEmptyText: { classPropertyName: "searchEmptyText", publicName: "searchEmptyText", isSignal: true, isRequired: false, transformFunction: null }, searchOptionTemplate: { classPropertyName: "searchOptionTemplate", publicName: "searchOptionTemplate", isSignal: true, isRequired: false, transformFunction: null }, searchLoaderFn: { classPropertyName: "searchLoaderFn", publicName: "searchLoaderFn", isSignal: true, isRequired: false, transformFunction: null }, searchTransformValueToSearch: { classPropertyName: "searchTransformValueToSearch", publicName: "searchTransformValueToSearch", isSignal: true, isRequired: false, transformFunction: null }, footerEnabled: { classPropertyName: "footerEnabled", publicName: "footerEnabled", isSignal: true, isRequired: false, transformFunction: null }, footerMenus: { classPropertyName: "footerMenus", publicName: "footerMenus", isSignal: true, isRequired: false, transformFunction: null }, footerMenuClass: { classPropertyName: "footerMenuClass", publicName: "footerMenuClass", isSignal: true, isRequired: false, transformFunction: null }, footerLinkClass: { classPropertyName: "footerLinkClass", publicName: "footerLinkClass", isSignal: true, isRequired: false, transformFunction: null }, footerContent: { classPropertyName: "footerContent", publicName: "footerContent", isSignal: true, isRequired: false, transformFunction: null }, footerClass: { classPropertyName: "footerClass", publicName: "footerClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchOptionChange: "searchOptionChange" }, providers: [
559
- provideIcons({
560
- lucideMenu,
561
- }),
562
- ], viewQueries: [{ propertyName: "viewchildSheetRef", first: true, predicate: EgLayoutSimpleSidebar, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #menuIconTemplate>\n <ng-icon [svg]=\"menuIcon\" size=\"20px\" class=\"[&_svg]:w-[inherit]! [&_svg]:h-[inherit]!\" />\n</ng-template>\n\n<eg-layout-simple-sidebar\n [title]=\"sidebarTitle()\"\n [content]=\"sidebarContent()\"\n [contentContext]=\"{ close: closeSidebar.bind(this) }\"\n/>\n\n<div class=\"flex flex-col min-h-screen\">\n <!-- Header -->\n <header [class]=\"_headerClass()\">\n <div class=\"flex items-center space-x-4\">\n @if (sidebarEnabled()) {\n <button\n hlmButton\n variant=\"secondary\"\n appearance=\"outline\"\n size=\"icon\"\n [icon]=\"menuIconTemplate\"\n iconPosition=\"left\"\n class=\"bg-transparent! border-gray-400! hover:border-gray-500!\"\n (click)=\"openSidebar()\"\n ></button>\n }\n\n <div class=\"logo\">\n <a [routerLink]=\"logoLink()\">\n <img [src]=\"logo()\" alt=\"Logo\" [class]=\"_logoClass()\" />\n </a>\n </div>\n <!-- Left menus (desktop) -->\n <nav [class]=\"_computedLeftClass()\">\n @for (item of leftMenus(); track item.label) {\n @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedLeftLinkClass(), item.class || '')\"> {{ item.label }} </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedLeftLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n }\n }\n </nav>\n </div>\n\n <!-- Right menus (desktop) -->\n <nav [class]=\"_computedRightClass()\">\n @if (searchEnabled()) {\n <eg-generic-autocomplete\n [optionTemplate]=\"searchOptionTemplate()\"\n [loaderFn]=\"searchLoaderFn()\"\n [transformValueToSearch]=\"searchTransformValueToSearch()\"\n [placeholderText]=\"searchPlaceholderText()\"\n [emptyText]=\"searchEmptyText()\"\n (optionChange)=\"onSearchOptionChange($event)\"\n ></eg-generic-autocomplete>\n }\n\n @for (item of rightMenus(); track item.label) {\n @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedRightLinkClass(), item.class || '')\"> {{ item.label }} </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedRightLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n }\n }\n\n @let uMenus = userMenus();\n @if (uMenus && uMenus.length > 0) {\n <eg-layout-simple-user-menu [menus]=\"uMenus\"></eg-layout-simple-user-menu>\n }\n </nav>\n\n <!-- Mobile menu button -->\n <button\n (click)=\"toggleMobileMenu()\"\n class=\"md:hidden p-2 text-gray-700 hover:text-primary focus:outline-none cursor-pointer\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 6h16M4 12h16M4 18h16\" />\n </svg>\n </button>\n </header>\n\n @let _topMenus = leftMenus().concat(rightMenus());\n @let _userMenus = userMenus();\n\n <!-- Mobile menu -->\n @if (isMobile() && mobileMenuOpen) {\n <hlm-menu class=\"w-full border-none\">\n <eg-layout-simple-mobile-menu-group [items]=\"_topMenus\" (itemClick)=\"toggleMobileMenu()\" />\n\n @if (_topMenus.length > 0 && _userMenus.length > 0) {\n <hr class=\"border-gray-300 my-2\" />\n }\n\n @for (section of userMenus(); track section.label) {\n <eg-layout-simple-mobile-menu-group\n [items]=\"section.items\"\n [label]=\"section.label\"\n (itemClick)=\"toggleMobileMenu()\"\n ></eg-layout-simple-mobile-menu-group>\n\n @if (section.separator) {\n <hr class=\"border-gray-300 my-2\" />\n }\n }\n </hlm-menu>\n }\n\n <!-- Main content -->\n <main [class]=\"_contentClass()\">\n @if (!loading()) {\n <div class=\"flex items-center justify-center h-full\">\n <ng-content />\n </div>\n }\n <div [class]=\"_contentBottomClass()\"></div>\n </main>\n\n @if (footerEnabled()) {\n <footer [class]=\"_footerClass()\">\n <nav [class]=\"_computedFooterMenuClass()\">\n @for (item of footerMenus(); track item.label) {\n @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedFooterLinkClass(), item.class || '')\">\n {{ item.label }}\n </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedFooterLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n }\n }\n </nav>\n\n <div class=\"mt-2 text-center\">\n {{ footerContent() }}\n </div>\n </footer>\n }\n</div>\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: EgLayoutSimpleUserMenu, selector: "eg-layout-simple-user-menu", inputs: ["menus"] }, { kind: "component", type: EgLayoutSimpleSidebar, selector: "eg-layout-simple-sidebar", inputs: ["side", "title", "content", "contentContext"] }, { kind: "component", type: EgLayoutSimpleMobileMenuGroup, selector: "eg-layout-simple-mobile-menu-group", inputs: ["label", "items"], outputs: ["itemClick"] }, { kind: "component", type: EgGenericAutocomplete, selector: "eg-generic-autocomplete", inputs: ["controlId", "placeholderText", "emptyText", "optionTemplate", "loaderFn", "transformValueToSearch"], outputs: ["optionChange"] }, { kind: "component", type: HlmButton, selector: "button[hlmButton], a[hlmButton]", inputs: ["variant", "size", "appearance", "loading", "icon", "iconPosition", "class", "spinnerUserClass", "disabled", "type"] }, { kind: "component", type: HlmMenu, selector: "hlm-menu", inputs: ["class", "variant"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }] });
563
- }
564
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgLayoutSimple, decorators: [{
565
- type: Component,
566
- args: [{ selector: 'eg-layout-simple', standalone: true, imports: [
567
- RouterLink,
568
- EgLayoutSimpleUserMenu,
569
- EgLayoutSimpleSidebar,
570
- EgLayoutSimpleMobileMenuGroup,
571
- EgGenericAutocomplete,
572
- HlmButton,
573
- HlmMenu,
574
- NgIcon,
575
- ], providers: [
576
- provideIcons({
577
- lucideMenu,
578
- }),
579
- ], template: "<ng-template #menuIconTemplate>\n <ng-icon [svg]=\"menuIcon\" size=\"20px\" class=\"[&_svg]:w-[inherit]! [&_svg]:h-[inherit]!\" />\n</ng-template>\n\n<eg-layout-simple-sidebar\n [title]=\"sidebarTitle()\"\n [content]=\"sidebarContent()\"\n [contentContext]=\"{ close: closeSidebar.bind(this) }\"\n/>\n\n<div class=\"flex flex-col min-h-screen\">\n <!-- Header -->\n <header [class]=\"_headerClass()\">\n <div class=\"flex items-center space-x-4\">\n @if (sidebarEnabled()) {\n <button\n hlmButton\n variant=\"secondary\"\n appearance=\"outline\"\n size=\"icon\"\n [icon]=\"menuIconTemplate\"\n iconPosition=\"left\"\n class=\"bg-transparent! border-gray-400! hover:border-gray-500!\"\n (click)=\"openSidebar()\"\n ></button>\n }\n\n <div class=\"logo\">\n <a [routerLink]=\"logoLink()\">\n <img [src]=\"logo()\" alt=\"Logo\" [class]=\"_logoClass()\" />\n </a>\n </div>\n <!-- Left menus (desktop) -->\n <nav [class]=\"_computedLeftClass()\">\n @for (item of leftMenus(); track item.label) {\n @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedLeftLinkClass(), item.class || '')\"> {{ item.label }} </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedLeftLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n }\n }\n </nav>\n </div>\n\n <!-- Right menus (desktop) -->\n <nav [class]=\"_computedRightClass()\">\n @if (searchEnabled()) {\n <eg-generic-autocomplete\n [optionTemplate]=\"searchOptionTemplate()\"\n [loaderFn]=\"searchLoaderFn()\"\n [transformValueToSearch]=\"searchTransformValueToSearch()\"\n [placeholderText]=\"searchPlaceholderText()\"\n [emptyText]=\"searchEmptyText()\"\n (optionChange)=\"onSearchOptionChange($event)\"\n ></eg-generic-autocomplete>\n }\n\n @for (item of rightMenus(); track item.label) {\n @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedRightLinkClass(), item.class || '')\"> {{ item.label }} </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedRightLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n }\n }\n\n @let uMenus = userMenus();\n @if (uMenus && uMenus.length > 0) {\n <eg-layout-simple-user-menu [menus]=\"uMenus\"></eg-layout-simple-user-menu>\n }\n </nav>\n\n <!-- Mobile menu button -->\n <button\n (click)=\"toggleMobileMenu()\"\n class=\"md:hidden p-2 text-gray-700 hover:text-primary focus:outline-none cursor-pointer\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 6h16M4 12h16M4 18h16\" />\n </svg>\n </button>\n </header>\n\n @let _topMenus = leftMenus().concat(rightMenus());\n @let _userMenus = userMenus();\n\n <!-- Mobile menu -->\n @if (isMobile() && mobileMenuOpen) {\n <hlm-menu class=\"w-full border-none\">\n <eg-layout-simple-mobile-menu-group [items]=\"_topMenus\" (itemClick)=\"toggleMobileMenu()\" />\n\n @if (_topMenus.length > 0 && _userMenus.length > 0) {\n <hr class=\"border-gray-300 my-2\" />\n }\n\n @for (section of userMenus(); track section.label) {\n <eg-layout-simple-mobile-menu-group\n [items]=\"section.items\"\n [label]=\"section.label\"\n (itemClick)=\"toggleMobileMenu()\"\n ></eg-layout-simple-mobile-menu-group>\n\n @if (section.separator) {\n <hr class=\"border-gray-300 my-2\" />\n }\n }\n </hlm-menu>\n }\n\n <!-- Main content -->\n <main [class]=\"_contentClass()\">\n @if (!loading()) {\n <div class=\"flex items-center justify-center h-full\">\n <ng-content />\n </div>\n }\n <div [class]=\"_contentBottomClass()\"></div>\n </main>\n\n @if (footerEnabled()) {\n <footer [class]=\"_footerClass()\">\n <nav [class]=\"_computedFooterMenuClass()\">\n @for (item of footerMenus(); track item.label) {\n @if (item.link) {\n <a [routerLink]=\"item.link\" [class]=\"hlm(_computedFooterLinkClass(), item.class || '')\">\n {{ item.label }}\n </a>\n } @else {\n <button type=\"button\" (click)=\"item.action?.()\" [class]=\"hlm(_computedFooterLinkClass(), item.class || '')\">\n {{ item.label }}\n </button>\n }\n }\n </nav>\n\n <div class=\"mt-2 text-center\">\n {{ footerContent() }}\n </div>\n </footer>\n }\n</div>\n" }]
580
- }], ctorParameters: () => [{ type: i1$2.BreakpointObserver }] });
581
-
582
- /*
583
- * Public API Surface of layout-simple
584
- */
585
-
586
- /**
587
- * Generated bundle index. Do not edit.
588
- */
589
-
590
- export { EgGenericAutocomplete, EgLayoutSimple, EgLayoutSimpleUserMenu };
591
- //# sourceMappingURL=layout-simple.mjs.map