@ng-vagabond-lab/ng-dsv 0.0.3 → 0.0.5

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 (106) hide show
  1. package/ds/accordion/component/accordion.component.d.ts +12 -0
  2. package/ds/accordion/index.d.ts +5 -0
  3. package/ds/avatar/component/avatar.component.d.ts +12 -0
  4. package/ds/avatar/index.d.ts +5 -0
  5. package/ds/button/component/button.component.d.ts +19 -0
  6. package/ds/card/component/card.component.d.ts +10 -0
  7. package/ds/card/index.d.ts +5 -0
  8. package/ds/theme/component/dsv.theme.component.d.ts +29 -0
  9. package/ds/theme/index.d.ts +5 -0
  10. package/ds/toast/component/toast.component.d.ts +13 -0
  11. package/ds/toast/dto/toast.dto.d.ts +10 -0
  12. package/ds/toast/index.d.ts +5 -0
  13. package/ds/toast/service/toast.service.d.ts +16 -0
  14. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs +38 -0
  15. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs.map +1 -0
  16. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs +40 -0
  17. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs.map +1 -0
  18. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs +53 -0
  19. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs.map +1 -0
  20. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs +36 -0
  21. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs.map +1 -0
  22. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs +73 -0
  23. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs.map +1 -0
  24. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs +88 -0
  25. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs.map +1 -0
  26. package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs +25 -0
  27. package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs.map +1 -0
  28. package/fesm2022/ng-vagabond-lab-ng-dsv-type.mjs +4 -0
  29. package/fesm2022/ng-vagabond-lab-ng-dsv-type.mjs.map +1 -0
  30. package/fesm2022/ng-vagabond-lab-ng-dsv.mjs +34 -0
  31. package/fesm2022/ng-vagabond-lab-ng-dsv.mjs.map +1 -0
  32. package/i18n/index.d.ts +5 -0
  33. package/i18n/src/translate.pipe.d.ts +7 -0
  34. package/index.d.ts +5 -0
  35. package/package.json +46 -6
  36. package/{public-api.ts → public-api.d.ts} +0 -4
  37. package/src/ui-sdk.component.d.ts +5 -0
  38. package/src/ui-sdk.service.d.ts +6 -0
  39. package/type/type.d.ts +1 -0
  40. package/.storybook/main.ts +0 -18
  41. package/.storybook/preview.ts +0 -42
  42. package/.storybook/tsconfig.json +0 -21
  43. package/.storybook/typings.d.ts +0 -4
  44. package/assets/global.scss +0 -11
  45. package/documentation.json +0 -795
  46. package/ds/accordion/component/accordion.component.html +0 -8
  47. package/ds/accordion/component/accordion.component.scss +0 -46
  48. package/ds/accordion/component/accordion.component.stories.ts +0 -29
  49. package/ds/accordion/component/accordion.component.ts +0 -33
  50. package/ds/accordion/ng-package.json +0 -6
  51. package/ds/avatar/component/avatar.component.html +0 -4
  52. package/ds/avatar/component/avatar.component.scss +0 -46
  53. package/ds/avatar/component/avatar.component.stories.ts +0 -40
  54. package/ds/avatar/component/avatar.component.ts +0 -30
  55. package/ds/avatar/ng-package.json +0 -6
  56. package/ds/button/component/button.component.html +0 -24
  57. package/ds/button/component/button.component.scss +0 -56
  58. package/ds/button/component/button.component.ts +0 -33
  59. package/ds/button/index.ts +0 -1
  60. package/ds/button/ng-package.json +0 -6
  61. package/ds/card/component/card.component.html +0 -15
  62. package/ds/card/component/card.component.scss +0 -28
  63. package/ds/card/component/card.component.stories.ts +0 -32
  64. package/ds/card/component/card.component.ts +0 -18
  65. package/ds/card/ng-package.json +0 -6
  66. package/ds/theme/component/dsv.theme.component.scss +0 -44
  67. package/ds/theme/component/dsv.theme.component.ts +0 -69
  68. package/ds/theme/index.ts +0 -1
  69. package/ds/theme/ng-package.json +0 -6
  70. package/ds/theme/switch/component/dsv.theme.switch.component.html +0 -6
  71. package/ds/theme/switch/component/dsv.theme.switch.component.ts +0 -27
  72. package/ds/theme/switch/service/dsv.theme.switch.service.ts +0 -29
  73. package/ds/toast/component/toast.component.html +0 -17
  74. package/ds/toast/component/toast.component.scss +0 -64
  75. package/ds/toast/component/toast.component.ts +0 -38
  76. package/ds/toast/dto/toast.dto.ts +0 -11
  77. package/ds/toast/index.ts +0 -1
  78. package/ds/toast/ng-package.json +0 -6
  79. package/ds/toast/service/toast.service.ts +0 -53
  80. package/ds/toast/stories/toast.stories.ts +0 -78
  81. package/i18n/index.ts +0 -1
  82. package/i18n/ng-package.json +0 -6
  83. package/i18n/src/translate.pipe.spec.ts +0 -8
  84. package/i18n/src/translate.pipe.ts +0 -12
  85. package/index.ts +0 -1
  86. package/ng-package.json +0 -7
  87. package/src/ui-sdk.component.spec.ts +0 -22
  88. package/src/ui-sdk.component.ts +0 -10
  89. package/src/ui-sdk.service.spec.ts +0 -16
  90. package/src/ui-sdk.service.ts +0 -9
  91. package/tsconfig.lib.json +0 -15
  92. package/tsconfig.lib.prod.json +0 -11
  93. package/tsconfig.spec.json +0 -15
  94. package/type/index.ts +0 -1
  95. package/type/ng-package.json +0 -6
  96. package/type/type.ts +0 -9
  97. /package/ds/accordion/{public-api.ts → public-api.d.ts} +0 -0
  98. /package/ds/avatar/{public-api.ts → public-api.d.ts} +0 -0
  99. /package/ds/{accordion/index.ts → button/index.d.ts} +0 -0
  100. /package/ds/button/{public-api.ts → public-api.d.ts} +0 -0
  101. /package/ds/card/{public-api.ts → public-api.d.ts} +0 -0
  102. /package/ds/theme/{public-api.ts → public-api.d.ts} +0 -0
  103. /package/ds/toast/{public-api.ts → public-api.d.ts} +0 -0
  104. /package/i18n/{public-api.ts → public-api.d.ts} +0 -0
  105. /package/{ds/avatar/index.ts → type/index.d.ts} +0 -0
  106. /package/type/{public-api.ts → public-api.d.ts} +0 -0
