uni-component-tw 1.1.0 → 2.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.
Files changed (56) hide show
  1. package/README.md +1 -1
  2. package/esm2022/lib/uni-article/uni-article.component.mjs +40 -0
  3. package/esm2022/lib/uni-header/uni-header.component.mjs +24 -0
  4. package/esm2022/lib/uni-login-modal/uni-login-modal.component.mjs +53 -0
  5. package/esm2022/lib/uni-pie-chart/uni-pie-chart.component.mjs +61 -0
  6. package/esm2022/lib/uni-side-menu/uni-side-menu.component.mjs +79 -0
  7. package/esm2022/public-api.mjs +9 -0
  8. package/esm2022/uni-component-tw.mjs +2 -2
  9. package/fesm2022/uni-component-tw.mjs +237 -3
  10. package/fesm2022/uni-component-tw.mjs.map +1 -1
  11. package/index.d.ts +5 -1
  12. package/{uni-login-modal/src → lib/uni-login-modal}/uni-login-modal.component.d.ts +4 -4
  13. package/{uni-pie-chart/src → lib/uni-pie-chart}/uni-pie-chart.component.d.ts +3 -3
  14. package/{uni-side-menu/src → lib/uni-side-menu}/uni-side-menu.component.d.ts +6 -6
  15. package/package.json +2 -40
  16. package/public-api.d.ts +5 -0
  17. package/esm2022/index.mjs +0 -5
  18. package/esm2022/uni-article/index.mjs +0 -2
  19. package/esm2022/uni-article/src/uni-article.component.mjs +0 -108
  20. package/esm2022/uni-article/uni-component-tw-uni-article.mjs +0 -5
  21. package/esm2022/uni-header/index.mjs +0 -2
  22. package/esm2022/uni-header/src/uni-header.component.mjs +0 -66
  23. package/esm2022/uni-header/uni-component-tw-uni-header.mjs +0 -5
  24. package/esm2022/uni-login-modal/index.mjs +0 -2
  25. package/esm2022/uni-login-modal/src/uni-login-modal.component.mjs +0 -146
  26. package/esm2022/uni-login-modal/uni-component-tw-uni-login-modal.mjs +0 -5
  27. package/esm2022/uni-pie-chart/index.mjs +0 -2
  28. package/esm2022/uni-pie-chart/src/uni-pie-chart.component.mjs +0 -159
  29. package/esm2022/uni-pie-chart/uni-component-tw-uni-pie-chart.mjs +0 -5
  30. package/esm2022/uni-side-menu/index.mjs +0 -2
  31. package/esm2022/uni-side-menu/src/uni-side-menu.component.mjs +0 -317
  32. package/esm2022/uni-side-menu/uni-component-tw-uni-side-menu.mjs +0 -5
  33. package/esm2022/uni-wrapper-chart/index.mjs +0 -2
  34. package/esm2022/uni-wrapper-chart/src/uni-wrapper-chart.component.mjs +0 -36
  35. package/esm2022/uni-wrapper-chart/uni-component-tw-uni-wrapper-chart.mjs +0 -5
  36. package/fesm2022/uni-component-tw-uni-article.mjs +0 -115
  37. package/fesm2022/uni-component-tw-uni-article.mjs.map +0 -1
  38. package/fesm2022/uni-component-tw-uni-header.mjs +0 -73
  39. package/fesm2022/uni-component-tw-uni-header.mjs.map +0 -1
  40. package/fesm2022/uni-component-tw-uni-login-modal.mjs +0 -152
  41. package/fesm2022/uni-component-tw-uni-login-modal.mjs.map +0 -1
  42. package/fesm2022/uni-component-tw-uni-pie-chart.mjs +0 -166
  43. package/fesm2022/uni-component-tw-uni-pie-chart.mjs.map +0 -1
  44. package/fesm2022/uni-component-tw-uni-side-menu.mjs +0 -324
  45. package/fesm2022/uni-component-tw-uni-side-menu.mjs.map +0 -1
  46. package/fesm2022/uni-component-tw-uni-wrapper-chart.mjs +0 -43
  47. package/fesm2022/uni-component-tw-uni-wrapper-chart.mjs.map +0 -1
  48. package/uni-article/index.d.ts +0 -1
  49. package/uni-header/index.d.ts +0 -1
  50. package/uni-login-modal/index.d.ts +0 -1
  51. package/uni-pie-chart/index.d.ts +0 -1
  52. package/uni-side-menu/index.d.ts +0 -1
  53. package/uni-wrapper-chart/index.d.ts +0 -1
  54. package/uni-wrapper-chart/src/uni-wrapper-chart.component.d.ts +0 -13
  55. /package/{uni-article/src → lib/uni-article}/uni-article.component.d.ts +0 -0
  56. /package/{uni-header/src → lib/uni-header}/uni-header.component.d.ts +0 -0
