@masterteam/components 0.0.127 → 0.0.129

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 (68) hide show
  1. package/assets/common.css +2 -172
  2. package/fesm2022/masterteam-components-dialog.mjs +33 -0
  3. package/fesm2022/masterteam-components-dialog.mjs.map +1 -0
  4. package/fesm2022/masterteam-components-dynamic-drawer.mjs +321 -0
  5. package/fesm2022/masterteam-components-dynamic-drawer.mjs.map +1 -0
  6. package/fesm2022/masterteam-components-formula.mjs +3116 -0
  7. package/fesm2022/masterteam-components-formula.mjs.map +1 -0
  8. package/fesm2022/masterteam-components-icon-field.mjs +63 -0
  9. package/fesm2022/masterteam-components-icon-field.mjs.map +1 -0
  10. package/fesm2022/masterteam-components-list.mjs +31 -0
  11. package/fesm2022/masterteam-components-list.mjs.map +1 -0
  12. package/fesm2022/masterteam-components-menu.mjs +135 -0
  13. package/fesm2022/masterteam-components-menu.mjs.map +1 -0
  14. package/fesm2022/masterteam-components-modal.mjs +50 -0
  15. package/fesm2022/masterteam-components-modal.mjs.map +1 -0
  16. package/fesm2022/masterteam-components-module-summary-card.mjs +32 -0
  17. package/fesm2022/masterteam-components-module-summary-card.mjs.map +1 -0
  18. package/fesm2022/masterteam-components-page-header.mjs +42 -0
  19. package/fesm2022/masterteam-components-page-header.mjs.map +1 -0
  20. package/fesm2022/masterteam-components-page.mjs +35 -0
  21. package/fesm2022/masterteam-components-page.mjs.map +1 -0
  22. package/fesm2022/masterteam-components-pick-list-field.mjs +204 -0
  23. package/fesm2022/masterteam-components-pick-list-field.mjs.map +1 -0
  24. package/fesm2022/masterteam-components-property-filter-builder.mjs +386 -0
  25. package/fesm2022/masterteam-components-property-filter-builder.mjs.map +1 -0
  26. package/fesm2022/masterteam-components-radio-button-field.mjs +85 -0
  27. package/fesm2022/masterteam-components-radio-button-field.mjs.map +1 -0
  28. package/fesm2022/masterteam-components-radio-cards-field.mjs +123 -0
  29. package/fesm2022/masterteam-components-radio-cards-field.mjs.map +1 -0
  30. package/fesm2022/masterteam-components-radio-cards.mjs +74 -0
  31. package/fesm2022/masterteam-components-radio-cards.mjs.map +1 -0
  32. package/fesm2022/masterteam-components-sidebar.mjs +36 -0
  33. package/fesm2022/masterteam-components-sidebar.mjs.map +1 -0
  34. package/fesm2022/masterteam-components-slider-field.mjs +104 -0
  35. package/fesm2022/masterteam-components-slider-field.mjs.map +1 -0
  36. package/fesm2022/masterteam-components-statistic-card.mjs +22 -0
  37. package/fesm2022/masterteam-components-statistic-card.mjs.map +1 -0
  38. package/fesm2022/masterteam-components-textarea-field.mjs +100 -0
  39. package/fesm2022/masterteam-components-textarea-field.mjs.map +1 -0
  40. package/fesm2022/masterteam-components-toast.mjs +75 -0
  41. package/fesm2022/masterteam-components-toast.mjs.map +1 -0
  42. package/fesm2022/masterteam-components-topbar.mjs +28 -0
  43. package/fesm2022/masterteam-components-topbar.mjs.map +1 -0
  44. package/fesm2022/masterteam-components-tree.mjs +219 -0
  45. package/fesm2022/masterteam-components-tree.mjs.map +1 -0
  46. package/package.json +1 -1
  47. package/types/masterteam-components-dialog.d.ts +12 -0
  48. package/types/masterteam-components-dynamic-drawer.d.ts +93 -0
  49. package/types/masterteam-components-formula.d.ts +654 -0
  50. package/types/masterteam-components-icon-field.d.ts +27 -0
  51. package/types/masterteam-components-list.d.ts +18 -0
  52. package/types/masterteam-components-menu.d.ts +55 -0
  53. package/types/masterteam-components-modal.d.ts +18 -0
  54. package/types/masterteam-components-module-summary-card.d.ts +17 -0
  55. package/types/masterteam-components-page-header.d.ts +30 -0
  56. package/types/masterteam-components-page.d.ts +26 -0
  57. package/types/masterteam-components-pick-list-field.d.ts +60 -0
  58. package/types/masterteam-components-property-filter-builder.d.ts +90 -0
  59. package/types/masterteam-components-radio-button-field.d.ts +41 -0
  60. package/types/masterteam-components-radio-cards-field.d.ts +34 -0
  61. package/types/masterteam-components-radio-cards.d.ts +33 -0
  62. package/types/masterteam-components-sidebar.d.ts +28 -0
  63. package/types/masterteam-components-slider-field.d.ts +45 -0
  64. package/types/masterteam-components-statistic-card.d.ts +18 -0
  65. package/types/masterteam-components-textarea-field.d.ts +38 -0
  66. package/types/masterteam-components-toast.d.ts +26 -0
  67. package/types/masterteam-components-topbar.d.ts +17 -0
  68. package/types/masterteam-components-tree.d.ts +98 -0