@@ -0,0 +1,12 @@
1
+ import { SimpleChanges, WritableSignal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class DsvAccordionComponent {
4
+ open: boolean;
5
+ title: string;
6
+ color: string;
7
+ isOpen: WritableSignal<boolean>;
8
+ ngOnChanges(changes: SimpleChanges): void;
9
+ doToogle(): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<DsvAccordionComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsvAccordionComponent, "dsv-accordion", never, { "open": { "alias": "open"; "required": false; }; "title": { "alias": "title"; "required": false; }; "color": { "alias": "color"; "required": false; }; }, {}, never, ["*"], true, never>;
12
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@ng-vagabond-lab/ng-dsv/ds/accordion" />
5
+ export * from './public-api';
@@ -0,0 +1,12 @@
1
+ import { ColorType } from '@ng-vagabond-lab/ng-dsv/type';
2
+ import * as i0 from "@angular/core";
3
+ export declare class DsvAvatarComponent {
4
+ avatar: string;
5
+ color: ColorType;
6
+ callback?: () => void;
7
+ isImage(): boolean;
8
+ showAvatar(): string;
9
+ triggerEvent(): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<DsvAvatarComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsvAvatarComponent, "dsv-avatar", never, { "avatar": { "alias": "avatar"; "required": false; }; "color": { "alias": "color"; "required": false; }; "callback": { "alias": "callback"; "required": false; }; }, {}, never, never, true, never>;
12
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@ng-vagabond-lab/ng-dsv/ds/avatar" />
5
+ export * from './public-api';
@@ -0,0 +1,19 @@
1
+ import { ColorType } from '@ng-vagabond-lab/ng-dsv/type';
2
+ import * as i0 from "@angular/core";
3
+ export type ButtonWidthType = 'small' | 'medium' | 'large';
4
+ export type ButtonVariantType = 'text' | 'outlined' | 'contained';
5
+ export declare class DsvButtonComponent {
6
+ libelle: string;
7
+ color: ColorType;
8
+ icon: string;
9
+ iconEnd: string;
10
+ width: ButtonWidthType;
11
+ variant: ButtonVariantType;
12
+ fullwidth: boolean;
13
+ show: boolean;
14
+ disabled: boolean;
15
+ callback: import("@angular/core").OutputEmitterRef<void>;
16
+ doClick(event: Event): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<DsvButtonComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsvButtonComponent, "dsv-button", never, { "libelle": { "alias": "libelle"; "required": false; }; "color": { "alias": "color"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconEnd": { "alias": "iconEnd"; "required": false; }; "width": { "alias": "width"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "fullwidth": { "alias": "fullwidth"; "required": false; }; "show": { "alias": "show"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "callback": "callback"; }, never, ["*"], true, never>;
19
+ }
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class DsvCardComponent {
3
+ avatar?: string;
4
+ title: string;
5
+ subtitle: string;
6
+ image: string;
7
+ alt: string;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<DsvCardComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsvCardComponent, "dsv-card", never, { "avatar": { "alias": "avatar"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "image": { "alias": "image"; "required": false; }; "alt": { "alias": "alt"; "required": false; }; }, {}, never, ["*"], true, never>;
10
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@ng-vagabond-lab/ng-dsv/ds/card" />
5
+ export * from './public-api';
@@ -0,0 +1,29 @@
1
+ import * as i0 from "@angular/core";
2
+ export type ThemeType = {
3
+ background?: string;
4
+ backgroundDark?: string;
5
+ text?: string;
6
+ textDark?: string;
7
+ primary?: string;
8
+ secondary?: string;
9
+ success?: string;
10
+ info?: string;
11
+ warning?: string;
12
+ error?: string;
13
+ };
14
+ export declare class DsvThemeComponent {
15
+ theme: ThemeType;
16
+ background: string;
17
+ backgroundDark: string;
18
+ text: string;
19
+ textDark: string;
20
+ primary: string;
21
+ secondary: string;
22
+ success: string;
23
+ info: string;
24
+ warning: string;
25
+ error: string;
26
+ ngOnInit(): void;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<DsvThemeComponent, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsvThemeComponent, "dsv-theme", never, { "theme": { "alias": "theme"; "required": false; }; }, {}, never, ["*"], true, never>;
29
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@ng-vagabond-lab/ng-dsv/ds/theme" />
5
+ export * from './public-api';
@@ -0,0 +1,13 @@
1
+ import { ToastService } from '../service/toast.service';
2
+ import * as i0 from "@angular/core";
3
+ export type Theme = {
4
+ primary: string;
5
+ text: string;
6
+ };
7
+ export declare class DsvToastComponent {
8
+ toastService: ToastService;
9
+ constructor();
10
+ ngOnInit(): void;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<DsvToastComponent, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsvToastComponent, "dsv-toast", never, {}, {}, never, never, true, never>;
13
+ }
@@ -0,0 +1,10 @@
1
+ export type ToastType = 'success' | 'error' | 'warning' | 'info';
2
+ export interface IToastDto {
3
+ uuid?: string;
4
+ text: string;
5
+ isClose?: boolean;
6
+ type?: ToastType;
7
+ filled?: boolean;
8
+ duration?: number;
9
+ durationLeft?: number;
10
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@ng-vagabond-lab/ng-dsv/ds/toast" />
5
+ export * from './public-api';
@@ -0,0 +1,16 @@
1
+ import { WritableSignal } from '@angular/core';
2
+ import { IToastDto } from '../dto/toast.dto';
3
+ import * as i0 from "@angular/core";
4
+ export declare const MAX_TOASTS = 10;
5
+ export declare const DURATION_DEFAULT = 5000;
6
+ export declare const DURATION_TIMEOUT = 10;
7
+ export declare class ToastService {
8
+ toastShows: WritableSignal<IToastDto[]>;
9
+ toasts: WritableSignal<IToastDto[]>;
10
+ showToast(toast: IToastDto): void;
11
+ consumeToast(toast: IToastDto): void;
12
+ closeToast(uuid: string): void;
13
+ removeToastFromQueue(uuid: string): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToastService, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<ToastService>;
16
+ }
@@ -0,0 +1,38 @@
1
+ import * as i1 from '@angular/common';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { signal, Component, Input } from '@angular/core';
5
+
6
+ class DsvAccordionComponent {
7
+ open = false;
8
+ title = '';
9
+ color = '';
10
+ isOpen = signal(this.open);
11
+ ngOnChanges(changes) {
12
+ if (changes['open']) {
13
+ this.isOpen.set(Boolean(changes['open'].currentValue === 'true'));
14
+ }
15
+ }
16
+ doToogle() {
17
+ this.isOpen.update((tootle) => !tootle);
18
+ }
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.7", type: DsvAccordionComponent, isStandalone: true, selector: "dsv-accordion", inputs: { open: "open", title: "title", color: "color" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"dsv-accordion-header\" (click)=\"doToogle()\">\n {{ title }}\n <i class=\"ri-arrow-up-s-line\" *ngIf=\"isOpen()\"></i>\n <i class=\"ri-arrow-down-s-line\" *ngIf=\"!isOpen()\"></i>\n</div>\n<div class=\"dsv-accordion-text\" [class.open]=\"isOpen()\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:flex;flex-direction:column;gap:7px;width:calc(100% - 20px);padding:10px!important;background-color:#fff;position:relative;border-radius:0}:host .dsv-accordion-header{display:flex;width:95%;font-weight:700;cursor:pointer;padding:5px 10px}:host .dsv-accordion-header i{position:absolute;right:10px}:host .dsv-accordion-text{display:flex;width:100%;overflow:hidden;padding:0 10px;transform:scaleY(0);transform-origin:top;opacity:0;height:0;transition:transform .3s ease-out,opacity .2s ease-out,height .2s ease-out}:host .dsv-accordion-text.open{padding:10px;transform:scaleY(1);opacity:1;height:auto}::ng-deep .dark dsv-accordion{background-color:#2c2c2c}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvAccordionComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: 'dsv-accordion', standalone: true, imports: [CommonModule], template: "<div class=\"dsv-accordion-header\" (click)=\"doToogle()\">\n {{ title }}\n <i class=\"ri-arrow-up-s-line\" *ngIf=\"isOpen()\"></i>\n <i class=\"ri-arrow-down-s-line\" *ngIf=\"!isOpen()\"></i>\n</div>\n<div class=\"dsv-accordion-text\" [class.open]=\"isOpen()\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:flex;flex-direction:column;gap:7px;width:calc(100% - 20px);padding:10px!important;background-color:#fff;position:relative;border-radius:0}:host .dsv-accordion-header{display:flex;width:95%;font-weight:700;cursor:pointer;padding:5px 10px}:host .dsv-accordion-header i{position:absolute;right:10px}:host .dsv-accordion-text{display:flex;width:100%;overflow:hidden;padding:0 10px;transform:scaleY(0);transform-origin:top;opacity:0;height:0;transition:transform .3s ease-out,opacity .2s ease-out,height .2s ease-out}:host .dsv-accordion-text.open{padding:10px;transform:scaleY(1);opacity:1;height:auto}::ng-deep .dark dsv-accordion{background-color:#2c2c2c}\n"] }]
25
+ }], propDecorators: { open: [{
26
+ type: Input
27
+ }], title: [{
28
+ type: Input
29
+ }], color: [{
30
+ type: Input
31
+ }] } });
32
+
33
+ /**
34
+ * Generated bundle index. Do not edit.
35
+ */
36
+
37
+ export { DsvAccordionComponent };
38
+ //# sourceMappingURL=ng-vagabond-lab-ng-dsv-ds-accordion.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-accordion.mjs","sources":["../../../projects/ng-dsv/ds/accordion/component/accordion.component.ts","../../../projects/ng-dsv/ds/accordion/component/accordion.component.html","../../../projects/ng-dsv/ds/accordion/ng-vagabond-lab-ng-dsv-ds-accordion.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n signal,\n SimpleChanges,\n WritableSignal,\n} from '@angular/core';\n\n@Component({\n selector: 'dsv-accordion',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n})\nexport class DsvAccordionComponent {\n @Input() open: boolean = false;\n @Input() title: string = '';\n @Input() color: string = '';\n\n isOpen: WritableSignal<boolean> = signal(this.open);\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['open']) {\n this.isOpen.set(Boolean(changes['open'].currentValue === 'true'));\n }\n }\n\n doToogle() {\n this.isOpen.update((tootle) => !tootle);\n }\n}\n","<div class=\"dsv-accordion-header\" (click)=\"doToogle()\">\n {{ title }}\n <i class=\"ri-arrow-up-s-line\" *ngIf=\"isOpen()\"></i>\n <i class=\"ri-arrow-down-s-line\" *ngIf=\"!isOpen()\"></i>\n</div>\n<div class=\"dsv-accordion-text\" [class.open]=\"isOpen()\">\n <ng-content></ng-content>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAgBa,qBAAqB,CAAA;IACvB,IAAI,GAAY,KAAK;IACrB,KAAK,GAAW,EAAE;IAClB,KAAK,GAAW,EAAE;AAE3B,IAAA,MAAM,GAA4B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAEnD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC;;;IAIrE,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;;uGAd9B,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBlC,kTAQA,EAAA,MAAA,EAAA,CAAA,+pBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EACb,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,+pBAAA,CAAA,EAAA;8BAKd,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;AEnBH;;AAEG;;;;"}
@@ -0,0 +1,40 @@
1
+ import * as i1 from '@angular/common';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { Component, Input } from '@angular/core';
5
+
6
+ class DsvAvatarComponent {
7
+ avatar = '';
8
+ color = 'primary';
9
+ callback;
10
+ isImage() {
11
+ return this.avatar.startsWith('http');
12
+ }
13
+ showAvatar() {
14
+ return this.avatar.substring(0, 1).toUpperCase();
15
+ }
16
+ triggerEvent() {
17
+ if (this.callback) {
18
+ this.callback();
19
+ }
20
+ }
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.7", type: DsvAvatarComponent, isStandalone: true, selector: "dsv-avatar", inputs: { avatar: "avatar", color: "color", callback: "callback" }, ngImport: i0, template: "<div class=\"dsv-avatar\" [ngClass]=\"color + ' ' + (callback ? 'callback' : '')\" (click)=\"triggerEvent()\">\n <span *ngIf=\"!isImage()\">{{showAvatar()}}</span>\n <img src=\"{{avatar}}\" *ngIf=\"isImage()\" alt=\"avatar\" />\n</div>", styles: [".dsv-avatar{position:relative;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;flex-shrink:0;width:40px;height:40px;font-size:1.25rem;line-height:1;border-radius:50%;overflow:hidden;-webkit-user-select:none;user-select:none;color:#fff;background-color:#bdbdbd;border:4px solid #fff}::ng-deep .dark .dsv-avatar{border-color:var(--background-dark)}.dsv-avatar img{width:40px;height:40px}.dsv-avatar.callback:hover{border:4px solid #e0e0e0}::ng-deep .dark .dsv-avatar.callback:hover{border-color:#2b2b2b}.dsv-avatar.callback:active{opacity:.8}.dsv-avatar.primary{background-color:var(--primary)}.dsv-avatar.success{background-color:var(--success)}.dsv-avatar.info{background-color:var(--info)}.dsv-avatar.warning{background-color:var(--warning)}.dsv-avatar.error{background-color:var(--error)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvAvatarComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'dsv-avatar', standalone: true, imports: [CommonModule], template: "<div class=\"dsv-avatar\" [ngClass]=\"color + ' ' + (callback ? 'callback' : '')\" (click)=\"triggerEvent()\">\n <span *ngIf=\"!isImage()\">{{showAvatar()}}</span>\n <img src=\"{{avatar}}\" *ngIf=\"isImage()\" alt=\"avatar\" />\n</div>", styles: [".dsv-avatar{position:relative;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;flex-shrink:0;width:40px;height:40px;font-size:1.25rem;line-height:1;border-radius:50%;overflow:hidden;-webkit-user-select:none;user-select:none;color:#fff;background-color:#bdbdbd;border:4px solid #fff}::ng-deep .dark .dsv-avatar{border-color:var(--background-dark)}.dsv-avatar img{width:40px;height:40px}.dsv-avatar.callback:hover{border:4px solid #e0e0e0}::ng-deep .dark .dsv-avatar.callback:hover{border-color:#2b2b2b}.dsv-avatar.callback:active{opacity:.8}.dsv-avatar.primary{background-color:var(--primary)}.dsv-avatar.success{background-color:var(--success)}.dsv-avatar.info{background-color:var(--info)}.dsv-avatar.warning{background-color:var(--warning)}.dsv-avatar.error{background-color:var(--error)}\n"] }]
27
+ }], propDecorators: { avatar: [{
28
+ type: Input
29
+ }], color: [{
30
+ type: Input
31
+ }], callback: [{
32
+ type: Input
33
+ }] } });
34
+
35
+ /**
36
+ * Generated bundle index. Do not edit.
37
+ */
38
+
39
+ export { DsvAvatarComponent };
40
+ //# sourceMappingURL=ng-vagabond-lab-ng-dsv-ds-avatar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-avatar.mjs","sources":["../../../projects/ng-dsv/ds/avatar/component/avatar.component.ts","../../../projects/ng-dsv/ds/avatar/component/avatar.component.html","../../../projects/ng-dsv/ds/avatar/ng-vagabond-lab-ng-dsv-ds-avatar.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { ColorType } from '@ng-vagabond-lab/ng-dsv/type';\n\n@Component({\n selector: 'dsv-avatar',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n})\nexport class DsvAvatarComponent {\n @Input() avatar: string = '';\n @Input() color: ColorType = 'primary';\n @Input() callback?: () => void;\n\n isImage() {\n return this.avatar.startsWith('http');\n }\n\n showAvatar() {\n return this.avatar.substring(0, 1).toUpperCase();\n }\n\n triggerEvent() {\n if (this.callback) {\n this.callback();\n }\n }\n}\n","<div class=\"dsv-avatar\" [ngClass]=\"color + ' ' + (callback ? 'callback' : '')\" (click)=\"triggerEvent()\">\n <span *ngIf=\"!isImage()\">{{showAvatar()}}</span>\n <img src=\"{{avatar}}\" *ngIf=\"isImage()\" alt=\"avatar\" />\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAWa,kBAAkB,CAAA;IACpB,MAAM,GAAW,EAAE;IACnB,KAAK,GAAc,SAAS;AAC5B,IAAA,QAAQ;IAEjB,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;;IAGvC,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;;IAGlD,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,EAAE;;;uGAfR,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX/B,+OAGM,EAAA,MAAA,EAAA,CAAA,i1BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACV,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,+OAAA,EAAA,MAAA,EAAA,CAAA,i1BAAA,CAAA,EAAA;8BAKd,MAAM,EAAA,CAAA;sBAAd;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;;;AEdH;;AAEG;;;;"}
@@ -0,0 +1,53 @@
1
+ import * as i1 from '@angular/common';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { output, Component, Input } from '@angular/core';
5
+
6
+ class DsvButtonComponent {
7
+ libelle = '';
8
+ color = 'primary';
9
+ icon = '';
10
+ iconEnd = '';
11
+ width = 'medium';
12
+ variant = 'contained';
13
+ fullwidth = false;
14
+ show = true;
15
+ disabled = false;
16
+ callback = output();
17
+ doClick(event) {
18
+ event.stopPropagation();
19
+ event.preventDefault();
20
+ !this.disabled && this.callback.emit();
21
+ }
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.7", type: DsvButtonComponent, isStandalone: true, selector: "dsv-button", inputs: { libelle: "libelle", color: "color", icon: "icon", iconEnd: "iconEnd", width: "width", variant: "variant", fullwidth: "fullwidth", show: "show", disabled: "disabled" }, outputs: { callback: "callback" }, ngImport: i0, template: "<button\n class=\"dsv-button\"\n (click)=\"doClick($event)\"\n [ngClass]=\"\n (icon ? 'icon' : '') +\n ' ' +\n color +\n ' ' +\n width +\n ' ' +\n variant +\n ' ' +\n (fullwidth ? 'fullwidth' : '')\n \"\n [disabled]=\"disabled\"\n *ngIf=\"show\"\n>\n <i [class]=\"icon\" *ngIf=\"icon\"></i>\n <span *ngIf=\"libelle\">\n {{ libelle }}\n </span>\n <ng-content></ng-content>\n <i [class]=\"iconEnd\" *ngIf=\"iconEnd\"></i>\n</button>\n", styles: ["button.dsv-button{display:inline-flex;flex-direction:row;gap:5px;align-items:center;justify-content:center;position:relative;box-sizing:border-box;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:middle;font-weight:500;letter-spacing:.02857em;text-transform:uppercase;color:#fff!important;outline:0px;margin:0;text-decoration:none;border-width:0px;border-radius:4px;transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1);padding:6px;font-size:1rem;min-width:10px;line-height:1;color:var(--text)}button.dsv-button.small,button.dsv-button.small>i{font-size:.8rem!important}button.dsv-button.medium,button.dsv-button.medium>i{font-size:1rem!important}button.dsv-button.large,button.dsv-button.large>i{font-size:1.5rem!important}button.dsv-button.fullwidth{width:100%}button.dsv-button.text,button.dsv-button.outlined{background-color:transparent;box-shadow:none}button.dsv-button.text.primary,button.dsv-button.outlined.primary{color:var(--primary)}button.dsv-button.text.success,button.dsv-button.outlined.success{color:var(--success)}button.dsv-button.text.info,button.dsv-button.outlined.info{color:var(--info)}button.dsv-button.text.warning,button.dsv-button.outlined.warning{color:var(--warning)}button.dsv-button.text.error,button.dsv-button.outlined.error{color:var(--error)}button.dsv-button.text.outlined.primary,button.dsv-button.outlined.outlined.primary{border:1px solid var(--primary)}button.dsv-button.text.outlined.success,button.dsv-button.outlined.outlined.success{border:1px solid var(--success)}button.dsv-button.text.outlined.info,button.dsv-button.outlined.outlined.info{border:1px solid var(--info)}button.dsv-button.text.outlined.warning,button.dsv-button.outlined.outlined.warning{border:1px solid var(--warning)}button.dsv-button.text.outlined.error,button.dsv-button.outlined.outlined.error{border:1px solid var(--error)}button.dsv-button.contained.primary{background-color:var(--primary)}button.dsv-button.contained.success{background-color:var(--success)}button.dsv-button.contained.info{background-color:var(--info)}button.dsv-button.contained.warning{background-color:var(--warning)}button.dsv-button.contained.error{background-color:var(--error)}button.dsv-button:not(:disabled):hover{transform:scale(1);opacity:1.2}button.dsv-button:not(:disabled):hover:not(.text){box-shadow:#0003 0 2px 4px -1px,#00000024 0 4px 5px,#0000001f 0 1px 10px}button.dsv-button:not(:disabled):active{transform:scale(1);opacity:.8}button.dsv-button:disabled{background:#5b5b5b!important}::ng-deep .dark button.dsv-button{filter:hue-rotate(5deg)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvButtonComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'dsv-button', standalone: true, imports: [CommonModule], template: "<button\n class=\"dsv-button\"\n (click)=\"doClick($event)\"\n [ngClass]=\"\n (icon ? 'icon' : '') +\n ' ' +\n color +\n ' ' +\n width +\n ' ' +\n variant +\n ' ' +\n (fullwidth ? 'fullwidth' : '')\n \"\n [disabled]=\"disabled\"\n *ngIf=\"show\"\n>\n <i [class]=\"icon\" *ngIf=\"icon\"></i>\n <span *ngIf=\"libelle\">\n {{ libelle }}\n </span>\n <ng-content></ng-content>\n <i [class]=\"iconEnd\" *ngIf=\"iconEnd\"></i>\n</button>\n", styles: ["button.dsv-button{display:inline-flex;flex-direction:row;gap:5px;align-items:center;justify-content:center;position:relative;box-sizing:border-box;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:middle;font-weight:500;letter-spacing:.02857em;text-transform:uppercase;color:#fff!important;outline:0px;margin:0;text-decoration:none;border-width:0px;border-radius:4px;transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1);padding:6px;font-size:1rem;min-width:10px;line-height:1;color:var(--text)}button.dsv-button.small,button.dsv-button.small>i{font-size:.8rem!important}button.dsv-button.medium,button.dsv-button.medium>i{font-size:1rem!important}button.dsv-button.large,button.dsv-button.large>i{font-size:1.5rem!important}button.dsv-button.fullwidth{width:100%}button.dsv-button.text,button.dsv-button.outlined{background-color:transparent;box-shadow:none}button.dsv-button.text.primary,button.dsv-button.outlined.primary{color:var(--primary)}button.dsv-button.text.success,button.dsv-button.outlined.success{color:var(--success)}button.dsv-button.text.info,button.dsv-button.outlined.info{color:var(--info)}button.dsv-button.text.warning,button.dsv-button.outlined.warning{color:var(--warning)}button.dsv-button.text.error,button.dsv-button.outlined.error{color:var(--error)}button.dsv-button.text.outlined.primary,button.dsv-button.outlined.outlined.primary{border:1px solid var(--primary)}button.dsv-button.text.outlined.success,button.dsv-button.outlined.outlined.success{border:1px solid var(--success)}button.dsv-button.text.outlined.info,button.dsv-button.outlined.outlined.info{border:1px solid var(--info)}button.dsv-button.text.outlined.warning,button.dsv-button.outlined.outlined.warning{border:1px solid var(--warning)}button.dsv-button.text.outlined.error,button.dsv-button.outlined.outlined.error{border:1px solid var(--error)}button.dsv-button.contained.primary{background-color:var(--primary)}button.dsv-button.contained.success{background-color:var(--success)}button.dsv-button.contained.info{background-color:var(--info)}button.dsv-button.contained.warning{background-color:var(--warning)}button.dsv-button.contained.error{background-color:var(--error)}button.dsv-button:not(:disabled):hover{transform:scale(1);opacity:1.2}button.dsv-button:not(:disabled):hover:not(.text){box-shadow:#0003 0 2px 4px -1px,#00000024 0 4px 5px,#0000001f 0 1px 10px}button.dsv-button:not(:disabled):active{transform:scale(1);opacity:.8}button.dsv-button:disabled{background:#5b5b5b!important}::ng-deep .dark button.dsv-button{filter:hue-rotate(5deg)}\n"] }]
28
+ }], propDecorators: { libelle: [{
29
+ type: Input
30
+ }], color: [{
31
+ type: Input
32
+ }], icon: [{
33
+ type: Input
34
+ }], iconEnd: [{
35
+ type: Input
36
+ }], width: [{
37
+ type: Input
38
+ }], variant: [{
39
+ type: Input
40
+ }], fullwidth: [{
41
+ type: Input
42
+ }], show: [{
43
+ type: Input
44
+ }], disabled: [{
45
+ type: Input
46
+ }] } });
47
+
48
+ /**
49
+ * Generated bundle index. Do not edit.
50
+ */
51
+
52
+ export { DsvButtonComponent };
53
+ //# sourceMappingURL=ng-vagabond-lab-ng-dsv-ds-button.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-button.mjs","sources":["../../../projects/ng-dsv/ds/button/component/button.component.ts","../../../projects/ng-dsv/ds/button/component/button.component.html","../../../projects/ng-dsv/ds/button/ng-vagabond-lab-ng-dsv-ds-button.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Input, output } from '@angular/core';\nimport { ColorType } from '@ng-vagabond-lab/ng-dsv/type';\n\nexport type ButtonWidthType = 'small' | 'medium' | 'large';\nexport type ButtonVariantType = 'text' | 'outlined' | 'contained';\n\n@Component({\n selector: 'dsv-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n})\nexport class DsvButtonComponent {\n @Input() libelle: string = '';\n @Input() color: ColorType = 'primary';\n @Input() icon: string = '';\n @Input() iconEnd: string = '';\n @Input() width: ButtonWidthType = 'medium';\n @Input() variant: ButtonVariantType = 'contained';\n @Input() fullwidth: boolean = false;\n @Input() show: boolean = true;\n @Input() disabled: boolean = false;\n\n callback = output<void>();\n\n doClick(event: Event) {\n event.stopPropagation();\n event.preventDefault();\n !this.disabled && this.callback.emit();\n }\n}\n","<button\n class=\"dsv-button\"\n (click)=\"doClick($event)\"\n [ngClass]=\"\n (icon ? 'icon' : '') +\n ' ' +\n color +\n ' ' +\n width +\n ' ' +\n variant +\n ' ' +\n (fullwidth ? 'fullwidth' : '')\n \"\n [disabled]=\"disabled\"\n *ngIf=\"show\"\n>\n <i [class]=\"icon\" *ngIf=\"icon\"></i>\n <span *ngIf=\"libelle\">\n {{ libelle }}\n </span>\n <ng-content></ng-content>\n <i [class]=\"iconEnd\" *ngIf=\"iconEnd\"></i>\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAca,kBAAkB,CAAA;IACpB,OAAO,GAAW,EAAE;IACpB,KAAK,GAAc,SAAS;IAC5B,IAAI,GAAW,EAAE;IACjB,OAAO,GAAW,EAAE;IACpB,KAAK,GAAoB,QAAQ;IACjC,OAAO,GAAsB,WAAW;IACxC,SAAS,GAAY,KAAK;IAC1B,IAAI,GAAY,IAAI;IACpB,QAAQ,GAAY,KAAK;IAElC,QAAQ,GAAG,MAAM,EAAQ;AAEzB,IAAA,OAAO,CAAC,KAAY,EAAA;QAClB,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;QACtB,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;uGAhB7B,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd/B,2dAwBA,EAAA,MAAA,EAAA,CAAA,smFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDdY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACV,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,2dAAA,EAAA,MAAA,EAAA,CAAA,smFAAA,CAAA,EAAA;8BAKd,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;;;AEvBH;;AAEG;;;;"}
@@ -0,0 +1,36 @@
1
+ import * as i1 from '@angular/common';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { Component, Input } from '@angular/core';
5
+ import { DsvAvatarComponent } from '@ng-vagabond-lab/ng-dsv/ds/avatar';
6
+
7
+ class DsvCardComponent {
8
+ avatar;
9
+ title = '';
10
+ subtitle = '';
11
+ image = '';
12
+ alt = '';
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.7", type: DsvCardComponent, isStandalone: true, selector: "dsv-card", inputs: { avatar: "avatar", title: "title", subtitle: "subtitle", image: "image", alt: "alt" }, ngImport: i0, template: "<div class='dsv-card'>\n <img src=\"{{image}}\" [alt]=\"alt\" *ngIf=\"image\" />\n <div class=\"dsv-card-header\">\n <dsv-avatar [avatar]=\"avatar\" *ngIf=\"avatar\"></dsv-avatar>\n <div>\n <h2>{{title}}</h2>\n <div class=\"dsv-card-subtitle\">{{subtitle}}</div>\n </div>\n <div class=\"dsv-actions\">\n </div>\n </div>\n <div class=\"dsv-card-content\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".dsv-card{width:auto;border:1px solid rgb(211,211,211);border-radius:4px;font-size:1rem;margin:5px}.dsv-card img{width:100%;max-height:300px;border-top-left-radius:2px;border-top-right-radius:2px}::ng-deep .dark .dsv-card{color:#fff}.dsv-card .dsv-card-header{display:flex;flex-direction:row;gap:10px;align-items:center;padding:10px}::ng-deep .dark .dsv-card .dsv-card-header .dsv-card-subtitle{color:#ffffffb3}.dsv-card .dsv-card-content{padding:10px}h2{margin:0;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DsvAvatarComponent, selector: "dsv-avatar", inputs: ["avatar", "color", "callback"] }] });
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvCardComponent, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: 'dsv-card', standalone: true, imports: [CommonModule, DsvAvatarComponent], template: "<div class='dsv-card'>\n <img src=\"{{image}}\" [alt]=\"alt\" *ngIf=\"image\" />\n <div class=\"dsv-card-header\">\n <dsv-avatar [avatar]=\"avatar\" *ngIf=\"avatar\"></dsv-avatar>\n <div>\n <h2>{{title}}</h2>\n <div class=\"dsv-card-subtitle\">{{subtitle}}</div>\n </div>\n <div class=\"dsv-actions\">\n </div>\n </div>\n <div class=\"dsv-card-content\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".dsv-card{width:auto;border:1px solid rgb(211,211,211);border-radius:4px;font-size:1rem;margin:5px}.dsv-card img{width:100%;max-height:300px;border-top-left-radius:2px;border-top-right-radius:2px}::ng-deep .dark .dsv-card{color:#fff}.dsv-card .dsv-card-header{display:flex;flex-direction:row;gap:10px;align-items:center;padding:10px}::ng-deep .dark .dsv-card .dsv-card-header .dsv-card-subtitle{color:#ffffffb3}.dsv-card .dsv-card-content{padding:10px}h2{margin:0;padding:0}\n"] }]
19
+ }], propDecorators: { avatar: [{
20
+ type: Input
21
+ }], title: [{
22
+ type: Input
23
+ }], subtitle: [{
24
+ type: Input
25
+ }], image: [{
26
+ type: Input
27
+ }], alt: [{
28
+ type: Input
29
+ }] } });
30
+
31
+ /**
32
+ * Generated bundle index. Do not edit.
33
+ */
34
+
35
+ export { DsvCardComponent };
36
+ //# sourceMappingURL=ng-vagabond-lab-ng-dsv-ds-card.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-card.mjs","sources":["../../../projects/ng-dsv/ds/card/component/card.component.ts","../../../projects/ng-dsv/ds/card/component/card.component.html","../../../projects/ng-dsv/ds/card/ng-vagabond-lab-ng-dsv-ds-card.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { DsvAvatarComponent } from '@ng-vagabond-lab/ng-dsv/ds/avatar';\n\n@Component({\n selector: 'dsv-card',\n standalone: true,\n imports: [CommonModule, DsvAvatarComponent],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class DsvCardComponent {\n @Input() avatar?: string;\n @Input() title: string = '';\n @Input() subtitle: string = '';\n @Input() image: string = '';\n @Input() alt: string = '';\n}\n","<div class='dsv-card'>\n <img src=\"{{image}}\" [alt]=\"alt\" *ngIf=\"image\" />\n <div class=\"dsv-card-header\">\n <dsv-avatar [avatar]=\"avatar\" *ngIf=\"avatar\"></dsv-avatar>\n <div>\n <h2>{{title}}</h2>\n <div class=\"dsv-card-subtitle\">{{subtitle}}</div>\n </div>\n <div class=\"dsv-actions\">\n </div>\n </div>\n <div class=\"dsv-card-content\">\n <ng-content></ng-content>\n </div>\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAWa,gBAAgB,CAAA;AAClB,IAAA,MAAM;IACN,KAAK,GAAW,EAAE;IAClB,QAAQ,GAAW,EAAE;IACrB,KAAK,GAAW,EAAE;IAClB,GAAG,GAAW,EAAE;uGALd,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,ECX7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,geAcM,EDPM,MAAA,EAAA,CAAA,8dAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,mIAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAI/B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,geAAA,EAAA,MAAA,EAAA,CAAA,8dAAA,CAAA,EAAA;8BAKlC,MAAM,EAAA,CAAA;sBAAd;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;;;AEhBH;;AAEG;;;;"}
@@ -0,0 +1,73 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, Input, HostBinding } from '@angular/core';
3
+
4
+ class DsvThemeComponent {
5
+ theme;
6
+ background;
7
+ backgroundDark;
8
+ text;
9
+ textDark;
10
+ primary;
11
+ secondary;
12
+ success;
13
+ info;
14
+ warning;
15
+ error;
16
+ ngOnInit() {
17
+ this.background = this.theme.background ?? '#fff';
18
+ this.backgroundDark = this.theme.backgroundDark ?? '#121212';
19
+ this.text = this.theme.text ?? '#000';
20
+ this.textDark = this.theme.textDark ?? '#fff';
21
+ this.primary = this.theme.primary ?? '#AAA';
22
+ this.secondary = this.theme.secondary ?? '#AAA';
23
+ this.success = this.theme.success ?? '#439746';
24
+ this.info = this.theme.info ?? '#1b78c4';
25
+ this.warning = this.theme.warning ?? '#dca603';
26
+ this.error = this.theme.error ?? '#da1709';
27
+ }
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvThemeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.7", type: DsvThemeComponent, isStandalone: true, selector: "dsv-theme", inputs: { theme: "theme" }, host: { properties: { "style.--background": "this.background", "style.--background-dark": "this.backgroundDark", "style.--text": "this.text", "style.--text-dark": "this.textDark", "style.--primary": "this.primary", "style.--secondary": "this.secondary", "style.--success": "this.success", "style.--info": "this.info", "style.--warning": "this.warning", "style.--error": "this.error" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{--background: var(--background);--background-dark: var(--background-dark);--text: var(--text);--text-dark: var(--text-dark);--primary: var(--primary);--primary: var(--secondary);--success: var(--success);--info: var(--info);--warning: var(--warning);--error: var(--error);display:flex;flex:1;font-size:1rem!important;flex-direction:column;overflow:hidden}::ng-deep .light :host div{background-color:var(--background);color:var(--text)}::ng-deep .dark :host div{background-color:var(--background-dark)}::ng-deep .dark :host div *{color:var(--text-dark)}::ng-deep .light dsv-theme{background-color:var(--background);color:var(--text)}::ng-deep .dark dsv-theme{background-color:var(--background-dark)}::ng-deep .dark dsv-theme *{color:var(--text-dark)}\n"] });
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvThemeComponent, decorators: [{
32
+ type: Component,
33
+ args: [{ selector: 'dsv-theme', standalone: true, imports: [], template: `<ng-content></ng-content>`, styles: [":host{--background: var(--background);--background-dark: var(--background-dark);--text: var(--text);--text-dark: var(--text-dark);--primary: var(--primary);--primary: var(--secondary);--success: var(--success);--info: var(--info);--warning: var(--warning);--error: var(--error);display:flex;flex:1;font-size:1rem!important;flex-direction:column;overflow:hidden}::ng-deep .light :host div{background-color:var(--background);color:var(--text)}::ng-deep .dark :host div{background-color:var(--background-dark)}::ng-deep .dark :host div *{color:var(--text-dark)}::ng-deep .light dsv-theme{background-color:var(--background);color:var(--text)}::ng-deep .dark dsv-theme{background-color:var(--background-dark)}::ng-deep .dark dsv-theme *{color:var(--text-dark)}\n"] }]
34
+ }], propDecorators: { theme: [{
35
+ type: Input
36
+ }], background: [{
37
+ type: HostBinding,
38
+ args: ['style.--background']
39
+ }], backgroundDark: [{
40
+ type: HostBinding,
41
+ args: ['style.--background-dark']
42
+ }], text: [{
43
+ type: HostBinding,
44
+ args: ['style.--text']
45
+ }], textDark: [{
46
+ type: HostBinding,
47
+ args: ['style.--text-dark']
48
+ }], primary: [{
49
+ type: HostBinding,
50
+ args: ['style.--primary']
51
+ }], secondary: [{
52
+ type: HostBinding,
53
+ args: ['style.--secondary']
54
+ }], success: [{
55
+ type: HostBinding,
56
+ args: ['style.--success']
57
+ }], info: [{
58
+ type: HostBinding,
59
+ args: ['style.--info']
60
+ }], warning: [{
61
+ type: HostBinding,
62
+ args: ['style.--warning']
63
+ }], error: [{
64
+ type: HostBinding,
65
+ args: ['style.--error']
66
+ }] } });
67
+
68
+ /**
69
+ * Generated bundle index. Do not edit.
70
+ */
71
+
72
+ export { DsvThemeComponent };
73
+ //# sourceMappingURL=ng-vagabond-lab-ng-dsv-ds-theme.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-theme.mjs","sources":["../../../projects/ng-dsv/ds/theme/component/dsv.theme.component.ts","../../../projects/ng-dsv/ds/theme/ng-vagabond-lab-ng-dsv-ds-theme.ts"],"sourcesContent":["import { Component, HostBinding, Input } from '@angular/core';\n\nexport type ThemeType = {\n background?: string;\n backgroundDark?: string;\n text?: string;\n textDark?: string;\n primary?: string;\n secondary?: string;\n success?: string;\n info?: string;\n warning?: string;\n error?: string;\n};\n\n@Component({\n selector: 'dsv-theme',\n standalone: true,\n imports: [],\n template: `<ng-content></ng-content>`,\n styleUrls: ['./dsv.theme.component.scss'],\n})\nexport class DsvThemeComponent {\n @Input()\n theme!: ThemeType;\n\n @HostBinding('style.--background')\n background!: string;\n\n @HostBinding('style.--background-dark')\n backgroundDark!: string;\n\n @HostBinding('style.--text')\n text!: string;\n\n @HostBinding('style.--text-dark')\n textDark!: string;\n\n @HostBinding('style.--primary')\n primary!: string;\n\n @HostBinding('style.--secondary')\n secondary!: string;\n\n @HostBinding('style.--success')\n success!: string;\n\n @HostBinding('style.--info')\n info!: string;\n\n @HostBinding('style.--warning')\n warning!: string;\n\n @HostBinding('style.--error')\n error!: string;\n\n ngOnInit() {\n this.background = this.theme.background ?? '#fff';\n this.backgroundDark = this.theme.backgroundDark ?? '#121212';\n this.text = this.theme.text ?? '#000';\n this.textDark = this.theme.textDark ?? '#fff';\n this.primary = this.theme.primary ?? '#AAA';\n this.secondary = this.theme.secondary ?? '#AAA';\n this.success = this.theme.success ?? '#439746';\n this.info = this.theme.info ?? '#1b78c4';\n this.warning = this.theme.warning ?? '#dca603';\n this.error = this.theme.error ?? '#da1709';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAsBa,iBAAiB,CAAA;AAE5B,IAAA,KAAK;AAGL,IAAA,UAAU;AAGV,IAAA,cAAc;AAGd,IAAA,IAAI;AAGJ,IAAA,QAAQ;AAGR,IAAA,OAAO;AAGP,IAAA,SAAS;AAGT,IAAA,OAAO;AAGP,IAAA,IAAI;AAGJ,IAAA,OAAO;AAGP,IAAA,KAAK;IAEL,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,SAAS;QAC5D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS;;uGA5CjC,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,qeAHlB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uvBAAA,CAAA,EAAA,CAAA;;2FAG1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACT,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,EAAE,YACD,CAA2B,yBAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uvBAAA,CAAA,EAAA;8BAKrC,KAAK,EAAA,CAAA;sBADJ;gBAID,UAAU,EAAA,CAAA;sBADT,WAAW;uBAAC,oBAAoB;gBAIjC,cAAc,EAAA,CAAA;sBADb,WAAW;uBAAC,yBAAyB;gBAItC,IAAI,EAAA,CAAA;sBADH,WAAW;uBAAC,cAAc;gBAI3B,QAAQ,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAIhC,OAAO,EAAA,CAAA;sBADN,WAAW;uBAAC,iBAAiB;gBAI9B,SAAS,EAAA,CAAA;sBADR,WAAW;uBAAC,mBAAmB;gBAIhC,OAAO,EAAA,CAAA;sBADN,WAAW;uBAAC,iBAAiB;gBAI9B,IAAI,EAAA,CAAA;sBADH,WAAW;uBAAC,cAAc;gBAI3B,OAAO,EAAA,CAAA;sBADN,WAAW;uBAAC,iBAAiB;gBAI9B,KAAK,EAAA,CAAA;sBADJ,WAAW;uBAAC,eAAe;;;ACrD9B;;AAEG;;;;"}
@@ -0,0 +1,88 @@
1
+ import * as i1 from '@angular/common';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { signal, Injectable, inject, effect, Component } from '@angular/core';
5
+
6
+ const MAX_TOASTS = 10;
7
+ const DURATION_DEFAULT = 5000;
8
+ const DURATION_TIMEOUT = 10;
9
+ class ToastService {
10
+ toastShows = signal([]);
11
+ toasts = signal([]);
12
+ showToast(toast) {
13
+ toast.uuid = crypto.randomUUID();
14
+ toast.type = toast.type ?? 'success';
15
+ toast.duration = toast.duration ?? DURATION_DEFAULT;
16
+ toast.durationLeft = toast.duration;
17
+ toast.filled = toast.filled ?? false;
18
+ this.toasts.update((toasts) => [...toasts, toast]);
19
+ }
20
+ consumeToast(toast) {
21
+ this.toastShows.update((toasts) => [...toasts, toast]);
22
+ let duration = 0;
23
+ const interval = setInterval(() => {
24
+ duration += DURATION_TIMEOUT;
25
+ if (duration > toast.duration) {
26
+ clearInterval(interval);
27
+ this.closeToast(toast.uuid);
28
+ }
29
+ else {
30
+ this.toastShows.update((toasts) => toasts.map((oneToast) => {
31
+ if (oneToast.uuid === toast.uuid) {
32
+ oneToast.durationLeft = toast.duration - duration;
33
+ }
34
+ return oneToast;
35
+ }));
36
+ }
37
+ }, DURATION_TIMEOUT);
38
+ this.removeToastFromQueue(toast.uuid);
39
+ }
40
+ closeToast(uuid) {
41
+ this.toastShows.update((toasts) => toasts.filter((t) => t.uuid !== uuid));
42
+ }
43
+ removeToastFromQueue(uuid) {
44
+ this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));
45
+ }
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
47
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: ToastService, providedIn: 'root' });
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: ToastService, decorators: [{
50
+ type: Injectable,
51
+ args: [{
52
+ providedIn: 'root',
53
+ }]
54
+ }] });
55
+
56
+ class DsvToastComponent {
57
+ toastService = inject(ToastService);
58
+ constructor() {
59
+ effect(() => {
60
+ for (const toast of this.toastService.toasts()) {
61
+ if (this.toastService.toastShows().length < MAX_TOASTS) {
62
+ this.toastService.consumeToast(toast);
63
+ }
64
+ }
65
+ });
66
+ }
67
+ ngOnInit() {
68
+ this.toastService.showToast({
69
+ text: 'test',
70
+ type: 'success',
71
+ filled: true,
72
+ duration: 10000,
73
+ });
74
+ }
75
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
76
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.7", type: DsvToastComponent, isStandalone: true, selector: "dsv-toast", ngImport: i0, template: "<div class=\"dsv-toast-container\">\n <div class=\"dsv-toast\" *ngFor=\"let toast of toastService.toastShows()\"\n [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\">\n <button class=\"close-button\" type=\"button\" (click)=\"toastService.closeToast(toast.uuid!)\">\n X\n </button>\n <i class=\"ri-check-fill\" *ngIf=\"toast.type === 'success'\"></i>\n <i class=\"ri-information-2-line\" *ngIf=\"toast.type === 'info'\"></i>\n <i class=\"ri-alert-line\" *ngIf=\"toast.type === 'warning'\"></i>\n <i class=\"ri-close-line\" *ngIf=\"toast.type === 'error'\"></i>\n\n {{ toast.text }}\n <div class=\"loader-container\">\n <div class=\"loader\" [style.width]=\"(toast.durationLeft! / toast.duration!) * 100 + '%'\"></div>\n </div>\n </div>\n</div>", styles: [".dsv-toast-container{position:fixed;bottom:0;right:0;display:flex;flex-direction:column;gap:8px;overflow:hidden;padding:5px}.dsv-toast-container .dsv-toast{font-size:1.2rem;border-radius:2px;box-shadow:0 0 0 .5px #0006;min-width:300px;padding:10px 15px;pointer-events:all;position:relative;display:flex;align-items:center;flex-direction:row;gap:8px;opacity:0;transform:translate(100%);animation:slideInRight .5s ease-out forwards}@keyframes slideInRight{to{opacity:1;transform:translate(0)}}.dsv-toast-container .dsv-toast.success{border-left:4px solid var(--success)}.dsv-toast-container .dsv-toast.success i{color:var(--success);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.info{border-left:4px solid var(--info)}.dsv-toast-container .dsv-toast.info i{color:var(--info);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.warning{border-left:4px solid var(--warning)}.dsv-toast-container .dsv-toast.warning i{color:var(--warning);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.error{border-left:4px solid var(--error)}.dsv-toast-container .dsv-toast.error i{color:var(--error);font-size:1.2rem!important}.dsv-toast-container .dsv-toast .close-button{position:absolute;top:6px;right:10px;font-size:1rem;border:0;background-color:inherit;cursor:pointer}.dsv-toast-container .dsv-toast .close-button:hover{background-color:#f9f9f9;border-radius:5px}::ng-deep .dark .dsv-toast-container .dsv-toast .close-button{color:#fff}::ng-deep .dark .dsv-toast-container .dsv-toast .close-button:hover{background-color:#212121!important}.dsv-toast-container .dsv-toast .loader-container{position:absolute;bottom:0;left:0;width:100%}.dsv-toast-container .dsv-toast .loader-container .loader{border:1px solid #b8b8b8}::ng-deep .light .dsv-toast-container .dsv-toast{background-color:#fff;color:#000}::ng-deep .dark .dsv-toast-container .dsv-toast{background-color:#000;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
77
+ }
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DsvToastComponent, decorators: [{
79
+ type: Component,
80
+ args: [{ selector: 'dsv-toast', standalone: true, imports: [CommonModule], template: "<div class=\"dsv-toast-container\">\n <div class=\"dsv-toast\" *ngFor=\"let toast of toastService.toastShows()\"\n [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\">\n <button class=\"close-button\" type=\"button\" (click)=\"toastService.closeToast(toast.uuid!)\">\n X\n </button>\n <i class=\"ri-check-fill\" *ngIf=\"toast.type === 'success'\"></i>\n <i class=\"ri-information-2-line\" *ngIf=\"toast.type === 'info'\"></i>\n <i class=\"ri-alert-line\" *ngIf=\"toast.type === 'warning'\"></i>\n <i class=\"ri-close-line\" *ngIf=\"toast.type === 'error'\"></i>\n\n {{ toast.text }}\n <div class=\"loader-container\">\n <div class=\"loader\" [style.width]=\"(toast.durationLeft! / toast.duration!) * 100 + '%'\"></div>\n </div>\n </div>\n</div>", styles: [".dsv-toast-container{position:fixed;bottom:0;right:0;display:flex;flex-direction:column;gap:8px;overflow:hidden;padding:5px}.dsv-toast-container .dsv-toast{font-size:1.2rem;border-radius:2px;box-shadow:0 0 0 .5px #0006;min-width:300px;padding:10px 15px;pointer-events:all;position:relative;display:flex;align-items:center;flex-direction:row;gap:8px;opacity:0;transform:translate(100%);animation:slideInRight .5s ease-out forwards}@keyframes slideInRight{to{opacity:1;transform:translate(0)}}.dsv-toast-container .dsv-toast.success{border-left:4px solid var(--success)}.dsv-toast-container .dsv-toast.success i{color:var(--success);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.info{border-left:4px solid var(--info)}.dsv-toast-container .dsv-toast.info i{color:var(--info);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.warning{border-left:4px solid var(--warning)}.dsv-toast-container .dsv-toast.warning i{color:var(--warning);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.error{border-left:4px solid var(--error)}.dsv-toast-container .dsv-toast.error i{color:var(--error);font-size:1.2rem!important}.dsv-toast-container .dsv-toast .close-button{position:absolute;top:6px;right:10px;font-size:1rem;border:0;background-color:inherit;cursor:pointer}.dsv-toast-container .dsv-toast .close-button:hover{background-color:#f9f9f9;border-radius:5px}::ng-deep .dark .dsv-toast-container .dsv-toast .close-button{color:#fff}::ng-deep .dark .dsv-toast-container .dsv-toast .close-button:hover{background-color:#212121!important}.dsv-toast-container .dsv-toast .loader-container{position:absolute;bottom:0;left:0;width:100%}.dsv-toast-container .dsv-toast .loader-container .loader{border:1px solid #b8b8b8}::ng-deep .light .dsv-toast-container .dsv-toast{background-color:#fff;color:#000}::ng-deep .dark .dsv-toast-container .dsv-toast{background-color:#000;color:#fff}\n"] }]
81
+ }], ctorParameters: () => [] });
82
+
83
+ /**
84
+ * Generated bundle index. Do not edit.
85
+ */
86
+
87
+ export { DsvToastComponent };
88
+ //# sourceMappingURL=ng-vagabond-lab-ng-dsv-ds-toast.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-toast.mjs","sources":["../../../projects/ng-dsv/ds/toast/service/toast.service.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.html","../../../projects/ng-dsv/ds/toast/ng-vagabond-lab-ng-dsv-ds-toast.ts"],"sourcesContent":["import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { IToastDto } from '../dto/toast.dto';\n\nexport const MAX_TOASTS = 10;\nexport const DURATION_DEFAULT = 5000;\nexport const DURATION_TIMEOUT = 10;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n toastShows: WritableSignal<IToastDto[]> = signal([]);\n toasts: WritableSignal<IToastDto[]> = signal([]);\n\n showToast(toast: IToastDto) {\n toast.uuid = crypto.randomUUID();\n toast.type = toast.type ?? 'success';\n toast.duration = toast.duration ?? DURATION_DEFAULT;\n toast.durationLeft = toast.duration;\n toast.filled = toast.filled ?? false;\n this.toasts.update((toasts) => [...toasts, toast]);\n }\n\n consumeToast(toast: IToastDto) {\n this.toastShows.update((toasts) => [...toasts, toast]);\n let duration = 0;\n const interval = setInterval(() => {\n duration += DURATION_TIMEOUT;\n if (duration > toast.duration!) {\n clearInterval(interval);\n this.closeToast(toast.uuid!);\n } else {\n this.toastShows.update((toasts) =>\n toasts.map((oneToast) => {\n if (oneToast.uuid === toast.uuid) {\n oneToast.durationLeft = toast.duration! - duration;\n }\n return oneToast;\n })\n );\n }\n }, DURATION_TIMEOUT);\n this.removeToastFromQueue(toast.uuid!);\n }\n\n closeToast(uuid: string) {\n this.toastShows.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }\n\n removeToastFromQueue(uuid: string) {\n this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject } from '@angular/core';\nimport { MAX_TOASTS, ToastService } from '../service/toast.service';\n\nexport type Theme = {\n primary: string;\n text: string;\n};\n\n@Component({\n selector: 'dsv-toast',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n})\nexport class DsvToastComponent {\n toastService = inject(ToastService);\n\n constructor() {\n effect(() => {\n for (const toast of this.toastService.toasts()) {\n if (this.toastService.toastShows().length < MAX_TOASTS) {\n this.toastService.consumeToast(toast);\n }\n }\n });\n }\n\n ngOnInit() {\n this.toastService.showToast({\n text: 'test',\n type: 'success',\n filled: true,\n duration: 10000,\n });\n }\n}\n","<div class=\"dsv-toast-container\">\n <div class=\"dsv-toast\" *ngFor=\"let toast of toastService.toastShows()\"\n [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\">\n <button class=\"close-button\" type=\"button\" (click)=\"toastService.closeToast(toast.uuid!)\">\n X\n </button>\n <i class=\"ri-check-fill\" *ngIf=\"toast.type === 'success'\"></i>\n <i class=\"ri-information-2-line\" *ngIf=\"toast.type === 'info'\"></i>\n <i class=\"ri-alert-line\" *ngIf=\"toast.type === 'warning'\"></i>\n <i class=\"ri-close-line\" *ngIf=\"toast.type === 'error'\"></i>\n\n {{ toast.text }}\n <div class=\"loader-container\">\n <div class=\"loader\" [style.width]=\"(toast.durationLeft! / toast.duration!) * 100 + '%'\"></div>\n </div>\n </div>\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}