uni-component-tw 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -0
- package/esm2022/index.mjs +5 -0
- package/esm2022/uni-article/index.mjs +2 -0
- package/esm2022/uni-article/src/uni-article.component.mjs +109 -0
- package/esm2022/uni-article/uni-component-tw-uni-article.mjs +5 -0
- package/esm2022/uni-component-tw.mjs +5 -0
- package/esm2022/uni-header/index.mjs +2 -0
- package/esm2022/uni-header/src/uni-header.component.mjs +66 -0
- package/esm2022/uni-header/uni-component-tw-uni-header.mjs +5 -0
- package/esm2022/uni-login-modal/index.mjs +2 -0
- package/esm2022/uni-login-modal/src/uni-login-modal.component.mjs +146 -0
- package/esm2022/uni-login-modal/uni-component-tw-uni-login-modal.mjs +5 -0
- package/esm2022/uni-pie-chart/index.mjs +2 -0
- package/esm2022/uni-pie-chart/src/uni-pie-chart.component.mjs +159 -0
- package/esm2022/uni-pie-chart/uni-component-tw-uni-pie-chart.mjs +5 -0
- package/esm2022/uni-side-menu/index.mjs +2 -0
- package/esm2022/uni-side-menu/src/uni-side-menu.component.mjs +249 -0
- package/esm2022/uni-side-menu/uni-component-tw-uni-side-menu.mjs +5 -0
- package/esm2022/uni-wrapper-chart/index.mjs +2 -0
- package/esm2022/uni-wrapper-chart/src/uni-wrapper-chart.component.mjs +36 -0
- package/esm2022/uni-wrapper-chart/uni-component-tw-uni-wrapper-chart.mjs +5 -0
- package/fesm2022/uni-component-tw-uni-article.mjs +116 -0
- package/fesm2022/uni-component-tw-uni-article.mjs.map +1 -0
- package/fesm2022/uni-component-tw-uni-header.mjs +73 -0
- package/fesm2022/uni-component-tw-uni-header.mjs.map +1 -0
- package/fesm2022/uni-component-tw-uni-login-modal.mjs +152 -0
- package/fesm2022/uni-component-tw-uni-login-modal.mjs.map +1 -0
- package/fesm2022/uni-component-tw-uni-pie-chart.mjs +166 -0
- package/fesm2022/uni-component-tw-uni-pie-chart.mjs.map +1 -0
- package/fesm2022/uni-component-tw-uni-side-menu.mjs +256 -0
- package/fesm2022/uni-component-tw-uni-side-menu.mjs.map +1 -0
- package/fesm2022/uni-component-tw-uni-wrapper-chart.mjs +43 -0
- package/fesm2022/uni-component-tw-uni-wrapper-chart.mjs.map +1 -0
- package/fesm2022/uni-component-tw.mjs +11 -0
- package/fesm2022/uni-component-tw.mjs.map +1 -0
- package/index.d.ts +1 -0
- package/package.json +63 -0
- package/uni-article/index.d.ts +1 -0
- package/uni-article/src/uni-article.component.d.ts +16 -0
- package/uni-header/index.d.ts +1 -0
- package/uni-header/src/uni-header.component.d.ts +11 -0
- package/uni-login-modal/index.d.ts +1 -0
- package/uni-login-modal/src/uni-login-modal.component.d.ts +30 -0
- package/uni-pie-chart/index.d.ts +1 -0
- package/uni-pie-chart/src/uni-pie-chart.component.d.ts +32 -0
- package/uni-side-menu/index.d.ts +1 -0
- package/uni-side-menu/src/uni-side-menu.component.d.ts +49 -0
- package/uni-wrapper-chart/index.d.ts +1 -0
- package/uni-wrapper-chart/src/uni-wrapper-chart.component.d.ts +13 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import * as i1 from '@angular/common';
|
|
2
|
+
import { CommonModule, NgOptimizedImage } from '@angular/common';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { inject, input, output, signal, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
5
|
+
import { Router, RouterLink, RouterLinkActive } from '@angular/router';
|
|
6
|
+
import * as i2 from 'devextreme-angular/ui/button';
|
|
7
|
+
import { DxButtonModule } from 'devextreme-angular/ui/button';
|
|
8
|
+
import * as i3 from 'devextreme-angular/ui/switch';
|
|
9
|
+
import { DxSwitchModule } from 'devextreme-angular/ui/switch';
|
|
10
|
+
import * as i4 from 'devextreme-angular/ui/select-box';
|
|
11
|
+
import { DxSelectBoxModule } from 'devextreme-angular/ui/select-box';
|
|
12
|
+
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
|
|
13
|
+
import { faUser, faArrowRightToBracket, faArrowRightFromBracket, faSun, faMoon, faLanguage } from '@fortawesome/free-solid-svg-icons';
|
|
14
|
+
import { UNITranslateService, UNITranslatePipe } from 'uni-service/translate';
|
|
15
|
+
import { UNIAuthService } from 'uni-service/auth';
|
|
16
|
+
|
|
17
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
|
+
class UniSideMenuComponent {
|
|
19
|
+
constructor() {
|
|
20
|
+
/* Service */
|
|
21
|
+
this.router = inject(Router);
|
|
22
|
+
this.authService = inject(UNIAuthService);
|
|
23
|
+
this.translateService = inject(UNITranslateService);
|
|
24
|
+
/* Input */
|
|
25
|
+
this.pathBrandLogo = input.required();
|
|
26
|
+
this.menuItems = input([]);
|
|
27
|
+
this.menuButtons = input([]);
|
|
28
|
+
this.user = input.required();
|
|
29
|
+
/* Output */
|
|
30
|
+
this.evtToggleMenu = output();
|
|
31
|
+
/* Variables */
|
|
32
|
+
this.darkMode = signal(localStorage.getItem('uni-theme') === 'dark');
|
|
33
|
+
/* Icons */
|
|
34
|
+
this.ICON = {
|
|
35
|
+
USER: faUser,
|
|
36
|
+
LOGIN: faArrowRightToBracket,
|
|
37
|
+
LOGOUT: faArrowRightFromBracket,
|
|
38
|
+
LIGHT_MODE: faSun,
|
|
39
|
+
DARK_MODE: faMoon,
|
|
40
|
+
LANGUAGE: faLanguage,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/* ---------------------- Methods ---------------------- */
|
|
44
|
+
updateTheme(e) {
|
|
45
|
+
localStorage.setItem('uni-theme', e.value ? 'dark' : 'light');
|
|
46
|
+
window.location.reload();
|
|
47
|
+
}
|
|
48
|
+
updateLanguage(e) {
|
|
49
|
+
this.translateService.setLanguage(e.value);
|
|
50
|
+
window.location.reload();
|
|
51
|
+
}
|
|
52
|
+
goToLogin() {
|
|
53
|
+
this.evtToggleMenu.emit(false);
|
|
54
|
+
this.router.navigate(['login']);
|
|
55
|
+
}
|
|
56
|
+
logout() {
|
|
57
|
+
this.authService.logout$().subscribe(() => {
|
|
58
|
+
const firstItem = this.menuItems().find((item) => item.visible && !item.disabled);
|
|
59
|
+
this.evtToggleMenu.emit(false);
|
|
60
|
+
this.router.navigate([firstItem?.path ?? 'login']);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniSideMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
64
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UniSideMenuComponent, isStandalone: true, selector: "uni-side-menu", inputs: { pathBrandLogo: { classPropertyName: "pathBrandLogo", publicName: "pathBrandLogo", isSignal: true, isRequired: true, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null }, menuButtons: { classPropertyName: "menuButtons", publicName: "menuButtons", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { evtToggleMenu: "evtToggleMenu" }, ngImport: i0, template: `
|
|
65
|
+
<aside id="side-menu">
|
|
66
|
+
<!-- user -->
|
|
67
|
+
<div id="side-menu-user">
|
|
68
|
+
<div class="side-menu-user-info">
|
|
69
|
+
@if (user(); as user) {
|
|
70
|
+
<fa-icon [icon]="ICON.USER"></fa-icon> {{ user.username }}
|
|
71
|
+
}
|
|
72
|
+
</div>
|
|
73
|
+
<dx-button [icon]="'close'" (onClick)="evtToggleMenu.emit(false)"></dx-button>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
<!-- menu -->
|
|
77
|
+
@if (menuItems().length) {
|
|
78
|
+
<nav id="side-menu-menu" role="full-horizontal">
|
|
79
|
+
<ul>
|
|
80
|
+
@for (item of menuItems(); track item.id) {
|
|
81
|
+
@if (item.visible) {
|
|
82
|
+
<li>
|
|
83
|
+
<a
|
|
84
|
+
[routerLink]="item.disabled ? null : item.path"
|
|
85
|
+
routerLinkActive="item-active"
|
|
86
|
+
[ngClass]="{ 'item-disabled': item.disabled }"
|
|
87
|
+
(click)="evtToggleMenu.emit(false)">
|
|
88
|
+
<fa-icon [icon]="item.icon"></fa-icon>
|
|
89
|
+
<span>{{ item.label }}</span>
|
|
90
|
+
</a>
|
|
91
|
+
</li>
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
</ul>
|
|
95
|
+
</nav>
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
<!-- setting -->
|
|
99
|
+
<ul id="side-menu-setting">
|
|
100
|
+
@for (button of menuButtons(); track $index) {
|
|
101
|
+
<li class="item-setting-button">
|
|
102
|
+
<button
|
|
103
|
+
type="button"
|
|
104
|
+
class="dx-theme-material-typography"
|
|
105
|
+
[style]="button.style"
|
|
106
|
+
(click)="button.fun()">
|
|
107
|
+
<fa-icon [icon]="button.icon"></fa-icon>
|
|
108
|
+
<span>{{ button.label }}</span>
|
|
109
|
+
</button>
|
|
110
|
+
</li>
|
|
111
|
+
}
|
|
112
|
+
<li class="item-setting">
|
|
113
|
+
<fa-icon [icon]="darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE"></fa-icon>
|
|
114
|
+
<span>{{ 'lblDarkMode' | translate }}</span>
|
|
115
|
+
<dx-switch [value]="darkMode()" (onValueChanged)="updateTheme($event)"></dx-switch>
|
|
116
|
+
</li>
|
|
117
|
+
<li class="item-setting">
|
|
118
|
+
<fa-icon [icon]="ICON.LANGUAGE"></fa-icon>
|
|
119
|
+
<span>{{ 'lblLanguage' | translate }}</span>
|
|
120
|
+
<dx-select-box
|
|
121
|
+
[items]="translateService.translateInfo().languagesSupported"
|
|
122
|
+
[value]="translateService.translateInfo().language"
|
|
123
|
+
stylingMode="underlined"
|
|
124
|
+
placeholder=""
|
|
125
|
+
(onValueChanged)="updateLanguage($event)"></dx-select-box>
|
|
126
|
+
</li>
|
|
127
|
+
<!-- User | null | undefined -->
|
|
128
|
+
@if (user() !== undefined) {
|
|
129
|
+
<li class="item-logout">
|
|
130
|
+
<button (click)="user() ? logout() : goToLogin()">
|
|
131
|
+
<fa-icon [icon]="user() ? ICON.LOGOUT : ICON.LOGIN"></fa-icon>
|
|
132
|
+
{{ (user() ? 'lblLogout' : 'lblLogin') | translate }}
|
|
133
|
+
</button>
|
|
134
|
+
</li>
|
|
135
|
+
}
|
|
136
|
+
</ul>
|
|
137
|
+
|
|
138
|
+
<!-- logo -->
|
|
139
|
+
<div id="side-menu-logo">
|
|
140
|
+
<img
|
|
141
|
+
id="img-brand"
|
|
142
|
+
[ngSrc]="pathBrandLogo()"
|
|
143
|
+
alt="Brand logo"
|
|
144
|
+
[height]="30"
|
|
145
|
+
[width]="125"
|
|
146
|
+
priority />
|
|
147
|
+
</div>
|
|
148
|
+
</aside>
|
|
149
|
+
`, isInline: true, styles: [":host{position:fixed;top:0;right:0;z-index:999}#side-menu{height:100vh;width:250px;display:grid;grid-template-rows:min-content min-content min-content 1fr 35px;grid-template-columns:1fr;grid-template-areas:\"user\" \"menu\" \"setting\" \".\" \"logo\";gap:2rem;padding:1rem;background-color:#27272a99;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border:solid 1.5px #27272a;border-radius:.25rem;box-shadow:#00000059 0 5px 5px;overflow:hidden}#side-menu-user{width:100%;grid-area:user;display:grid;grid-template-rows:1fr;grid-template-columns:1fr min-content;align-items:center;gap:1rem}#side-menu-user .side-menu-user-info{display:grid;grid-template-rows:1fr;grid-template-columns:min-content 1fr;gap:.5rem}#side-menu-menu ul,#side-menu-setting{display:grid;grid-auto-rows:42px;grid-template-columns:1fr;gap:.5rem;overflow:hidden}#side-menu-menu ul a,#side-menu-setting a{display:grid;grid-template-rows:1fr;grid-template-columns:20px 1fr;gap:.75rem;padding:.75rem;color:#fff;border-radius:.25rem}#side-menu-menu{width:100%;grid-area:menu;overflow:hidden}#side-menu-menu a.item-active,#side-menu-menu a:not(.item-disabled):hover{cursor:pointer;background-color:#52525b99}#side-menu-setting{grid-area:setting;padding-top:2rem;border-top:solid 2px #52525b}#side-menu-logo{grid-area:logo;display:flex;justify-content:end;border-bottom:solid 1px #fff}img{width:auto}li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-active{background-color:#52525b99}.item-disabled{pointer-events:none;cursor:default;opacity:.25}.item-logout button{width:100%;display:grid;grid-template-rows:1fr;grid-template-columns:min-content 1fr;align-items:center;gap:.75rem;padding:.75rem;border-radius:.25rem;color:#fff;cursor:pointer}.item-setting{display:grid;grid-template-rows:1fr;grid-template-columns:20px 1fr 60px;align-items:center;gap:.75rem;padding:.75rem;border-radius:.25rem;color:#fff;background-color:#52525b99}.item-setting>*:last-child{margin-left:auto}.item-setting-button{border-radius:.25rem;overflow:hidden;cursor:pointer;transition:.1s ease-in-out}.item-setting-button:active{transform:scale(.9)}.item-setting-button button{height:100%;width:100%;display:grid;grid-template-rows:1fr;grid-template-columns:20px 1fr;align-items:center;gap:.75rem;padding:.75rem;box-shadow:inset 0 3px 6px #000c,inset 0 -3px 6px #00000080,inset 0 1px 3px #fff3;transition:box-shadow .2s ease-in-out}::ng-deep .theme-light #side-menu,::ng-deep .theme-light #side-menu a.item-active,::ng-deep .theme-light #side-menu a:not(.item-disabled):hover,::ng-deep .theme-light #side-menu .item-setting{background-color:#0284c799!important;border-color:#0284c7a6!important;color:#fff!important}::ng-deep .theme-light #side-menu #side-menu,::ng-deep .theme-light #side-menu #side-menu-setting{border-color:#0284c7}::ng-deep .theme-light #side-menu .dx-texteditor .dx-texteditor-input,::ng-deep .theme-light #side-menu .dx-texteditor .dx-dropdowneditor-icon,::ng-deep .theme-light #side-menu .dx-texteditor:after{color:#fff!important;border-color:#fff}:host ::ng-deep .dx-texteditor.dx-editor-underlined .dx-texteditor-input{padding:0}\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: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { 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: DxSwitchModule }, { kind: "component", type: i3.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: "ngmodule", type: DxSelectBoxModule }, { kind: "component", type: i4.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: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "pipe", type: UNITranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
150
|
+
}
|
|
151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniSideMenuComponent, decorators: [{
|
|
152
|
+
type: Component,
|
|
153
|
+
args: [{ selector: 'uni-side-menu', standalone: true, imports: [
|
|
154
|
+
CommonModule,
|
|
155
|
+
RouterLink,
|
|
156
|
+
RouterLinkActive,
|
|
157
|
+
NgOptimizedImage,
|
|
158
|
+
DxButtonModule,
|
|
159
|
+
DxSwitchModule,
|
|
160
|
+
DxSelectBoxModule,
|
|
161
|
+
FaIconComponent,
|
|
162
|
+
UNITranslatePipe,
|
|
163
|
+
], template: `
|
|
164
|
+
<aside id="side-menu">
|
|
165
|
+
<!-- user -->
|
|
166
|
+
<div id="side-menu-user">
|
|
167
|
+
<div class="side-menu-user-info">
|
|
168
|
+
@if (user(); as user) {
|
|
169
|
+
<fa-icon [icon]="ICON.USER"></fa-icon> {{ user.username }}
|
|
170
|
+
}
|
|
171
|
+
</div>
|
|
172
|
+
<dx-button [icon]="'close'" (onClick)="evtToggleMenu.emit(false)"></dx-button>
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
<!-- menu -->
|
|
176
|
+
@if (menuItems().length) {
|
|
177
|
+
<nav id="side-menu-menu" role="full-horizontal">
|
|
178
|
+
<ul>
|
|
179
|
+
@for (item of menuItems(); track item.id) {
|
|
180
|
+
@if (item.visible) {
|
|
181
|
+
<li>
|
|
182
|
+
<a
|
|
183
|
+
[routerLink]="item.disabled ? null : item.path"
|
|
184
|
+
routerLinkActive="item-active"
|
|
185
|
+
[ngClass]="{ 'item-disabled': item.disabled }"
|
|
186
|
+
(click)="evtToggleMenu.emit(false)">
|
|
187
|
+
<fa-icon [icon]="item.icon"></fa-icon>
|
|
188
|
+
<span>{{ item.label }}</span>
|
|
189
|
+
</a>
|
|
190
|
+
</li>
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
</ul>
|
|
194
|
+
</nav>
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
<!-- setting -->
|
|
198
|
+
<ul id="side-menu-setting">
|
|
199
|
+
@for (button of menuButtons(); track $index) {
|
|
200
|
+
<li class="item-setting-button">
|
|
201
|
+
<button
|
|
202
|
+
type="button"
|
|
203
|
+
class="dx-theme-material-typography"
|
|
204
|
+
[style]="button.style"
|
|
205
|
+
(click)="button.fun()">
|
|
206
|
+
<fa-icon [icon]="button.icon"></fa-icon>
|
|
207
|
+
<span>{{ button.label }}</span>
|
|
208
|
+
</button>
|
|
209
|
+
</li>
|
|
210
|
+
}
|
|
211
|
+
<li class="item-setting">
|
|
212
|
+
<fa-icon [icon]="darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE"></fa-icon>
|
|
213
|
+
<span>{{ 'lblDarkMode' | translate }}</span>
|
|
214
|
+
<dx-switch [value]="darkMode()" (onValueChanged)="updateTheme($event)"></dx-switch>
|
|
215
|
+
</li>
|
|
216
|
+
<li class="item-setting">
|
|
217
|
+
<fa-icon [icon]="ICON.LANGUAGE"></fa-icon>
|
|
218
|
+
<span>{{ 'lblLanguage' | translate }}</span>
|
|
219
|
+
<dx-select-box
|
|
220
|
+
[items]="translateService.translateInfo().languagesSupported"
|
|
221
|
+
[value]="translateService.translateInfo().language"
|
|
222
|
+
stylingMode="underlined"
|
|
223
|
+
placeholder=""
|
|
224
|
+
(onValueChanged)="updateLanguage($event)"></dx-select-box>
|
|
225
|
+
</li>
|
|
226
|
+
<!-- User | null | undefined -->
|
|
227
|
+
@if (user() !== undefined) {
|
|
228
|
+
<li class="item-logout">
|
|
229
|
+
<button (click)="user() ? logout() : goToLogin()">
|
|
230
|
+
<fa-icon [icon]="user() ? ICON.LOGOUT : ICON.LOGIN"></fa-icon>
|
|
231
|
+
{{ (user() ? 'lblLogout' : 'lblLogin') | translate }}
|
|
232
|
+
</button>
|
|
233
|
+
</li>
|
|
234
|
+
}
|
|
235
|
+
</ul>
|
|
236
|
+
|
|
237
|
+
<!-- logo -->
|
|
238
|
+
<div id="side-menu-logo">
|
|
239
|
+
<img
|
|
240
|
+
id="img-brand"
|
|
241
|
+
[ngSrc]="pathBrandLogo()"
|
|
242
|
+
alt="Brand logo"
|
|
243
|
+
[height]="30"
|
|
244
|
+
[width]="125"
|
|
245
|
+
priority />
|
|
246
|
+
</div>
|
|
247
|
+
</aside>
|
|
248
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{position:fixed;top:0;right:0;z-index:999}#side-menu{height:100vh;width:250px;display:grid;grid-template-rows:min-content min-content min-content 1fr 35px;grid-template-columns:1fr;grid-template-areas:\"user\" \"menu\" \"setting\" \".\" \"logo\";gap:2rem;padding:1rem;background-color:#27272a99;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border:solid 1.5px #27272a;border-radius:.25rem;box-shadow:#00000059 0 5px 5px;overflow:hidden}#side-menu-user{width:100%;grid-area:user;display:grid;grid-template-rows:1fr;grid-template-columns:1fr min-content;align-items:center;gap:1rem}#side-menu-user .side-menu-user-info{display:grid;grid-template-rows:1fr;grid-template-columns:min-content 1fr;gap:.5rem}#side-menu-menu ul,#side-menu-setting{display:grid;grid-auto-rows:42px;grid-template-columns:1fr;gap:.5rem;overflow:hidden}#side-menu-menu ul a,#side-menu-setting a{display:grid;grid-template-rows:1fr;grid-template-columns:20px 1fr;gap:.75rem;padding:.75rem;color:#fff;border-radius:.25rem}#side-menu-menu{width:100%;grid-area:menu;overflow:hidden}#side-menu-menu a.item-active,#side-menu-menu a:not(.item-disabled):hover{cursor:pointer;background-color:#52525b99}#side-menu-setting{grid-area:setting;padding-top:2rem;border-top:solid 2px #52525b}#side-menu-logo{grid-area:logo;display:flex;justify-content:end;border-bottom:solid 1px #fff}img{width:auto}li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-active{background-color:#52525b99}.item-disabled{pointer-events:none;cursor:default;opacity:.25}.item-logout button{width:100%;display:grid;grid-template-rows:1fr;grid-template-columns:min-content 1fr;align-items:center;gap:.75rem;padding:.75rem;border-radius:.25rem;color:#fff;cursor:pointer}.item-setting{display:grid;grid-template-rows:1fr;grid-template-columns:20px 1fr 60px;align-items:center;gap:.75rem;padding:.75rem;border-radius:.25rem;color:#fff;background-color:#52525b99}.item-setting>*:last-child{margin-left:auto}.item-setting-button{border-radius:.25rem;overflow:hidden;cursor:pointer;transition:.1s ease-in-out}.item-setting-button:active{transform:scale(.9)}.item-setting-button button{height:100%;width:100%;display:grid;grid-template-rows:1fr;grid-template-columns:20px 1fr;align-items:center;gap:.75rem;padding:.75rem;box-shadow:inset 0 3px 6px #000c,inset 0 -3px 6px #00000080,inset 0 1px 3px #fff3;transition:box-shadow .2s ease-in-out}::ng-deep .theme-light #side-menu,::ng-deep .theme-light #side-menu a.item-active,::ng-deep .theme-light #side-menu a:not(.item-disabled):hover,::ng-deep .theme-light #side-menu .item-setting{background-color:#0284c799!important;border-color:#0284c7a6!important;color:#fff!important}::ng-deep .theme-light #side-menu #side-menu,::ng-deep .theme-light #side-menu #side-menu-setting{border-color:#0284c7}::ng-deep .theme-light #side-menu .dx-texteditor .dx-texteditor-input,::ng-deep .theme-light #side-menu .dx-texteditor .dx-dropdowneditor-icon,::ng-deep .theme-light #side-menu .dx-texteditor:after{color:#fff!important;border-color:#fff}:host ::ng-deep .dx-texteditor.dx-editor-underlined .dx-texteditor-input{padding:0}\n"] }]
|
|
249
|
+
}] });
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Generated bundle index. Do not edit.
|
|
253
|
+
*/
|
|
254
|
+
|
|
255
|
+
export { UniSideMenuComponent };
|
|
256
|
+
//# sourceMappingURL=uni-component-tw-uni-side-menu.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uni-component-tw-uni-side-menu.mjs","sources":["../../../projects/uni-component-tw/uni-side-menu/src/uni-side-menu.component.ts","../../../projects/uni-component-tw/uni-side-menu/uni-component-tw-uni-side-menu.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input, output, signal } from '@angular/core';\r\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\nimport { DxSwitchModule } from 'devextreme-angular/ui/switch';\r\nimport { DxSelectBoxModule } from 'devextreme-angular/ui/select-box';\r\nimport { ValueChangedEvent as SwitchValueChangedEvent } from 'devextreme/ui/switch_types';\r\nimport { ValueChangedEvent as SelectBoxValueChangedEvent } from 'devextreme/ui/select_box_types';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport {\r\n IconDefinition,\r\n faArrowRightFromBracket,\r\n faArrowRightToBracket,\r\n faLanguage,\r\n faMoon,\r\n faSun,\r\n faUser,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport { UNITranslatePipe, UNITranslateService } from 'uni-service/translate';\r\nimport { UNIAuthService, User } from 'uni-service/auth';\r\n\r\nexport type MenuItem = {\r\n id: number;\r\n icon: IconDefinition;\r\n label: string;\r\n path: string;\r\n visible: boolean;\r\n disabled: boolean;\r\n};\r\n\r\nexport type MenuButton = {\r\n id: number;\r\n icon: IconDefinition;\r\n label: string;\r\n style: string;\r\n fun: (...params: any) => void;\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 NgOptimizedImage,\r\n DxButtonModule,\r\n DxSwitchModule,\r\n DxSelectBoxModule,\r\n FaIconComponent,\r\n UNITranslatePipe,\r\n ],\r\n template: `\r\n <aside id=\"side-menu\">\r\n <!-- user -->\r\n <div id=\"side-menu-user\">\r\n <div class=\"side-menu-user-info\">\r\n @if (user(); as user) {\r\n <fa-icon [icon]=\"ICON.USER\"></fa-icon> {{ user.username }}\r\n }\r\n </div>\r\n <dx-button [icon]=\"'close'\" (onClick)=\"evtToggleMenu.emit(false)\"></dx-button>\r\n </div>\r\n\r\n <!-- menu -->\r\n @if (menuItems().length) {\r\n <nav id=\"side-menu-menu\" role=\"full-horizontal\">\r\n <ul>\r\n @for (item of menuItems(); track item.id) {\r\n @if (item.visible) {\r\n <li>\r\n <a\r\n [routerLink]=\"item.disabled ? null : item.path\"\r\n routerLinkActive=\"item-active\"\r\n [ngClass]=\"{ 'item-disabled': item.disabled }\"\r\n (click)=\"evtToggleMenu.emit(false)\">\r\n <fa-icon [icon]=\"item.icon\"></fa-icon>\r\n <span>{{ item.label }}</span>\r\n </a>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n </nav>\r\n }\r\n\r\n <!-- setting -->\r\n <ul id=\"side-menu-setting\">\r\n @for (button of menuButtons(); track $index) {\r\n <li class=\"item-setting-button\">\r\n <button\r\n type=\"button\"\r\n class=\"dx-theme-material-typography\"\r\n [style]=\"button.style\"\r\n (click)=\"button.fun()\">\r\n <fa-icon [icon]=\"button.icon\"></fa-icon>\r\n <span>{{ button.label }}</span>\r\n </button>\r\n </li>\r\n }\r\n <li class=\"item-setting\">\r\n <fa-icon [icon]=\"darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE\"></fa-icon>\r\n <span>{{ 'lblDarkMode' | translate }}</span>\r\n <dx-switch [value]=\"darkMode()\" (onValueChanged)=\"updateTheme($event)\"></dx-switch>\r\n </li>\r\n <li class=\"item-setting\">\r\n <fa-icon [icon]=\"ICON.LANGUAGE\"></fa-icon>\r\n <span>{{ 'lblLanguage' | translate }}</span>\r\n <dx-select-box\r\n [items]=\"translateService.translateInfo().languagesSupported\"\r\n [value]=\"translateService.translateInfo().language\"\r\n stylingMode=\"underlined\"\r\n placeholder=\"\"\r\n (onValueChanged)=\"updateLanguage($event)\"></dx-select-box>\r\n </li>\r\n <!-- User | null | undefined -->\r\n @if (user() !== undefined) {\r\n <li class=\"item-logout\">\r\n <button (click)=\"user() ? logout() : goToLogin()\">\r\n <fa-icon [icon]=\"user() ? ICON.LOGOUT : ICON.LOGIN\"></fa-icon>\r\n {{ (user() ? 'lblLogout' : 'lblLogin') | translate }}\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n\r\n <!-- logo -->\r\n <div id=\"side-menu-logo\">\r\n <img\r\n id=\"img-brand\"\r\n [ngSrc]=\"pathBrandLogo()\"\r\n alt=\"Brand logo\"\r\n [height]=\"30\"\r\n [width]=\"125\"\r\n priority />\r\n </div>\r\n </aside>\r\n `,\r\n styleUrl: './uni-side-menu.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UniSideMenuComponent {\r\n /* Service */\r\n readonly router = inject(Router);\r\n readonly authService = inject(UNIAuthService);\r\n readonly translateService = inject(UNITranslateService);\r\n\r\n /* Input */\r\n pathBrandLogo = input.required<string>();\r\n menuItems = input<MenuItem[]>([]);\r\n menuButtons = input<MenuButton[]>([]);\r\n user = input.required<User | null | undefined>();\r\n\r\n /* Output */\r\n evtToggleMenu = output<false>();\r\n\r\n /* Variables */\r\n darkMode = signal<boolean>(localStorage.getItem('uni-theme') === 'dark');\r\n\r\n /* Icons */\r\n 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 };\r\n\r\n /* ---------------------- Methods ---------------------- */\r\n protected updateTheme(e: SwitchValueChangedEvent): void {\r\n localStorage.setItem('uni-theme', e.value ? 'dark' : 'light');\r\n window.location.reload();\r\n }\r\n\r\n protected updateLanguage(e: SelectBoxValueChangedEvent): void {\r\n this.translateService.setLanguage(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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { input, viewChild, effect, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
4
|
+
|
|
5
|
+
class UniWrapperChartComponent {
|
|
6
|
+
/* ----------------------- Constructor & lifecycle --------------------------- */
|
|
7
|
+
constructor() {
|
|
8
|
+
/* Inputs & outputs */
|
|
9
|
+
this.title = input();
|
|
10
|
+
this.gridTemplateColumns = input('1fr');
|
|
11
|
+
this.gridTitle = input('1rem');
|
|
12
|
+
this.gridGap = input('1rem');
|
|
13
|
+
/* Ref */
|
|
14
|
+
this.containerDataSource = viewChild.required('container_datasource');
|
|
15
|
+
this.containerWithAside = viewChild('container_with_aside');
|
|
16
|
+
effect(() => {
|
|
17
|
+
this.containerDataSource().nativeElement.style.gridTemplateRows = this.title()
|
|
18
|
+
? 'min-content 1fr'
|
|
19
|
+
: '1fr';
|
|
20
|
+
this.containerDataSource().nativeElement.style.gap = this.title() ? this.gridTitle() : '0rem';
|
|
21
|
+
});
|
|
22
|
+
effect(() => {
|
|
23
|
+
if (this.containerWithAside()) {
|
|
24
|
+
this.containerWithAside().nativeElement.style.gridTemplateColumns =
|
|
25
|
+
this.gridTemplateColumns();
|
|
26
|
+
this.containerWithAside().nativeElement.style.gap = this.gridGap();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniWrapperChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UniWrapperChartComponent, isStandalone: true, selector: "uni-wrapper-chart", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, gridTemplateColumns: { classPropertyName: "gridTemplateColumns", publicName: "gridTemplateColumns", isSignal: true, isRequired: false, transformFunction: null }, gridTitle: { classPropertyName: "gridTitle", publicName: "gridTitle", isSignal: true, isRequired: false, transformFunction: null }, gridGap: { classPropertyName: "gridGap", publicName: "gridGap", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "containerDataSource", first: true, predicate: ["container_datasource"], descendants: true, isSignal: true }, { propertyName: "containerWithAside", first: true, predicate: ["container_with_aside"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #container_datasource class=\"container-datasource\">\r\n @if (title(); as title) {\r\n <h5>{{ title }}</h5>\r\n }\r\n\r\n @if (gridTemplateColumns() !== '1fr') {\r\n <div #container_with_aside class=\"container-with-aside\">\r\n <ng-content select=\"[aside]\"></ng-content>\r\n <div class=\"container-chart\">\r\n <ng-content select=\"[chart]\"></ng-content>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"container-chart\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n\r\n", styles: [":host{display:block;height:100%;width:100%;overflow:hidden}.container-datasource{height:100%;display:grid;grid-template-columns:1fr;gap:.5rem;overflow:hidden}.container-with-aside{height:100%;width:100%;display:grid;grid-template-rows:1fr;overflow:hidden}.container-chart{overflow:hidden}:host ::ng-deep .container-chart>*{height:100%;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32
|
+
}
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniWrapperChartComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{ selector: 'uni-wrapper-chart', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #container_datasource class=\"container-datasource\">\r\n @if (title(); as title) {\r\n <h5>{{ title }}</h5>\r\n }\r\n\r\n @if (gridTemplateColumns() !== '1fr') {\r\n <div #container_with_aside class=\"container-with-aside\">\r\n <ng-content select=\"[aside]\"></ng-content>\r\n <div class=\"container-chart\">\r\n <ng-content select=\"[chart]\"></ng-content>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"container-chart\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n\r\n", styles: [":host{display:block;height:100%;width:100%;overflow:hidden}.container-datasource{height:100%;display:grid;grid-template-columns:1fr;gap:.5rem;overflow:hidden}.container-with-aside{height:100%;width:100%;display:grid;grid-template-rows:1fr;overflow:hidden}.container-chart{overflow:hidden}:host ::ng-deep .container-chart>*{height:100%;width:100%}\n"] }]
|
|
36
|
+
}], ctorParameters: () => [] });
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Generated bundle index. Do not edit.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
export { UniWrapperChartComponent };
|
|
43
|
+
//# sourceMappingURL=uni-component-tw-uni-wrapper-chart.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uni-component-tw-uni-wrapper-chart.mjs","sources":["../../../projects/uni-component-tw/uni-wrapper-chart/src/uni-wrapper-chart.component.ts","../../../projects/uni-component-tw/uni-wrapper-chart/src/uni-wrapper-chart.component.html","../../../projects/uni-component-tw/uni-wrapper-chart/uni-component-tw-uni-wrapper-chart.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n effect,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'uni-wrapper-chart',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './uni-wrapper-chart.component.html',\r\n styleUrls: ['./uni-wrapper-chart.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UniWrapperChartComponent {\r\n /* Inputs & outputs */\r\n public readonly title = input<string>();\r\n public readonly gridTemplateColumns = input<string>('1fr');\r\n public readonly gridTitle = input<string>('1rem');\r\n public readonly gridGap = input<string>('1rem');\r\n\r\n /* Ref */\r\n protected readonly containerDataSource =\r\n viewChild.required<ElementRef<HTMLDivElement>>('container_datasource');\r\n protected readonly containerWithAside =\r\n viewChild<ElementRef<HTMLDivElement>>('container_with_aside');\r\n\r\n /* ----------------------- Constructor & lifecycle --------------------------- */\r\n constructor() {\r\n effect(() => {\r\n this.containerDataSource().nativeElement.style.gridTemplateRows = this.title()\r\n ? 'min-content 1fr'\r\n : '1fr';\r\n this.containerDataSource().nativeElement.style.gap = this.title() ? this.gridTitle() : '0rem';\r\n });\r\n effect(() => {\r\n if (this.containerWithAside()) {\r\n this.containerWithAside()!.nativeElement.style.gridTemplateColumns =\r\n this.gridTemplateColumns();\r\n this.containerWithAside()!.nativeElement.style.gap = this.gridGap();\r\n }\r\n });\r\n }\r\n}\r\n","<div #container_datasource class=\"container-datasource\">\r\n @if (title(); as title) {\r\n <h5>{{ title }}</h5>\r\n }\r\n\r\n @if (gridTemplateColumns() !== '1fr') {\r\n <div #container_with_aside class=\"container-with-aside\">\r\n <ng-content select=\"[aside]\"></ng-content>\r\n <div class=\"container-chart\">\r\n <ng-content select=\"[chart]\"></ng-content>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"container-chart\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uni-component-tw.mjs","sources":["../../../projects/uni-component-tw/index.ts","../../../projects/uni-component-tw/uni-component-tw.ts"],"sourcesContent":["/*\r\n * Public API Surface of component\r\n */\r\n\r\nexport const UNI_COMPONENT = 'uni-component-tw';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;AAEG;AAEI,MAAM,aAAa,GAAG;;ACJ7B;;AAEG;;;;"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const UNI_COMPONENT = "uni-component-tw";
|
package/package.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "uni-component-tw",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Components angular base",
|
|
5
|
+
"license": "ISC",
|
|
6
|
+
"peerDependencies": {
|
|
7
|
+
"@angular/common": "^18.0.0",
|
|
8
|
+
"@angular/core": "^18.0.0"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"tslib": "^2.6.0"
|
|
12
|
+
},
|
|
13
|
+
"sideEffects": false,
|
|
14
|
+
"module": "fesm2022/uni-component-tw.mjs",
|
|
15
|
+
"typings": "index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
"./package.json": {
|
|
18
|
+
"default": "./package.json"
|
|
19
|
+
},
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./index.d.ts",
|
|
22
|
+
"esm2022": "./esm2022/uni-component-tw.mjs",
|
|
23
|
+
"esm": "./esm2022/uni-component-tw.mjs",
|
|
24
|
+
"default": "./fesm2022/uni-component-tw.mjs"
|
|
25
|
+
},
|
|
26
|
+
"./uni-header": {
|
|
27
|
+
"types": "./uni-header/index.d.ts",
|
|
28
|
+
"esm2022": "./esm2022/uni-header/uni-component-tw-uni-header.mjs",
|
|
29
|
+
"esm": "./esm2022/uni-header/uni-component-tw-uni-header.mjs",
|
|
30
|
+
"default": "./fesm2022/uni-component-tw-uni-header.mjs"
|
|
31
|
+
},
|
|
32
|
+
"./uni-article": {
|
|
33
|
+
"types": "./uni-article/index.d.ts",
|
|
34
|
+
"esm2022": "./esm2022/uni-article/uni-component-tw-uni-article.mjs",
|
|
35
|
+
"esm": "./esm2022/uni-article/uni-component-tw-uni-article.mjs",
|
|
36
|
+
"default": "./fesm2022/uni-component-tw-uni-article.mjs"
|
|
37
|
+
},
|
|
38
|
+
"./uni-login-modal": {
|
|
39
|
+
"types": "./uni-login-modal/index.d.ts",
|
|
40
|
+
"esm2022": "./esm2022/uni-login-modal/uni-component-tw-uni-login-modal.mjs",
|
|
41
|
+
"esm": "./esm2022/uni-login-modal/uni-component-tw-uni-login-modal.mjs",
|
|
42
|
+
"default": "./fesm2022/uni-component-tw-uni-login-modal.mjs"
|
|
43
|
+
},
|
|
44
|
+
"./uni-pie-chart": {
|
|
45
|
+
"types": "./uni-pie-chart/index.d.ts",
|
|
46
|
+
"esm2022": "./esm2022/uni-pie-chart/uni-component-tw-uni-pie-chart.mjs",
|
|
47
|
+
"esm": "./esm2022/uni-pie-chart/uni-component-tw-uni-pie-chart.mjs",
|
|
48
|
+
"default": "./fesm2022/uni-component-tw-uni-pie-chart.mjs"
|
|
49
|
+
},
|
|
50
|
+
"./uni-side-menu": {
|
|
51
|
+
"types": "./uni-side-menu/index.d.ts",
|
|
52
|
+
"esm2022": "./esm2022/uni-side-menu/uni-component-tw-uni-side-menu.mjs",
|
|
53
|
+
"esm": "./esm2022/uni-side-menu/uni-component-tw-uni-side-menu.mjs",
|
|
54
|
+
"default": "./fesm2022/uni-component-tw-uni-side-menu.mjs"
|
|
55
|
+
},
|
|
56
|
+
"./uni-wrapper-chart": {
|
|
57
|
+
"types": "./uni-wrapper-chart/index.d.ts",
|
|
58
|
+
"esm2022": "./esm2022/uni-wrapper-chart/uni-component-tw-uni-wrapper-chart.mjs",
|
|
59
|
+
"esm": "./esm2022/uni-wrapper-chart/uni-component-tw-uni-wrapper-chart.mjs",
|
|
60
|
+
"default": "./fesm2022/uni-component-tw-uni-wrapper-chart.mjs"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/uni-article.component';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SimpleChanges, OnChanges } from '@angular/core';
|
|
2
|
+
import { IconDefinition } from '@fortawesome/free-solid-svg-icons';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class UniArticleComponent implements OnChanges {
|
|
5
|
+
readonly color: import("@angular/core").InputSignal<string>;
|
|
6
|
+
readonly title: import("@angular/core").InputSignal<string | undefined>;
|
|
7
|
+
readonly icon: import("@angular/core").InputSignal<IconDefinition | undefined>;
|
|
8
|
+
readonly setIsOpen: import("@angular/core").InputSignal<boolean | undefined>;
|
|
9
|
+
readonly headerCloseButton: import("@angular/core").InputSignal<boolean>;
|
|
10
|
+
isOpen: import("@angular/core").WritableSignal<boolean>;
|
|
11
|
+
isHeader: import("@angular/core").Signal<string | boolean | IconDefinition>;
|
|
12
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
13
|
+
protected toggleIsOpen(): void;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UniArticleComponent, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UniArticleComponent, "uni-article", never, { "color": { "alias": "color"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "setIsOpen": { "alias": "setIsOpen"; "required": false; "isSignal": true; }; "headerCloseButton": { "alias": "headerCloseButton"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/uni-header.component';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class UniHeaderComponent {
|
|
3
|
+
title: import("@angular/core").InputSignal<string>;
|
|
4
|
+
version: import("@angular/core").InputSignal<string>;
|
|
5
|
+
pathBrandLogo: import("@angular/core").InputSignal<string>;
|
|
6
|
+
pathAppLogo: import("@angular/core").InputSignal<string | undefined>;
|
|
7
|
+
sideMenu: import("@angular/core").InputSignal<boolean>;
|
|
8
|
+
evtToggleMenu: import("@angular/core").OutputEmitterRef<true>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UniHeaderComponent, never>;
|
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UniHeaderComponent, "uni-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "version": { "alias": "version"; "required": true; "isSignal": true; }; "pathBrandLogo": { "alias": "pathBrandLogo"; "required": true; "isSignal": true; }; "pathAppLogo": { "alias": "pathAppLogo"; "required": false; "isSignal": true; }; "sideMenu": { "alias": "sideMenu"; "required": false; "isSignal": true; }; }, { "evtToggleMenu": "evtToggleMenu"; }, never, never, true, never>;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/uni-login-modal.component';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Router } from '@angular/router';
|
|
2
|
+
import { Location } from '@angular/common';
|
|
3
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
4
|
+
import { UNIAuthService } from 'uni-service/auth';
|
|
5
|
+
import { UNIToastService } from 'uni-service/toast';
|
|
6
|
+
import { UNITranslateService } from 'uni-service/translate';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export type LoginForm = {
|
|
9
|
+
username: string;
|
|
10
|
+
password: string;
|
|
11
|
+
};
|
|
12
|
+
export declare class UNILoginModalComponent {
|
|
13
|
+
readonly router: Router;
|
|
14
|
+
readonly location: Location;
|
|
15
|
+
readonly authService: UNIAuthService;
|
|
16
|
+
readonly toastService: UNIToastService;
|
|
17
|
+
readonly translateService: UNITranslateService;
|
|
18
|
+
visibile: import("@angular/core").InputSignal<boolean>;
|
|
19
|
+
routeHome: import("@angular/core").InputSignal<string | undefined>;
|
|
20
|
+
enableGoBack: import("@angular/core").InputSignal<boolean>;
|
|
21
|
+
readonly loginForm: FormGroup<{
|
|
22
|
+
username: FormControl<string>;
|
|
23
|
+
password: FormControl<string>;
|
|
24
|
+
}>;
|
|
25
|
+
login(): void;
|
|
26
|
+
logout(): void;
|
|
27
|
+
onHiding(): void;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UNILoginModalComponent, never>;
|
|
29
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UNILoginModalComponent, "uni-login-modal", never, { "visibile": { "alias": "visibile"; "required": false; "isSignal": true; }; "routeHome": { "alias": "routeHome"; "required": false; "isSignal": true; }; "enableGoBack": { "alias": "enableGoBack"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/uni-pie-chart.component';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { PieChartType } from 'devextreme/viz/pie_chart_types';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export type ChartDataSource = {
|
|
4
|
+
name: string;
|
|
5
|
+
value: number | undefined;
|
|
6
|
+
color: string;
|
|
7
|
+
};
|
|
8
|
+
export declare class UniPieChartComponent {
|
|
9
|
+
chartDataSource: import("@angular/core").InputSignal<ChartDataSource[]>;
|
|
10
|
+
chartPercentage: import("@angular/core").InputSignal<number | undefined>;
|
|
11
|
+
chartType: import("@angular/core").InputSignal<PieChartType>;
|
|
12
|
+
chartDiameter: import("@angular/core").InputSignal<number>;
|
|
13
|
+
chartInnerRadius: import("@angular/core").InputSignal<number>;
|
|
14
|
+
tooltipIsEnabled: import("@angular/core").InputSignal<boolean>;
|
|
15
|
+
legendPosition: import("@angular/core").InputSignal<"none" | "bottom" | "left" | "right" | "top">;
|
|
16
|
+
legendWithValue: import("@angular/core").InputSignal<boolean>;
|
|
17
|
+
legendGap: import("@angular/core").InputSignal<string>;
|
|
18
|
+
uom: import("@angular/core").InputSignal<string>;
|
|
19
|
+
paletteColor: import("@angular/core").Signal<string[]>;
|
|
20
|
+
gridColumn: import("@angular/core").Signal<"1fr min-content" | "min-content 1fr" | "1fr">;
|
|
21
|
+
gridRow: import("@angular/core").Signal<"1fr min-content" | "min-content 1fr" | "1fr">;
|
|
22
|
+
constructor();
|
|
23
|
+
customizeTooltip(pointInfo: {
|
|
24
|
+
argumentText: string;
|
|
25
|
+
valueText: string;
|
|
26
|
+
}): {
|
|
27
|
+
text: string;
|
|
28
|
+
color: string;
|
|
29
|
+
};
|
|
30
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UniPieChartComponent, never>;
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UniPieChartComponent, "uni-pie-chart", never, { "chartDataSource": { "alias": "chartDataSource"; "required": true; "isSignal": true; }; "chartPercentage": { "alias": "chartPercentage"; "required": false; "isSignal": true; }; "chartType": { "alias": "chartType"; "required": false; "isSignal": true; }; "chartDiameter": { "alias": "chartDiameter"; "required": false; "isSignal": true; }; "chartInnerRadius": { "alias": "chartInnerRadius"; "required": false; "isSignal": true; }; "tooltipIsEnabled": { "alias": "tooltipIsEnabled"; "required": false; "isSignal": true; }; "legendPosition": { "alias": "legendPosition"; "required": false; "isSignal": true; }; "legendWithValue": { "alias": "legendWithValue"; "required": false; "isSignal": true; }; "legendGap": { "alias": "legendGap"; "required": false; "isSignal": true; }; "uom": { "alias": "uom"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
32
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/uni-side-menu.component';
|