@@ -1,115 +0,0 @@
1
- import * as i1 from '@angular/common';
2
- import { CommonModule } from '@angular/common';
3
- import * as i0 from '@angular/core';
4
- import { input, signal, computed, Component, ChangeDetectionStrategy } from '@angular/core';
5
- import * as i2 from 'devextreme-angular/ui/button';
6
- import { DxButtonModule } from 'devextreme-angular/ui/button';
7
- import { FaIconComponent } from '@fortawesome/angular-fontawesome';
8
-
9
- class UniArticleComponent {
10
- constructor() {
11
- /* Inputs */
12
- this.color = input.required(); // Colore di base dell'articolo
13
- this.title = input(); // Titolo opzionale dell'articolo
14
- this.icon = input(); // Icona opzionale per l'intestazione
15
- this.setIsOpen = input(); // Stato iniziale di apertura
16
- this.headerCloseButton = input(false); // Se mostrare il button per chiudere article
17
- /* Variables */
18
- this.isOpen = signal(true);
19
- this.isHeader = computed(() => this.icon() || this.title() || this.headerCloseButton());
20
- }
21
- /* ----------------------- Lifecycle Hook --------------------------- */
22
- ngOnChanges(changes) {
23
- const { setIsOpen } = changes;
24
- // Verifica se 'setIsOpen' è cambiato e non è il primo cambiamento
25
- if (setIsOpen && !setIsOpen.firstChange && setIsOpen.currentValue !== undefined) {
26
- this.isOpen.set(setIsOpen.currentValue);
27
- }
28
- }
29
- /* ----------------------- Metodi --------------------------- */
30
- toggleIsOpen() {
31
- // Inverte lo stato di apertura/chiusura
32
- this.isOpen.update((val) => !val);
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniArticleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UniArticleComponent, isStandalone: true, selector: "uni-article", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, setIsOpen: { classPropertyName: "setIsOpen", publicName: "setIsOpen", isSignal: true, isRequired: false, transformFunction: null }, headerCloseButton: { classPropertyName: "headerCloseButton", publicName: "headerCloseButton", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: `
36
- <article
37
- class="uni_article flex h-full flex-col rounded border-2 p-4"
38
- [style.backgroundColor]="color() + '26'"
39
- [style.borderColor]="color() + '33'">
40
- <!-- Title -->
41
- @if (isHeader()) {
42
- <div class="uni_article_header flex items-center gap-4" [ngClass]="{ 'mb-4': isOpen() }">
43
- <!-- Icona nella testata, se presente -->
44
- @if (icon(); as icon) {
45
- <fa-icon class="uni-article-header-icon" [icon]="icon"></fa-icon>
46
- }
47
-
48
- <!-- Titolo nella testata, se presente -->
49
- @if (title(); as title) {
50
- <h5 class="uni_article_header_title truncate uppercase">{{ title }}</h5>
51
- }
52
-
53
- <!-- Bottone per aprire/chiudere l'articolo, se presente -->
54
- @if (headerCloseButton()) {
55
- <dx-button
56
- class="uni_article_header_button ml-auto"
57
- [icon]="isOpen() ? 'close' : 'expandform'"
58
- (onClick)="toggleIsOpen()">
59
- </dx-button>
60
- }
61
- </div>
62
- }
63
-
64
- <!-- Contenuto dell'articolo, visibile solo se aperto -->
65
- @if (isOpen()) {
66
- <ng-content></ng-content>
67
- }
68
- </article>
69
- `, isInline: true, styles: [":host{display:block;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
70
- }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniArticleComponent, decorators: [{
72
- type: Component,
73
- args: [{ selector: 'uni-article', standalone: true, imports: [CommonModule, DxButtonModule, FaIconComponent], template: `
74
- <article
75
- class="uni_article flex h-full flex-col rounded border-2 p-4"
76
- [style.backgroundColor]="color() + '26'"
77
- [style.borderColor]="color() + '33'">
78
- <!-- Title -->
79
- @if (isHeader()) {
80
- <div class="uni_article_header flex items-center gap-4" [ngClass]="{ 'mb-4': isOpen() }">
81
- <!-- Icona nella testata, se presente -->
82
- @if (icon(); as icon) {
83
- <fa-icon class="uni-article-header-icon" [icon]="icon"></fa-icon>
84
- }
85
-
86
- <!-- Titolo nella testata, se presente -->
87
- @if (title(); as title) {
88
- <h5 class="uni_article_header_title truncate uppercase">{{ title }}</h5>
89
- }
90
-
91
- <!-- Bottone per aprire/chiudere l'articolo, se presente -->
92
- @if (headerCloseButton()) {
93
- <dx-button
94
- class="uni_article_header_button ml-auto"
95
- [icon]="isOpen() ? 'close' : 'expandform'"
96
- (onClick)="toggleIsOpen()">
97
- </dx-button>
98
- }
99
- </div>
100
- }
101
-
102
- <!-- Contenuto dell'articolo, visibile solo se aperto -->
103
- @if (isOpen()) {
104
- <ng-content></ng-content>
105
- }
106
- </article>
107
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;overflow:hidden}\n"] }]
108
- }] });
109
-
110
- /**
111
- * Generated bundle index. Do not edit.
112
- */
113
-
114
- export { UniArticleComponent };
115
- //# sourceMappingURL=uni-component-tw-uni-article.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uni-component-tw-uni-article.mjs","sources":["../../../projects/uni-component-tw/uni-article/src/uni-article.component.ts","../../../projects/uni-component-tw/uni-article/uni-component-tw-uni-article.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n signal,\r\n SimpleChanges,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\n\r\n@Component({\r\n selector: 'uni-article',\r\n standalone: true,\r\n imports: [CommonModule, DxButtonModule, FaIconComponent],\r\n template: `\r\n <article\r\n class=\"uni_article flex h-full flex-col rounded border-2 p-4\"\r\n [style.backgroundColor]=\"color() + '26'\"\r\n [style.borderColor]=\"color() + '33'\">\r\n <!-- Title -->\r\n @if (isHeader()) {\r\n <div class=\"uni_article_header flex items-center gap-4\" [ngClass]=\"{ 'mb-4': isOpen() }\">\r\n <!-- Icona nella testata, se presente -->\r\n @if (icon(); as icon) {\r\n <fa-icon class=\"uni-article-header-icon\" [icon]=\"icon\"></fa-icon>\r\n }\r\n\r\n <!-- Titolo nella testata, se presente -->\r\n @if (title(); as title) {\r\n <h5 class=\"uni_article_header_title truncate uppercase\">{{ title }}</h5>\r\n }\r\n\r\n <!-- Bottone per aprire/chiudere l'articolo, se presente -->\r\n @if (headerCloseButton()) {\r\n <dx-button\r\n class=\"uni_article_header_button ml-auto\"\r\n [icon]=\"isOpen() ? 'close' : 'expandform'\"\r\n (onClick)=\"toggleIsOpen()\">\r\n </dx-button>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Contenuto dell'articolo, visibile solo se aperto -->\r\n @if (isOpen()) {\r\n <ng-content></ng-content>\r\n }\r\n </article>\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: block;\r\n overflow: hidden;\r\n }\r\n `,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UniArticleComponent implements OnChanges {\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 setIsOpen = 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>(true);\r\n isHeader = computed(() => this.icon() || this.title() || this.headerCloseButton());\r\n\r\n /* ----------------------- Lifecycle Hook --------------------------- */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { setIsOpen } = changes;\r\n // Verifica se 'setIsOpen' è cambiato e non è il primo cambiamento\r\n if (setIsOpen && !setIsOpen.firstChange && setIsOpen.currentValue !== undefined) {\r\n this.isOpen.set(setIsOpen.currentValue);\r\n }\r\n }\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,73 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import * as i0 from '@angular/core';
3
- import { input, output, Component, ChangeDetectionStrategy } from '@angular/core';
4
- import * as i1 from 'devextreme-angular/ui/button';
5
- import { DxButtonModule } from 'devextreme-angular/ui/button';
6
-
7
- class UniHeaderComponent {
8
- constructor() {
9
- /* Input */
10
- this.title = input.required();
11
- this.version = input.required();
12
- this.pathBrandLogo = input.required();
13
- this.pathAppLogo = input(undefined);
14
- this.sideMenu = input(false);
15
- /* Output */
16
- this.evtToggleMenu = output();
17
- }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UniHeaderComponent, isStandalone: true, selector: "uni-header", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, version: { classPropertyName: "version", publicName: "version", isSignal: true, isRequired: true, transformFunction: null }, pathBrandLogo: { classPropertyName: "pathBrandLogo", publicName: "pathBrandLogo", isSignal: true, isRequired: true, transformFunction: null }, pathAppLogo: { classPropertyName: "pathAppLogo", publicName: "pathAppLogo", isSignal: true, isRequired: false, transformFunction: null }, sideMenu: { classPropertyName: "sideMenu", publicName: "sideMenu", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { evtToggleMenu: "evtToggleMenu" }, ngImport: i0, template: `<header id="uni-header">
20
- <div>
21
- <!-- app logo -->
22
- @if (pathAppLogo(); as pathAppLogo) {
23
- <img id="header-img-app" [src]="pathAppLogo" alt="App logo" />
24
- }
25
-
26
- <!-- info -->
27
- <div id="header-info">
28
- <p>{{ title() }}</p>
29
- <p>{{ version() }}</p>
30
- </div>
31
-
32
- <!-- brand logo -->
33
- <img id="header-img-brand" [src]="pathBrandLogo()" alt="Brand logo" />
34
-
35
- <!-- button menu -->
36
- @if (sideMenu()) {
37
- <dx-button [icon]="'menu'" (onClick)="evtToggleMenu.emit(true)"></dx-button>
38
- }
39
- </div>
40
- </header>`, isInline: true, styles: [":host{display:block}#uni-header{position:fixed;top:0;left:0;height:calc(60px + var(--padding-m));width:100%;padding:var(--padding-m);background-color:#36363f;overflow:hidden;z-index:999}#uni-header>div{display:grid;grid-template-rows:1fr;grid-template-columns:40px 1fr auto min-content;align-items:center;gap:1rem;padding:calc(var(--padding-m) / 2);background-color:#52525b99;border-radius:.25rem;box-shadow:#00000059 0 5px 5px}#uni-header>div #header-info{display:flex;flex-direction:column;justify-content:center;text-wrap:nowrap}#uni-header>div #header-info p:first-child{font-size:20px;line-height:28px;font-weight:500;text-transform:uppercase}#uni-header>div #header-info p:last-child{font-size:12px;line-height:12px;opacity:.65}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:40px;object-fit:contain}@media (max-resolution: 1dppx){#uni-header>div{grid-template-columns:30px 1fr auto min-content}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:31px}#uni-header>div #header-info p:first-child{font-size:16px;line-height:21px}#uni-header>div #header-info p:last-child{font-size:10px;line-height:10px}}::ng-deep .theme-light #uni-header{background-color:#0284c70d}::ng-deep .theme-light #uni-header>div{background-color:#0284c799!important;box-shadow:#0284c759 0 5px 5px!important}::ng-deep .theme-light #uni-header>div,::ng-deep .theme-light #uni-header>div i:before{color:#fff}:host ::ng-deep .dx-button{height:23px;min-width:23px;background-color:transparent}:host ::ng-deep .dx-button .dx-icon{font-size:23px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i1.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
41
- }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniHeaderComponent, decorators: [{
43
- type: Component,
44
- args: [{ selector: 'uni-header', standalone: true, imports: [CommonModule, DxButtonModule], template: `<header id="uni-header">
45
- <div>
46
- <!-- app logo -->
47
- @if (pathAppLogo(); as pathAppLogo) {
48
- <img id="header-img-app" [src]="pathAppLogo" alt="App logo" />
49
- }
50
-
51
- <!-- info -->
52
- <div id="header-info">
53
- <p>{{ title() }}</p>
54
- <p>{{ version() }}</p>
55
- </div>
56
-
57
- <!-- brand logo -->
58
- <img id="header-img-brand" [src]="pathBrandLogo()" alt="Brand logo" />
59
-
60
- <!-- button menu -->
61
- @if (sideMenu()) {
62
- <dx-button [icon]="'menu'" (onClick)="evtToggleMenu.emit(true)"></dx-button>
63
- }
64
- </div>
65
- </header>`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}#uni-header{position:fixed;top:0;left:0;height:calc(60px + var(--padding-m));width:100%;padding:var(--padding-m);background-color:#36363f;overflow:hidden;z-index:999}#uni-header>div{display:grid;grid-template-rows:1fr;grid-template-columns:40px 1fr auto min-content;align-items:center;gap:1rem;padding:calc(var(--padding-m) / 2);background-color:#52525b99;border-radius:.25rem;box-shadow:#00000059 0 5px 5px}#uni-header>div #header-info{display:flex;flex-direction:column;justify-content:center;text-wrap:nowrap}#uni-header>div #header-info p:first-child{font-size:20px;line-height:28px;font-weight:500;text-transform:uppercase}#uni-header>div #header-info p:last-child{font-size:12px;line-height:12px;opacity:.65}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:40px;object-fit:contain}@media (max-resolution: 1dppx){#uni-header>div{grid-template-columns:30px 1fr auto min-content}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:31px}#uni-header>div #header-info p:first-child{font-size:16px;line-height:21px}#uni-header>div #header-info p:last-child{font-size:10px;line-height:10px}}::ng-deep .theme-light #uni-header{background-color:#0284c70d}::ng-deep .theme-light #uni-header>div{background-color:#0284c799!important;box-shadow:#0284c759 0 5px 5px!important}::ng-deep .theme-light #uni-header>div,::ng-deep .theme-light #uni-header>div i:before{color:#fff}:host ::ng-deep .dx-button{height:23px;min-width:23px;background-color:transparent}:host ::ng-deep .dx-button .dx-icon{font-size:23px}\n"] }]
66
- }] });
67
-
68
- /**
69
- * Generated bundle index. Do not edit.
70
- */
71
-
72
- export { UniHeaderComponent };
73
- //# sourceMappingURL=uni-component-tw-uni-header.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uni-component-tw-uni-header.mjs","sources":["../../../projects/uni-component-tw/uni-header/src/uni-header.component.ts","../../../projects/uni-component-tw/uni-header/uni-component-tw-uni-header.ts"],"sourcesContent":["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 template: `<header id=\"uni-header\">\r\n <div>\r\n <!-- app logo -->\r\n @if (pathAppLogo(); as pathAppLogo) {\r\n <img id=\"header-img-app\" [src]=\"pathAppLogo\" alt=\"App logo\" />\r\n }\r\n\r\n <!-- info -->\r\n <div id=\"header-info\">\r\n <p>{{ title() }}</p>\r\n <p>{{ version() }}</p>\r\n </div>\r\n\r\n <!-- brand logo -->\r\n <img id=\"header-img-brand\" [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 styleUrl: './uni-header.component.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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,152 +0,0 @@
1
- import { Location, CommonModule } from '@angular/common';
2
- import * as i0 from '@angular/core';
3
- import { inject, input, Component, ChangeDetectionStrategy } from '@angular/core';
4
- import { Router } from '@angular/router';
5
- import * as i2 from '@angular/forms';
6
- import { FormGroup, FormControl, Validators, ReactiveFormsModule } from '@angular/forms';
7
- import * as i1 from 'devextreme-angular';
8
- import { DxPopupModule, DxTextBoxModule, DxButtonModule } from 'devextreme-angular';
9
- import { UNIAuthService } from 'uni-service/auth';
10
- import { UNIToastService } from 'uni-service/toast';
11
- import { UNITranslateService } from 'uni-service/translate';
12
-
13
- class UNILoginModalComponent {
14
- constructor() {
15
- /* Service */
16
- this.router = inject(Router);
17
- this.location = inject(Location);
18
- this.authService = inject(UNIAuthService);
19
- this.toastService = inject(UNIToastService);
20
- this.translateService = inject(UNITranslateService);
21
- /* Input & output */
22
- this.visibile = input(true);
23
- this.routeHome = input();
24
- this.enableGoBack = input.required();
25
- /* Form */
26
- this.loginForm = new FormGroup({
27
- username: new FormControl('', { nonNullable: true, validators: Validators.required }),
28
- password: new FormControl('', { nonNullable: true, validators: Validators.required }),
29
- });
30
- }
31
- /* ------------------------ Methods ------------------------ */
32
- login() {
33
- this.authService.login$(this.loginForm.getRawValue()).subscribe(() => {
34
- if (this.routeHome())
35
- this.router.navigate([this.routeHome]);
36
- });
37
- }
38
- logout() {
39
- this.authService.logout$().subscribe();
40
- }
41
- onHiding() {
42
- if (this.enableGoBack())
43
- this.location.back();
44
- }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNILoginModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UNILoginModalComponent, isStandalone: true, selector: "uni-login-modal", inputs: { visibile: { classPropertyName: "visibile", publicName: "visibile", isSignal: true, isRequired: false, transformFunction: null }, routeHome: { classPropertyName: "routeHome", publicName: "routeHome", isSignal: true, isRequired: false, transformFunction: null }, enableGoBack: { classPropertyName: "enableGoBack", publicName: "enableGoBack", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
47
- <dx-popup
48
- [wrapperAttr]="{ id: 'loginPopup' }"
49
- [width]="'40%'"
50
- [minWidth]="400"
51
- [maxWidth]="700"
52
- [height]="500"
53
- [visible]="visibile()"
54
- [showTitle]="true"
55
- [title]="'Login'"
56
- [dragEnabled]="false"
57
- [showCloseButton]="true"
58
- [hideOnOutsideClick]="false"
59
- (onHiding)="onHiding()">
60
- <section>
61
- <img src="../../../assets/images/logo/logo_trasparente.png" alt="Logo" />
62
- <p>UNITEC</p>
63
- @if (authService.user(); as user) {
64
- <div>Utente: {{ user.username }}</div>
65
- <dx-button
66
- id="logoutButton"
67
- stylingMode="contained"
68
- [text]="'Logout'"
69
- (onClick)="logout()"></dx-button>
70
- } @else {
71
- <form [formGroup]="loginForm" (ngSubmit)="login()">
72
- <dx-text-box
73
- [placeholder]="'User'"
74
- stylingMode="outlined"
75
- formControlName="username"
76
- [inputAttr]="{ 'aria-label': 'User' }"></dx-text-box>
77
- <dx-text-box
78
- [placeholder]="'Password'"
79
- mode="password"
80
- stylingMode="outlined"
81
- formControlName="password"
82
- [inputAttr]="{ 'aria-label': 'Password' }"></dx-text-box>
83
- <dx-button
84
- id="loginSubmitButton"
85
- stylingMode="contained"
86
- [text]="'Login'"
87
- [useSubmitBehavior]="true"
88
- [disabled]="loginForm.invalid"></dx-button>
89
- </form>
90
- }
91
- </section>
92
- </dx-popup>
93
- `, isInline: true, styles: [":host{display:block}::ng-deep #loginPopup .dx-popup-content{display:flex;justify-content:center;align-items:center}section{width:60%;display:flex;align-items:center;flex-direction:column;gap:1.5rem}img{height:8rem}form{width:100%;display:flex;flex-direction:column;gap:1rem}form dx-button{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxPopupModule }, { kind: "component", type: i1.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "enableBodyScroll", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "enableBodyScrollChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DxTextBoxModule }, { kind: "component", type: i1.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i1.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
94
- }
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNILoginModalComponent, decorators: [{
96
- type: Component,
97
- args: [{ selector: 'uni-login-modal', standalone: true, imports: [CommonModule, DxPopupModule, ReactiveFormsModule, DxTextBoxModule, DxButtonModule], template: `
98
- <dx-popup
99
- [wrapperAttr]="{ id: 'loginPopup' }"
100
- [width]="'40%'"
101
- [minWidth]="400"
102
- [maxWidth]="700"
103
- [height]="500"
104
- [visible]="visibile()"
105
- [showTitle]="true"
106
- [title]="'Login'"
107
- [dragEnabled]="false"
108
- [showCloseButton]="true"
109
- [hideOnOutsideClick]="false"
110
- (onHiding)="onHiding()">
111
- <section>
112
- <img src="../../../assets/images/logo/logo_trasparente.png" alt="Logo" />
113
- <p>UNITEC</p>
114
- @if (authService.user(); as user) {
115
- <div>Utente: {{ user.username }}</div>
116
- <dx-button
117
- id="logoutButton"
118
- stylingMode="contained"
119
- [text]="'Logout'"
120
- (onClick)="logout()"></dx-button>
121
- } @else {
122
- <form [formGroup]="loginForm" (ngSubmit)="login()">
123
- <dx-text-box
124
- [placeholder]="'User'"
125
- stylingMode="outlined"
126
- formControlName="username"
127
- [inputAttr]="{ 'aria-label': 'User' }"></dx-text-box>
128
- <dx-text-box
129
- [placeholder]="'Password'"
130
- mode="password"
131
- stylingMode="outlined"
132
- formControlName="password"
133
- [inputAttr]="{ 'aria-label': 'Password' }"></dx-text-box>
134
- <dx-button
135
- id="loginSubmitButton"
136
- stylingMode="contained"
137
- [text]="'Login'"
138
- [useSubmitBehavior]="true"
139
- [disabled]="loginForm.invalid"></dx-button>
140
- </form>
141
- }
142
- </section>
143
- </dx-popup>
144
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}::ng-deep #loginPopup .dx-popup-content{display:flex;justify-content:center;align-items:center}section{width:60%;display:flex;align-items:center;flex-direction:column;gap:1.5rem}img{height:8rem}form{width:100%;display:flex;flex-direction:column;gap:1rem}form dx-button{width:100%}\n"] }]
145
- }] });
146
-
147
- /**
148
- * Generated bundle index. Do not edit.
149
- */
150
-
151
- export { UNILoginModalComponent };
152
- //# sourceMappingURL=uni-component-tw-uni-login-modal.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uni-component-tw-uni-login-modal.mjs","sources":["../../../projects/uni-component-tw/uni-login-modal/src/uni-login-modal.component.ts","../../../projects/uni-component-tw/uni-login-modal/uni-component-tw-uni-login-modal.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { DxButtonModule, DxPopupModule, DxTextBoxModule } from 'devextreme-angular';\r\nimport { UNIAuthService } from 'uni-service/auth';\r\nimport { UNIToastService } from 'uni-service/toast';\r\nimport { UNITranslateService } from 'uni-service/translate';\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 template: `\r\n <dx-popup\r\n [wrapperAttr]=\"{ id: 'loginPopup' }\"\r\n [width]=\"'40%'\"\r\n [minWidth]=\"400\"\r\n [maxWidth]=\"700\"\r\n [height]=\"500\"\r\n [visible]=\"visibile()\"\r\n [showTitle]=\"true\"\r\n [title]=\"'Login'\"\r\n [dragEnabled]=\"false\"\r\n [showCloseButton]=\"true\"\r\n [hideOnOutsideClick]=\"false\"\r\n (onHiding)=\"onHiding()\">\r\n <section>\r\n <img src=\"../../../assets/images/logo/logo_trasparente.png\" alt=\"Logo\" />\r\n <p>UNITEC</p>\r\n @if (authService.user(); as user) {\r\n <div>Utente: {{ user.username }}</div>\r\n <dx-button\r\n id=\"logoutButton\"\r\n stylingMode=\"contained\"\r\n [text]=\"'Logout'\"\r\n (onClick)=\"logout()\"></dx-button>\r\n } @else {\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\r\n <dx-text-box\r\n [placeholder]=\"'User'\"\r\n stylingMode=\"outlined\"\r\n formControlName=\"username\"\r\n [inputAttr]=\"{ 'aria-label': 'User' }\"></dx-text-box>\r\n <dx-text-box\r\n [placeholder]=\"'Password'\"\r\n mode=\"password\"\r\n stylingMode=\"outlined\"\r\n formControlName=\"password\"\r\n [inputAttr]=\"{ 'aria-label': 'Password' }\"></dx-text-box>\r\n <dx-button\r\n id=\"loginSubmitButton\"\r\n stylingMode=\"contained\"\r\n [text]=\"'Login'\"\r\n [useSubmitBehavior]=\"true\"\r\n [disabled]=\"loginForm.invalid\"></dx-button>\r\n </form>\r\n }\r\n </section>\r\n </dx-popup>\r\n `,\r\n styleUrls: ['./uni-login-modal.component.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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,166 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import * as i0 from '@angular/core';
3
- import { input, computed, Component, ChangeDetectionStrategy } from '@angular/core';
4
- import * as i1 from 'devextreme-angular/ui/pie-chart';
5
- import { DxPieChartModule } from 'devextreme-angular/ui/pie-chart';
6
- import * as i2 from 'devextreme-angular/core';
7
-
8
- class UniPieChartComponent {
9
- /* ----------------------- Constructor & lifecycle --------------------------- */
10
- constructor() {
11
- /* Input & output */
12
- this.chartDataSource = input.required();
13
- this.chartPercentage = input(undefined);
14
- this.chartType = input('pie');
15
- this.chartDiameter = input(1);
16
- this.chartInnerRadius = input(0.7);
17
- this.tooltipIsEnabled = input(true);
18
- this.legendPosition = input('none');
19
- this.legendWithValue = input(false);
20
- this.legendGap = input('12px');
21
- this.uom = input('');
22
- /* Variables */
23
- this.paletteColor = computed(() => this.chartDataSource().map((data) => data.color));
24
- this.gridColumn = computed(() => {
25
- switch (this.legendPosition()) {
26
- case 'right':
27
- return '1fr min-content';
28
- case 'left':
29
- return 'min-content 1fr';
30
- default:
31
- return '1fr';
32
- }
33
- });
34
- this.gridRow = computed(() => {
35
- switch (this.legendPosition()) {
36
- case 'top':
37
- return 'min-content 1fr';
38
- case 'bottom':
39
- return '1fr min-content';
40
- default:
41
- return '1fr';
42
- }
43
- });
44
- this.customizeTooltip = this.customizeTooltip.bind(this);
45
- }
46
- /* -----------------------Methods--------------------------- */
47
- /* Funzione usata per personalizzare i tooltips del grafico */
48
- customizeTooltip(pointInfo) {
49
- const { argumentText, valueText } = pointInfo;
50
- return {
51
- text: `${argumentText}<br/>${valueText} ${this.uom()}`,
52
- color: 'rgba(149, 157, 165, 0.5)',
53
- };
54
- }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniPieChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UniPieChartComponent, isStandalone: true, selector: "uni-pie-chart", inputs: { chartDataSource: { classPropertyName: "chartDataSource", publicName: "chartDataSource", isSignal: true, isRequired: true, transformFunction: null }, chartPercentage: { classPropertyName: "chartPercentage", publicName: "chartPercentage", isSignal: true, isRequired: false, transformFunction: null }, chartType: { classPropertyName: "chartType", publicName: "chartType", isSignal: true, isRequired: false, transformFunction: null }, chartDiameter: { classPropertyName: "chartDiameter", publicName: "chartDiameter", isSignal: true, isRequired: false, transformFunction: null }, chartInnerRadius: { classPropertyName: "chartInnerRadius", publicName: "chartInnerRadius", isSignal: true, isRequired: false, transformFunction: null }, tooltipIsEnabled: { classPropertyName: "tooltipIsEnabled", publicName: "tooltipIsEnabled", isSignal: true, isRequired: false, transformFunction: null }, legendPosition: { classPropertyName: "legendPosition", publicName: "legendPosition", isSignal: true, isRequired: false, transformFunction: null }, legendWithValue: { classPropertyName: "legendWithValue", publicName: "legendWithValue", isSignal: true, isRequired: false, transformFunction: null }, legendGap: { classPropertyName: "legendGap", publicName: "legendGap", isSignal: true, isRequired: false, transformFunction: null }, uom: { classPropertyName: "uom", publicName: "uom", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
57
- <div
58
- class="container-pie-chart"
59
- [style.display]="legendPosition() === 'none' ? 'block' : 'grid'"
60
- [style.gridTemplateRows]="gridRow()"
61
- [style.gridTemplateColumns]="gridColumn()">
62
- <dx-pie-chart
63
- [style.order]="legendPosition() === 'top' || legendPosition() === 'left' ? 1 : 0"
64
- style="height: 100%; width: 100%; overflow: hidden"
65
- [type]="chartType()"
66
- [dataSource]="chartDataSource()"
67
- resolveLabelOverlapping="shift"
68
- [palette]="paletteColor()"
69
- [diameter]="chartDiameter()"
70
- [innerRadius]="chartInnerRadius()"
71
- [redrawOnResize]="true"
72
- [centerTemplate]="chartPercentage() !== undefined ? 'centerTemplate' : undefined"
73
- [series]="{
74
- argumentField: 'name',
75
- format: 'fixedPoint',
76
- valueField: 'value',
77
- hoverStyle: 'none',
78
- label: { visible: false }
79
- }"
80
- [legend]="{ visible: false }"
81
- [tooltip]="{ enabled: tooltipIsEnabled(), customizeTooltip: customizeTooltip }">
82
- <svg *dxTemplate="let pieChart of 'centerTemplate'">
83
- <text text-anchor="middle" style="font-size: 28px" x="100" y="120" fill="#fff">
84
- {{ chartPercentage() }}%
85
- </text>
86
- </svg>
87
- </dx-pie-chart>
88
-
89
- @if (legendPosition() !== 'none') {
90
- <ul
91
- class="container-legend"
92
- [style.flexDirection]="
93
- legendPosition() === 'top' || legendPosition() === 'bottom' ? 'row' : 'column'
94
- "
95
- [style.gap]="legendGap()">
96
- @for (item of chartDataSource(); track $index) {
97
- <li>
98
- <span class="square" [style.backgroundColor]="item.color"></span>
99
- {{ legendWithValue() ? item.name + ' ' + item.value + ' ' + uom() : item.name }}
100
- </li>
101
- }
102
- </ul>
103
- }
104
- </div>
105
- `, isInline: true, styles: [".container-pie-chart{height:100%;width:100%;gap:16px}.container-legend{display:flex;align-items:flex-start;justify-content:center;flex-wrap:wrap}.container-legend li{display:grid;grid-template-rows:1fr;grid-template-columns:min-content 1fr;align-items:center;gap:6px;text-wrap:nowrap}.square{display:block;height:12px;width:12px;border-radius:2.5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxPieChartModule }, { kind: "component", type: i1.DxPieChartComponent, selector: "dx-pie-chart", inputs: ["adaptiveLayout", "animation", "annotations", "centerTemplate", "commonAnnotationSettings", "commonSeriesSettings", "customizeAnnotation", "customizeLabel", "customizePoint", "dataSource", "diameter", "disabled", "elementAttr", "export", "innerRadius", "legend", "loadingIndicator", "margin", "minDiameter", "palette", "paletteExtensionMode", "pathModified", "pointSelectionMode", "redrawOnResize", "resolveLabelOverlapping", "rtlEnabled", "segmentsDirection", "series", "seriesTemplate", "size", "sizeGroup", "startAngle", "theme", "title", "tooltip", "type"], outputs: ["onDisposing", "onDone", "onDrawn", "onExported", "onExporting", "onFileSaving", "onIncidentOccurred", "onInitialized", "onLegendClick", "onOptionChanged", "onPointClick", "onPointHoverChanged", "onPointSelectionChanged", "onTooltipHidden", "onTooltipShown", "adaptiveLayoutChange", "animationChange", "annotationsChange", "centerTemplateChange", "commonAnnotationSettingsChange", "commonSeriesSettingsChange", "customizeAnnotationChange", "customizeLabelChange", "customizePointChange", "dataSourceChange", "diameterChange", "disabledChange", "elementAttrChange", "exportChange", "innerRadiusChange", "legendChange", "loadingIndicatorChange", "marginChange", "minDiameterChange", "paletteChange", "paletteExtensionModeChange", "pathModifiedChange", "pointSelectionModeChange", "redrawOnResizeChange", "resolveLabelOverlappingChange", "rtlEnabledChange", "segmentsDirectionChange", "seriesChange", "seriesTemplateChange", "sizeChange", "sizeGroupChange", "startAngleChange", "themeChange", "titleChange", "tooltipChange", "typeChange"] }, { kind: "directive", type: i2.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
106
- }
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniPieChartComponent, decorators: [{
108
- type: Component,
109
- args: [{ selector: 'uni-pie-chart', standalone: true, imports: [CommonModule, DxPieChartModule], template: `
110
- <div
111
- class="container-pie-chart"
112
- [style.display]="legendPosition() === 'none' ? 'block' : 'grid'"
113
- [style.gridTemplateRows]="gridRow()"
114
- [style.gridTemplateColumns]="gridColumn()">
115
- <dx-pie-chart
116
- [style.order]="legendPosition() === 'top' || legendPosition() === 'left' ? 1 : 0"
117
- style="height: 100%; width: 100%; overflow: hidden"
118
- [type]="chartType()"
119
- [dataSource]="chartDataSource()"
120
- resolveLabelOverlapping="shift"
121
- [palette]="paletteColor()"
122
- [diameter]="chartDiameter()"
123
- [innerRadius]="chartInnerRadius()"
124
- [redrawOnResize]="true"
125
- [centerTemplate]="chartPercentage() !== undefined ? 'centerTemplate' : undefined"
126
- [series]="{
127
- argumentField: 'name',
128
- format: 'fixedPoint',
129
- valueField: 'value',
130
- hoverStyle: 'none',
131
- label: { visible: false }
132
- }"
133
- [legend]="{ visible: false }"
134
- [tooltip]="{ enabled: tooltipIsEnabled(), customizeTooltip: customizeTooltip }">
135
- <svg *dxTemplate="let pieChart of 'centerTemplate'">
136
- <text text-anchor="middle" style="font-size: 28px" x="100" y="120" fill="#fff">
137
- {{ chartPercentage() }}%
138
- </text>
139
- </svg>
140
- </dx-pie-chart>
141
-
142
- @if (legendPosition() !== 'none') {
143
- <ul
144
- class="container-legend"
145
- [style.flexDirection]="
146
- legendPosition() === 'top' || legendPosition() === 'bottom' ? 'row' : 'column'
147
- "
148
- [style.gap]="legendGap()">
149
- @for (item of chartDataSource(); track $index) {
150
- <li>
151
- <span class="square" [style.backgroundColor]="item.color"></span>
152
- {{ legendWithValue() ? item.name + ' ' + item.value + ' ' + uom() : item.name }}
153
- </li>
154
- }
155
- </ul>
156
- }
157
- </div>
158
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".container-pie-chart{height:100%;width:100%;gap:16px}.container-legend{display:flex;align-items:flex-start;justify-content:center;flex-wrap:wrap}.container-legend li{display:grid;grid-template-rows:1fr;grid-template-columns:min-content 1fr;align-items:center;gap:6px;text-wrap:nowrap}.square{display:block;height:12px;width:12px;border-radius:2.5px}\n"] }]
159
- }], ctorParameters: () => [] });
160
-
161
- /**
162
- * Generated bundle index. Do not edit.
163
- */
164
-
165
- export { UniPieChartComponent };
166
- //# sourceMappingURL=uni-component-tw-uni-pie-chart.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uni-component-tw-uni-pie-chart.mjs","sources":["../../../projects/uni-component-tw/uni-pie-chart/src/uni-pie-chart.component.ts","../../../projects/uni-component-tw/uni-pie-chart/uni-component-tw-uni-pie-chart.ts"],"sourcesContent":["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 template: `\r\n <div\r\n class=\"container-pie-chart\"\r\n [style.display]=\"legendPosition() === 'none' ? 'block' : 'grid'\"\r\n [style.gridTemplateRows]=\"gridRow()\"\r\n [style.gridTemplateColumns]=\"gridColumn()\">\r\n <dx-pie-chart\r\n [style.order]=\"legendPosition() === 'top' || legendPosition() === 'left' ? 1 : 0\"\r\n style=\"height: 100%; width: 100%; overflow: hidden\"\r\n [type]=\"chartType()\"\r\n [dataSource]=\"chartDataSource()\"\r\n resolveLabelOverlapping=\"shift\"\r\n [palette]=\"paletteColor()\"\r\n [diameter]=\"chartDiameter()\"\r\n [innerRadius]=\"chartInnerRadius()\"\r\n [redrawOnResize]=\"true\"\r\n [centerTemplate]=\"chartPercentage() !== undefined ? 'centerTemplate' : undefined\"\r\n [series]=\"{\r\n argumentField: 'name',\r\n format: 'fixedPoint',\r\n valueField: 'value',\r\n hoverStyle: 'none',\r\n label: { visible: false }\r\n }\"\r\n [legend]=\"{ visible: false }\"\r\n [tooltip]=\"{ enabled: tooltipIsEnabled(), customizeTooltip: customizeTooltip }\">\r\n <svg *dxTemplate=\"let pieChart of 'centerTemplate'\">\r\n <text text-anchor=\"middle\" style=\"font-size: 28px\" x=\"100\" y=\"120\" fill=\"#fff\">\r\n {{ chartPercentage() }}%\r\n </text>\r\n </svg>\r\n </dx-pie-chart>\r\n\r\n @if (legendPosition() !== 'none') {\r\n <ul\r\n class=\"container-legend\"\r\n [style.flexDirection]=\"\r\n legendPosition() === 'top' || legendPosition() === 'bottom' ? 'row' : 'column'\r\n \"\r\n [style.gap]=\"legendGap()\">\r\n @for (item of chartDataSource(); track $index) {\r\n <li>\r\n <span class=\"square\" [style.backgroundColor]=\"item.color\"></span>\r\n {{ legendWithValue() ? item.name + ' ' + item.value + ' ' + uom() : item.name }}\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './uni-pie-chart.component.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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}