uni-component-tw 2.1.22 → 2.1.24

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.
@@ -185,8 +185,6 @@ class UNISideMenuComponent {
185
185
  constructor() {
186
186
  /* Service */
187
187
  this.elementRef = inject(ElementRef);
188
- this.router = inject(Router);
189
- this.authService = inject(UNIAuthService);
190
188
  this.translateService = inject(UNITranslateService);
191
189
  this.loaderService = inject(UNILoaderService);
192
190
  /* Input */
@@ -194,6 +192,8 @@ class UNISideMenuComponent {
194
192
  this.menuItems = input([]);
195
193
  this.menuInteractions = input([]);
196
194
  this.user = input.required();
195
+ this.onLogin = input();
196
+ this.onLogout = input();
197
197
  /* Output */
198
198
  this.evtToggleMenu = output();
199
199
  /* Variables */
@@ -228,19 +228,8 @@ class UNISideMenuComponent {
228
228
  this.translateService.setLocale(e.value);
229
229
  window.location.reload();
230
230
  }
231
- goToLogin() {
232
- this.evtToggleMenu.emit(false);
233
- this.router.navigate(['login']);
234
- }
235
- logout() {
236
- this.authService.logout$().subscribe(() => {
237
- const firstItem = this.menuItems().find((item) => item.visible && !item.disabled);
238
- this.evtToggleMenu.emit(false);
239
- this.router.navigate([firstItem?.path ?? 'login']);
240
- });
241
- }
242
231
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: UNISideMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
243
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.6", type: UNISideMenuComponent, isStandalone: true, selector: "uni-side-menu", inputs: { pathUnitecLogo: { classPropertyName: "pathUnitecLogo", publicName: "pathUnitecLogo", isSignal: true, isRequired: true, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null }, menuInteractions: { classPropertyName: "menuInteractions", publicName: "menuInteractions", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { evtToggleMenu: "evtToggleMenu" }, host: { listeners: { "document:click": "onClickOutside($event)" } }, ngImport: i0, template: "<aside\r\n class=\"dark:bg-dx-dark-600/50 flex h-screen w-[80vw] max-w-[300px] flex-col gap-6 overflow-hidden rounded-l bg-sky-600/50 p-4 shadow backdrop-blur-xl\">\r\n <!-- user -->\r\n <div class=\"flex w-full items-center gap-4\">\r\n <div class=\"flex flex-1 gap-2\">\r\n @if (user(); as user) {\r\n <fa-icon [icon]=\"ICON.USER\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ user.username }}</span>\r\n }\r\n </div>\r\n <dx-button [icon]=\"'close'\" (onClick)=\"evtToggleMenu.emit(false)\"></dx-button>\r\n </div>\r\n\r\n <div class=\"flex flex-1 flex-col overflow-x-hidden overflow-y-auto\">\r\n <!-- menu -->\r\n @if (menuItems().length) {\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuItems(); track item.id) {\r\n @if (item.visible !== false) {\r\n <li>\r\n <a\r\n class=\"flex h-10 items-center gap-2 rounded p-2 !text-white\"\r\n [ngClass]=\"{\r\n 'border border-red-500/60 bg-red-500/40 shadow-inner hover:bg-red-500/60':\r\n !!item.badge,\r\n 'hover:bg-sky-600/50 dark:hover:bg-zinc-600/50': !item.disabled && !item.badge,\r\n 'cursor-not-allowed !opacity-25': item.disabled,\r\n }\"\r\n [routerLink]=\"item.disabled ? null : item.path\"\r\n [routerLinkActive]=\"\r\n item.badge ? 'bg-red-500/60' : 'dark:bg-zinc-600/50 bg-sky-600/50'\r\n \"\r\n (click)=\"evtToggleMenu.emit(false)\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n @if (item.badge) {\r\n <div\r\n class=\"menu-item-notification center h-6 w-6 animate-pulse rounded bg-red-500 shadow-inner\">\r\n <fa-icon [icon]=\"ICON.NOTIFICATION\"></fa-icon>\r\n </div>\r\n }\r\n </a>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n @if (menuInteractions().length) {\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuInteractions(); track item.id) {\r\n @if (item.data.type === 'button') {\r\n <li class=\"item-setting-button\">\r\n <button\r\n type=\"button\"\r\n class=\"dx-theme-material-typography flex h-12 w-full items-center gap-2 rounded p-4\"\r\n [class]=\"item.class\"\r\n (click)=\"item.data.onClick()\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.data.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n </button>\r\n </li>\r\n } @else if (item.data.type === 'select') {\r\n <li\r\n class=\"flex h-12 items-center gap-4 rounded bg-sky-600/50 p-3 shadow dark:bg-zinc-600/50\">\r\n <span class=\"truncate\">{{ item.label }}</span>\r\n <dx-select-box\r\n class=\"flex-1 basis-30\"\r\n valueExpr=\"id\"\r\n displayExpr=\"description\"\r\n [items]=\"item.data.combos\"\r\n [value]=\"item.data.value\"\r\n stylingMode=\"underlined\"\r\n placeholder=\"\"\r\n (onValueChanged)=\"item.data.onValueChanged($event)\"></dx-select-box>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n <!-- setting -->\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblDarkMode' | translate }}</span>\r\n <dx-switch [value]=\"darkMode()\" (onValueChanged)=\"updateTheme($event)\"></dx-switch>\r\n </li>\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"ICON.LANGUAGE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblLanguage' | translate }}</span>\r\n <dx-select-box\r\n class=\"basis-30\"\r\n [items]=\"translateService.translateInfo().localesSupported\"\r\n [value]=\"translateService.translateInfo().locale\"\r\n stylingMode=\"underlined\"\r\n (onValueChanged)=\"updateLocale($event)\"></dx-select-box>\r\n </li>\r\n <!-- User | null | undefined -->\r\n @if (user() !== undefined) {\r\n <li>\r\n <button\r\n class=\"flex w-full items-center gap-2 rounded border border-white p-4 text-white shadow transition duration-300 ease-in-out hover:bg-white hover:text-gray-800\"\r\n (click)=\"user() ? logout() : goToLogin()\">\r\n <fa-icon [icon]=\"user() ? ICON.LOGOUT : ICON.LOGIN\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{\r\n (user() ? 'lblLogout' : 'lblLogin') | translate\r\n }}</span>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n <!-- logo -->\r\n <div class=\"mt-auto flex content-end border-b border-white\">\r\n <img\r\n class=\"mb-1 ml-auto h-8 w-min\"\r\n [ngSrc]=\"pathUnitecLogo()\"\r\n alt=\"Brand logo\"\r\n [height]=\"32\"\r\n [width]=\"88\" />\r\n </div>\r\n</aside>\r\n", styles: [":host{position:fixed;top:0;right:0;z-index:999}:host ::ng-deep input.dx-texteditor-input{padding:2px 0!important;color:#fff!important}:host ::ng-deep .dx-dropdowneditor-icon{color:#fff}:host ::ng-deep .dx-texteditor.dx-editor-underlined:after{border-color:#fff!important}@media (max-resolution: 1.25dppx){:host ::ng-deep .menu-item-notification fa-icon{height:12px;font-size:12px}}@media (max-resolution: 1dppx){:host ::ng-deep .menu-item-notification fa-icon{height:10px;font-size:10px}}\n", "@tailwind base;@tailwind components;@tailwind utilities;\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "ngmodule", type: DxSelectBoxModule }, { kind: "component", type: i3.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "ngmodule", type: DxSwitchModule }, { kind: "component", type: i4.DxSwitchComponent, selector: "dx-switch", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "isDirty", "isValid", "name", "readOnly", "rtlEnabled", "switchedOffText", "switchedOnText", "tabIndex", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "isDirtyChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "switchedOffTextChange", "switchedOnTextChange", "tabIndexChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "pipe", type: UNITranslatePipe, name: "translate" }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
232
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.6", type: UNISideMenuComponent, isStandalone: true, selector: "uni-side-menu", inputs: { pathUnitecLogo: { classPropertyName: "pathUnitecLogo", publicName: "pathUnitecLogo", isSignal: true, isRequired: true, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null }, menuInteractions: { classPropertyName: "menuInteractions", publicName: "menuInteractions", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null }, onLogin: { classPropertyName: "onLogin", publicName: "onLogin", isSignal: true, isRequired: false, transformFunction: null }, onLogout: { classPropertyName: "onLogout", publicName: "onLogout", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { evtToggleMenu: "evtToggleMenu" }, host: { listeners: { "document:click": "onClickOutside($event)" } }, ngImport: i0, template: "<aside\r\n class=\"dark:bg-dx-dark-600/50 flex h-screen w-[80vw] max-w-[300px] flex-col gap-6 overflow-hidden rounded-l bg-sky-600/50 p-4 shadow backdrop-blur-xl\">\r\n <!-- user -->\r\n <div class=\"flex w-full items-center gap-4\">\r\n <div class=\"flex flex-1 gap-2\">\r\n @if (user(); as user) {\r\n <fa-icon [icon]=\"ICON.USER\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ user.username }}</span>\r\n }\r\n </div>\r\n <dx-button [icon]=\"'close'\" (onClick)=\"evtToggleMenu.emit(false)\"></dx-button>\r\n </div>\r\n\r\n <div class=\"flex flex-1 flex-col overflow-x-hidden overflow-y-auto\">\r\n <!-- menu -->\r\n @if (menuItems().length) {\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuItems(); track item.id) {\r\n @if (item.visible !== false) {\r\n <li>\r\n <a\r\n class=\"flex h-10 items-center gap-2 rounded p-2 !text-white\"\r\n [ngClass]=\"{\r\n 'border border-red-500/60 bg-red-500/40 shadow-inner hover:bg-red-500/60':\r\n !!item.badge,\r\n 'hover:bg-sky-600/50 dark:hover:bg-zinc-600/50': !item.disabled && !item.badge,\r\n 'cursor-not-allowed !opacity-25': item.disabled,\r\n }\"\r\n [routerLink]=\"item.disabled ? null : item.path\"\r\n [routerLinkActive]=\"\r\n item.badge ? 'bg-red-500/60' : 'dark:bg-zinc-600/50 bg-sky-600/50'\r\n \"\r\n (click)=\"evtToggleMenu.emit(false)\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n @if (item.badge) {\r\n <div\r\n class=\"menu-item-notification center h-6 w-6 animate-pulse rounded bg-red-500 shadow-inner\">\r\n <fa-icon [icon]=\"ICON.NOTIFICATION\"></fa-icon>\r\n </div>\r\n }\r\n </a>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n @if (menuInteractions().length) {\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuInteractions(); track item.id) {\r\n @if (item.data.type === 'button') {\r\n <li class=\"item-setting-button\">\r\n <button\r\n type=\"button\"\r\n class=\"dx-theme-material-typography flex h-12 w-full items-center gap-2 rounded p-4\"\r\n [class]=\"item.class\"\r\n (click)=\"item.data.onClick()\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.data.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n </button>\r\n </li>\r\n } @else if (item.data.type === 'select') {\r\n <li\r\n class=\"flex h-12 items-center gap-4 rounded bg-sky-600/50 p-3 shadow dark:bg-zinc-600/50\">\r\n <span class=\"truncate\">{{ item.label }}</span>\r\n <dx-select-box\r\n class=\"flex-1 basis-30\"\r\n valueExpr=\"id\"\r\n displayExpr=\"description\"\r\n [items]=\"item.data.combos\"\r\n [value]=\"item.data.value\"\r\n stylingMode=\"underlined\"\r\n placeholder=\"\"\r\n (onValueChanged)=\"item.data.onValueChanged($event)\"></dx-select-box>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n <!-- setting -->\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblDarkMode' | translate }}</span>\r\n <dx-switch [value]=\"darkMode()\" (onValueChanged)=\"updateTheme($event)\"></dx-switch>\r\n </li>\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"ICON.LANGUAGE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblLanguage' | translate }}</span>\r\n <dx-select-box\r\n class=\"basis-30\"\r\n [items]=\"translateService.translateInfo()?.localesSupported ?? []\"\r\n [value]=\"translateService.translateInfo()?.locale\"\r\n stylingMode=\"underlined\"\r\n (onValueChanged)=\"updateLocale($event)\"></dx-select-box>\r\n </li>\r\n\r\n <!-- User | null | undefined -->\r\n @if (user() !== undefined) {\r\n <li>\r\n <button\r\n class=\"flex w-full items-center gap-2 rounded border border-white p-4 text-white shadow transition duration-300 ease-in-out hover:bg-white hover:text-gray-800\"\r\n (click)=\"user() ? onLogout() : onLogout()\">\r\n <fa-icon [icon]=\"user() ? ICON.LOGOUT : ICON.LOGIN\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{\r\n (user() ? 'lblLogout' : 'lblLogin') | translate\r\n }}</span>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n <!-- logo -->\r\n <div class=\"mt-auto flex content-end border-b border-white\">\r\n <img\r\n class=\"mb-1 ml-auto h-8 w-min\"\r\n [ngSrc]=\"pathUnitecLogo()\"\r\n alt=\"Brand logo\"\r\n [height]=\"32\"\r\n [width]=\"88\" />\r\n </div>\r\n</aside>\r\n", styles: [":host{position:fixed;top:0;right:0;z-index:999}:host ::ng-deep input.dx-texteditor-input{padding:2px 0!important;color:#fff!important}:host ::ng-deep .dx-dropdowneditor-icon{color:#fff}:host ::ng-deep .dx-texteditor.dx-editor-underlined:after{border-color:#fff!important}@media (max-resolution: 1.25dppx){:host ::ng-deep .menu-item-notification fa-icon{height:12px;font-size:12px}}@media (max-resolution: 1dppx){:host ::ng-deep .menu-item-notification fa-icon{height:10px;font-size:10px}}\n", "@tailwind base;@tailwind components;@tailwind utilities;\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "ngmodule", type: DxSelectBoxModule }, { kind: "component", type: i3.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "ngmodule", type: DxSwitchModule }, { kind: "component", type: i4.DxSwitchComponent, selector: "dx-switch", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "isDirty", "isValid", "name", "readOnly", "rtlEnabled", "switchedOffText", "switchedOnText", "tabIndex", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "isDirtyChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "switchedOffTextChange", "switchedOnTextChange", "tabIndexChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "pipe", type: UNITranslatePipe, name: "translate" }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
244
233
  }
245
234
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: UNISideMenuComponent, decorators: [{
246
235
  type: Component,
@@ -254,7 +243,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
254
243
  UNITranslatePipe,
255
244
  FaIconComponent,
256
245
  NgOptimizedImage,
257
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<aside\r\n class=\"dark:bg-dx-dark-600/50 flex h-screen w-[80vw] max-w-[300px] flex-col gap-6 overflow-hidden rounded-l bg-sky-600/50 p-4 shadow backdrop-blur-xl\">\r\n <!-- user -->\r\n <div class=\"flex w-full items-center gap-4\">\r\n <div class=\"flex flex-1 gap-2\">\r\n @if (user(); as user) {\r\n <fa-icon [icon]=\"ICON.USER\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ user.username }}</span>\r\n }\r\n </div>\r\n <dx-button [icon]=\"'close'\" (onClick)=\"evtToggleMenu.emit(false)\"></dx-button>\r\n </div>\r\n\r\n <div class=\"flex flex-1 flex-col overflow-x-hidden overflow-y-auto\">\r\n <!-- menu -->\r\n @if (menuItems().length) {\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuItems(); track item.id) {\r\n @if (item.visible !== false) {\r\n <li>\r\n <a\r\n class=\"flex h-10 items-center gap-2 rounded p-2 !text-white\"\r\n [ngClass]=\"{\r\n 'border border-red-500/60 bg-red-500/40 shadow-inner hover:bg-red-500/60':\r\n !!item.badge,\r\n 'hover:bg-sky-600/50 dark:hover:bg-zinc-600/50': !item.disabled && !item.badge,\r\n 'cursor-not-allowed !opacity-25': item.disabled,\r\n }\"\r\n [routerLink]=\"item.disabled ? null : item.path\"\r\n [routerLinkActive]=\"\r\n item.badge ? 'bg-red-500/60' : 'dark:bg-zinc-600/50 bg-sky-600/50'\r\n \"\r\n (click)=\"evtToggleMenu.emit(false)\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n @if (item.badge) {\r\n <div\r\n class=\"menu-item-notification center h-6 w-6 animate-pulse rounded bg-red-500 shadow-inner\">\r\n <fa-icon [icon]=\"ICON.NOTIFICATION\"></fa-icon>\r\n </div>\r\n }\r\n </a>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n @if (menuInteractions().length) {\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuInteractions(); track item.id) {\r\n @if (item.data.type === 'button') {\r\n <li class=\"item-setting-button\">\r\n <button\r\n type=\"button\"\r\n class=\"dx-theme-material-typography flex h-12 w-full items-center gap-2 rounded p-4\"\r\n [class]=\"item.class\"\r\n (click)=\"item.data.onClick()\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.data.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n </button>\r\n </li>\r\n } @else if (item.data.type === 'select') {\r\n <li\r\n class=\"flex h-12 items-center gap-4 rounded bg-sky-600/50 p-3 shadow dark:bg-zinc-600/50\">\r\n <span class=\"truncate\">{{ item.label }}</span>\r\n <dx-select-box\r\n class=\"flex-1 basis-30\"\r\n valueExpr=\"id\"\r\n displayExpr=\"description\"\r\n [items]=\"item.data.combos\"\r\n [value]=\"item.data.value\"\r\n stylingMode=\"underlined\"\r\n placeholder=\"\"\r\n (onValueChanged)=\"item.data.onValueChanged($event)\"></dx-select-box>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n <!-- setting -->\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblDarkMode' | translate }}</span>\r\n <dx-switch [value]=\"darkMode()\" (onValueChanged)=\"updateTheme($event)\"></dx-switch>\r\n </li>\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"ICON.LANGUAGE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblLanguage' | translate }}</span>\r\n <dx-select-box\r\n class=\"basis-30\"\r\n [items]=\"translateService.translateInfo().localesSupported\"\r\n [value]=\"translateService.translateInfo().locale\"\r\n stylingMode=\"underlined\"\r\n (onValueChanged)=\"updateLocale($event)\"></dx-select-box>\r\n </li>\r\n <!-- User | null | undefined -->\r\n @if (user() !== undefined) {\r\n <li>\r\n <button\r\n class=\"flex w-full items-center gap-2 rounded border border-white p-4 text-white shadow transition duration-300 ease-in-out hover:bg-white hover:text-gray-800\"\r\n (click)=\"user() ? logout() : goToLogin()\">\r\n <fa-icon [icon]=\"user() ? ICON.LOGOUT : ICON.LOGIN\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{\r\n (user() ? 'lblLogout' : 'lblLogin') | translate\r\n }}</span>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n <!-- logo -->\r\n <div class=\"mt-auto flex content-end border-b border-white\">\r\n <img\r\n class=\"mb-1 ml-auto h-8 w-min\"\r\n [ngSrc]=\"pathUnitecLogo()\"\r\n alt=\"Brand logo\"\r\n [height]=\"32\"\r\n [width]=\"88\" />\r\n </div>\r\n</aside>\r\n", styles: [":host{position:fixed;top:0;right:0;z-index:999}:host ::ng-deep input.dx-texteditor-input{padding:2px 0!important;color:#fff!important}:host ::ng-deep .dx-dropdowneditor-icon{color:#fff}:host ::ng-deep .dx-texteditor.dx-editor-underlined:after{border-color:#fff!important}@media (max-resolution: 1.25dppx){:host ::ng-deep .menu-item-notification fa-icon{height:12px;font-size:12px}}@media (max-resolution: 1dppx){:host ::ng-deep .menu-item-notification fa-icon{height:10px;font-size:10px}}\n", "@tailwind base;@tailwind components;@tailwind utilities;\n"] }]
246
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<aside\r\n class=\"dark:bg-dx-dark-600/50 flex h-screen w-[80vw] max-w-[300px] flex-col gap-6 overflow-hidden rounded-l bg-sky-600/50 p-4 shadow backdrop-blur-xl\">\r\n <!-- user -->\r\n <div class=\"flex w-full items-center gap-4\">\r\n <div class=\"flex flex-1 gap-2\">\r\n @if (user(); as user) {\r\n <fa-icon [icon]=\"ICON.USER\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ user.username }}</span>\r\n }\r\n </div>\r\n <dx-button [icon]=\"'close'\" (onClick)=\"evtToggleMenu.emit(false)\"></dx-button>\r\n </div>\r\n\r\n <div class=\"flex flex-1 flex-col overflow-x-hidden overflow-y-auto\">\r\n <!-- menu -->\r\n @if (menuItems().length) {\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuItems(); track item.id) {\r\n @if (item.visible !== false) {\r\n <li>\r\n <a\r\n class=\"flex h-10 items-center gap-2 rounded p-2 !text-white\"\r\n [ngClass]=\"{\r\n 'border border-red-500/60 bg-red-500/40 shadow-inner hover:bg-red-500/60':\r\n !!item.badge,\r\n 'hover:bg-sky-600/50 dark:hover:bg-zinc-600/50': !item.disabled && !item.badge,\r\n 'cursor-not-allowed !opacity-25': item.disabled,\r\n }\"\r\n [routerLink]=\"item.disabled ? null : item.path\"\r\n [routerLinkActive]=\"\r\n item.badge ? 'bg-red-500/60' : 'dark:bg-zinc-600/50 bg-sky-600/50'\r\n \"\r\n (click)=\"evtToggleMenu.emit(false)\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n @if (item.badge) {\r\n <div\r\n class=\"menu-item-notification center h-6 w-6 animate-pulse rounded bg-red-500 shadow-inner\">\r\n <fa-icon [icon]=\"ICON.NOTIFICATION\"></fa-icon>\r\n </div>\r\n }\r\n </a>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n @if (menuInteractions().length) {\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuInteractions(); track item.id) {\r\n @if (item.data.type === 'button') {\r\n <li class=\"item-setting-button\">\r\n <button\r\n type=\"button\"\r\n class=\"dx-theme-material-typography flex h-12 w-full items-center gap-2 rounded p-4\"\r\n [class]=\"item.class\"\r\n (click)=\"item.data.onClick()\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.data.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n </button>\r\n </li>\r\n } @else if (item.data.type === 'select') {\r\n <li\r\n class=\"flex h-12 items-center gap-4 rounded bg-sky-600/50 p-3 shadow dark:bg-zinc-600/50\">\r\n <span class=\"truncate\">{{ item.label }}</span>\r\n <dx-select-box\r\n class=\"flex-1 basis-30\"\r\n valueExpr=\"id\"\r\n displayExpr=\"description\"\r\n [items]=\"item.data.combos\"\r\n [value]=\"item.data.value\"\r\n stylingMode=\"underlined\"\r\n placeholder=\"\"\r\n (onValueChanged)=\"item.data.onValueChanged($event)\"></dx-select-box>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n <!-- setting -->\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblDarkMode' | translate }}</span>\r\n <dx-switch [value]=\"darkMode()\" (onValueChanged)=\"updateTheme($event)\"></dx-switch>\r\n </li>\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"ICON.LANGUAGE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblLanguage' | translate }}</span>\r\n <dx-select-box\r\n class=\"basis-30\"\r\n [items]=\"translateService.translateInfo()?.localesSupported ?? []\"\r\n [value]=\"translateService.translateInfo()?.locale\"\r\n stylingMode=\"underlined\"\r\n (onValueChanged)=\"updateLocale($event)\"></dx-select-box>\r\n </li>\r\n\r\n <!-- User | null | undefined -->\r\n @if (user() !== undefined) {\r\n <li>\r\n <button\r\n class=\"flex w-full items-center gap-2 rounded border border-white p-4 text-white shadow transition duration-300 ease-in-out hover:bg-white hover:text-gray-800\"\r\n (click)=\"user() ? onLogout() : onLogout()\">\r\n <fa-icon [icon]=\"user() ? ICON.LOGOUT : ICON.LOGIN\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{\r\n (user() ? 'lblLogout' : 'lblLogin') | translate\r\n }}</span>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n <!-- logo -->\r\n <div class=\"mt-auto flex content-end border-b border-white\">\r\n <img\r\n class=\"mb-1 ml-auto h-8 w-min\"\r\n [ngSrc]=\"pathUnitecLogo()\"\r\n alt=\"Brand logo\"\r\n [height]=\"32\"\r\n [width]=\"88\" />\r\n </div>\r\n</aside>\r\n", styles: [":host{position:fixed;top:0;right:0;z-index:999}:host ::ng-deep input.dx-texteditor-input{padding:2px 0!important;color:#fff!important}:host ::ng-deep .dx-dropdowneditor-icon{color:#fff}:host ::ng-deep .dx-texteditor.dx-editor-underlined:after{border-color:#fff!important}@media (max-resolution: 1.25dppx){:host ::ng-deep .menu-item-notification fa-icon{height:12px;font-size:12px}}@media (max-resolution: 1dppx){:host ::ng-deep .menu-item-notification fa-icon{height:10px;font-size:10px}}\n", "@tailwind base;@tailwind components;@tailwind utilities;\n"] }]
258
247
  }], propDecorators: { onClickOutside: [{
259
248
  type: HostListener,
260
249
  args: ['document:click', ['$event']]
@@ -1 +1 @@
1
- {"version":3,"file":"uni-component-tw.mjs","sources":["../../../projects/uni-component-tw/src/lib/uni-article/uni-article.component.ts","../../../projects/uni-component-tw/src/lib/uni-article/uni-article.component.html","../../../projects/uni-component-tw/src/lib/uni-header/uni-header.component.ts","../../../projects/uni-component-tw/src/lib/uni-header/uni-header.component.html","../../../projects/uni-component-tw/src/lib/uni-led/uni-led.component.ts","../../../projects/uni-component-tw/src/lib/uni-led/uni-led.component.html","../../../projects/uni-component-tw/src/lib/uni-login-modal/uni-login-modal.component.ts","../../../projects/uni-component-tw/src/lib/uni-login-modal/uni-login-modal.component.html","../../../projects/uni-component-tw/src/lib/uni-pie-chart/uni-pie-chart.component.ts","../../../projects/uni-component-tw/src/lib/uni-pie-chart/uni-pie-chart.component.html","../../../projects/uni-component-tw/src/lib/uni-side-menu/uni-side-menu.component.ts","../../../projects/uni-component-tw/src/lib/uni-side-menu/uni-side-menu.component.html","../../../projects/uni-component-tw/src/public-api.ts","../../../projects/uni-component-tw/src/uni-component-tw.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\n\r\n@Component({\r\n selector: 'uni-article',\r\n standalone: true,\r\n imports: [CommonModule, DxButtonModule, FaIconComponent],\r\n templateUrl: './uni-article.component.html',\r\n styleUrls: ['./uni-article.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNIArticleComponent {\r\n /* Inputs */\r\n readonly color = input.required<string>(); // Colore di base dell'articolo\r\n readonly title = input<string>(); // Titolo opzionale dell'articolo\r\n readonly icon = input<IconDefinition>(); // Icona opzionale per l'intestazione\r\n readonly initialIsOpen = input<boolean | undefined>(); // Stato iniziale di apertura\r\n readonly headerCloseButton = input<boolean>(false); // Se mostrare il button per chiudere article\r\n\r\n /* Variables */\r\n isOpen = signal<boolean>(this.initialIsOpen() ?? true);\r\n isHeader = computed(() => this.icon() || this.title() || this.headerCloseButton());\r\n\r\n /* ----------------------- Metodi --------------------------- */\r\n protected toggleIsOpen(): void {\r\n // Inverte lo stato di apertura/chiusura\r\n this.isOpen.update((val) => !val);\r\n }\r\n}\r\n","<article\n class=\"uni_article flex h-full flex-col rounded border-2 p-4\"\n [style.backgroundColor]=\"color() + '26'\"\n [style.borderColor]=\"color() + '33'\">\n <!-- Title -->\n @if (isHeader()) {\n <div class=\"uni_article_header flex items-center gap-4\" [ngClass]=\"{ 'mb-4': isOpen() }\">\n <!-- Icona nella testata, se presente -->\n @if (icon(); as icon) {\n <fa-icon class=\"uni-article-header-icon\" [icon]=\"icon\"></fa-icon>\n }\n\n <!-- Titolo nella testata, se presente -->\n @if (title(); as title) {\n <h5 class=\"uni_article_header_title truncate uppercase\">{{ title }}</h5>\n }\n\n <!-- Bottone per aprire/chiudere l'articolo, se presente -->\n @if (headerCloseButton()) {\n <dx-button\n class=\"uni_article_header_button ml-auto\"\n [icon]=\"isOpen() ? 'close' : 'expandform'\"\n (onClick)=\"toggleIsOpen()\">\n </dx-button>\n }\n </div>\n }\n\n <!-- Contenuto dell'articolo, visibile solo se aperto -->\n @if (isOpen()) {\n <ng-content></ng-content>\n }\n</article>\n\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\n\r\n@Component({\r\n selector: 'uni-header',\r\n standalone: true,\r\n imports: [CommonModule, DxButtonModule],\r\n templateUrl: './uni-header.component.html',\r\n styleUrls: ['./uni-header.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNIHeaderComponent {\r\n /* Input */\r\n title = input.required<string>();\r\n version = input.required<string>();\r\n pathBrandLogo = input.required<string>();\r\n pathAppLogo = input<string | undefined>(undefined);\r\n sideMenu = input<boolean>(false);\r\n\r\n /* Output */\r\n evtToggleMenu = output<true>();\r\n}\r\n","<header class=\"fixed top-0 left-0 z-999 w-full p-4 backdrop-blur-xl backdrop-opacity-100\">\r\n <div\r\n class=\"dark:bg-dx-dark-600/50 flex h-15 items-center gap-4 rounded bg-sky-600/50 p-2 text-white\">\r\n <!-- app logo -->\r\n @if (pathAppLogo(); as pathAppLogo) {\r\n <img class=\"aspect-square h-full\" [src]=\"pathAppLogo\" alt=\"App logo\" />\r\n }\r\n\r\n <!-- info -->\r\n <div class=\"flex flex-1 flex-col overflow-hidden\">\r\n <p class=\"truncate text-xl font-semibold uppercase\">{{ title() }}</p>\r\n <p class=\"text-xs opacity-75\">{{ version() }}</p>\r\n </div>\r\n\r\n <!-- brand logo -->\r\n <img class=\"h-9/10 overflow-hidden\" [src]=\"pathBrandLogo()\" alt=\"Brand logo\" />\r\n\r\n <!-- button menu -->\r\n @if (sideMenu()) {\r\n <dx-button [icon]=\"'menu'\" (onClick)=\"evtToggleMenu.emit(true)\"></dx-button>\r\n }\r\n </div>\r\n</header>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\nexport enum LedStatus {\r\n OK,\r\n WARNING,\r\n ERROR,\r\n}\r\n\r\n@Component({\r\n selector: 'uni-led',\r\n imports: [CommonModule],\r\n templateUrl: './uni-led.component.html',\r\n styleUrls: ['./uni-led.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNILedComponent {\r\n /* Inputs */\r\n public status = input.required<LedStatus | null | undefined>();\r\n public label = input.required<string>();\r\n\r\n /* Enum */\r\n protected readonly LED_STATUS = LedStatus;\r\n}\r\n","<div class=\"flex items-center gap-1\">\r\n <div\r\n class=\"led\"\r\n [ngClass]=\"{\r\n ok: status() === LED_STATUS.OK,\r\n warning: status() === LED_STATUS.WARNING,\r\n error: status() === LED_STATUS.ERROR,\r\n }\"></div>\r\n <p class=\"truncate uppercase\">{{ label() }}</p>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule, Location } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { DxButtonModule, DxPopupModule, DxTextBoxModule } from 'devextreme-angular';\r\nimport { UNIAuthService, UNIToastService, UNITranslateService } from 'uni-service';\r\n\r\nexport type LoginForm = {\r\n username: string;\r\n password: string;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-login-modal',\r\n standalone: true,\r\n imports: [CommonModule, DxPopupModule, ReactiveFormsModule, DxTextBoxModule, DxButtonModule],\r\n templateUrl: './uni-login-modal.component.html',\r\n styleUrls: ['./uni-login-modal.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNILoginModalComponent {\r\n /* Service */\r\n readonly router = inject(Router);\r\n readonly location = inject(Location);\r\n readonly authService = inject(UNIAuthService);\r\n readonly toastService = inject(UNIToastService);\r\n readonly translateService = inject(UNITranslateService);\r\n\r\n /* Input & output */\r\n visibile = input<boolean>(true);\r\n routeHome = input<string>();\r\n enableGoBack = input.required<boolean>();\r\n\r\n /* Form */\r\n public readonly loginForm = new FormGroup<{ [K in keyof LoginForm]: FormControl<LoginForm[K]> }>({\r\n username: new FormControl('', { nonNullable: true, validators: Validators.required }),\r\n password: new FormControl('', { nonNullable: true, validators: Validators.required }),\r\n });\r\n\r\n /* ------------------------ Methods ------------------------ */\r\n public login(): void {\r\n this.authService.login$(this.loginForm.getRawValue()).subscribe(() => {\r\n if (this.routeHome()) this.router.navigate([this.routeHome]);\r\n });\r\n }\r\n\r\n public logout(): void {\r\n this.authService.logout$().subscribe();\r\n }\r\n\r\n public onHiding(): void {\r\n if (this.enableGoBack()) this.location.back();\r\n }\r\n}\r\n","<dx-popup\n[wrapperAttr]=\"{ id: 'loginPopup' }\"\n[width]=\"'40%'\"\n[minWidth]=\"400\"\n[maxWidth]=\"700\"\n[height]=\"500\"\n[visible]=\"visibile()\"\n[showTitle]=\"true\"\n[title]=\"'Login'\"\n[dragEnabled]=\"false\"\n[showCloseButton]=\"true\"\n[hideOnOutsideClick]=\"false\"\n(onHiding)=\"onHiding()\">\n<section>\n <img src=\"../../../assets/images/logo/logo_trasparente.png\" alt=\"Logo\" />\n <p>UNITEC</p>\n @if (authService.user(); as user) {\n <div>Utente: {{ user.username }}</div>\n <dx-button\n id=\"logoutButton\"\n stylingMode=\"contained\"\n [text]=\"'Logout'\"\n (onClick)=\"logout()\"></dx-button>\n } @else {\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\n <dx-text-box\n [placeholder]=\"'User'\"\n stylingMode=\"outlined\"\n formControlName=\"username\"\n [inputAttr]=\"{ 'aria-label': 'User' }\"></dx-text-box>\n <dx-text-box\n [placeholder]=\"'Password'\"\n mode=\"password\"\n stylingMode=\"outlined\"\n formControlName=\"password\"\n [inputAttr]=\"{ 'aria-label': 'Password' }\"></dx-text-box>\n <dx-button\n id=\"loginSubmitButton\"\n stylingMode=\"contained\"\n [text]=\"'Login'\"\n [useSubmitBehavior]=\"true\"\n [disabled]=\"loginForm.invalid\"></dx-button>\n </form>\n }\n</section>\n</dx-popup>\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { DxPieChartModule } from 'devextreme-angular/ui/pie-chart';\r\nimport { PieChartType } from 'devextreme/viz/pie_chart_types';\r\n\r\nexport type ChartDataSource = {\r\n name: string;\r\n value: number | undefined;\r\n color: string;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-pie-chart',\r\n standalone: true,\r\n imports: [CommonModule, DxPieChartModule],\r\n templateUrl: './uni-pie-chart.component.html',\r\n styleUrls: ['./uni-pie-chart.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNIPieChartComponent {\r\n /* Input & output */\r\n chartDataSource = input.required<ChartDataSource[]>();\r\n chartPercentage = input<number | undefined>(undefined);\r\n chartType = input<PieChartType>('pie');\r\n chartDiameter = input<number>(1);\r\n chartInnerRadius = input<number>(0.7);\r\n tooltipIsEnabled = input<boolean>(true);\r\n legendPosition = input<'right' | 'left' | 'top' | 'bottom' | 'none'>('none');\r\n legendWithValue = input<boolean>(false);\r\n legendGap = input<string>('12px');\r\n uom = input<string>('');\r\n\r\n /* Variables */\r\n paletteColor = computed(() => this.chartDataSource().map((data) => data.color));\r\n gridColumn = computed(() => {\r\n switch (this.legendPosition()) {\r\n case 'right':\r\n return '1fr min-content';\r\n case 'left':\r\n return 'min-content 1fr';\r\n default:\r\n return '1fr';\r\n }\r\n });\r\n gridRow = computed(() => {\r\n switch (this.legendPosition()) {\r\n case 'top':\r\n return 'min-content 1fr';\r\n case 'bottom':\r\n return '1fr min-content';\r\n default:\r\n return '1fr';\r\n }\r\n });\r\n\r\n /* ----------------------- Constructor & lifecycle --------------------------- */\r\n constructor() {\r\n this.customizeTooltip = this.customizeTooltip.bind(this);\r\n }\r\n\r\n /* -----------------------Methods--------------------------- */\r\n /* Funzione usata per personalizzare i tooltips del grafico */\r\n public customizeTooltip(pointInfo: { argumentText: string; valueText: string }) {\r\n const { argumentText, valueText } = pointInfo;\r\n return {\r\n text: `${argumentText}<br/>${valueText} ${this.uom()}`,\r\n color: 'rgba(149, 157, 165, 0.5)',\r\n };\r\n }\r\n}\r\n","<div\n class=\"container-pie-chart\"\n [style.display]=\"legendPosition() === 'none' ? 'block' : 'grid'\"\n [style.gridTemplateRows]=\"gridRow()\"\n [style.gridTemplateColumns]=\"gridColumn()\">\n <div\n [style.order]=\"legendPosition() === 'top' || legendPosition() === 'left' ? 1 : 0\"\n style=\"position: relative; height: 100%; width: 100%; overflow: hidden\">\n <dx-pie-chart\n style=\"height: 100%; width: 100%; overflow: hidden\"\n [type]=\"chartType()\"\n [dataSource]=\"chartDataSource()\"\n resolveLabelOverlapping=\"shift\"\n [palette]=\"paletteColor()\"\n [diameter]=\"chartDiameter()\"\n [innerRadius]=\"chartInnerRadius()\"\n [redrawOnResize]=\"true\"\n [series]=\"{\n argumentField: 'name',\n valueField: 'value',\n label: { visible: false },\n }\"\n [legend]=\"{ visible: false }\"\n [tooltip]=\"{ enabled: tooltipIsEnabled(), customizeTooltip: customizeTooltip }\">\n </dx-pie-chart>\n\n @if (chartPercentage() !== undefined) {\n <div class=\"pie-percentage-value\">{{ chartPercentage() }}%</div>\n }\n </div>\n\n @if (legendPosition() !== 'none') {\n <ul\n class=\"container-legend\"\n [style.flexDirection]=\"\n legendPosition() === 'top' || legendPosition() === 'bottom' ? 'row' : 'column'\n \"\n [style.gap]=\"legendGap()\">\n @for (item of chartDataSource(); track $index) {\n <li>\n <span class=\"square\" [style.backgroundColor]=\"item.color\"></span>\n {{ legendWithValue() ? item.name + ' ' + item.value + ' ' + uom() : item.name }}\n </li>\n }\n </ul>\n }\n</div>\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport {\r\n faArrowRightFromBracket,\r\n faArrowRightToBracket,\r\n faBell,\r\n faLanguage,\r\n faMoon,\r\n faSun,\r\n faUser,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\nimport { DxSelectBoxModule } from 'devextreme-angular/ui/select-box';\r\nimport { DxSwitchModule } from 'devextreme-angular/ui/switch';\r\nimport { ValueChangedEvent as SelectBoxValueChangedEvent } from 'devextreme/ui/select_box_types';\r\nimport { ValueChangedEvent as SwitchValueChangedEvent } from 'devextreme/ui/switch_types';\r\nimport {\r\n UNIAuthService,\r\n UNILoaderService,\r\n UNITranslatePipe,\r\n UNITranslateService,\r\n User,\r\n} from 'uni-service';\r\n\r\nexport type MenuItem = {\r\n id: number;\r\n icon: IconDefinition;\r\n label: string;\r\n path: string;\r\n badge?: boolean;\r\n visible?: boolean;\r\n disabled?: boolean;\r\n};\r\n\r\nexport type MenuInteraction = {\r\n id: number;\r\n data:\r\n | { type: 'button'; icon: IconDefinition; onClick: (...args: any) => void }\r\n | {\r\n type: 'select';\r\n combos: { id: number; code: string; description: string }[];\r\n value: number | null;\r\n onValueChanged: (itemSelected: SelectBoxValueChangedEvent) => void;\r\n };\r\n label: string;\r\n class?: string;\r\n visible?: boolean;\r\n disabled?: boolean;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-side-menu',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterLink,\r\n RouterLinkActive,\r\n DxButtonModule,\r\n DxSelectBoxModule,\r\n DxSwitchModule,\r\n UNITranslatePipe,\r\n FaIconComponent,\r\n NgOptimizedImage,\r\n ],\r\n templateUrl: './uni-side-menu.component.html',\r\n styleUrls: ['./uni-side-menu.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNISideMenuComponent {\r\n /* Service */\r\n private readonly elementRef = inject(ElementRef);\r\n private readonly router = inject(Router);\r\n private readonly authService = inject(UNIAuthService);\r\n protected readonly translateService = inject(UNITranslateService);\r\n private readonly loaderService = inject(UNILoaderService);\r\n\r\n /* Input */\r\n public readonly pathUnitecLogo = input.required<string>();\r\n public readonly menuItems = input<MenuItem[]>([]);\r\n public readonly menuInteractions = input<MenuInteraction[]>([]);\r\n public readonly user = input.required<User | null | undefined>();\r\n\r\n /* Output */\r\n protected readonly evtToggleMenu = output<false>();\r\n\r\n /* Variables */\r\n protected readonly darkMode = signal<boolean>(localStorage.getItem('uni-theme') === 'dark');\r\n\r\n /* Icons */\r\n protected readonly ICON = {\r\n USER: faUser,\r\n LOGIN: faArrowRightToBracket,\r\n LOGOUT: faArrowRightFromBracket,\r\n LIGHT_MODE: faSun,\r\n DARK_MODE: faMoon,\r\n LANGUAGE: faLanguage,\r\n NOTIFICATION: faBell,\r\n };\r\n\r\n /* ---------------------- Host listener ---------------------- */\r\n @HostListener('document:click', ['$event'])\r\n protected onClickOutside(event: Event): void {\r\n const targetElement = event.target as HTMLElement;\r\n\r\n if (\r\n !this.elementRef.nativeElement.contains(targetElement) &&\r\n !targetElement.classList.contains('dx-icon')\r\n ) {\r\n this.evtToggleMenu.emit(false);\r\n }\r\n }\r\n\r\n /* ---------------------- Methods ---------------------- */\r\n protected updateTheme(e: SwitchValueChangedEvent): void {\r\n this.loaderService.show();\r\n localStorage.setItem('uni-theme', e.value ? 'dark' : 'light');\r\n window.location.reload();\r\n }\r\n\r\n protected updateLocale(e: SelectBoxValueChangedEvent): void {\r\n this.loaderService.show();\r\n this.translateService.setLocale(e.value);\r\n window.location.reload();\r\n }\r\n\r\n protected goToLogin(): void {\r\n this.evtToggleMenu.emit(false);\r\n this.router.navigate(['login']);\r\n }\r\n\r\n protected logout(): void {\r\n this.authService.logout$().subscribe(() => {\r\n const firstItem = this.menuItems().find((item) => item.visible && !item.disabled);\r\n this.evtToggleMenu.emit(false);\r\n this.router.navigate([firstItem?.path ?? 'login']);\r\n });\r\n }\r\n}\r\n","<aside\r\n class=\"dark:bg-dx-dark-600/50 flex h-screen w-[80vw] max-w-[300px] flex-col gap-6 overflow-hidden rounded-l bg-sky-600/50 p-4 shadow backdrop-blur-xl\">\r\n <!-- user -->\r\n <div class=\"flex w-full items-center gap-4\">\r\n <div class=\"flex flex-1 gap-2\">\r\n @if (user(); as user) {\r\n <fa-icon [icon]=\"ICON.USER\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ user.username }}</span>\r\n }\r\n </div>\r\n <dx-button [icon]=\"'close'\" (onClick)=\"evtToggleMenu.emit(false)\"></dx-button>\r\n </div>\r\n\r\n <div class=\"flex flex-1 flex-col overflow-x-hidden overflow-y-auto\">\r\n <!-- menu -->\r\n @if (menuItems().length) {\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuItems(); track item.id) {\r\n @if (item.visible !== false) {\r\n <li>\r\n <a\r\n class=\"flex h-10 items-center gap-2 rounded p-2 !text-white\"\r\n [ngClass]=\"{\r\n 'border border-red-500/60 bg-red-500/40 shadow-inner hover:bg-red-500/60':\r\n !!item.badge,\r\n 'hover:bg-sky-600/50 dark:hover:bg-zinc-600/50': !item.disabled && !item.badge,\r\n 'cursor-not-allowed !opacity-25': item.disabled,\r\n }\"\r\n [routerLink]=\"item.disabled ? null : item.path\"\r\n [routerLinkActive]=\"\r\n item.badge ? 'bg-red-500/60' : 'dark:bg-zinc-600/50 bg-sky-600/50'\r\n \"\r\n (click)=\"evtToggleMenu.emit(false)\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n @if (item.badge) {\r\n <div\r\n class=\"menu-item-notification center h-6 w-6 animate-pulse rounded bg-red-500 shadow-inner\">\r\n <fa-icon [icon]=\"ICON.NOTIFICATION\"></fa-icon>\r\n </div>\r\n }\r\n </a>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n @if (menuInteractions().length) {\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuInteractions(); track item.id) {\r\n @if (item.data.type === 'button') {\r\n <li class=\"item-setting-button\">\r\n <button\r\n type=\"button\"\r\n class=\"dx-theme-material-typography flex h-12 w-full items-center gap-2 rounded p-4\"\r\n [class]=\"item.class\"\r\n (click)=\"item.data.onClick()\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.data.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n </button>\r\n </li>\r\n } @else if (item.data.type === 'select') {\r\n <li\r\n class=\"flex h-12 items-center gap-4 rounded bg-sky-600/50 p-3 shadow dark:bg-zinc-600/50\">\r\n <span class=\"truncate\">{{ item.label }}</span>\r\n <dx-select-box\r\n class=\"flex-1 basis-30\"\r\n valueExpr=\"id\"\r\n displayExpr=\"description\"\r\n [items]=\"item.data.combos\"\r\n [value]=\"item.data.value\"\r\n stylingMode=\"underlined\"\r\n placeholder=\"\"\r\n (onValueChanged)=\"item.data.onValueChanged($event)\"></dx-select-box>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n <!-- setting -->\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblDarkMode' | translate }}</span>\r\n <dx-switch [value]=\"darkMode()\" (onValueChanged)=\"updateTheme($event)\"></dx-switch>\r\n </li>\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"ICON.LANGUAGE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblLanguage' | translate }}</span>\r\n <dx-select-box\r\n class=\"basis-30\"\r\n [items]=\"translateService.translateInfo().localesSupported\"\r\n [value]=\"translateService.translateInfo().locale\"\r\n stylingMode=\"underlined\"\r\n (onValueChanged)=\"updateLocale($event)\"></dx-select-box>\r\n </li>\r\n <!-- User | null | undefined -->\r\n @if (user() !== undefined) {\r\n <li>\r\n <button\r\n class=\"flex w-full items-center gap-2 rounded border border-white p-4 text-white shadow transition duration-300 ease-in-out hover:bg-white hover:text-gray-800\"\r\n (click)=\"user() ? logout() : goToLogin()\">\r\n <fa-icon [icon]=\"user() ? ICON.LOGOUT : ICON.LOGIN\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{\r\n (user() ? 'lblLogout' : 'lblLogin') | translate\r\n }}</span>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n <!-- logo -->\r\n <div class=\"mt-auto flex content-end border-b border-white\">\r\n <img\r\n class=\"mb-1 ml-auto h-8 w-min\"\r\n [ngSrc]=\"pathUnitecLogo()\"\r\n alt=\"Brand logo\"\r\n [height]=\"32\"\r\n [width]=\"88\" />\r\n </div>\r\n</aside>\r\n","/*\r\n * Public API Surface of uni-component-tw\r\n */\r\n\r\nexport * from './lib/uni-article/uni-article.component';\r\nexport * from './lib/uni-header/uni-header.component';\r\nexport * from './lib/uni-led/uni-led.component';\r\nexport * from './lib/uni-login-modal/uni-login-modal.component';\r\nexport * from './lib/uni-pie-chart/uni-pie-chart.component';\r\nexport * from './lib/uni-side-menu/uni-side-menu.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","DxButtonModule","i3"],"mappings":"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"}
1
+ {"version":3,"file":"uni-component-tw.mjs","sources":["../../../projects/uni-component-tw/src/lib/uni-article/uni-article.component.ts","../../../projects/uni-component-tw/src/lib/uni-article/uni-article.component.html","../../../projects/uni-component-tw/src/lib/uni-header/uni-header.component.ts","../../../projects/uni-component-tw/src/lib/uni-header/uni-header.component.html","../../../projects/uni-component-tw/src/lib/uni-led/uni-led.component.ts","../../../projects/uni-component-tw/src/lib/uni-led/uni-led.component.html","../../../projects/uni-component-tw/src/lib/uni-login-modal/uni-login-modal.component.ts","../../../projects/uni-component-tw/src/lib/uni-login-modal/uni-login-modal.component.html","../../../projects/uni-component-tw/src/lib/uni-pie-chart/uni-pie-chart.component.ts","../../../projects/uni-component-tw/src/lib/uni-pie-chart/uni-pie-chart.component.html","../../../projects/uni-component-tw/src/lib/uni-side-menu/uni-side-menu.component.ts","../../../projects/uni-component-tw/src/lib/uni-side-menu/uni-side-menu.component.html","../../../projects/uni-component-tw/src/public-api.ts","../../../projects/uni-component-tw/src/uni-component-tw.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\n\r\n@Component({\r\n selector: 'uni-article',\r\n standalone: true,\r\n imports: [CommonModule, DxButtonModule, FaIconComponent],\r\n templateUrl: './uni-article.component.html',\r\n styleUrls: ['./uni-article.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNIArticleComponent {\r\n /* Inputs */\r\n readonly color = input.required<string>(); // Colore di base dell'articolo\r\n readonly title = input<string>(); // Titolo opzionale dell'articolo\r\n readonly icon = input<IconDefinition>(); // Icona opzionale per l'intestazione\r\n readonly initialIsOpen = input<boolean | undefined>(); // Stato iniziale di apertura\r\n readonly headerCloseButton = input<boolean>(false); // Se mostrare il button per chiudere article\r\n\r\n /* Variables */\r\n isOpen = signal<boolean>(this.initialIsOpen() ?? true);\r\n isHeader = computed(() => this.icon() || this.title() || this.headerCloseButton());\r\n\r\n /* ----------------------- Metodi --------------------------- */\r\n protected toggleIsOpen(): void {\r\n // Inverte lo stato di apertura/chiusura\r\n this.isOpen.update((val) => !val);\r\n }\r\n}\r\n","<article\n class=\"uni_article flex h-full flex-col rounded border-2 p-4\"\n [style.backgroundColor]=\"color() + '26'\"\n [style.borderColor]=\"color() + '33'\">\n <!-- Title -->\n @if (isHeader()) {\n <div class=\"uni_article_header flex items-center gap-4\" [ngClass]=\"{ 'mb-4': isOpen() }\">\n <!-- Icona nella testata, se presente -->\n @if (icon(); as icon) {\n <fa-icon class=\"uni-article-header-icon\" [icon]=\"icon\"></fa-icon>\n }\n\n <!-- Titolo nella testata, se presente -->\n @if (title(); as title) {\n <h5 class=\"uni_article_header_title truncate uppercase\">{{ title }}</h5>\n }\n\n <!-- Bottone per aprire/chiudere l'articolo, se presente -->\n @if (headerCloseButton()) {\n <dx-button\n class=\"uni_article_header_button ml-auto\"\n [icon]=\"isOpen() ? 'close' : 'expandform'\"\n (onClick)=\"toggleIsOpen()\">\n </dx-button>\n }\n </div>\n }\n\n <!-- Contenuto dell'articolo, visibile solo se aperto -->\n @if (isOpen()) {\n <ng-content></ng-content>\n }\n</article>\n\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\n\r\n@Component({\r\n selector: 'uni-header',\r\n standalone: true,\r\n imports: [CommonModule, DxButtonModule],\r\n templateUrl: './uni-header.component.html',\r\n styleUrls: ['./uni-header.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNIHeaderComponent {\r\n /* Input */\r\n title = input.required<string>();\r\n version = input.required<string>();\r\n pathBrandLogo = input.required<string>();\r\n pathAppLogo = input<string | undefined>(undefined);\r\n sideMenu = input<boolean>(false);\r\n\r\n /* Output */\r\n evtToggleMenu = output<true>();\r\n}\r\n","<header class=\"fixed top-0 left-0 z-999 w-full p-4 backdrop-blur-xl backdrop-opacity-100\">\r\n <div\r\n class=\"dark:bg-dx-dark-600/50 flex h-15 items-center gap-4 rounded bg-sky-600/50 p-2 text-white\">\r\n <!-- app logo -->\r\n @if (pathAppLogo(); as pathAppLogo) {\r\n <img class=\"aspect-square h-full\" [src]=\"pathAppLogo\" alt=\"App logo\" />\r\n }\r\n\r\n <!-- info -->\r\n <div class=\"flex flex-1 flex-col overflow-hidden\">\r\n <p class=\"truncate text-xl font-semibold uppercase\">{{ title() }}</p>\r\n <p class=\"text-xs opacity-75\">{{ version() }}</p>\r\n </div>\r\n\r\n <!-- brand logo -->\r\n <img class=\"h-9/10 overflow-hidden\" [src]=\"pathBrandLogo()\" alt=\"Brand logo\" />\r\n\r\n <!-- button menu -->\r\n @if (sideMenu()) {\r\n <dx-button [icon]=\"'menu'\" (onClick)=\"evtToggleMenu.emit(true)\"></dx-button>\r\n }\r\n </div>\r\n</header>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\nexport enum LedStatus {\r\n OK,\r\n WARNING,\r\n ERROR,\r\n}\r\n\r\n@Component({\r\n selector: 'uni-led',\r\n imports: [CommonModule],\r\n templateUrl: './uni-led.component.html',\r\n styleUrls: ['./uni-led.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNILedComponent {\r\n /* Inputs */\r\n public status = input.required<LedStatus | null | undefined>();\r\n public label = input.required<string>();\r\n\r\n /* Enum */\r\n protected readonly LED_STATUS = LedStatus;\r\n}\r\n","<div class=\"flex items-center gap-1\">\r\n <div\r\n class=\"led\"\r\n [ngClass]=\"{\r\n ok: status() === LED_STATUS.OK,\r\n warning: status() === LED_STATUS.WARNING,\r\n error: status() === LED_STATUS.ERROR,\r\n }\"></div>\r\n <p class=\"truncate uppercase\">{{ label() }}</p>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule, Location } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { DxButtonModule, DxPopupModule, DxTextBoxModule } from 'devextreme-angular';\r\nimport { UNIAuthService, UNIToastService, UNITranslateService } from 'uni-service';\r\n\r\nexport type LoginForm = {\r\n username: string;\r\n password: string;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-login-modal',\r\n standalone: true,\r\n imports: [CommonModule, DxPopupModule, ReactiveFormsModule, DxTextBoxModule, DxButtonModule],\r\n templateUrl: './uni-login-modal.component.html',\r\n styleUrls: ['./uni-login-modal.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNILoginModalComponent {\r\n /* Service */\r\n readonly router = inject(Router);\r\n readonly location = inject(Location);\r\n readonly authService = inject(UNIAuthService);\r\n readonly toastService = inject(UNIToastService);\r\n readonly translateService = inject(UNITranslateService);\r\n\r\n /* Input & output */\r\n visibile = input<boolean>(true);\r\n routeHome = input<string>();\r\n enableGoBack = input.required<boolean>();\r\n\r\n /* Form */\r\n public readonly loginForm = new FormGroup<{ [K in keyof LoginForm]: FormControl<LoginForm[K]> }>({\r\n username: new FormControl('', { nonNullable: true, validators: Validators.required }),\r\n password: new FormControl('', { nonNullable: true, validators: Validators.required }),\r\n });\r\n\r\n /* ------------------------ Methods ------------------------ */\r\n public login(): void {\r\n this.authService.login$(this.loginForm.getRawValue()).subscribe(() => {\r\n if (this.routeHome()) this.router.navigate([this.routeHome]);\r\n });\r\n }\r\n\r\n public logout(): void {\r\n this.authService.logout$().subscribe();\r\n }\r\n\r\n public onHiding(): void {\r\n if (this.enableGoBack()) this.location.back();\r\n }\r\n}\r\n","<dx-popup\n[wrapperAttr]=\"{ id: 'loginPopup' }\"\n[width]=\"'40%'\"\n[minWidth]=\"400\"\n[maxWidth]=\"700\"\n[height]=\"500\"\n[visible]=\"visibile()\"\n[showTitle]=\"true\"\n[title]=\"'Login'\"\n[dragEnabled]=\"false\"\n[showCloseButton]=\"true\"\n[hideOnOutsideClick]=\"false\"\n(onHiding)=\"onHiding()\">\n<section>\n <img src=\"../../../assets/images/logo/logo_trasparente.png\" alt=\"Logo\" />\n <p>UNITEC</p>\n @if (authService.user(); as user) {\n <div>Utente: {{ user.username }}</div>\n <dx-button\n id=\"logoutButton\"\n stylingMode=\"contained\"\n [text]=\"'Logout'\"\n (onClick)=\"logout()\"></dx-button>\n } @else {\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\n <dx-text-box\n [placeholder]=\"'User'\"\n stylingMode=\"outlined\"\n formControlName=\"username\"\n [inputAttr]=\"{ 'aria-label': 'User' }\"></dx-text-box>\n <dx-text-box\n [placeholder]=\"'Password'\"\n mode=\"password\"\n stylingMode=\"outlined\"\n formControlName=\"password\"\n [inputAttr]=\"{ 'aria-label': 'Password' }\"></dx-text-box>\n <dx-button\n id=\"loginSubmitButton\"\n stylingMode=\"contained\"\n [text]=\"'Login'\"\n [useSubmitBehavior]=\"true\"\n [disabled]=\"loginForm.invalid\"></dx-button>\n </form>\n }\n</section>\n</dx-popup>\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { DxPieChartModule } from 'devextreme-angular/ui/pie-chart';\r\nimport { PieChartType } from 'devextreme/viz/pie_chart_types';\r\n\r\nexport type ChartDataSource = {\r\n name: string;\r\n value: number | undefined;\r\n color: string;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-pie-chart',\r\n standalone: true,\r\n imports: [CommonModule, DxPieChartModule],\r\n templateUrl: './uni-pie-chart.component.html',\r\n styleUrls: ['./uni-pie-chart.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNIPieChartComponent {\r\n /* Input & output */\r\n chartDataSource = input.required<ChartDataSource[]>();\r\n chartPercentage = input<number | undefined>(undefined);\r\n chartType = input<PieChartType>('pie');\r\n chartDiameter = input<number>(1);\r\n chartInnerRadius = input<number>(0.7);\r\n tooltipIsEnabled = input<boolean>(true);\r\n legendPosition = input<'right' | 'left' | 'top' | 'bottom' | 'none'>('none');\r\n legendWithValue = input<boolean>(false);\r\n legendGap = input<string>('12px');\r\n uom = input<string>('');\r\n\r\n /* Variables */\r\n paletteColor = computed(() => this.chartDataSource().map((data) => data.color));\r\n gridColumn = computed(() => {\r\n switch (this.legendPosition()) {\r\n case 'right':\r\n return '1fr min-content';\r\n case 'left':\r\n return 'min-content 1fr';\r\n default:\r\n return '1fr';\r\n }\r\n });\r\n gridRow = computed(() => {\r\n switch (this.legendPosition()) {\r\n case 'top':\r\n return 'min-content 1fr';\r\n case 'bottom':\r\n return '1fr min-content';\r\n default:\r\n return '1fr';\r\n }\r\n });\r\n\r\n /* ----------------------- Constructor & lifecycle --------------------------- */\r\n constructor() {\r\n this.customizeTooltip = this.customizeTooltip.bind(this);\r\n }\r\n\r\n /* -----------------------Methods--------------------------- */\r\n /* Funzione usata per personalizzare i tooltips del grafico */\r\n public customizeTooltip(pointInfo: { argumentText: string; valueText: string }) {\r\n const { argumentText, valueText } = pointInfo;\r\n return {\r\n text: `${argumentText}<br/>${valueText} ${this.uom()}`,\r\n color: 'rgba(149, 157, 165, 0.5)',\r\n };\r\n }\r\n}\r\n","<div\n class=\"container-pie-chart\"\n [style.display]=\"legendPosition() === 'none' ? 'block' : 'grid'\"\n [style.gridTemplateRows]=\"gridRow()\"\n [style.gridTemplateColumns]=\"gridColumn()\">\n <div\n [style.order]=\"legendPosition() === 'top' || legendPosition() === 'left' ? 1 : 0\"\n style=\"position: relative; height: 100%; width: 100%; overflow: hidden\">\n <dx-pie-chart\n style=\"height: 100%; width: 100%; overflow: hidden\"\n [type]=\"chartType()\"\n [dataSource]=\"chartDataSource()\"\n resolveLabelOverlapping=\"shift\"\n [palette]=\"paletteColor()\"\n [diameter]=\"chartDiameter()\"\n [innerRadius]=\"chartInnerRadius()\"\n [redrawOnResize]=\"true\"\n [series]=\"{\n argumentField: 'name',\n valueField: 'value',\n label: { visible: false },\n }\"\n [legend]=\"{ visible: false }\"\n [tooltip]=\"{ enabled: tooltipIsEnabled(), customizeTooltip: customizeTooltip }\">\n </dx-pie-chart>\n\n @if (chartPercentage() !== undefined) {\n <div class=\"pie-percentage-value\">{{ chartPercentage() }}%</div>\n }\n </div>\n\n @if (legendPosition() !== 'none') {\n <ul\n class=\"container-legend\"\n [style.flexDirection]=\"\n legendPosition() === 'top' || legendPosition() === 'bottom' ? 'row' : 'column'\n \"\n [style.gap]=\"legendGap()\">\n @for (item of chartDataSource(); track $index) {\n <li>\n <span class=\"square\" [style.backgroundColor]=\"item.color\"></span>\n {{ legendWithValue() ? item.name + ' ' + item.value + ' ' + uom() : item.name }}\n </li>\n }\n </ul>\n }\n</div>\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport {\r\n faArrowRightFromBracket,\r\n faArrowRightToBracket,\r\n faBell,\r\n faLanguage,\r\n faMoon,\r\n faSun,\r\n faUser,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\nimport { DxSelectBoxModule } from 'devextreme-angular/ui/select-box';\r\nimport { DxSwitchModule } from 'devextreme-angular/ui/switch';\r\nimport { ValueChangedEvent as SelectBoxValueChangedEvent } from 'devextreme/ui/select_box_types';\r\nimport { ValueChangedEvent as SwitchValueChangedEvent } from 'devextreme/ui/switch_types';\r\nimport { UNILoaderService, UNITranslatePipe, UNITranslateService, User } from 'uni-service';\r\n\r\nexport type MenuItem = {\r\n id: number;\r\n icon: IconDefinition;\r\n label: string;\r\n path: string;\r\n badge?: boolean;\r\n visible?: boolean;\r\n disabled?: boolean;\r\n};\r\n\r\nexport type MenuInteraction = {\r\n id: number;\r\n data:\r\n | { type: 'button'; icon: IconDefinition; onClick: (...args: any) => void }\r\n | {\r\n type: 'select';\r\n combos: { id: number; code: string; description: string }[];\r\n value: number | null;\r\n onValueChanged: (itemSelected: SelectBoxValueChangedEvent) => void;\r\n };\r\n label: string;\r\n class?: string;\r\n visible?: boolean;\r\n disabled?: boolean;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-side-menu',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterLink,\r\n RouterLinkActive,\r\n DxButtonModule,\r\n DxSelectBoxModule,\r\n DxSwitchModule,\r\n UNITranslatePipe,\r\n FaIconComponent,\r\n NgOptimizedImage,\r\n ],\r\n templateUrl: './uni-side-menu.component.html',\r\n styleUrls: ['./uni-side-menu.component.scss', '../style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNISideMenuComponent {\r\n /* Service */\r\n private readonly elementRef = inject(ElementRef);\r\n protected readonly translateService = inject(UNITranslateService);\r\n private readonly loaderService = inject(UNILoaderService);\r\n\r\n /* Input */\r\n public readonly pathUnitecLogo = input.required<string>();\r\n public readonly menuItems = input<MenuItem[]>([]);\r\n public readonly menuInteractions = input<MenuInteraction[]>([]);\r\n public readonly user = input.required<User | null | undefined>();\r\n public readonly onLogin = input<() => void>();\r\n public readonly onLogout = input<() => void>();\r\n\r\n /* Output */\r\n protected readonly evtToggleMenu = output<false>();\r\n\r\n /* Variables */\r\n protected readonly darkMode = signal<boolean>(localStorage.getItem('uni-theme') === 'dark');\r\n\r\n /* Icons */\r\n protected readonly ICON = {\r\n USER: faUser,\r\n LOGIN: faArrowRightToBracket,\r\n LOGOUT: faArrowRightFromBracket,\r\n LIGHT_MODE: faSun,\r\n DARK_MODE: faMoon,\r\n LANGUAGE: faLanguage,\r\n NOTIFICATION: faBell,\r\n };\r\n\r\n /* ---------------------- Host listener ---------------------- */\r\n @HostListener('document:click', ['$event'])\r\n protected onClickOutside(event: Event): void {\r\n const targetElement = event.target as HTMLElement;\r\n\r\n if (\r\n !this.elementRef.nativeElement.contains(targetElement) &&\r\n !targetElement.classList.contains('dx-icon')\r\n ) {\r\n this.evtToggleMenu.emit(false);\r\n }\r\n }\r\n\r\n /* ---------------------- Methods ---------------------- */\r\n protected updateTheme(e: SwitchValueChangedEvent): void {\r\n this.loaderService.show();\r\n localStorage.setItem('uni-theme', e.value ? 'dark' : 'light');\r\n window.location.reload();\r\n }\r\n\r\n protected updateLocale(e: SelectBoxValueChangedEvent): void {\r\n this.loaderService.show();\r\n this.translateService.setLocale(e.value);\r\n window.location.reload();\r\n }\r\n\r\n // protected goToLogin(): void {\r\n // this.evtToggleMenu.emit(false);\r\n // this.router.navigate(['login']);\r\n // }\r\n\r\n // protected logout(): void {\r\n // this.authService.logout$().subscribe(() => {\r\n // const firstItem = this.menuItems().find((item) => item.visible && !item.disabled);\r\n // this.evtToggleMenu.emit(false);\r\n // this.router.navigate([firstItem?.path ?? 'login']);\r\n // });\r\n // }\r\n}\r\n","<aside\r\n class=\"dark:bg-dx-dark-600/50 flex h-screen w-[80vw] max-w-[300px] flex-col gap-6 overflow-hidden rounded-l bg-sky-600/50 p-4 shadow backdrop-blur-xl\">\r\n <!-- user -->\r\n <div class=\"flex w-full items-center gap-4\">\r\n <div class=\"flex flex-1 gap-2\">\r\n @if (user(); as user) {\r\n <fa-icon [icon]=\"ICON.USER\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ user.username }}</span>\r\n }\r\n </div>\r\n <dx-button [icon]=\"'close'\" (onClick)=\"evtToggleMenu.emit(false)\"></dx-button>\r\n </div>\r\n\r\n <div class=\"flex flex-1 flex-col overflow-x-hidden overflow-y-auto\">\r\n <!-- menu -->\r\n @if (menuItems().length) {\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuItems(); track item.id) {\r\n @if (item.visible !== false) {\r\n <li>\r\n <a\r\n class=\"flex h-10 items-center gap-2 rounded p-2 !text-white\"\r\n [ngClass]=\"{\r\n 'border border-red-500/60 bg-red-500/40 shadow-inner hover:bg-red-500/60':\r\n !!item.badge,\r\n 'hover:bg-sky-600/50 dark:hover:bg-zinc-600/50': !item.disabled && !item.badge,\r\n 'cursor-not-allowed !opacity-25': item.disabled,\r\n }\"\r\n [routerLink]=\"item.disabled ? null : item.path\"\r\n [routerLinkActive]=\"\r\n item.badge ? 'bg-red-500/60' : 'dark:bg-zinc-600/50 bg-sky-600/50'\r\n \"\r\n (click)=\"evtToggleMenu.emit(false)\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n @if (item.badge) {\r\n <div\r\n class=\"menu-item-notification center h-6 w-6 animate-pulse rounded bg-red-500 shadow-inner\">\r\n <fa-icon [icon]=\"ICON.NOTIFICATION\"></fa-icon>\r\n </div>\r\n }\r\n </a>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n @if (menuInteractions().length) {\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n @for (item of menuInteractions(); track item.id) {\r\n @if (item.data.type === 'button') {\r\n <li class=\"item-setting-button\">\r\n <button\r\n type=\"button\"\r\n class=\"dx-theme-material-typography flex h-12 w-full items-center gap-2 rounded p-4\"\r\n [class]=\"item.class\"\r\n (click)=\"item.data.onClick()\">\r\n <fa-icon class=\"basis-6\" [icon]=\"item.data.icon\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\r\n </button>\r\n </li>\r\n } @else if (item.data.type === 'select') {\r\n <li\r\n class=\"flex h-12 items-center gap-4 rounded bg-sky-600/50 p-3 shadow dark:bg-zinc-600/50\">\r\n <span class=\"truncate\">{{ item.label }}</span>\r\n <dx-select-box\r\n class=\"flex-1 basis-30\"\r\n valueExpr=\"id\"\r\n displayExpr=\"description\"\r\n [items]=\"item.data.combos\"\r\n [value]=\"item.data.value\"\r\n stylingMode=\"underlined\"\r\n placeholder=\"\"\r\n (onValueChanged)=\"item.data.onValueChanged($event)\"></dx-select-box>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n }\r\n\r\n <!-- setting -->\r\n <hr class=\"my-4 h-px border-0 bg-sky-200 dark:bg-gray-600\" />\r\n <ul class=\"flex min-h-fit flex-col gap-2\">\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblDarkMode' | translate }}</span>\r\n <dx-switch [value]=\"darkMode()\" (onValueChanged)=\"updateTheme($event)\"></dx-switch>\r\n </li>\r\n <li\r\n class=\"flex h-16 items-center gap-2 rounded bg-sky-600/50 p-4 text-white shadow dark:bg-zinc-600/50\">\r\n <fa-icon class=\"basis-6\" [icon]=\"ICON.LANGUAGE\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{ 'lblLanguage' | translate }}</span>\r\n <dx-select-box\r\n class=\"basis-30\"\r\n [items]=\"translateService.translateInfo()?.localesSupported ?? []\"\r\n [value]=\"translateService.translateInfo()?.locale\"\r\n stylingMode=\"underlined\"\r\n (onValueChanged)=\"updateLocale($event)\"></dx-select-box>\r\n </li>\r\n\r\n <!-- User | null | undefined -->\r\n @if (user() !== undefined) {\r\n <li>\r\n <button\r\n class=\"flex w-full items-center gap-2 rounded border border-white p-4 text-white shadow transition duration-300 ease-in-out hover:bg-white hover:text-gray-800\"\r\n (click)=\"user() ? onLogout() : onLogout()\">\r\n <fa-icon [icon]=\"user() ? ICON.LOGOUT : ICON.LOGIN\"></fa-icon>\r\n <span class=\"flex-1 truncate\">{{\r\n (user() ? 'lblLogout' : 'lblLogin') | translate\r\n }}</span>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n <!-- logo -->\r\n <div class=\"mt-auto flex content-end border-b border-white\">\r\n <img\r\n class=\"mb-1 ml-auto h-8 w-min\"\r\n [ngSrc]=\"pathUnitecLogo()\"\r\n alt=\"Brand logo\"\r\n [height]=\"32\"\r\n [width]=\"88\" />\r\n </div>\r\n</aside>\r\n","/*\r\n * Public API Surface of uni-component-tw\r\n */\r\n\r\nexport * from './lib/uni-article/uni-article.component';\r\nexport * from './lib/uni-header/uni-header.component';\r\nexport * from './lib/uni-led/uni-led.component';\r\nexport * from './lib/uni-login-modal/uni-login-modal.component';\r\nexport * from './lib/uni-pie-chart/uni-pie-chart.component';\r\nexport * from './lib/uni-side-menu/uni-side-menu.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","DxButtonModule","i3"],"mappings":"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"}
@@ -35,14 +35,14 @@ export type MenuInteraction = {
35
35
  };
36
36
  export declare class UNISideMenuComponent {
37
37
  private readonly elementRef;
38
- private readonly router;
39
- private readonly authService;
40
38
  protected readonly translateService: UNITranslateService;
41
39
  private readonly loaderService;
42
40
  readonly pathUnitecLogo: import("@angular/core").InputSignal<string>;
43
41
  readonly menuItems: import("@angular/core").InputSignal<MenuItem[]>;
44
42
  readonly menuInteractions: import("@angular/core").InputSignal<MenuInteraction[]>;
45
43
  readonly user: import("@angular/core").InputSignal<User | null | undefined>;
44
+ readonly onLogin: import("@angular/core").InputSignal<(() => void) | undefined>;
45
+ readonly onLogout: import("@angular/core").InputSignal<(() => void) | undefined>;
46
46
  protected readonly evtToggleMenu: import("@angular/core").OutputEmitterRef<false>;
47
47
  protected readonly darkMode: import("@angular/core").WritableSignal<boolean>;
48
48
  protected readonly ICON: {
@@ -57,8 +57,6 @@ export declare class UNISideMenuComponent {
57
57
  protected onClickOutside(event: Event): void;
58
58
  protected updateTheme(e: SwitchValueChangedEvent): void;
59
59
  protected updateLocale(e: SelectBoxValueChangedEvent): void;
60
- protected goToLogin(): void;
61
- protected logout(): void;
62
60
  static ɵfac: i0.ɵɵFactoryDeclaration<UNISideMenuComponent, never>;
63
- static ɵcmp: i0.ɵɵComponentDeclaration<UNISideMenuComponent, "uni-side-menu", never, { "pathUnitecLogo": { "alias": "pathUnitecLogo"; "required": true; "isSignal": true; }; "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "menuInteractions": { "alias": "menuInteractions"; "required": false; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; }, { "evtToggleMenu": "evtToggleMenu"; }, never, never, true, never>;
61
+ static ɵcmp: i0.ɵɵComponentDeclaration<UNISideMenuComponent, "uni-side-menu", never, { "pathUnitecLogo": { "alias": "pathUnitecLogo"; "required": true; "isSignal": true; }; "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "menuInteractions": { "alias": "menuInteractions"; "required": false; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; "onLogin": { "alias": "onLogin"; "required": false; "isSignal": true; }; "onLogout": { "alias": "onLogout"; "required": false; "isSignal": true; }; }, { "evtToggleMenu": "evtToggleMenu"; }, never, never, true, never>;
64
62
  }
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "uni-component-tw",
3
- "version": "2.1.22",
3
+ "version": "2.1.24",
4
4
  "description": "Components angular base",
5
5
  "license": "ISC",
6
6
  "peerDependencies": {
7
7
  "@angular/common": ">=19.0.0",
8
- "@angular/core": ">=19.0.0"
8
+ "@angular/core": ">=19.0.0",
9
+ "uni-service": ">=2.5.22"
9
10
  },
10
11
  "dependencies": {
11
12
  "tslib": "^2.3.0"