@@ -0,0 +1,63 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, signal, inject, effect, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
+ import { Validators, NgControl, FormsModule } from '@angular/forms';
5
+ import { Select } from 'primeng/select';
6
+ import * as mtIcons from '@masterteam/icons/assets/select-icons.json';
7
+ import { Icon } from '@masterteam/icons';
8
+ import { FieldValidation } from '@masterteam/components/field-validation';
9
+ import { isInvalid } from '@masterteam/components';
10
+
11
+ class IconField {
12
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
13
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
14
+ icons = mtIcons?.regular ?? [];
15
+ selectedIcon = signal(null, ...(ngDevMode ? [{ debugName: "selectedIcon" }] : []));
16
+ requiredValidator = Validators.required;
17
+ ngControl = inject(NgControl, { self: true });
18
+ isInvalid = isInvalid;
19
+ constructor() {
20
+ if (this.ngControl) {
21
+ this.ngControl.valueAccessor = this;
22
+ }
23
+ effect(() => {
24
+ if (this.ngControl.control && this.required()) {
25
+ this.ngControl.control.addValidators(Validators.required);
26
+ this.ngControl.control.updateValueAndValidity();
27
+ }
28
+ });
29
+ }
30
+ onTouched = () => { };
31
+ onChange = () => { };
32
+ writeValue(value) {
33
+ this.selectedIcon.set(value);
34
+ }
35
+ registerOnChange(fn) {
36
+ this.onChange = fn;
37
+ }
38
+ registerOnTouched(fn) {
39
+ this.onTouched = fn;
40
+ }
41
+ onChangeIcon(icon) {
42
+ this.selectedIcon.set(icon);
43
+ this.onChange(icon);
44
+ }
45
+ validate(c) {
46
+ return c.errors;
47
+ }
48
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: IconField, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: IconField, isStandalone: true, selector: "mt-icon-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "grid gap-1" }, ngImport: i0, template: "@if (label()) {\r\n <label\r\n (click)=\"dropdown.show(); dropdown.focus()\"\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n}\r\n<p-select\r\n #dropdown\r\n [options]=\"icons\"\r\n [filter]=\"false\"\r\n filterBy=\"name\"\r\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n appendTo=\"body\"\r\n (onBlur)=\"onTouched()\"\r\n (ngModelChange)=\"onChangeIcon($event)\"\r\n [ngModel]=\"selectedIcon()\"\r\n [invalid]=\"isInvalid(ngControl?.control)\"\r\n placeholder=\"Select Icon\"\r\n styleClass=\"w-full\"\r\n panelStyleClass=\"icon-select-panel\"\r\n>\r\n <ng-template let-icon #selectedItem>\r\n @if (icon) {\r\n <div class=\"flex items-center justify-center text-2xl\">\r\n <mt-icon [icon]=\"icon\" />\r\n </div>\r\n } @else {\r\n <div class=\"flex items-center justify-center\">Select Icon</div>\r\n }\r\n </ng-template>\r\n <ng-template let-icon #item>\r\n <div class=\"w-full h-full flex items-center justify-center text-lg\">\r\n <mt-icon [icon]=\"icon\" />\r\n </div>\r\n </ng-template>\r\n</p-select>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", styles: ["::ng-deep .icon-select-panel .p-select-list-container .p-select-list{display:grid;grid-template-columns:repeat(7,1fr);padding-inline:calc(var(--spacing) * 2);gap:.5rem}::ng-deep .icon-select-panel .p-select-list-container .p-select-list .p-select-option{padding:.25rem;border-radius:var(--p-select-option-border-radius);width:2.5rem;height:2.5rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: IconField, decorators: [{
52
+ type: Component,
53
+ args: [{ selector: 'mt-icon-field', imports: [FormsModule, Select, Icon, FieldValidation], changeDetection: ChangeDetectionStrategy.OnPush, host: {
54
+ class: 'grid gap-1',
55
+ }, template: "@if (label()) {\r\n <label\r\n (click)=\"dropdown.show(); dropdown.focus()\"\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n}\r\n<p-select\r\n #dropdown\r\n [options]=\"icons\"\r\n [filter]=\"false\"\r\n filterBy=\"name\"\r\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n appendTo=\"body\"\r\n (onBlur)=\"onTouched()\"\r\n (ngModelChange)=\"onChangeIcon($event)\"\r\n [ngModel]=\"selectedIcon()\"\r\n [invalid]=\"isInvalid(ngControl?.control)\"\r\n placeholder=\"Select Icon\"\r\n styleClass=\"w-full\"\r\n panelStyleClass=\"icon-select-panel\"\r\n>\r\n <ng-template let-icon #selectedItem>\r\n @if (icon) {\r\n <div class=\"flex items-center justify-center text-2xl\">\r\n <mt-icon [icon]=\"icon\" />\r\n </div>\r\n } @else {\r\n <div class=\"flex items-center justify-center\">Select Icon</div>\r\n }\r\n </ng-template>\r\n <ng-template let-icon #item>\r\n <div class=\"w-full h-full flex items-center justify-center text-lg\">\r\n <mt-icon [icon]=\"icon\" />\r\n </div>\r\n </ng-template>\r\n</p-select>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", styles: ["::ng-deep .icon-select-panel .p-select-list-container .p-select-list{display:grid;grid-template-columns:repeat(7,1fr);padding-inline:calc(var(--spacing) * 2);gap:.5rem}::ng-deep .icon-select-panel .p-select-list-container .p-select-list .p-select-option{padding:.25rem;border-radius:var(--p-select-option-border-radius);width:2.5rem;height:2.5rem}\n"] }]
56
+ }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }] } });
57
+
58
+ /**
59
+ * Generated bundle index. Do not edit.
60
+ */
61
+
62
+ export { IconField };
63
+ //# sourceMappingURL=masterteam-components-icon-field.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-icon-field.mjs","sources":["../../../../packages/masterteam/components/icon-field/icon-field.ts","../../../../packages/masterteam/components/icon-field/icon-field.html","../../../../packages/masterteam/components/icon-field/masterteam-components-icon-field.ts"],"sourcesContent":["import {\r\n Component,\r\n signal,\r\n inject,\r\n input,\r\n ChangeDetectionStrategy,\r\n effect,\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormControl,\r\n FormsModule,\r\n NgControl,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Select } from 'primeng/select';\r\nimport * as mtIcons from '@masterteam/icons/assets/select-icons.json';\r\nimport { Icon, MTIcon } from '@masterteam/icons';\r\nimport { FieldValidation } from '@masterteam/components/field-validation';\r\nimport { isInvalid } from '@masterteam/components';\r\n\r\n@Component({\r\n selector: 'mt-icon-field',\r\n imports: [FormsModule, Select, Icon, FieldValidation],\r\n templateUrl: './icon-field.html',\r\n styleUrls: ['./icon-field.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'grid gap-1',\r\n },\r\n})\r\nexport class IconField implements ControlValueAccessor {\r\n readonly label = input<string>('');\r\n readonly required = input<boolean>(false);\r\n\r\n icons: MTIcon[] = (mtIcons?.regular as MTIcon[]) ?? [];\r\n selectedIcon = signal<string | null>(null);\r\n requiredValidator = Validators.required;\r\n\r\n public ngControl = inject(NgControl, { self: true });\r\n\r\n isInvalid = isInvalid;\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n effect(() => {\r\n if (this.ngControl.control && this.required()) {\r\n this.ngControl.control.addValidators(Validators.required);\r\n this.ngControl.control.updateValueAndValidity();\r\n }\r\n });\r\n }\r\n\r\n protected onTouched: () => void = () => {};\r\n private onChange: (icon: string) => void = () => {};\r\n\r\n writeValue(value: string) {\r\n this.selectedIcon.set(value);\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n onChangeIcon(icon: string) {\r\n this.selectedIcon.set(icon);\r\n this.onChange(icon);\r\n }\r\n\r\n public validate(c: FormControl) {\r\n return c.errors;\r\n }\r\n}\r\n","@if (label()) {\r\n <label\r\n (click)=\"dropdown.show(); dropdown.focus()\"\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n}\r\n<p-select\r\n #dropdown\r\n [options]=\"icons\"\r\n [filter]=\"false\"\r\n filterBy=\"name\"\r\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n appendTo=\"body\"\r\n (onBlur)=\"onTouched()\"\r\n (ngModelChange)=\"onChangeIcon($event)\"\r\n [ngModel]=\"selectedIcon()\"\r\n [invalid]=\"isInvalid(ngControl?.control)\"\r\n placeholder=\"Select Icon\"\r\n styleClass=\"w-full\"\r\n panelStyleClass=\"icon-select-panel\"\r\n>\r\n <ng-template let-icon #selectedItem>\r\n @if (icon) {\r\n <div class=\"flex items-center justify-center text-2xl\">\r\n <mt-icon [icon]=\"icon\" />\r\n </div>\r\n } @else {\r\n <div class=\"flex items-center justify-center\">Select Icon</div>\r\n }\r\n </ng-template>\r\n <ng-template let-icon #item>\r\n <div class=\"w-full h-full flex items-center justify-center text-lg\">\r\n <mt-icon [icon]=\"icon\" />\r\n </div>\r\n </ng-template>\r\n</p-select>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, booleanAttribute, contentChild, computed, Component } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+
6
+ class List {
7
+ // Input for the data array to loop through
8
+ data = input([], ...(ngDevMode ? [{ debugName: "data" }] : []));
9
+ separated = input(false, { ...(ngDevMode ? { debugName: "separated" } : {}), transform: booleanAttribute });
10
+ // Content child to get the template from ng-content
11
+ itemTemplate = contentChild('item', ...(ngDevMode ? [{ debugName: "itemTemplate" }] : []));
12
+ // Alternative input for template reference
13
+ template = input(null, ...(ngDevMode ? [{ debugName: "template" }] : []));
14
+ // Computed signal for effective template (prioritize template() input over content child)
15
+ effectiveTemplate = computed(() => {
16
+ return this.template() || this.itemTemplate() || null;
17
+ }, ...(ngDevMode ? [{ debugName: "effectiveTemplate" }] : []));
18
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: List, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: List, isStandalone: true, selector: "mt-list", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, separated: { classPropertyName: "separated", publicName: "separated", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "itemTemplate", first: true, predicate: ["item"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"template-list\">\r\n @if (effectiveTemplate()) {\r\n @for (item of data(); track $index) {\r\n <div\r\n class=\"border-(--p-content-border-color)\"\r\n [class.border-b]=\"!$last && separated()\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"effectiveTemplate()\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: item,\r\n index: $index,\r\n first: $first,\r\n last: $last,\r\n count: $count,\r\n }\"\r\n >\r\n </ng-container>\r\n </div>\r\n }\r\n }\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: List, decorators: [{
22
+ type: Component,
23
+ args: [{ selector: 'mt-list', standalone: true, imports: [CommonModule], template: "<div class=\"template-list\">\r\n @if (effectiveTemplate()) {\r\n @for (item of data(); track $index) {\r\n <div\r\n class=\"border-(--p-content-border-color)\"\r\n [class.border-b]=\"!$last && separated()\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"effectiveTemplate()\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: item,\r\n index: $index,\r\n first: $first,\r\n last: $last,\r\n count: $count,\r\n }\"\r\n >\r\n </ng-container>\r\n </div>\r\n }\r\n }\r\n</div>\r\n" }]
24
+ }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], separated: [{ type: i0.Input, args: [{ isSignal: true, alias: "separated", required: false }] }], itemTemplate: [{ type: i0.ContentChild, args: ['item', { isSignal: true }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }] } });
25
+
26
+ /**
27
+ * Generated bundle index. Do not edit.
28
+ */
29
+
30
+ export { List };
31
+ //# sourceMappingURL=masterteam-components-list.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-list.mjs","sources":["../../../../packages/masterteam/components/list/list.ts","../../../../packages/masterteam/components/list/list.html","../../../../packages/masterteam/components/list/masterteam-components-list.ts"],"sourcesContent":["import {\r\n Component,\r\n input,\r\n TemplateRef,\r\n contentChild,\r\n computed,\r\n booleanAttribute,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface ListItem {\r\n [key: string]: any;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-list',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './list.html',\r\n})\r\nexport class List {\r\n // Input for the data array to loop through\r\n data = input<ListItem[]>([]);\r\n\r\n separated = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n\r\n // Content child to get the template from ng-content\r\n itemTemplate = contentChild<TemplateRef<any>>('item');\r\n // Alternative input for template reference\r\n template = input<TemplateRef<any> | null>(null);\r\n\r\n // Computed signal for effective template (prioritize template() input over content child)\r\n effectiveTemplate = computed(() => {\r\n return this.template() || this.itemTemplate() || null;\r\n });\r\n}\r\n","<div class=\"template-list\">\r\n @if (effectiveTemplate()) {\r\n @for (item of data(); track $index) {\r\n <div\r\n class=\"border-(--p-content-border-color)\"\r\n [class.border-b]=\"!$last && separated()\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"effectiveTemplate()\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: item,\r\n index: $index,\r\n first: $first,\r\n last: $last,\r\n count: $count,\r\n }\"\r\n >\r\n </ng-container>\r\n </div>\r\n }\r\n }\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAoBa,IAAI,CAAA;;AAEf,IAAA,IAAI,GAAG,KAAK,CAAa,EAAE,gDAAC;IAE5B,SAAS,GAAG,KAAK,CAAmB,KAAK,sDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAG3E,IAAA,YAAY,GAAG,YAAY,CAAmB,MAAM,wDAAC;;AAErD,IAAA,QAAQ,GAAG,KAAK,CAA0B,IAAI,oDAAC;;AAG/C,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;QAChC,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI;AACvD,IAAA,CAAC,6DAAC;uGAdS,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAJ,IAAI,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBjB,4mBAsBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGX,IAAI,EAAA,UAAA,EAAA,CAAA;kBANhB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,4mBAAA,EAAA;uQAUuB,MAAM,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE3BtD;;AAEG;;;;"}
@@ -0,0 +1,135 @@
1
+ import * as i0 from '@angular/core';
2
+ import { viewChild, contentChild, TemplateRef, input, booleanAttribute, model, output, computed, Component } from '@angular/core';
3
+ import { Menu as Menu$1 } from 'primeng/menu';
4
+ import * as i1 from 'primeng/api';
5
+ import { SharedModule } from 'primeng/api';
6
+ import { Avatar } from '@masterteam/components/avatar';
7
+ import { NgTemplateOutlet } from '@angular/common';
8
+
9
+ class Menu {
10
+ menuRef = viewChild.required('menu', { read: Menu$1 });
11
+ startTemplate = contentChild('start', { ...(ngDevMode ? { debugName: "startTemplate" } : {}), read: TemplateRef });
12
+ endTemplate = contentChild('end', { ...(ngDevMode ? { debugName: "endTemplate" } : {}), read: TemplateRef });
13
+ headerTemplate = contentChild('header', { ...(ngDevMode ? { debugName: "headerTemplate" } : {}), read: TemplateRef });
14
+ submenuHeaderTemplate = contentChild('submenuheader', { ...(ngDevMode ? { debugName: "submenuHeaderTemplate" } : {}), read: TemplateRef });
15
+ model = input([], ...(ngDevMode ? [{ debugName: "model" }] : []));
16
+ popup = input(true, { ...(ngDevMode ? { debugName: "popup" } : {}), transform: booleanAttribute });
17
+ appendTo = input('body', ...(ngDevMode ? [{ debugName: "appendTo" }] : []));
18
+ style = input(...(ngDevMode ? [undefined, { debugName: "style" }] : []));
19
+ styleClass = input(...(ngDevMode ? [undefined, { debugName: "styleClass" }] : []));
20
+ autoZIndex = input(true, { ...(ngDevMode ? { debugName: "autoZIndex" } : {}), transform: booleanAttribute });
21
+ baseZIndex = input(0, ...(ngDevMode ? [{ debugName: "baseZIndex" }] : []));
22
+ showTransitionOptions = input('0.12s cubic-bezier(0, 0, 0.2, 1)', ...(ngDevMode ? [{ debugName: "showTransitionOptions" }] : []));
23
+ hideTransitionOptions = input('0.1s linear', ...(ngDevMode ? [{ debugName: "hideTransitionOptions" }] : []));
24
+ ariaLabel = input(...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : []));
25
+ ariaLabelledBy = input(...(ngDevMode ? [undefined, { debugName: "ariaLabelledBy" }] : []));
26
+ id = input(...(ngDevMode ? [undefined, { debugName: "id" }] : []));
27
+ tabindex = input(0, ...(ngDevMode ? [{ debugName: "tabindex" }] : []));
28
+ activeItemId = model(...(ngDevMode ? [undefined, { debugName: "activeItemId" }] : []));
29
+ onShow = output();
30
+ onHide = output();
31
+ onBlur = output();
32
+ onFocus = output();
33
+ onItemSelect = output();
34
+ transformedModel = computed(() => {
35
+ return this.model().map((item) => this.transformMenuItem(item, this.activeItemId()));
36
+ }, ...(ngDevMode ? [{ debugName: "transformedModel" }] : []));
37
+ toggle(event) {
38
+ this.menuRef().toggle(event);
39
+ }
40
+ show(event) {
41
+ this.menuRef().show(event);
42
+ }
43
+ hide() {
44
+ this.menuRef().hide();
45
+ }
46
+ getItemIcon(item) {
47
+ return item?.mtIcon;
48
+ }
49
+ getItemColor(item) {
50
+ return item?.mtColor;
51
+ }
52
+ getAvatarStyle(color) {
53
+ if (color.startsWith('#')) {
54
+ return {
55
+ '--p-avatar-background': color + '1a',
56
+ '--p-avatar-color': color,
57
+ };
58
+ }
59
+ return {
60
+ '--p-avatar-background': `var(--p-${color}-100)`,
61
+ '--p-avatar-color': `var(--p-${color}-700)`,
62
+ };
63
+ }
64
+ transformMenuItem(item, activeId) {
65
+ const transformed = { ...item };
66
+ if (item.icon) {
67
+ transformed.mtIcon = item.icon;
68
+ delete transformed.icon;
69
+ }
70
+ if (item.color) {
71
+ transformed.mtColor = item.color;
72
+ }
73
+ const classes = [];
74
+ const isActive = activeId && item.id && item.id === activeId;
75
+ if (isActive) {
76
+ classes.push('bg-primary-50', 'text-primary-700', 'dark:bg-primary-900/20', 'dark:text-primary-300');
77
+ }
78
+ else if (item.severity) {
79
+ const severityClass = this.getSeverityClass(item.severity);
80
+ if (severityClass) {
81
+ classes.push(severityClass);
82
+ }
83
+ }
84
+ if (item.styleClass) {
85
+ classes.push(item.styleClass);
86
+ }
87
+ transformed.computedClass = classes.join(' ');
88
+ if (item['items']) {
89
+ transformed['items'] = item['items'].map((subItem) => this.transformMenuItem(subItem, activeId));
90
+ }
91
+ const originalCommand = transformed.command;
92
+ transformed.command = (event) => {
93
+ if (item.id) {
94
+ this.handleItemSelect(item);
95
+ }
96
+ if (originalCommand) {
97
+ originalCommand(event);
98
+ }
99
+ };
100
+ return transformed;
101
+ }
102
+ getSeverityClass(severity) {
103
+ const severityMap = {
104
+ danger: 'text-red-600 hover:bg-red-50 hover:text-red-700',
105
+ warn: 'text-yellow-600 hover:bg-yellow-50 hover:text-yellow-700',
106
+ success: 'text-green-600 hover:bg-green-50 hover:text-green-700',
107
+ info: 'text-blue-600 hover:bg-blue-50 hover:text-blue-700',
108
+ help: 'text-purple-600 hover:bg-purple-50 hover:text-purple-700',
109
+ secondary: 'text-gray-600 hover:bg-gray-50 hover:text-gray-700',
110
+ contrast: 'text-gray-900 hover:bg-gray-100',
111
+ };
112
+ return severityMap[severity] || '';
113
+ }
114
+ handleItemSelect(item) {
115
+ if (item.id) {
116
+ this.activeItemId.set(item.id);
117
+ }
118
+ this.onItemSelect.emit(item);
119
+ }
120
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Menu, deps: [], target: i0.ɵɵFactoryTarget.Component });
121
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: Menu, isStandalone: true, selector: "mt-menu", inputs: { model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, popup: { classPropertyName: "popup", publicName: "popup", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, autoZIndex: { classPropertyName: "autoZIndex", publicName: "autoZIndex", isSignal: true, isRequired: false, transformFunction: null }, baseZIndex: { classPropertyName: "baseZIndex", publicName: "baseZIndex", isSignal: true, isRequired: false, transformFunction: null }, showTransitionOptions: { classPropertyName: "showTransitionOptions", publicName: "showTransitionOptions", isSignal: true, isRequired: false, transformFunction: null }, hideTransitionOptions: { classPropertyName: "hideTransitionOptions", publicName: "hideTransitionOptions", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, activeItemId: { classPropertyName: "activeItemId", publicName: "activeItemId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemId: "activeItemIdChange", onShow: "onShow", onHide: "onHide", onBlur: "onBlur", onFocus: "onFocus", onItemSelect: "onItemSelect" }, queries: [{ propertyName: "startTemplate", first: true, predicate: ["start"], descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "endTemplate", first: true, predicate: ["end"], descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "submenuHeaderTemplate", first: true, predicate: ["submenuheader"], descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "menuRef", first: true, predicate: ["menu"], descendants: true, read: Menu$1, isSignal: true }], ngImport: i0, template: "<p-menu\r\n #menu\r\n [model]=\"transformedModel()\"\r\n [popup]=\"popup()\"\r\n [appendTo]=\"appendTo()\"\r\n [style]=\"style()\"\r\n [styleClass]=\"styleClass()\"\r\n [autoZIndex]=\"autoZIndex()\"\r\n [baseZIndex]=\"baseZIndex()\"\r\n [showTransitionOptions]=\"showTransitionOptions()\"\r\n [hideTransitionOptions]=\"hideTransitionOptions()\"\r\n [ariaLabel]=\"ariaLabel()\"\r\n [ariaLabelledBy]=\"ariaLabelledBy()\"\r\n [id]=\"id()\"\r\n [tabindex]=\"tabindex()\"\r\n (onShow)=\"onShow.emit($event)\"\r\n (onHide)=\"onHide.emit($event)\"\r\n (onBlur)=\"onBlur.emit($event)\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n>\r\n @if (startTemplate()) {\r\n <ng-template pTemplate=\"start\">\r\n <ng-container *ngTemplateOutlet=\"startTemplate()!\" />\r\n </ng-template>\r\n }\r\n\r\n @if (endTemplate()) {\r\n <ng-template pTemplate=\"end\">\r\n <ng-container *ngTemplateOutlet=\"endTemplate()!\" />\r\n </ng-template>\r\n }\r\n\r\n @if (headerTemplate()) {\r\n <ng-template pTemplate=\"header\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\r\n </ng-template>\r\n }\r\n\r\n @if (submenuHeaderTemplate()) {\r\n <ng-template pTemplate=\"submenuheader\" let-item>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n submenuHeaderTemplate()!;\r\n context: { $implicit: item }\r\n \"\r\n />\r\n </ng-template>\r\n }\r\n\r\n <ng-template pTemplate=\"item\" let-item>\r\n <div\r\n class=\"flex gap-2 align-middle items-center p-2 cursor-pointer rounded transition-colors\"\r\n [class]=\"item.computedClass\"\r\n >\r\n @if (getItemIcon(item)) {\r\n <mt-avatar\r\n [style]=\"getAvatarStyle(getItemColor(item) || 'gray')\"\r\n [icon]=\"getItemIcon(item)!\"\r\n shape=\"square\"\r\n size=\"normal\"\r\n />\r\n }\r\n @if (item.label) {\r\n <span class=\"p-menu-item-label\">{{ item.label }}</span>\r\n }\r\n @if (item.badge) {\r\n <span class=\"p-menu-item-badge\">{{ item.badge }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n</p-menu>\r\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "component", type: Menu$1, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex", "appendTo", "motionOptions"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "ngmodule", type: SharedModule }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
122
+ }
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Menu, decorators: [{
124
+ type: Component,
125
+ args: [{ selector: 'mt-menu', standalone: true, imports: [Menu$1, Avatar, SharedModule, NgTemplateOutlet], template: "<p-menu\r\n #menu\r\n [model]=\"transformedModel()\"\r\n [popup]=\"popup()\"\r\n [appendTo]=\"appendTo()\"\r\n [style]=\"style()\"\r\n [styleClass]=\"styleClass()\"\r\n [autoZIndex]=\"autoZIndex()\"\r\n [baseZIndex]=\"baseZIndex()\"\r\n [showTransitionOptions]=\"showTransitionOptions()\"\r\n [hideTransitionOptions]=\"hideTransitionOptions()\"\r\n [ariaLabel]=\"ariaLabel()\"\r\n [ariaLabelledBy]=\"ariaLabelledBy()\"\r\n [id]=\"id()\"\r\n [tabindex]=\"tabindex()\"\r\n (onShow)=\"onShow.emit($event)\"\r\n (onHide)=\"onHide.emit($event)\"\r\n (onBlur)=\"onBlur.emit($event)\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n>\r\n @if (startTemplate()) {\r\n <ng-template pTemplate=\"start\">\r\n <ng-container *ngTemplateOutlet=\"startTemplate()!\" />\r\n </ng-template>\r\n }\r\n\r\n @if (endTemplate()) {\r\n <ng-template pTemplate=\"end\">\r\n <ng-container *ngTemplateOutlet=\"endTemplate()!\" />\r\n </ng-template>\r\n }\r\n\r\n @if (headerTemplate()) {\r\n <ng-template pTemplate=\"header\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\r\n </ng-template>\r\n }\r\n\r\n @if (submenuHeaderTemplate()) {\r\n <ng-template pTemplate=\"submenuheader\" let-item>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n submenuHeaderTemplate()!;\r\n context: { $implicit: item }\r\n \"\r\n />\r\n </ng-template>\r\n }\r\n\r\n <ng-template pTemplate=\"item\" let-item>\r\n <div\r\n class=\"flex gap-2 align-middle items-center p-2 cursor-pointer rounded transition-colors\"\r\n [class]=\"item.computedClass\"\r\n >\r\n @if (getItemIcon(item)) {\r\n <mt-avatar\r\n [style]=\"getAvatarStyle(getItemColor(item) || 'gray')\"\r\n [icon]=\"getItemIcon(item)!\"\r\n shape=\"square\"\r\n size=\"normal\"\r\n />\r\n }\r\n @if (item.label) {\r\n <span class=\"p-menu-item-label\">{{ item.label }}</span>\r\n }\r\n @if (item.badge) {\r\n <span class=\"p-menu-item-badge\">{{ item.badge }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n</p-menu>\r\n", styles: [":host{display:contents}\n"] }]
126
+ }], propDecorators: { menuRef: [{ type: i0.ViewChild, args: ['menu', { ...{ read: Menu$1 }, isSignal: true }] }], startTemplate: [{ type: i0.ContentChild, args: ['start', { ...{ read: TemplateRef }, isSignal: true }] }], endTemplate: [{ type: i0.ContentChild, args: ['end', { ...{ read: TemplateRef }, isSignal: true }] }], headerTemplate: [{ type: i0.ContentChild, args: ['header', { ...{ read: TemplateRef }, isSignal: true }] }], submenuHeaderTemplate: [{ type: i0.ContentChild, args: ['submenuheader', { ...{
127
+ read: TemplateRef,
128
+ }, isSignal: true }] }], model: [{ type: i0.Input, args: [{ isSignal: true, alias: "model", required: false }] }], popup: [{ type: i0.Input, args: [{ isSignal: true, alias: "popup", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], autoZIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoZIndex", required: false }] }], baseZIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseZIndex", required: false }] }], showTransitionOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTransitionOptions", required: false }] }], hideTransitionOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideTransitionOptions", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledBy", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }], activeItemId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeItemId", required: false }] }, { type: i0.Output, args: ["activeItemIdChange"] }], onShow: [{ type: i0.Output, args: ["onShow"] }], onHide: [{ type: i0.Output, args: ["onHide"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onItemSelect: [{ type: i0.Output, args: ["onItemSelect"] }] } });
129
+
130
+ /**
131
+ * Generated bundle index. Do not edit.
132
+ */
133
+
134
+ export { Menu };
135
+ //# sourceMappingURL=masterteam-components-menu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-menu.mjs","sources":["../../../../packages/masterteam/components/menu/menu.ts","../../../../packages/masterteam/components/menu/menu.html","../../../../packages/masterteam/components/menu/masterteam-components-menu.ts"],"sourcesContent":["import {\r\n Component,\r\n input,\r\n output,\r\n booleanAttribute,\r\n computed,\r\n viewChild,\r\n contentChild,\r\n TemplateRef,\r\n model,\r\n} from '@angular/core';\r\nimport { Menu as PrimeMenu } from 'primeng/menu';\r\nimport { MenuItem, SharedModule } from 'primeng/api';\r\nimport { MTIcon } from '@masterteam/icons';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { ButtonSeverity } from 'primeng/button';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nexport interface MTMenuItem extends Omit<MenuItem, 'icon'> {\r\n icon?: MTIcon;\r\n color?: string;\r\n severity?: ButtonSeverity | 'danger';\r\n styleClass?: string;\r\n id?: string | number;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-menu',\r\n standalone: true,\r\n imports: [PrimeMenu, Avatar, SharedModule, NgTemplateOutlet],\r\n templateUrl: './menu.html',\r\n styleUrls: ['./menu.scss'],\r\n})\r\nexport class Menu {\r\n menuRef = viewChild.required('menu', { read: PrimeMenu });\r\n\r\n readonly startTemplate = contentChild('start', { read: TemplateRef });\r\n readonly endTemplate = contentChild('end', { read: TemplateRef });\r\n readonly headerTemplate = contentChild('header', { read: TemplateRef });\r\n readonly submenuHeaderTemplate = contentChild('submenuheader', {\r\n read: TemplateRef,\r\n });\r\n\r\n readonly model = input<MTMenuItem[]>([]);\r\n readonly popup = input<boolean, unknown>(true, {\r\n transform: booleanAttribute,\r\n });\r\n readonly appendTo = input<any>('body');\r\n readonly style = input<Record<string, any> | null>();\r\n readonly styleClass = input<string>();\r\n readonly autoZIndex = input<boolean, unknown>(true, {\r\n transform: booleanAttribute,\r\n });\r\n readonly baseZIndex = input<number>(0);\r\n readonly showTransitionOptions = input<string>(\r\n '0.12s cubic-bezier(0, 0, 0.2, 1)',\r\n );\r\n readonly hideTransitionOptions = input<string>('0.1s linear');\r\n readonly ariaLabel = input<string>();\r\n readonly ariaLabelledBy = input<string>();\r\n readonly id = input<string>();\r\n readonly tabindex = input<number>(0);\r\n\r\n readonly activeItemId = model<string | number | undefined>();\r\n\r\n readonly onShow = output<any>();\r\n readonly onHide = output<any>();\r\n readonly onBlur = output<Event>();\r\n readonly onFocus = output<Event>();\r\n readonly onItemSelect = output<MTMenuItem>();\r\n\r\n transformedModel = computed(() => {\r\n return this.model().map((item) =>\r\n this.transformMenuItem(item, this.activeItemId()),\r\n );\r\n });\r\n\r\n toggle(event: Event): void {\r\n this.menuRef().toggle(event);\r\n }\r\n\r\n show(event: Event): void {\r\n this.menuRef().show(event);\r\n }\r\n\r\n hide(): void {\r\n this.menuRef().hide();\r\n }\r\n\r\n protected getItemIcon(item: any): MTIcon | undefined {\r\n return item?.mtIcon;\r\n }\r\n\r\n protected getItemColor(item: any): string | undefined {\r\n return item?.mtColor;\r\n }\r\n\r\n protected getAvatarStyle(color: string): Record<string, string> {\r\n if (color.startsWith('#')) {\r\n return {\r\n '--p-avatar-background': color + '1a',\r\n '--p-avatar-color': color,\r\n };\r\n }\r\n return {\r\n '--p-avatar-background': `var(--p-${color}-100)`,\r\n '--p-avatar-color': `var(--p-${color}-700)`,\r\n };\r\n }\r\n\r\n private transformMenuItem(item: MTMenuItem, activeId?: string | number): any {\r\n const transformed: any = { ...item };\r\n\r\n if (item.icon) {\r\n transformed.mtIcon = item.icon;\r\n delete transformed.icon;\r\n }\r\n\r\n if (item.color) {\r\n transformed.mtColor = item.color;\r\n }\r\n\r\n const classes: string[] = [];\r\n const isActive = activeId && item.id && item.id === activeId;\r\n\r\n if (isActive) {\r\n classes.push(\r\n 'bg-primary-50',\r\n 'text-primary-700',\r\n 'dark:bg-primary-900/20',\r\n 'dark:text-primary-300',\r\n );\r\n } else if (item.severity) {\r\n const severityClass = this.getSeverityClass(item.severity);\r\n if (severityClass) {\r\n classes.push(severityClass);\r\n }\r\n }\r\n\r\n if (item.styleClass) {\r\n classes.push(item.styleClass);\r\n }\r\n\r\n transformed.computedClass = classes.join(' ');\r\n\r\n if (item['items']) {\r\n transformed['items'] = item['items'].map((subItem: any) =>\r\n this.transformMenuItem(subItem as MTMenuItem, activeId),\r\n );\r\n }\r\n\r\n const originalCommand = transformed.command;\r\n transformed.command = (event: any) => {\r\n if (item.id) {\r\n this.handleItemSelect(item);\r\n }\r\n\r\n if (originalCommand) {\r\n originalCommand(event);\r\n }\r\n };\r\n\r\n return transformed;\r\n }\r\n\r\n private getSeverityClass(severity: string): string {\r\n const severityMap: Record<string, string> = {\r\n danger: 'text-red-600 hover:bg-red-50 hover:text-red-700',\r\n warn: 'text-yellow-600 hover:bg-yellow-50 hover:text-yellow-700',\r\n success: 'text-green-600 hover:bg-green-50 hover:text-green-700',\r\n info: 'text-blue-600 hover:bg-blue-50 hover:text-blue-700',\r\n help: 'text-purple-600 hover:bg-purple-50 hover:text-purple-700',\r\n secondary: 'text-gray-600 hover:bg-gray-50 hover:text-gray-700',\r\n contrast: 'text-gray-900 hover:bg-gray-100',\r\n };\r\n\r\n return severityMap[severity] || '';\r\n }\r\n\r\n private handleItemSelect(item: MTMenuItem): void {\r\n if (item.id) {\r\n this.activeItemId.set(item.id);\r\n }\r\n this.onItemSelect.emit(item);\r\n }\r\n}\r\n","<p-menu\r\n #menu\r\n [model]=\"transformedModel()\"\r\n [popup]=\"popup()\"\r\n [appendTo]=\"appendTo()\"\r\n [style]=\"style()\"\r\n [styleClass]=\"styleClass()\"\r\n [autoZIndex]=\"autoZIndex()\"\r\n [baseZIndex]=\"baseZIndex()\"\r\n [showTransitionOptions]=\"showTransitionOptions()\"\r\n [hideTransitionOptions]=\"hideTransitionOptions()\"\r\n [ariaLabel]=\"ariaLabel()\"\r\n [ariaLabelledBy]=\"ariaLabelledBy()\"\r\n [id]=\"id()\"\r\n [tabindex]=\"tabindex()\"\r\n (onShow)=\"onShow.emit($event)\"\r\n (onHide)=\"onHide.emit($event)\"\r\n (onBlur)=\"onBlur.emit($event)\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n>\r\n @if (startTemplate()) {\r\n <ng-template pTemplate=\"start\">\r\n <ng-container *ngTemplateOutlet=\"startTemplate()!\" />\r\n </ng-template>\r\n }\r\n\r\n @if (endTemplate()) {\r\n <ng-template pTemplate=\"end\">\r\n <ng-container *ngTemplateOutlet=\"endTemplate()!\" />\r\n </ng-template>\r\n }\r\n\r\n @if (headerTemplate()) {\r\n <ng-template pTemplate=\"header\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\r\n </ng-template>\r\n }\r\n\r\n @if (submenuHeaderTemplate()) {\r\n <ng-template pTemplate=\"submenuheader\" let-item>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n submenuHeaderTemplate()!;\r\n context: { $implicit: item }\r\n \"\r\n />\r\n </ng-template>\r\n }\r\n\r\n <ng-template pTemplate=\"item\" let-item>\r\n <div\r\n class=\"flex gap-2 align-middle items-center p-2 cursor-pointer rounded transition-colors\"\r\n [class]=\"item.computedClass\"\r\n >\r\n @if (getItemIcon(item)) {\r\n <mt-avatar\r\n [style]=\"getAvatarStyle(getItemColor(item) || 'gray')\"\r\n [icon]=\"getItemIcon(item)!\"\r\n shape=\"square\"\r\n size=\"normal\"\r\n />\r\n }\r\n @if (item.label) {\r\n <span class=\"p-menu-item-label\">{{ item.label }}</span>\r\n }\r\n @if (item.badge) {\r\n <span class=\"p-menu-item-badge\">{{ item.badge }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n</p-menu>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PrimeMenu"],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { DrawerService } from '@masterteam/components/dynamic-drawer';
2
+ import { DialogService } from '@masterteam/components/dialog';
3
+ import * as i0 from '@angular/core';
4
+ import { inject, Injectable } from '@angular/core';
5
+ import { Directionality } from '@angular/cdk/bidi';
6
+
7
+ class ModalService {
8
+ drawerService = inject(DrawerService);
9
+ dialogService = inject(DialogService);
10
+ dir = inject(Directionality, { optional: true });
11
+ footerClass = 'mt-modal-footer';
12
+ contentClass = 'mt-modal-content';
13
+ modalConfig;
14
+ openModal(component, modalType, config) {
15
+ let ref;
16
+ if (modalType === 'drawer') {
17
+ config.position = this.handelStartEndPosition(config.position);
18
+ console.log('Opening drawer with config:', config);
19
+ ref = this.drawerService.open(component, config);
20
+ }
21
+ else {
22
+ ref = this.dialogService.open(component, config);
23
+ }
24
+ return ref;
25
+ }
26
+ handelStartEndPosition(position) {
27
+ if (position === 'start') {
28
+ return this.dir?.value === 'rtl' ? 'right' : 'left';
29
+ }
30
+ else if (position === 'end') {
31
+ return this.dir?.value === 'rtl' ? 'left' : 'right';
32
+ }
33
+ else {
34
+ return position || 'right';
35
+ }
36
+ }
37
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: ModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
38
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: ModalService, providedIn: 'root' });
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: ModalService, decorators: [{
41
+ type: Injectable,
42
+ args: [{ providedIn: 'root' }]
43
+ }] });
44
+
45
+ /**
46
+ * Generated bundle index. Do not edit.
47
+ */
48
+
49
+ export { ModalService };
50
+ //# sourceMappingURL=masterteam-components-modal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-modal.mjs","sources":["../../../../packages/masterteam/components/modal/modal.ts","../../../../packages/masterteam/components/modal/masterteam-components-modal.ts"],"sourcesContent":["import {\r\n DynamicDrawerConfigInterface,\r\n DrawerService,\r\n} from '@masterteam/components/dynamic-drawer';\r\nimport {\r\n DynamicDialogConfig,\r\n DialogService,\r\n} from '@masterteam/components/dialog';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Directionality } from '@angular/cdk/bidi'; // Import from Angular CDK\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ModalService {\r\n readonly drawerService: DrawerService = inject(DrawerService);\r\n readonly dialogService: DialogService = inject(DialogService);\r\n private dir = inject(Directionality, { optional: true });\r\n\r\n footerClass: string = 'mt-modal-footer';\r\n contentClass: string = 'mt-modal-content';\r\n modalConfig: any;\r\n\r\n openModal(\r\n component: any,\r\n modalType: 'drawer' | 'dialog',\r\n config: DynamicDialogConfig | DynamicDrawerConfigInterface,\r\n ) {\r\n let ref: any;\r\n if (modalType === 'drawer') {\r\n config.position = this.handelStartEndPosition(config.position);\r\n console.log('Opening drawer with config:', config);\r\n ref = this.drawerService.open(component, config);\r\n } else {\r\n ref = this.dialogService.open(component, config);\r\n }\r\n\r\n return ref;\r\n }\r\n\r\n handelStartEndPosition(position: string | undefined) {\r\n if (position === 'start') {\r\n return this.dir?.value === 'rtl' ? 'right' : 'left';\r\n } else if (position === 'end') {\r\n return this.dir?.value === 'rtl' ? 'left' : 'right';\r\n } else {\r\n return position || 'right';\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAYa,YAAY,CAAA;AACd,IAAA,aAAa,GAAkB,MAAM,CAAC,aAAa,CAAC;AACpD,IAAA,aAAa,GAAkB,MAAM,CAAC,aAAa,CAAC;IACrD,GAAG,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAExD,WAAW,GAAW,iBAAiB;IACvC,YAAY,GAAW,kBAAkB;AACzC,IAAA,WAAW;AAEX,IAAA,SAAS,CACP,SAAc,EACd,SAA8B,EAC9B,MAA0D,EAAA;AAE1D,QAAA,IAAI,GAAQ;AACZ,QAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;YAC1B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9D,YAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC;YAClD,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;QAClD;aAAO;YACL,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;QAClD;AAEA,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,sBAAsB,CAAC,QAA4B,EAAA;AACjD,QAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,GAAG,OAAO,GAAG,MAAM;QACrD;AAAO,aAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO;QACrD;aAAO;YACL,OAAO,QAAQ,IAAI,OAAO;QAC5B;IACF;uGAlCW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA;;2FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACXlC;;AAEG;;;;"}
@@ -0,0 +1,32 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, model, booleanAttribute, output, Component } from '@angular/core';
3
+ import { Card } from '@masterteam/components/card';
4
+ import { ToggleField } from '@masterteam/components/toggle-field';
5
+ import { Button } from '@masterteam/components/button';
6
+ import { Avatar } from '@masterteam/components/avatar';
7
+ import * as i1 from '@angular/forms';
8
+ import { FormsModule } from '@angular/forms';
9
+
10
+ class ModuleSummaryCard {
11
+ icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
12
+ title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
13
+ description = input(...(ngDevMode ? [undefined, { debugName: "description" }] : []));
14
+ active = model(false, ...(ngDevMode ? [{ debugName: "active" }] : []));
15
+ buttonLabel = input('Action', ...(ngDevMode ? [{ debugName: "buttonLabel" }] : []));
16
+ showToggle = input(true, { ...(ngDevMode ? { debugName: "showToggle" } : {}), transform: booleanAttribute });
17
+ showButton = input(true, { ...(ngDevMode ? { debugName: "showButton" } : {}), transform: booleanAttribute });
18
+ onButtonClick = output();
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: ModuleSummaryCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: ModuleSummaryCard, isStandalone: true, selector: "mt-module-summary-card", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, buttonLabel: { classPropertyName: "buttonLabel", publicName: "buttonLabel", isSignal: true, isRequired: false, transformFunction: null }, showToggle: { classPropertyName: "showToggle", publicName: "showToggle", isSignal: true, isRequired: false, transformFunction: null }, showButton: { classPropertyName: "showButton", publicName: "showButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { active: "activeChange", onButtonClick: "onButtonClick" }, ngImport: i0, template: "<mt-card headless class=\"h-full\">\r\n <div class=\"content flex flex-col gap-5 items-center text-center h-full\">\r\n @if (showToggle()) {\r\n <div class=\"flex justify-end w-full\">\r\n <mt-toggle-field [(ngModel)]=\"active\" />\r\n </div>\r\n }\r\n @if (icon()) {\r\n <mt-avatar\r\n style=\"\r\n --p-avatar-background: var(--p-primary-50);\r\n --p-avatar-color: var(--p-primary-color);\r\n \"\r\n [icon]=\"icon()\"\r\n size=\"large\"\r\n shape=\"square\"\r\n ></mt-avatar>\r\n }\r\n <div class=\"flex flex-col gap-1\">\r\n @if (title()) {\r\n <div class=\"title text-lg font-semibold\">\r\n {{ title() }}\r\n </div>\r\n }\r\n @if (description()) {\r\n <div\r\n class=\"description text-sm text-muted-foreground secondary text-surface-500\"\r\n >\r\n {{ description() }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"grow flex flex-col justify-end\">\r\n @if (showButton()) {\r\n <mt-button\r\n label=\"{{ buttonLabel() }}\"\r\n (onClick)=\"onButtonClick.emit($event)\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n</mt-card>\r\n", styles: [""], dependencies: [{ kind: "component", type: Card, selector: "mt-card", inputs: ["class", "title", "paddingless"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "component", type: ToggleField, selector: "mt-toggle-field", inputs: ["label", "labelPosition", "placeholder", "readonly", "pInputs", "required", "toggleShape", "size", "icon", "descriptionCard"], outputs: ["onChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: ModuleSummaryCard, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: 'mt-module-summary-card', standalone: true, imports: [Card, Button, Avatar, ToggleField, FormsModule], template: "<mt-card headless class=\"h-full\">\r\n <div class=\"content flex flex-col gap-5 items-center text-center h-full\">\r\n @if (showToggle()) {\r\n <div class=\"flex justify-end w-full\">\r\n <mt-toggle-field [(ngModel)]=\"active\" />\r\n </div>\r\n }\r\n @if (icon()) {\r\n <mt-avatar\r\n style=\"\r\n --p-avatar-background: var(--p-primary-50);\r\n --p-avatar-color: var(--p-primary-color);\r\n \"\r\n [icon]=\"icon()\"\r\n size=\"large\"\r\n shape=\"square\"\r\n ></mt-avatar>\r\n }\r\n <div class=\"flex flex-col gap-1\">\r\n @if (title()) {\r\n <div class=\"title text-lg font-semibold\">\r\n {{ title() }}\r\n </div>\r\n }\r\n @if (description()) {\r\n <div\r\n class=\"description text-sm text-muted-foreground secondary text-surface-500\"\r\n >\r\n {{ description() }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"grow flex flex-col justify-end\">\r\n @if (showButton()) {\r\n <mt-button\r\n label=\"{{ buttonLabel() }}\"\r\n (onClick)=\"onButtonClick.emit($event)\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n</mt-card>\r\n" }]
25
+ }], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }, { type: i0.Output, args: ["activeChange"] }], buttonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonLabel", required: false }] }], showToggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showToggle", required: false }] }], showButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showButton", required: false }] }], onButtonClick: [{ type: i0.Output, args: ["onButtonClick"] }] } });
26
+
27
+ /**
28
+ * Generated bundle index. Do not edit.
29
+ */
30
+
31
+ export { ModuleSummaryCard };
32
+ //# sourceMappingURL=masterteam-components-module-summary-card.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-module-summary-card.mjs","sources":["../../../../packages/masterteam/components/module-summary-card/module-summary-card.ts","../../../../packages/masterteam/components/module-summary-card/module-summary-card.html","../../../../packages/masterteam/components/module-summary-card/masterteam-components-module-summary-card.ts"],"sourcesContent":["import {\r\n Component,\r\n input,\r\n model,\r\n output,\r\n booleanAttribute,\r\n} from '@angular/core';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { ToggleField } from '@masterteam/components/toggle-field';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MTIcon } from '@masterteam/icons';\r\n\r\n@Component({\r\n selector: 'mt-module-summary-card',\r\n standalone: true,\r\n templateUrl: './module-summary-card.html',\r\n styleUrl: './module-summary-card.scss',\r\n imports: [Card, Button, Avatar, ToggleField, FormsModule],\r\n})\r\nexport class ModuleSummaryCard {\r\n readonly icon = input<MTIcon>();\r\n readonly title = input<string>();\r\n readonly description = input<string>();\r\n readonly active = model<boolean>(false);\r\n readonly buttonLabel = input<string>('Action');\r\n readonly showToggle = input<boolean, unknown>(true, {\r\n transform: booleanAttribute,\r\n });\r\n readonly showButton = input<boolean, unknown>(true, {\r\n transform: booleanAttribute,\r\n });\r\n readonly onButtonClick = output<MouseEvent>();\r\n}\r\n","<mt-card headless class=\"h-full\">\r\n <div class=\"content flex flex-col gap-5 items-center text-center h-full\">\r\n @if (showToggle()) {\r\n <div class=\"flex justify-end w-full\">\r\n <mt-toggle-field [(ngModel)]=\"active\" />\r\n </div>\r\n }\r\n @if (icon()) {\r\n <mt-avatar\r\n style=\"\r\n --p-avatar-background: var(--p-primary-50);\r\n --p-avatar-color: var(--p-primary-color);\r\n \"\r\n [icon]=\"icon()\"\r\n size=\"large\"\r\n shape=\"square\"\r\n ></mt-avatar>\r\n }\r\n <div class=\"flex flex-col gap-1\">\r\n @if (title()) {\r\n <div class=\"title text-lg font-semibold\">\r\n {{ title() }}\r\n </div>\r\n }\r\n @if (description()) {\r\n <div\r\n class=\"description text-sm text-muted-foreground secondary text-surface-500\"\r\n >\r\n {{ description() }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"grow flex flex-col justify-end\">\r\n @if (showButton()) {\r\n <mt-button\r\n label=\"{{ buttonLabel() }}\"\r\n (onClick)=\"onButtonClick.emit($event)\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n</mt-card>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { input, booleanAttribute, contentChild, output, signal, computed, Component } from '@angular/core';
4
+ import { Avatar } from '@masterteam/components/avatar';
5
+ import { Button } from '@masterteam/components/button';
6
+ import { Tabs } from '@masterteam/components/tabs';
7
+
8
+ class PageHeader {
9
+ backButton = input(false, { ...(ngDevMode ? { debugName: "backButton" } : {}), transform: booleanAttribute });
10
+ backButtonIcon = input('arrow', ...(ngDevMode ? [{ debugName: "backButtonIcon" }] : []));
11
+ avatarIcon = input(...(ngDevMode ? [undefined, { debugName: "avatarIcon" }] : []));
12
+ avatarStyle = input({}, ...(ngDevMode ? [{ debugName: "avatarStyle" }] : []));
13
+ avatarShape = input('square', ...(ngDevMode ? [{ debugName: "avatarShape" }] : []));
14
+ title = input.required(...(ngDevMode ? [{ debugName: "title" }] : []));
15
+ tabs = input([], ...(ngDevMode ? [{ debugName: "tabs" }] : []));
16
+ activeTab = input(...(ngDevMode ? [undefined, { debugName: "activeTab" }] : []));
17
+ titleEnd = contentChild('titleEnd', ...(ngDevMode ? [{ debugName: "titleEnd" }] : []));
18
+ headerEnd = contentChild('headerEnd', ...(ngDevMode ? [{ debugName: "headerEnd" }] : []));
19
+ backButtonClick = output();
20
+ tabChange = output();
21
+ rtl = signal(document.documentElement.dir === 'rtl', ...(ngDevMode ? [{ debugName: "rtl" }] : []));
22
+ backIcon = computed(() => {
23
+ if (this.backButtonIcon() === 'close') {
24
+ return 'general.x-close';
25
+ }
26
+ return this.rtl() ? 'arrow.arrow-narrow-right' : 'arrow.arrow-narrow-left';
27
+ }, ...(ngDevMode ? [{ debugName: "backIcon" }] : []));
28
+ hasTabs = computed(() => this.tabs().length > 0, ...(ngDevMode ? [{ debugName: "hasTabs" }] : []));
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: PageHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: PageHeader, isStandalone: true, selector: "mt-page-header", inputs: { backButton: { classPropertyName: "backButton", publicName: "backButton", isSignal: true, isRequired: false, transformFunction: null }, backButtonIcon: { classPropertyName: "backButtonIcon", publicName: "backButtonIcon", isSignal: true, isRequired: false, transformFunction: null }, avatarIcon: { classPropertyName: "avatarIcon", publicName: "avatarIcon", isSignal: true, isRequired: false, transformFunction: null }, avatarStyle: { classPropertyName: "avatarStyle", publicName: "avatarStyle", isSignal: true, isRequired: false, transformFunction: null }, avatarShape: { classPropertyName: "avatarShape", publicName: "avatarShape", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: false, transformFunction: null }, activeTab: { classPropertyName: "activeTab", publicName: "activeTab", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backButtonClick: "backButtonClick", tabChange: "tabChange" }, queries: [{ propertyName: "titleEnd", first: true, predicate: ["titleEnd"], descendants: true, isSignal: true }, { propertyName: "headerEnd", first: true, predicate: ["headerEnd"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\r\n class=\"grid grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center gap-3 bg-content p-3 border-b border-surface min-h-18.5 max-[1025px]:flex max-[1025px]:flex-wrap max-[1025px]:items-center\"\r\n>\r\n <div class=\"flex min-w-0 items-center gap-2 max-[1025px]:flex-wrap\">\r\n @if (backButton()) {\r\n <mt-button\r\n [text]=\"true\"\r\n [icon]=\"backIcon()\"\r\n size=\"large\"\r\n (click)=\"backButtonClick.emit()\"\r\n >\r\n </mt-button>\r\n }\r\n\r\n @if (avatarIcon()) {\r\n <mt-avatar\r\n [icon]=\"avatarIcon()\"\r\n [shape]=\"avatarShape()\"\r\n [style]=\"avatarStyle()\"\r\n >\r\n </mt-avatar>\r\n }\r\n\r\n <h3 class=\"min-w-0 truncate font-bold text-lg\">{{ title() }}</h3>\r\n\r\n @if (titleEnd(); as template) {\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n }\r\n </div>\r\n\r\n @if (hasTabs()) {\r\n <div class=\"min-w-0 justify-self-center\">\r\n <div class=\"min-w-0 max-[1025px]:overflow-x-auto\">\r\n <mt-tabs\r\n class=\"max-[1025px]:min-w-max\"\r\n [options]=\"tabs()\"\r\n [active]=\"activeTab()\"\r\n size=\"large\"\r\n (onChange)=\"tabChange.emit($event)\"\r\n >\r\n </mt-tabs>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"min-w-0 justify-self-end min-[1025px]:col-start-3 min-[1025px]:col-end-4 max-[1025px]:ml-auto\"\r\n >\r\n @if (headerEnd(); as template) {\r\n <div class=\"flex gap-2 max-[1025px]:flex-wrap justify-end\">\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: Tabs, selector: "mt-tabs", inputs: ["options", "optionLabel", "optionValue", "active", "size", "fluid", "disabled"], outputs: ["activeChange", "onChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: PageHeader, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'mt-page-header', standalone: true, imports: [Avatar, Button, Tabs, NgTemplateOutlet], template: "<div\r\n class=\"grid grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center gap-3 bg-content p-3 border-b border-surface min-h-18.5 max-[1025px]:flex max-[1025px]:flex-wrap max-[1025px]:items-center\"\r\n>\r\n <div class=\"flex min-w-0 items-center gap-2 max-[1025px]:flex-wrap\">\r\n @if (backButton()) {\r\n <mt-button\r\n [text]=\"true\"\r\n [icon]=\"backIcon()\"\r\n size=\"large\"\r\n (click)=\"backButtonClick.emit()\"\r\n >\r\n </mt-button>\r\n }\r\n\r\n @if (avatarIcon()) {\r\n <mt-avatar\r\n [icon]=\"avatarIcon()\"\r\n [shape]=\"avatarShape()\"\r\n [style]=\"avatarStyle()\"\r\n >\r\n </mt-avatar>\r\n }\r\n\r\n <h3 class=\"min-w-0 truncate font-bold text-lg\">{{ title() }}</h3>\r\n\r\n @if (titleEnd(); as template) {\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n }\r\n </div>\r\n\r\n @if (hasTabs()) {\r\n <div class=\"min-w-0 justify-self-center\">\r\n <div class=\"min-w-0 max-[1025px]:overflow-x-auto\">\r\n <mt-tabs\r\n class=\"max-[1025px]:min-w-max\"\r\n [options]=\"tabs()\"\r\n [active]=\"activeTab()\"\r\n size=\"large\"\r\n (onChange)=\"tabChange.emit($event)\"\r\n >\r\n </mt-tabs>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"min-w-0 justify-self-end min-[1025px]:col-start-3 min-[1025px]:col-end-4 max-[1025px]:ml-auto\"\r\n >\r\n @if (headerEnd(); as template) {\r\n <div class=\"flex gap-2 max-[1025px]:flex-wrap justify-end\">\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n" }]
35
+ }], propDecorators: { backButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "backButton", required: false }] }], backButtonIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "backButtonIcon", required: false }] }], avatarIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarIcon", required: false }] }], avatarStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarStyle", required: false }] }], avatarShape: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarShape", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], tabs: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabs", required: false }] }], activeTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeTab", required: false }] }], titleEnd: [{ type: i0.ContentChild, args: ['titleEnd', { isSignal: true }] }], headerEnd: [{ type: i0.ContentChild, args: ['headerEnd', { isSignal: true }] }], backButtonClick: [{ type: i0.Output, args: ["backButtonClick"] }], tabChange: [{ type: i0.Output, args: ["tabChange"] }] } });
36
+
37
+ /**
38
+ * Generated bundle index. Do not edit.
39
+ */
40
+
41
+ export { PageHeader };
42
+ //# sourceMappingURL=masterteam-components-page-header.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-page-header.mjs","sources":["../../../../packages/masterteam/components/page-header/page-header.ts","../../../../packages/masterteam/components/page-header/page-header.html","../../../../packages/masterteam/components/page-header/masterteam-components-page-header.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n input,\r\n output,\r\n computed,\r\n contentChild,\r\n TemplateRef,\r\n signal,\r\n booleanAttribute,\r\n} from '@angular/core';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { MTIcon } from '@masterteam/icons';\r\n\r\nexport interface PageHeaderTab {\r\n label: string;\r\n value: string | number;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-page-header',\r\n standalone: true,\r\n imports: [Avatar, Button, Tabs, NgTemplateOutlet],\r\n templateUrl: './page-header.html',\r\n})\r\nexport class PageHeader {\r\n backButton = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n backButtonIcon = input<'arrow' | 'close'>('arrow');\r\n avatarIcon = input<MTIcon>();\r\n avatarStyle = input<Record<string, string>>({});\r\n avatarShape = input<'circle' | 'square'>('square');\r\n title = input.required<string>();\r\n tabs = input<PageHeaderTab[]>([]);\r\n activeTab = input<string | number>();\r\n\r\n titleEnd = contentChild<TemplateRef<any>>('titleEnd');\r\n headerEnd = contentChild<TemplateRef<any>>('headerEnd');\r\n\r\n backButtonClick = output<void>();\r\n tabChange = output<string | number>();\r\n\r\n rtl = signal<boolean>(document.documentElement.dir === 'rtl');\r\n\r\n backIcon = computed(() => {\r\n if (this.backButtonIcon() === 'close') {\r\n return 'general.x-close';\r\n }\r\n return this.rtl() ? 'arrow.arrow-narrow-right' : 'arrow.arrow-narrow-left';\r\n });\r\n\r\n hasTabs = computed(() => this.tabs().length > 0);\r\n}\r\n","<div\r\n class=\"grid grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center gap-3 bg-content p-3 border-b border-surface min-h-18.5 max-[1025px]:flex max-[1025px]:flex-wrap max-[1025px]:items-center\"\r\n>\r\n <div class=\"flex min-w-0 items-center gap-2 max-[1025px]:flex-wrap\">\r\n @if (backButton()) {\r\n <mt-button\r\n [text]=\"true\"\r\n [icon]=\"backIcon()\"\r\n size=\"large\"\r\n (click)=\"backButtonClick.emit()\"\r\n >\r\n </mt-button>\r\n }\r\n\r\n @if (avatarIcon()) {\r\n <mt-avatar\r\n [icon]=\"avatarIcon()\"\r\n [shape]=\"avatarShape()\"\r\n [style]=\"avatarStyle()\"\r\n >\r\n </mt-avatar>\r\n }\r\n\r\n <h3 class=\"min-w-0 truncate font-bold text-lg\">{{ title() }}</h3>\r\n\r\n @if (titleEnd(); as template) {\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n }\r\n </div>\r\n\r\n @if (hasTabs()) {\r\n <div class=\"min-w-0 justify-self-center\">\r\n <div class=\"min-w-0 max-[1025px]:overflow-x-auto\">\r\n <mt-tabs\r\n class=\"max-[1025px]:min-w-max\"\r\n [options]=\"tabs()\"\r\n [active]=\"activeTab()\"\r\n size=\"large\"\r\n (onChange)=\"tabChange.emit($event)\"\r\n >\r\n </mt-tabs>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"min-w-0 justify-self-end min-[1025px]:col-start-3 min-[1025px]:col-end-4 max-[1025px]:ml-auto\"\r\n >\r\n @if (headerEnd(); as template) {\r\n <div class=\"flex gap-2 max-[1025px]:flex-wrap justify-end\">\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}