@ng-vagabond-lab/ng-dsv 0.1.128 → 0.1.129

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs +3 -2
  2. package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs.map +1 -1
  3. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs +2 -2
  4. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs.map +1 -1
  5. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs +8 -11
  6. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs.map +1 -1
  7. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs +5 -5
  8. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs.map +1 -1
  9. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs +2 -2
  10. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs.map +1 -1
  11. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs +2 -2
  12. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs.map +1 -1
  13. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs +30 -50
  14. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs.map +1 -1
  15. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs +10 -15
  16. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs.map +1 -1
  17. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs +10 -15
  18. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs.map +1 -1
  19. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs +6 -9
  20. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs.map +1 -1
  21. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +5 -6
  22. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs.map +1 -1
  23. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs +6 -11
  24. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs.map +1 -1
  25. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-admin.mjs +12 -3
  26. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-admin.mjs.map +1 -1
  27. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-auth.mjs +2 -2
  28. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-auth.mjs.map +1 -1
  29. package/package.json +1 -1
  30. package/types/ng-vagabond-lab-ng-dsv-ds-avatar.d.ts +1 -1
  31. package/types/ng-vagabond-lab-ng-dsv-ds-chip.d.ts +1 -1
  32. package/types/ng-vagabond-lab-ng-dsv-ds-file.d.ts +12 -13
  33. package/types/ng-vagabond-lab-ng-dsv-ds-form-signal.d.ts +0 -1
  34. package/types/ng-vagabond-lab-ng-dsv-ds-tooltip.d.ts +1 -1
@@ -28,8 +28,9 @@ const FORMAT_TOKENS = {
28
28
  const TOKEN_REGEX = new RegExp(Object.keys(FORMAT_TOKENS).join('|'), 'g');
29
29
  const formatDate = (dateString, format = 'DD/MM/YYYY HH:mm:ss') => {
30
30
  const date = new Date(dateString);
31
- if (Number.isNaN(date.getTime()))
31
+ if (Number.isNaN(date.getTime())) {
32
32
  return '—';
33
+ }
33
34
  return format.replace(TOKEN_REGEX, (token) => FORMAT_TOKENS[token](date));
34
35
  };
35
36
  function toDateInputValue(value) {
@@ -40,7 +41,7 @@ function toDateInputValue(value) {
40
41
  function toBackendDate(value) {
41
42
  if (!value)
42
43
  return '';
43
- return value.includes('T') ? value : `${value}T00:00:00`;
44
+ return value.includes('T') ? value : `${value}T00:00:00Z`;
44
45
  }
45
46
 
46
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-date.mjs","sources":["../../../projects/ng-dsv/date/pipe/date.format.pipe.ts","../../../projects/ng-dsv/date/utils/date.utils.ts","../../../projects/ng-dsv/date/ng-vagabond-lab-ng-dsv-date.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { formatDate } from '../public-api';\n\n@Pipe({\n name: 'formatDate',\n standalone: true,\n})\nexport class DateFormatPipe implements PipeTransform {\n transform(value: string): string {\n return formatDate(value);\n }\n}\n","const FORMAT_TOKENS: Record<string, (d: Date) => string> = {\n DD: (d) => String(d.getDate()).padStart(2, '0'),\n MM: (d) => String(d.getMonth() + 1).padStart(2, '0'),\n YYYY: (d) => String(d.getFullYear()),\n YY: (d) => String(d.getFullYear()).slice(-2),\n HH: (d) => String(d.getHours()).padStart(2, '0'),\n mm: (d) => String(d.getMinutes()).padStart(2, '0'),\n ss: (d) => String(d.getSeconds()).padStart(2, '0'),\n};\n\nconst TOKEN_REGEX = new RegExp(Object.keys(FORMAT_TOKENS).join('|'), 'g');\n\nexport const formatDate = (dateString: string, format = 'DD/MM/YYYY HH:mm:ss'): string => {\n const date = new Date(dateString);\n\n if (Number.isNaN(date.getTime())) return '—';\n\n return format.replace(TOKEN_REGEX, (token) => FORMAT_TOKENS[token](date));\n};\n\nexport function toDateInputValue(value: string | null | undefined): string {\n if (!value) return '';\n return value.includes('T') ? value.split('T')[0] : value;\n}\n\nexport function toBackendDate(value: string | null | undefined): string {\n if (!value) return '';\n return value.includes('T') ? value : `${value}T00:00:00`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAOa,cAAc,CAAA;AACvB,IAAA,SAAS,CAAC,KAAa,EAAA;AACnB,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC;IAC5B;wGAHS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;ACND,MAAM,aAAa,GAAwC;AACvD,IAAA,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IAC/C,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACpD,IAAA,IAAI,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACpC,IAAA,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAA,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAChD,IAAA,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAClD,IAAA,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;CACrD;AAED,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;AAElE,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,MAAM,GAAG,qBAAqB,KAAY;AACrF,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;IAEjC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAAE,QAAA,OAAO,GAAG;AAE5C,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7E;AAEM,SAAU,gBAAgB,CAAC,KAAgC,EAAA;AAC7D,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;IACrB,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;AAC5D;AAEM,SAAU,aAAa,CAAC,KAAgC,EAAA;AAC1D,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;AACrB,IAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAA,EAAG,KAAK,WAAW;AAC5D;;AC5BA;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-date.mjs","sources":["../../../projects/ng-dsv/date/pipe/date.format.pipe.ts","../../../projects/ng-dsv/date/utils/date.utils.ts","../../../projects/ng-dsv/date/ng-vagabond-lab-ng-dsv-date.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { formatDate } from '../public-api';\n\n@Pipe({\n name: 'formatDate',\n standalone: true,\n})\nexport class DateFormatPipe implements PipeTransform {\n transform(value: string): string {\n return formatDate(value);\n }\n}\n","const FORMAT_TOKENS: Record<string, (d: Date) => string> = {\n DD: (d) => String(d.getDate()).padStart(2, '0'),\n MM: (d) => String(d.getMonth() + 1).padStart(2, '0'),\n YYYY: (d) => String(d.getFullYear()),\n YY: (d) => String(d.getFullYear()).slice(-2),\n HH: (d) => String(d.getHours()).padStart(2, '0'),\n mm: (d) => String(d.getMinutes()).padStart(2, '0'),\n ss: (d) => String(d.getSeconds()).padStart(2, '0'),\n};\n\nconst TOKEN_REGEX = new RegExp(Object.keys(FORMAT_TOKENS).join('|'), 'g');\n\nexport const formatDate = (dateString: string, format = 'DD/MM/YYYY HH:mm:ss'): string => {\n const date = new Date(dateString);\n\n if (Number.isNaN(date.getTime())) {\n return '—';\n }\n\n return format.replace(TOKEN_REGEX, (token) => FORMAT_TOKENS[token](date));\n};\n\nexport function toDateInputValue(value: string | null | undefined): string {\n if (!value) return '';\n return value.includes('T') ? value.split('T')[0] : value;\n}\n\nexport function toBackendDate(value: string | null | undefined): string {\n if (!value) return '';\n return value.includes('T') ? value : `${value}T00:00:00Z`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAOa,cAAc,CAAA;AACvB,IAAA,SAAS,CAAC,KAAa,EAAA;AACnB,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC;IAC5B;wGAHS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;ACND,MAAM,aAAa,GAAwC;AACvD,IAAA,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IAC/C,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACpD,IAAA,IAAI,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACpC,IAAA,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAA,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAChD,IAAA,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAClD,IAAA,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;CACrD;AAED,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;AAElE,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,MAAM,GAAG,qBAAqB,KAAY;AACrF,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;IAEjC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AAC9B,QAAA,OAAO,GAAG;IACd;AAEA,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7E;AAEM,SAAU,gBAAgB,CAAC,KAAgC,EAAA;AAC7D,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;IACrB,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;AAC5D;AAEM,SAAU,aAAa,CAAC,KAAgC,EAAA;AAC1D,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;AACrB,IAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAA,EAAG,KAAK,YAAY;AAC7D;;AC9BA;;AAEG;;;;"}
@@ -26,11 +26,11 @@ class DsvAccordionComponent {
26
26
  this.isOpen.update((tootle) => !tootle);
27
27
  }
28
28
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsvAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: DsvAccordionComponent, isStandalone: true, selector: "dsv-accordion", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "checkboxRef", first: true, predicate: ["accordionContent"], descendants: true, isSignal: true }], ngImport: i0, template: "<a class=\"dsv-accordion-header\" [class.disabled]=\"!hasContent()\" (click)=\"doToogle()\">\n <div>\n {{ titleText() | translate }}\n <ng-content select=\".dsv-accordion-header\"></ng-content>\n </div>\n @if (isOpen() === true) {\n <i class=\"ri-arrow-up-s-line\" [class.disabled]=\"!hasContent()\"></i>\n } @else {\n <i class=\"ri-arrow-down-s-line\" [class.disabled]=\"!hasContent()\"></i>\n }\n</a>\n<div class=\"dsv-accordion-text\" [class.open]=\"isOpen() === true\">\n <ng-content #accordionContent></ng-content>\n</div>\n", styles: [":host{--accordion-header-padding: 5px 10px;--accordion-text-display: flex;--accordion-text-padding: 0px 10px;--accordion-text-width: calc(100% - 20px) ;display:flex;flex-direction:column;gap:7px;margin:10px;padding:10px;width:calc(100% - 40px);background-color:var(--background-card);position:relative;border-radius:0}:host .dsv-accordion-header{display:flex;width:95%;font-weight:700;cursor:pointer;padding:var(--accordion-header-padding)}:host .dsv-accordion-header i{position:absolute;right:10px}:host .dsv-accordion-header i.disabled{color:var(--subtitle)}:host .dsv-accordion-header.disabled{cursor:default;pointer-events:none}:host .dsv-accordion-text{display:var(--accordion-text-display);padding:var(--accordion-text-padding);width:var(--accordion-text-width);overflow:hidden;opacity:0;height:0;transition:transform .3s ease-out,opacity .2s ease-out,height .2s ease-out}:host .dsv-accordion-text.open{padding:10px;opacity:1;height:auto}:host .dsv-accordion-text:empty{display:none}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.12", type: DsvAccordionComponent, isStandalone: true, selector: "dsv-accordion", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "checkboxRef", first: true, predicate: ["accordionContent"], descendants: true, isSignal: true }], ngImport: i0, template: "<a class=\"dsv-accordion-header\" [class.disabled]=\"!hasContent()\" (click)=\"doToogle()\">\n <div>\n {{ titleText() | translate }}\n <ng-content select=\".dsv-accordion-header\"></ng-content>\n </div>\n <i\n [class]=\"isOpen() ? 'ri-arrow-up-s-line' : 'ri-arrow-down-s-line'\"\n [class.disabled]=\"!hasContent()\"\n ></i>\n</a>\n<div class=\"dsv-accordion-text\" [class.open]=\"isOpen() === true\">\n <div class=\"dsv-accordion-inner\">\n <ng-content #accordionContent></ng-content>\n </div>\n</div>\n", styles: [":host{--accordion-header-padding: 5px 10px;--accordion-text-display: flex;--accordion-text-padding: 0px 10px;--accordion-text-width: calc(100% - 20px) ;margin:10px;padding:10px;width:calc(100% - 40px);background-color:var(--background-card);position:relative;border-radius:0}:host .dsv-accordion-header{display:flex;width:95%;font-weight:700;cursor:pointer;padding:var(--accordion-header-padding)}:host .dsv-accordion-header i{position:absolute;right:10px}:host .dsv-accordion-header i.disabled{color:var(--subtitle)}:host .dsv-accordion-header.disabled{cursor:default;pointer-events:none}:host .dsv-accordion-text{display:grid;padding:var(--accordion-text-padding);width:var(--accordion-text-width);overflow:hidden;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .25s ease-out,opacity .25s ease-out}:host .dsv-accordion-text.open{grid-template-rows:1fr;opacity:1}:host .dsv-accordion-text:empty{display:none}:host .dsv-accordion-text .dsv-accordion-inner{overflow:hidden;display:var(--accordion-text-display)}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
30
30
  }
31
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsvAccordionComponent, decorators: [{
32
32
  type: Component,
33
- args: [{ selector: 'dsv-accordion', imports: [TranslatePipe], template: "<a class=\"dsv-accordion-header\" [class.disabled]=\"!hasContent()\" (click)=\"doToogle()\">\n <div>\n {{ titleText() | translate }}\n <ng-content select=\".dsv-accordion-header\"></ng-content>\n </div>\n @if (isOpen() === true) {\n <i class=\"ri-arrow-up-s-line\" [class.disabled]=\"!hasContent()\"></i>\n } @else {\n <i class=\"ri-arrow-down-s-line\" [class.disabled]=\"!hasContent()\"></i>\n }\n</a>\n<div class=\"dsv-accordion-text\" [class.open]=\"isOpen() === true\">\n <ng-content #accordionContent></ng-content>\n</div>\n", styles: [":host{--accordion-header-padding: 5px 10px;--accordion-text-display: flex;--accordion-text-padding: 0px 10px;--accordion-text-width: calc(100% - 20px) ;display:flex;flex-direction:column;gap:7px;margin:10px;padding:10px;width:calc(100% - 40px);background-color:var(--background-card);position:relative;border-radius:0}:host .dsv-accordion-header{display:flex;width:95%;font-weight:700;cursor:pointer;padding:var(--accordion-header-padding)}:host .dsv-accordion-header i{position:absolute;right:10px}:host .dsv-accordion-header i.disabled{color:var(--subtitle)}:host .dsv-accordion-header.disabled{cursor:default;pointer-events:none}:host .dsv-accordion-text{display:var(--accordion-text-display);padding:var(--accordion-text-padding);width:var(--accordion-text-width);overflow:hidden;opacity:0;height:0;transition:transform .3s ease-out,opacity .2s ease-out,height .2s ease-out}:host .dsv-accordion-text.open{padding:10px;opacity:1;height:auto}:host .dsv-accordion-text:empty{display:none}\n"] }]
33
+ args: [{ selector: 'dsv-accordion', imports: [TranslatePipe], template: "<a class=\"dsv-accordion-header\" [class.disabled]=\"!hasContent()\" (click)=\"doToogle()\">\n <div>\n {{ titleText() | translate }}\n <ng-content select=\".dsv-accordion-header\"></ng-content>\n </div>\n <i\n [class]=\"isOpen() ? 'ri-arrow-up-s-line' : 'ri-arrow-down-s-line'\"\n [class.disabled]=\"!hasContent()\"\n ></i>\n</a>\n<div class=\"dsv-accordion-text\" [class.open]=\"isOpen() === true\">\n <div class=\"dsv-accordion-inner\">\n <ng-content #accordionContent></ng-content>\n </div>\n</div>\n", styles: [":host{--accordion-header-padding: 5px 10px;--accordion-text-display: flex;--accordion-text-padding: 0px 10px;--accordion-text-width: calc(100% - 20px) ;margin:10px;padding:10px;width:calc(100% - 40px);background-color:var(--background-card);position:relative;border-radius:0}:host .dsv-accordion-header{display:flex;width:95%;font-weight:700;cursor:pointer;padding:var(--accordion-header-padding)}:host .dsv-accordion-header i{position:absolute;right:10px}:host .dsv-accordion-header i.disabled{color:var(--subtitle)}:host .dsv-accordion-header.disabled{cursor:default;pointer-events:none}:host .dsv-accordion-text{display:grid;padding:var(--accordion-text-padding);width:var(--accordion-text-width);overflow:hidden;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .25s ease-out,opacity .25s ease-out}:host .dsv-accordion-text.open{grid-template-rows:1fr;opacity:1}:host .dsv-accordion-text:empty{display:none}:host .dsv-accordion-text .dsv-accordion-inner{overflow:hidden;display:var(--accordion-text-display)}\n"] }]
34
34
  }], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], titleText: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleText", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], checkboxRef: [{ type: i0.ViewChild, args: ['accordionContent', { isSignal: true }] }] } });
35
35
 
36
36
  /**
@@ -1 +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 { afterNextRender, Component, effect, ElementRef, input, signal, viewChild } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-accordion',\n imports: [TranslatePipe],\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n})\nexport class DsvAccordionComponent {\n open = input<boolean>(false);\n titleText = input<string>('');\n color = input<string>('');\n\n readonly checkboxRef = viewChild<ElementRef>('accordionContent');\n\n isOpen = signal<boolean>(this.open());\n hasContent = signal<boolean>(false);\n\n constructor() {\n afterNextRender(() => {\n const contentEl = document.querySelector(\n 'dsv-accordion > *:not([class*=\"dsv-accordion-header\"])',\n );\n const isEmpty = contentEl?.childNodes.length === 0 || contentEl?.textContent?.trim() === '';\n this.hasContent.set(!isEmpty);\n });\n\n effect(() => {\n this.isOpen.set(this.open());\n });\n }\n\n doToogle() {\n if (!this.hasContent()) {\n return;\n }\n this.isOpen.update((tootle) => !tootle);\n }\n}\n","<a class=\"dsv-accordion-header\" [class.disabled]=\"!hasContent()\" (click)=\"doToogle()\">\n <div>\n {{ titleText() | translate }}\n <ng-content select=\".dsv-accordion-header\"></ng-content>\n </div>\n @if (isOpen() === true) {\n <i class=\"ri-arrow-up-s-line\" [class.disabled]=\"!hasContent()\"></i>\n } @else {\n <i class=\"ri-arrow-down-s-line\" [class.disabled]=\"!hasContent()\"></i>\n }\n</a>\n<div class=\"dsv-accordion-text\" [class.open]=\"isOpen() === true\">\n <ng-content #accordionContent></ng-content>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MASa,qBAAqB,CAAA;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;AAC5B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AAEhB,IAAA,WAAW,GAAG,SAAS,CAAa,kBAAkB,kFAAC;IAEhE,MAAM,GAAG,MAAM,CAAU,IAAI,CAAC,IAAI,EAAE,6EAAC;AACrC,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,iFAAC;AAEnC,IAAA,WAAA,GAAA;QACI,eAAe,CAAC,MAAK;YACjB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CACpC,wDAAwD,CAC3D;AACD,YAAA,MAAM,OAAO,GAAG,SAAS,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE;YAC3F,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACjC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAChC,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACpB;QACJ;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;IAC3C;wGA7BS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTlC,ikBAcA,EAAA,MAAA,EAAA,CAAA,i+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDTc,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAId,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACI,eAAe,EAAA,OAAA,EAChB,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,ikBAAA,EAAA,MAAA,EAAA,CAAA,i+BAAA,CAAA,EAAA;uXASqB,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEdnE;;AAEG;;;;"}
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 { afterNextRender, Component, effect, ElementRef, input, signal, viewChild } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-accordion',\n imports: [TranslatePipe],\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n})\nexport class DsvAccordionComponent {\n open = input<boolean>(false);\n titleText = input<string>('');\n color = input<string>('');\n\n readonly checkboxRef = viewChild<ElementRef>('accordionContent');\n\n isOpen = signal<boolean>(this.open());\n hasContent = signal<boolean>(false);\n\n constructor() {\n afterNextRender(() => {\n const contentEl = document.querySelector(\n 'dsv-accordion > *:not([class*=\"dsv-accordion-header\"])',\n );\n const isEmpty = contentEl?.childNodes.length === 0 || contentEl?.textContent?.trim() === '';\n this.hasContent.set(!isEmpty);\n });\n\n effect(() => {\n this.isOpen.set(this.open());\n });\n }\n\n doToogle() {\n if (!this.hasContent()) {\n return;\n }\n this.isOpen.update((tootle) => !tootle);\n }\n}\n","<a class=\"dsv-accordion-header\" [class.disabled]=\"!hasContent()\" (click)=\"doToogle()\">\n <div>\n {{ titleText() | translate }}\n <ng-content select=\".dsv-accordion-header\"></ng-content>\n </div>\n <i\n [class]=\"isOpen() ? 'ri-arrow-up-s-line' : 'ri-arrow-down-s-line'\"\n [class.disabled]=\"!hasContent()\"\n ></i>\n</a>\n<div class=\"dsv-accordion-text\" [class.open]=\"isOpen() === true\">\n <div class=\"dsv-accordion-inner\">\n <ng-content #accordionContent></ng-content>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MASa,qBAAqB,CAAA;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;AAC5B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AAEhB,IAAA,WAAW,GAAG,SAAS,CAAa,kBAAkB,kFAAC;IAEhE,MAAM,GAAG,MAAM,CAAU,IAAI,CAAC,IAAI,EAAE,6EAAC;AACrC,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,iFAAC;AAEnC,IAAA,WAAA,GAAA;QACI,eAAe,CAAC,MAAK;YACjB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CACpC,wDAAwD,CAC3D;AACD,YAAA,MAAM,OAAO,GAAG,SAAS,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE;YAC3F,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACjC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAChC,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACpB;QACJ;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;IAC3C;wGA7BS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTlC,8iBAeA,EAAA,MAAA,EAAA,CAAA,qgCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDVc,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAId,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACI,eAAe,EAAA,OAAA,EAChB,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,8iBAAA,EAAA,MAAA,EAAA,CAAA,qgCAAA,CAAA,EAAA;uXASqB,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEdnE;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, output, signal, effect, HostListener, HostBinding, Component } from '@angular/core';
2
+ import { input, output, signal, effect, Component } from '@angular/core';
3
3
  import { isCallback } from '@ng-vagabond-lab/ng-dsv/base';
4
4
  import { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';
5
5
 
@@ -17,7 +17,7 @@ class DsvAvatarComponent extends BaseColorComponent {
17
17
  this.isCallback.set(isCallback(this.callback));
18
18
  });
19
19
  }
20
- get hostClasses() {
20
+ hostClasses() {
21
21
  const classes = [this.color()];
22
22
  this.isCallback() && classes.push('callback');
23
23
  return this.getClasses('dsv-avatar', classes);
@@ -26,18 +26,15 @@ class DsvAvatarComponent extends BaseColorComponent {
26
26
  this.isCallback() && this.callback?.emit();
27
27
  }
28
28
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsvAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: DsvAvatarComponent, isStandalone: true, selector: "dsv-avatar", inputs: { avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, host: { listeners: { "click": "onClick()" }, properties: { "class": "this.hostClasses" } }, usesInheritance: true, ngImport: i0, template: "@if (isImage()) {\n <img\n [src]=\"avatar()\"\n alt=\"avatar\"\n />\n} @else {\n <span>{{ avatarLetter() }}</span>\n}\n", styles: [":host.dsv-avatar{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;overflow:hidden;-webkit-user-select:none;user-select:none;border:4px solid var(--background)}:host.dsv-avatar img{width:40px;height:40px}:host.dsv-avatar.callback:hover{border:4px solid var(--border)}:host.dsv-avatar.callback:active{opacity:.8}\n"] });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: DsvAvatarComponent, isStandalone: true, selector: "dsv-avatar", inputs: { avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, host: { listeners: { "click": "onClick()" }, properties: { "class": "hostClasses()" } }, usesInheritance: true, ngImport: i0, template: "@if (isImage()) {\n <img\n [src]=\"avatar()\"\n alt=\"avatar\"\n />\n} @else {\n <span>{{ avatarLetter() }}</span>\n}\n", styles: [":host.dsv-avatar{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;overflow:hidden;-webkit-user-select:none;user-select:none;border:4px solid var(--background)}:host.dsv-avatar img{width:40px;height:40px}:host.dsv-avatar.callback:hover{border:4px solid var(--border)}:host.dsv-avatar.callback:active{opacity:.8}\n"] });
30
30
  }
31
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsvAvatarComponent, decorators: [{
32
32
  type: Component,
33
- args: [{ selector: 'dsv-avatar', imports: [], template: "@if (isImage()) {\n <img\n [src]=\"avatar()\"\n alt=\"avatar\"\n />\n} @else {\n <span>{{ avatarLetter() }}</span>\n}\n", styles: [":host.dsv-avatar{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;overflow:hidden;-webkit-user-select:none;user-select:none;border:4px solid var(--background)}:host.dsv-avatar img{width:40px;height:40px}:host.dsv-avatar.callback:hover{border:4px solid var(--border)}:host.dsv-avatar.callback:active{opacity:.8}\n"] }]
34
- }], ctorParameters: () => [], propDecorators: { avatar: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatar", required: false }] }], callback: [{ type: i0.Output, args: ["callback"] }], hostClasses: [{
35
- type: HostBinding,
36
- args: ['class']
37
- }], onClick: [{
38
- type: HostListener,
39
- args: ['click']
40
- }] } });
33
+ args: [{ selector: 'dsv-avatar', imports: [], host: {
34
+ '[class]': 'hostClasses()',
35
+ '(click)': 'onClick()',
36
+ }, template: "@if (isImage()) {\n <img\n [src]=\"avatar()\"\n alt=\"avatar\"\n />\n} @else {\n <span>{{ avatarLetter() }}</span>\n}\n", styles: [":host.dsv-avatar{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;overflow:hidden;-webkit-user-select:none;user-select:none;border:4px solid var(--background)}:host.dsv-avatar img{width:40px;height:40px}:host.dsv-avatar.callback:hover{border:4px solid var(--border)}:host.dsv-avatar.callback:active{opacity:.8}\n"] }]
37
+ }], ctorParameters: () => [], propDecorators: { avatar: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatar", required: false }] }], callback: [{ type: i0.Output, args: ["callback"] }] } });
41
38
 
42
39
  /**
43
40
  * Generated bundle index. Do not edit.
@@ -1 +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 { Component, effect, HostBinding, HostListener, input, output, signal } from '@angular/core';\nimport { isCallback } from '@ng-vagabond-lab/ng-dsv/base';\nimport { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';\n\n@Component({\n selector: 'dsv-avatar',\n imports: [],\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n})\nexport class DsvAvatarComponent extends BaseColorComponent {\n avatar = input<string>('');\n callback = output<void>();\n\n avatarLetter = signal<string>('');\n isImage = signal<boolean>(false);\n isCallback = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n this.isImage.set(this.avatar().startsWith('http'));\n this.avatarLetter.set(this.avatar().substring(0, 1).toUpperCase() ?? '?');\n this.isCallback.set(isCallback(this.callback));\n });\n }\n\n @HostBinding('class')\n get hostClasses(): string {\n const classes: string[] = [this.color()];\n this.isCallback() && classes.push('callback');\n return this.getClasses('dsv-avatar', classes);\n }\n\n @HostListener('click')\n onClick() {\n this.isCallback() && this.callback?.emit();\n }\n}\n","@if (isImage()) {\n <img\n [src]=\"avatar()\"\n alt=\"avatar\"\n />\n} @else {\n <span>{{ avatarLetter() }}</span>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAUM,MAAO,kBAAmB,SAAQ,kBAAkB,CAAA;AACtD,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,6EAAC;IAC1B,QAAQ,GAAG,MAAM,EAAQ;AAEzB,IAAA,YAAY,GAAG,MAAM,CAAS,EAAE,mFAAC;AACjC,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,iFAAC;AAEnC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC;AACzE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IACI,WAAW,GAAA;QACX,MAAM,OAAO,GAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC;IACjD;IAGA,OAAO,GAAA;QACH,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;IAC9C;wGA3BS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,mWCV/B,gJAQA,EAAA,MAAA,EAAA,CAAA,2XAAA,CAAA,EAAA,CAAA;;4FDEa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,EAAE,EAAA,QAAA,EAAA,gJAAA,EAAA,MAAA,EAAA,CAAA,2XAAA,CAAA,EAAA;;sBAqBV,WAAW;uBAAC,OAAO;;sBAOnB,YAAY;uBAAC,OAAO;;;AElCzB;;AAEG;;;;"}
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 { Component, effect, input, output, signal } from '@angular/core';\nimport { isCallback } from '@ng-vagabond-lab/ng-dsv/base';\nimport { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';\n\n@Component({\n selector: 'dsv-avatar',\n imports: [],\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n host: {\n '[class]': 'hostClasses()',\n '(click)': 'onClick()',\n },\n})\nexport class DsvAvatarComponent extends BaseColorComponent {\n avatar = input<string>('');\n callback = output<void>();\n\n avatarLetter = signal<string>('');\n isImage = signal<boolean>(false);\n isCallback = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n this.isImage.set(this.avatar().startsWith('http'));\n this.avatarLetter.set(this.avatar().substring(0, 1).toUpperCase() ?? '?');\n this.isCallback.set(isCallback(this.callback));\n });\n }\n\n hostClasses(): string {\n const classes: string[] = [this.color()];\n this.isCallback() && classes.push('callback');\n return this.getClasses('dsv-avatar', classes);\n }\n\n onClick() {\n this.isCallback() && this.callback?.emit();\n }\n}\n","@if (isImage()) {\n <img\n [src]=\"avatar()\"\n alt=\"avatar\"\n />\n} @else {\n <span>{{ avatarLetter() }}</span>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAcM,MAAO,kBAAmB,SAAQ,kBAAkB,CAAA;AACtD,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,6EAAC;IAC1B,QAAQ,GAAG,MAAM,EAAQ;AAEzB,IAAA,YAAY,GAAG,MAAM,CAAS,EAAE,mFAAC;AACjC,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,iFAAC;AAEnC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC;AACzE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACP,MAAM,OAAO,GAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC;IACjD;IAEA,OAAO,GAAA;QACH,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;IAC9C;wGAzBS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,gWCd/B,gJAQA,EAAA,MAAA,EAAA,CAAA,2XAAA,CAAA,EAAA,CAAA;;4FDMa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;+BACI,YAAY,EAAA,OAAA,EACb,EAAE,EAAA,IAAA,EAGL;AACF,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,SAAS,EAAE,WAAW;AACzB,qBAAA,EAAA,QAAA,EAAA,gJAAA,EAAA,MAAA,EAAA,CAAA,2XAAA,CAAA,EAAA;;;AEZL;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Renderer2, input, HostListener, Directive, output, effect, Component } from '@angular/core';
2
+ import { inject, ElementRef, Renderer2, input, Directive, output, effect, Component } from '@angular/core';
3
3
  import { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';
4
4
  import { TranslatePipe } from '@ngx-translate/core';
5
5
  import { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';
@@ -51,11 +51,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
51
51
  type: Directive,
52
52
  args: [{
53
53
  selector: '[buttonRipple]',
54
+ host: {
55
+ '(click)': 'onClick($event)',
56
+ },
54
57
  }]
55
- }], ctorParameters: () => [], propDecorators: { rippleColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "rippleColor", required: false }] }], rippleDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "rippleDuration", required: false }] }], onClick: [{
56
- type: HostListener,
57
- args: ['click', ['$event']]
58
- }] } });
58
+ }], ctorParameters: () => [], propDecorators: { rippleColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "rippleColor", required: false }] }], rippleDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "rippleDuration", required: false }] }] } });
59
59
 
60
60
  class DsvButtonComponent extends BaseColorComponent {
61
61
  libelle = input('', ...(ngDevMode ? [{ debugName: "libelle" }] : /* istanbul ignore next */ []));
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-button.mjs","sources":["../../../projects/ng-dsv/ds/button/directive/button.riddle.directive.ts","../../../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 { Directive, ElementRef, HostListener, inject, input, Renderer2 } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\n\n@Directive({\n selector: '[buttonRipple]',\n})\nexport class ButtonRippleDirective {\n readonly element = inject(ElementRef<HTMLElement>);\n readonly renderer = inject(Renderer2);\n readonly platformService = inject(PlatformService);\n\n readonly rippleColor = input<string>('rgba(255, 255, 255, 0.35');\n readonly rippleDuration = input<number>(550);\n\n constructor() {\n if (!this.platformService.isPlatformBrowser()) {\n return;\n }\n\n const host = this.element.nativeElement;\n\n const position = getComputedStyle(host).position;\n if (position === 'static') {\n this.renderer.setStyle(host, 'position', 'relative');\n }\n this.renderer.setStyle(host, 'overflow', 'hidden');\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n const host = this.element.nativeElement;\n const rect = host.getBoundingClientRect();\n\n const size = Math.max(rect.width, rect.height);\n const x = event.clientX - rect.left - size / 2;\n const y = event.clientY - rect.top - size / 2;\n\n const circle = this.renderer.createElement('span') as HTMLElement;\n circle.classList.add('ripple');\n\n this.renderer.setStyle(circle, 'position', 'absolute');\n this.renderer.setStyle(circle, 'width', `${size}px`);\n this.renderer.setStyle(circle, 'height', `${size}px`);\n this.renderer.setStyle(circle, 'left', `${x}px`);\n this.renderer.setStyle(circle, 'top', `${y}px`);\n this.renderer.setStyle(circle, 'border-radius', '50%');\n this.renderer.setStyle(circle, 'background', this.rippleColor());\n this.renderer.setStyle(circle, 'transform', 'scale(0)');\n this.renderer.setStyle(circle, 'pointer-events', 'none');\n this.renderer.setStyle(circle, 'animation', `ripple ${this.rippleDuration()}ms linear`);\n\n this.renderer.appendChild(host, circle);\n\n circle.addEventListener('animationend', () => {\n this.renderer.removeChild(host, circle);\n });\n }\n}\n","import { Component, effect, input, output } from '@angular/core';\nimport { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ButtonRippleDirective } from '../directive/button.riddle.directive';\n\n@Component({\n selector: 'dsv-button',\n imports: [TranslatePipe, ButtonRippleDirective],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n})\nexport class DsvButtonComponent extends BaseColorComponent {\n libelle = input<string>('');\n icon = input<string>('');\n iconEnd = input<string>('');\n disabled = input<boolean>(false);\n noHover = input<boolean>(false);\n type = input<string>('button');\n\n prevent = input<boolean>(true);\n\n callback = output<void>();\n\n constructor() {\n super();\n effect(() => {\n const classes: string[] = [];\n this.icon() && classes.push('icon');\n this.libelle() !== '' && classes.push('padding');\n this.noHover() && classes.push('no-hover');\n\n this.setClasses('dsv-button', classes);\n });\n }\n\n doClick(event: Event) {\n if (this.prevent() && this.type() !== 'submit') {\n event.stopPropagation();\n event.preventDefault();\n }\n !this.disabled() && this.callback.emit();\n }\n}\n","@if (show()) {\n <button\n [class]=\"classes()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n (click)=\"doClick($event)\"\n buttonRipple\n >\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (libelle()) {\n <span>\n {{ libelle() | translate }}\n </span>\n }\n <span>\n <ng-content></ng-content>\n </span>\n @if (iconEnd()) {\n <i [class]=\"iconEnd()\"></i>\n }\n </button>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-button.mjs","sources":["../../../projects/ng-dsv/ds/button/directive/button.riddle.directive.ts","../../../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 { Directive, ElementRef, inject, input, Renderer2 } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\n\n@Directive({\n selector: '[buttonRipple]',\n host: {\n '(click)': 'onClick($event)',\n },\n})\nexport class ButtonRippleDirective {\n readonly element = inject(ElementRef<HTMLElement>);\n readonly renderer = inject(Renderer2);\n readonly platformService = inject(PlatformService);\n\n readonly rippleColor = input<string>('rgba(255, 255, 255, 0.35');\n readonly rippleDuration = input<number>(550);\n\n constructor() {\n if (!this.platformService.isPlatformBrowser()) {\n return;\n }\n\n const host = this.element.nativeElement;\n\n const position = getComputedStyle(host).position;\n if (position === 'static') {\n this.renderer.setStyle(host, 'position', 'relative');\n }\n this.renderer.setStyle(host, 'overflow', 'hidden');\n }\n\n onClick(event: MouseEvent): void {\n const host = this.element.nativeElement;\n const rect = host.getBoundingClientRect();\n\n const size = Math.max(rect.width, rect.height);\n const x = event.clientX - rect.left - size / 2;\n const y = event.clientY - rect.top - size / 2;\n\n const circle = this.renderer.createElement('span') as HTMLElement;\n circle.classList.add('ripple');\n\n this.renderer.setStyle(circle, 'position', 'absolute');\n this.renderer.setStyle(circle, 'width', `${size}px`);\n this.renderer.setStyle(circle, 'height', `${size}px`);\n this.renderer.setStyle(circle, 'left', `${x}px`);\n this.renderer.setStyle(circle, 'top', `${y}px`);\n this.renderer.setStyle(circle, 'border-radius', '50%');\n this.renderer.setStyle(circle, 'background', this.rippleColor());\n this.renderer.setStyle(circle, 'transform', 'scale(0)');\n this.renderer.setStyle(circle, 'pointer-events', 'none');\n this.renderer.setStyle(circle, 'animation', `ripple ${this.rippleDuration()}ms linear`);\n\n this.renderer.appendChild(host, circle);\n\n circle.addEventListener('animationend', () => {\n this.renderer.removeChild(host, circle);\n });\n }\n}\n","import { Component, effect, input, output } from '@angular/core';\nimport { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ButtonRippleDirective } from '../directive/button.riddle.directive';\n\n@Component({\n selector: 'dsv-button',\n imports: [TranslatePipe, ButtonRippleDirective],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n})\nexport class DsvButtonComponent extends BaseColorComponent {\n libelle = input<string>('');\n icon = input<string>('');\n iconEnd = input<string>('');\n disabled = input<boolean>(false);\n noHover = input<boolean>(false);\n type = input<string>('button');\n\n prevent = input<boolean>(true);\n\n callback = output<void>();\n\n constructor() {\n super();\n effect(() => {\n const classes: string[] = [];\n this.icon() && classes.push('icon');\n this.libelle() !== '' && classes.push('padding');\n this.noHover() && classes.push('no-hover');\n\n this.setClasses('dsv-button', classes);\n });\n }\n\n doClick(event: Event) {\n if (this.prevent() && this.type() !== 'submit') {\n event.stopPropagation();\n event.preventDefault();\n }\n !this.disabled() && this.callback.emit();\n }\n}\n","@if (show()) {\n <button\n [class]=\"classes()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n (click)=\"doClick($event)\"\n buttonRipple\n >\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (libelle()) {\n <span>\n {{ libelle() | translate }}\n </span>\n }\n <span>\n <ng-content></ng-content>\n </span>\n @if (iconEnd()) {\n <i [class]=\"iconEnd()\"></i>\n }\n </button>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -24,11 +24,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
24
24
 
25
25
  class CardHeaderComponent {
26
26
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
27
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.12", type: CardHeaderComponent, isStandalone: true, selector: "dsv-card-header", ngImport: i0, template: "<ng-content></ng-content>\n<div class=\"subtitle\">\n <ng-content select=\".card-subtitle\"></ng-content>\n</div>\n", styles: [":host{display:flex;flex-direction:column;margin:15px 0 0}:host .subtitle{margin:5px 0}:host .subtitle:empty{display:none}\n"] });
27
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.12", type: CardHeaderComponent, isStandalone: true, selector: "dsv-card-header", ngImport: i0, template: "<ng-content></ng-content>\n<div class=\"subtitle\">\n <ng-content select=\".card-subtitle\"></ng-content>\n</div>\n", styles: [":host{display:flex;flex-direction:column;margin:0}:host .subtitle{margin:5px 0}:host .subtitle:empty{display:none}\n"] });
28
28
  }
29
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CardHeaderComponent, decorators: [{
30
30
  type: Component,
31
- args: [{ selector: 'dsv-card-header', imports: [], template: "<ng-content></ng-content>\n<div class=\"subtitle\">\n <ng-content select=\".card-subtitle\"></ng-content>\n</div>\n", styles: [":host{display:flex;flex-direction:column;margin:15px 0 0}:host .subtitle{margin:5px 0}:host .subtitle:empty{display:none}\n"] }]
31
+ args: [{ selector: 'dsv-card-header', imports: [], template: "<ng-content></ng-content>\n<div class=\"subtitle\">\n <ng-content select=\".card-subtitle\"></ng-content>\n</div>\n", styles: [":host{display:flex;flex-direction:column;margin:0}:host .subtitle{margin:5px 0}:host .subtitle:empty{display:none}\n"] }]
32
32
  }] });
33
33
 
34
34
  class CardImgComponent {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-card.mjs","sources":["../../../projects/ng-dsv/ds/card/component/action/card.action.component.ts","../../../projects/ng-dsv/ds/card/component/action/card.action.component.html","../../../projects/ng-dsv/ds/card/component/card.component.ts","../../../projects/ng-dsv/ds/card/component/card.component.html","../../../projects/ng-dsv/ds/card/component/header/card.header.component.ts","../../../projects/ng-dsv/ds/card/component/header/card.header.component.html","../../../projects/ng-dsv/ds/card/component/img/card.img.component.ts","../../../projects/ng-dsv/ds/card/component/img/card.img.component.html","../../../projects/ng-dsv/ds/card/ng-vagabond-lab-ng-dsv-ds-card.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'dsv-card-action',\n imports: [],\n templateUrl: './card.action.component.html',\n styleUrl: './card.action.component.scss',\n})\nexport class CardActionComponent {}\n","<ng-content />\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'dsv-card',\n imports: [CommonModule],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n host: {\n class: 'dsv-card',\n },\n})\nexport class DsvCardComponent {}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dsv-card-header',\n imports: [],\n templateUrl: './card.header.component.html',\n styleUrl: './card.header.component.scss',\n})\nexport class CardHeaderComponent {}\n","<ng-content></ng-content>\n<div class=\"subtitle\">\n <ng-content select=\".card-subtitle\"></ng-content>\n</div>\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'dsv-card-img',\n imports: [],\n templateUrl: './card.img.component.html',\n styleUrl: './card.img.component.scss',\n})\nexport class CardImgComponent {\n readonly src = input<string>('');\n readonly alt = input<string>('description');\n}\n","<img [src]=\"src()\" [alt]=\"alt()\" />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAQa,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,2ECRhC,kBACA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA,CAAA;;4FDOa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,EAAE,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA;;;MEQF,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ7B,6BACA,EAAA,MAAA,EAAA,CAAA,uNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIc,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAOb,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,OAAA,EACX,CAAC,YAAY,CAAC,EAAA,IAAA,EAGjB;AACF,wBAAA,KAAK,EAAE,UAAU;AACpB,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,uNAAA,CAAA,EAAA;;;MEFQ,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,2ECRhC,wHAIA,EAAA,MAAA,EAAA,CAAA,6HAAA,CAAA,EAAA,CAAA;;4FDIa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,EAAE,EAAA,QAAA,EAAA,wHAAA,EAAA,MAAA,EAAA,CAAA,6HAAA,CAAA,EAAA;;;MEIF,gBAAgB,CAAA;AAChB,IAAA,GAAG,GAAG,KAAK,CAAS,EAAE,0EAAC;AACvB,IAAA,GAAG,GAAG,KAAK,CAAS,aAAa,0EAAC;wGAFlC,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,SAAA,EAAA,IAAA,EAAA,gBAAgB,wTCR7B,2CACA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA,CAAA;;4FDOa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,WACf,EAAE,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA;;;AEJf;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-card.mjs","sources":["../../../projects/ng-dsv/ds/card/component/action/card.action.component.ts","../../../projects/ng-dsv/ds/card/component/action/card.action.component.html","../../../projects/ng-dsv/ds/card/component/card.component.ts","../../../projects/ng-dsv/ds/card/component/card.component.html","../../../projects/ng-dsv/ds/card/component/header/card.header.component.ts","../../../projects/ng-dsv/ds/card/component/header/card.header.component.html","../../../projects/ng-dsv/ds/card/component/img/card.img.component.ts","../../../projects/ng-dsv/ds/card/component/img/card.img.component.html","../../../projects/ng-dsv/ds/card/ng-vagabond-lab-ng-dsv-ds-card.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'dsv-card-action',\n imports: [],\n templateUrl: './card.action.component.html',\n styleUrl: './card.action.component.scss',\n})\nexport class CardActionComponent {}\n","<ng-content />\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'dsv-card',\n imports: [CommonModule],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n host: {\n class: 'dsv-card',\n },\n})\nexport class DsvCardComponent {}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dsv-card-header',\n imports: [],\n templateUrl: './card.header.component.html',\n styleUrl: './card.header.component.scss',\n})\nexport class CardHeaderComponent {}\n","<ng-content></ng-content>\n<div class=\"subtitle\">\n <ng-content select=\".card-subtitle\"></ng-content>\n</div>\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'dsv-card-img',\n imports: [],\n templateUrl: './card.img.component.html',\n styleUrl: './card.img.component.scss',\n})\nexport class CardImgComponent {\n readonly src = input<string>('');\n readonly alt = input<string>('description');\n}\n","<img [src]=\"src()\" [alt]=\"alt()\" />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAQa,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,2ECRhC,kBACA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA,CAAA;;4FDOa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,EAAE,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA;;;MEQF,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ7B,6BACA,EAAA,MAAA,EAAA,CAAA,uNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIc,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAOb,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,OAAA,EACX,CAAC,YAAY,CAAC,EAAA,IAAA,EAGjB;AACF,wBAAA,KAAK,EAAE,UAAU;AACpB,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,uNAAA,CAAA,EAAA;;;MEFQ,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,2ECRhC,wHAIA,EAAA,MAAA,EAAA,CAAA,sHAAA,CAAA,EAAA,CAAA;;4FDIa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,EAAE,EAAA,QAAA,EAAA,wHAAA,EAAA,MAAA,EAAA,CAAA,sHAAA,CAAA,EAAA;;;MEIF,gBAAgB,CAAA;AAChB,IAAA,GAAG,GAAG,KAAK,CAAS,EAAE,0EAAC;AACvB,IAAA,GAAG,GAAG,KAAK,CAAS,aAAa,0EAAC;wGAFlC,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,SAAA,EAAA,IAAA,EAAA,gBAAgB,wTCR7B,2CACA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA,CAAA;;4FDOa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,WACf,EAAE,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA;;;AEJf;;AAEG;;;;"}
@@ -22,11 +22,11 @@ class DsvChipComponent extends BaseColorComponent {
22
22
  this.delete.emit();
23
23
  }
24
24
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsvChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: DsvChipComponent, isStandalone: true, selector: "dsv-chip", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { delete: "delete" }, usesInheritance: true, ngImport: i0, template: "<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n </span>\n @if (isDelete()) {\n <dsv-button\n icon=\"ri-delete-bin-line\"\n variant=\"text\"\n color=\"inherit\"\n (callback)=\"doDelete()\"\n ></dsv-button>\n }\n</div>\n", styles: [":host{--chip-padding: 10px 20px;--chip-width: auto;--chip-min-width: auto;--chip-border-radius: 15px;--chip-font-size: 1rem;--chip-font-weight: 300;display:flex;-webkit-user-select:none;user-select:none}:host:empty{display:none}:host .dsv-chip{display:flex;align-items:center;justify-content:center;padding:var(--chip-padding);width:var(--chip-width);min-width:var(--chip-min-width);border-radius:var(--chip-border-radius);font-size:var(--chip-font-size);font-weight:var(--chip-font-weight)}:host .dsv-chip.with-delete{padding:5px 5px 5px 20px}:host .dsv-chip:empty{display:none}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: DsvChipComponent, isStandalone: true, selector: "dsv-chip", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { delete: "delete" }, usesInheritance: true, ngImport: i0, template: "<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n <ng-content />\n </span>\n @if (isDelete()) {\n <dsv-button icon=\"ri-delete-bin-line\" variant=\"text\" color=\"inherit\" (callback)=\"doDelete()\" />\n }\n</div>\n", styles: [":host{--chip-padding: 10px 20px;--chip-width: auto;--chip-min-width: auto;--chip-border-radius: 15px;--chip-font-size: 1rem;--chip-font-weight: 300;display:flex;-webkit-user-select:none;user-select:none}:host:empty{display:none}:host .dsv-chip{display:flex;align-items:center;justify-content:center;padding:var(--chip-padding);width:var(--chip-width);min-width:var(--chip-min-width);border-radius:var(--chip-border-radius);font-size:var(--chip-font-size);font-weight:var(--chip-font-weight)}:host .dsv-chip.with-delete{padding:5px 5px 5px 20px}:host .dsv-chip:empty{display:none}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
26
26
  }
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsvChipComponent, decorators: [{
28
28
  type: Component,
29
- args: [{ selector: 'dsv-chip', imports: [DsvButtonComponent, TranslatePipe], template: "<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n </span>\n @if (isDelete()) {\n <dsv-button\n icon=\"ri-delete-bin-line\"\n variant=\"text\"\n color=\"inherit\"\n (callback)=\"doDelete()\"\n ></dsv-button>\n }\n</div>\n", styles: [":host{--chip-padding: 10px 20px;--chip-width: auto;--chip-min-width: auto;--chip-border-radius: 15px;--chip-font-size: 1rem;--chip-font-weight: 300;display:flex;-webkit-user-select:none;user-select:none}:host:empty{display:none}:host .dsv-chip{display:flex;align-items:center;justify-content:center;padding:var(--chip-padding);width:var(--chip-width);min-width:var(--chip-min-width);border-radius:var(--chip-border-radius);font-size:var(--chip-font-size);font-weight:var(--chip-font-weight)}:host .dsv-chip.with-delete{padding:5px 5px 5px 20px}:host .dsv-chip:empty{display:none}\n"] }]
29
+ args: [{ selector: 'dsv-chip', imports: [DsvButtonComponent, TranslatePipe], template: "<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n <ng-content />\n </span>\n @if (isDelete()) {\n <dsv-button icon=\"ri-delete-bin-line\" variant=\"text\" color=\"inherit\" (callback)=\"doDelete()\" />\n }\n</div>\n", styles: [":host{--chip-padding: 10px 20px;--chip-width: auto;--chip-min-width: auto;--chip-border-radius: 15px;--chip-font-size: 1rem;--chip-font-weight: 300;display:flex;-webkit-user-select:none;user-select:none}:host:empty{display:none}:host .dsv-chip{display:flex;align-items:center;justify-content:center;padding:var(--chip-padding);width:var(--chip-width);min-width:var(--chip-min-width);border-radius:var(--chip-border-radius);font-size:var(--chip-font-size);font-weight:var(--chip-font-weight)}:host .dsv-chip.with-delete{padding:5px 5px 5px 20px}:host .dsv-chip:empty{display:none}\n"] }]
30
30
  }], ctorParameters: () => [], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], delete: [{ type: i0.Output, args: ["delete"] }] } });
31
31
 
32
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-chip.mjs","sources":["../../../projects/ng-dsv/ds/chip/component/chip.component.ts","../../../projects/ng-dsv/ds/chip/component/chip.component.html","../../../projects/ng-dsv/ds/chip/ng-vagabond-lab-ng-dsv-ds-chip.ts"],"sourcesContent":["import { Component, effect, input, output, signal } from '@angular/core';\nimport { isCallback } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-chip',\n imports: [DsvButtonComponent, TranslatePipe],\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n})\nexport class DsvChipComponent extends BaseColorComponent {\n text = input<string>('');\n\n delete = output<void>();\n\n isDelete = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n this.isDelete.set(isCallback(this.delete));\n\n this.text();\n const classes: string[] = [this.isDelete() ? 'with-delete' : ''];\n this.setClasses('dsv-chip', classes);\n });\n }\n\n doDelete() {\n this.delete.emit();\n }\n}\n","<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n </span>\n @if (isDelete()) {\n <dsv-button\n icon=\"ri-delete-bin-line\"\n variant=\"text\"\n color=\"inherit\"\n (callback)=\"doDelete()\"\n ></dsv-button>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAYM,MAAO,gBAAiB,SAAQ,kBAAkB,CAAA;AACpD,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;IAExB,MAAM,GAAG,MAAM,EAAQ;AAEvB,IAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,+EAAC;AAEjC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,MAAM,OAAO,GAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC;AAChE,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC;AACxC,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACtB;wGApBS,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,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ7B,2TAaA,EAAA,MAAA,EAAA,CAAA,ukBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLc,kBAAkB,2JAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAIlC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,OAAA,EACX,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,2TAAA,EAAA,MAAA,EAAA,CAAA,ukBAAA,CAAA,EAAA;;;AERhD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-chip.mjs","sources":["../../../projects/ng-dsv/ds/chip/component/chip.component.ts","../../../projects/ng-dsv/ds/chip/component/chip.component.html","../../../projects/ng-dsv/ds/chip/ng-vagabond-lab-ng-dsv-ds-chip.ts"],"sourcesContent":["import { Component, effect, input, output, signal } from '@angular/core';\nimport { isCallback } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-chip',\n imports: [DsvButtonComponent, TranslatePipe],\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n})\nexport class DsvChipComponent extends BaseColorComponent {\n text = input<string>('');\n\n delete = output<void>();\n\n isDelete = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n this.isDelete.set(isCallback(this.delete));\n\n this.text();\n const classes: string[] = [this.isDelete() ? 'with-delete' : ''];\n this.setClasses('dsv-chip', classes);\n });\n }\n\n doDelete() {\n this.delete.emit();\n }\n}\n","<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n <ng-content />\n </span>\n @if (isDelete()) {\n <dsv-button icon=\"ri-delete-bin-line\" variant=\"text\" color=\"inherit\" (callback)=\"doDelete()\" />\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAYM,MAAO,gBAAiB,SAAQ,kBAAkB,CAAA;AACpD,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;IAExB,MAAM,GAAG,MAAM,EAAQ;AAEvB,IAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,+EAAC;AAEjC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,MAAM,OAAO,GAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC;AAChE,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC;AACxC,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACtB;wGApBS,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,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ7B,0QASA,EAAA,MAAA,EAAA,CAAA,ukBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDc,kBAAkB,2JAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAIlC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,OAAA,EACX,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,0QAAA,EAAA,MAAA,EAAA,CAAA,ukBAAA,CAAA,EAAA;;;AERhD;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, computed, Component, EventEmitter, HostListener, Output, HostBinding, Input, Directive, output, signal, ViewChild } from '@angular/core';
2
+ import { input, computed, Component, output, signal, Directive, ViewChild } from '@angular/core';
3
3
 
4
4
  class FileShowComponent {
5
5
  url = input('', ...(ngDevMode ? [{ debugName: "url" }] : /* istanbul ignore next */ []));
@@ -15,35 +15,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
15
15
  }], propDecorators: { url: [{ type: i0.Input, args: [{ isSignal: true, alias: "url", required: false }] }], src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: true }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }] } });
16
16
 
17
17
  class FileUploadDirective {
18
- _enabled = false;
19
- _dragInProgress = false;
20
- set appDragDrop(value) {
21
- this._enabled = value === '' ? true : !!value;
22
- }
23
- get dragInProgress() {
24
- return this._dragInProgress;
25
- }
26
- dropped;
27
- constructor() {
28
- this.dropped = new EventEmitter();
29
- }
30
- handleDragOver(event) {
31
- if (!this._enabled) {
18
+ appDragDrop = input(...(ngDevMode ? [undefined, { debugName: "appDragDrop" }] : /* istanbul ignore next */ []));
19
+ dropped = output();
20
+ dragInProgress = signal(false, ...(ngDevMode ? [{ debugName: "dragInProgress" }] : /* istanbul ignore next */ []));
21
+ enabled = computed(() => {
22
+ const value = this.appDragDrop();
23
+ return value === '' ? true : !!value;
24
+ }, ...(ngDevMode ? [{ debugName: "enabled" }] : /* istanbul ignore next */ []));
25
+ onDragOver(event) {
26
+ if (!this.enabled())
32
27
  return;
33
- }
34
28
  this.stopAndPreventDefault(event);
35
- this._dragInProgress = true;
29
+ this.dragInProgress.set(true);
36
30
  }
37
- handleDragEnd(event) {
38
- if (!this._enabled) {
31
+ onDragEnd(event) {
32
+ if (!this.enabled())
39
33
  return;
40
- }
41
34
  this.stopAndPreventDefault(event);
42
- this._dragInProgress = false;
35
+ this.dragInProgress.set(false);
43
36
  }
44
- handleDrop(event) {
37
+ onDrop(event) {
45
38
  this.stopAndPreventDefault(event);
46
- this._dragInProgress = false;
39
+ this.dragInProgress.set(false);
47
40
  this.dropped.emit(event);
48
41
  }
49
42
  stopAndPreventDefault(e) {
@@ -51,40 +44,27 @@ class FileUploadDirective {
51
44
  e.preventDefault();
52
45
  }
53
46
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: FileUploadDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
54
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.12", type: FileUploadDirective, isStandalone: true, selector: "[appDragDrop]", inputs: { appDragDrop: "appDragDrop" }, outputs: { dropped: "dropped" }, host: { listeners: { "dragenter": "handleDragOver($event)", "dragover": "handleDragOver($event)", "dragleave": "handleDragEnd($event)", "dragend": "handleDragEnd($event)", "drop": "handleDrop($event)" }, properties: { "class.dragging": "this.dragInProgress" } }, ngImport: i0 });
47
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.12", type: FileUploadDirective, isStandalone: true, selector: "[appDragDrop]", inputs: { appDragDrop: { classPropertyName: "appDragDrop", publicName: "appDragDrop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dropped: "dropped" }, host: { listeners: { "dragenter": "onDragOver($event)", "dragover": "onDragOver($event)", "dragleave": "onDragEnd($event)", "dragend": "onDragEnd($event)", "drop": "onDrop($event)" }, properties: { "class.dragging": "dragInProgress()" } }, ngImport: i0 });
55
48
  }
56
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: FileUploadDirective, decorators: [{
57
50
  type: Directive,
58
51
  args: [{
59
52
  selector: '[appDragDrop]',
53
+ host: {
54
+ '[class.dragging]': 'dragInProgress()',
55
+ '(dragenter)': 'onDragOver($event)',
56
+ '(dragover)': 'onDragOver($event)',
57
+ '(dragleave)': 'onDragEnd($event)',
58
+ '(dragend)': 'onDragEnd($event)',
59
+ '(drop)': 'onDrop($event)',
60
+ },
60
61
  }]
61
- }], ctorParameters: () => [], propDecorators: { appDragDrop: [{
62
- type: Input
63
- }], dragInProgress: [{
64
- type: HostBinding,
65
- args: ['class.dragging']
66
- }], dropped: [{
67
- type: Output
68
- }], handleDragOver: [{
69
- type: HostListener,
70
- args: ['dragenter', ['$event']]
71
- }, {
72
- type: HostListener,
73
- args: ['dragover', ['$event']]
74
- }], handleDragEnd: [{
75
- type: HostListener,
76
- args: ['dragleave', ['$event']]
77
- }, {
78
- type: HostListener,
79
- args: ['dragend', ['$event']]
80
- }], handleDrop: [{
81
- type: HostListener,
82
- args: ['drop', ['$event']]
83
- }] } });
62
+ }], propDecorators: { appDragDrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "appDragDrop", required: false }] }], dropped: [{ type: i0.Output, args: ["dropped"] }] } });
84
63
 
85
64
  class FileUploadComponent {
86
65
  multiple = input(false, ...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
87
66
  fileType = input('image/*', ...(ngDevMode ? [{ debugName: "fileType" }] : /* istanbul ignore next */ []));
67
+ imgAlt = input("Apperçu de l'image", ...(ngDevMode ? [{ debugName: "imgAlt" }] : /* istanbul ignore next */ []));
88
68
  dragDropEnabled = input(true, ...(ngDevMode ? [{ debugName: "dragDropEnabled" }] : /* istanbul ignore next */ []));
89
69
  filesChanged = output();
90
70
  file = signal(undefined, ...(ngDevMode ? [{ debugName: "file" }] : /* istanbul ignore next */ []));
@@ -105,12 +85,12 @@ class FileUploadComponent {
105
85
  }
106
86
  }
107
87
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: FileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
108
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: FileUploadComponent, isStandalone: true, selector: "dsv-file-upload", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, fileType: { classPropertyName: "fileType", publicName: "fileType", isSignal: true, isRequired: false, transformFunction: null }, dragDropEnabled: { classPropertyName: "dragDropEnabled", publicName: "dragDropEnabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filesChanged: "filesChanged" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<label\n class=\"drag-zone\"\n [appDragDrop]=\"dragDropEnabled()\"\n (dropped)=\"handleFileDrop($event)\"\n>\n <input\n type=\"file\"\n [accept]=\"fileType()\"\n [multiple]=\"multiple()\"\n (change)=\"addFiles(fileInput.files!)\"\n #fileInput\n class=\"visually-hidden\"\n />\n @if (!file()) {\n <ng-content></ng-content>\n } @else {\n <img\n [src]=\"file()\"\n alt=\"Aper\u00E7u du Meme\"\n width=\"100%\"\n />\n }\n</label>\n", styles: [":host{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--background)}:host label{padding:5px}:host .drag-zone{width:80%;min-height:200px;border:1px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:space-around;cursor:pointer}:host .drag-zone.dragging{background-color:#cdcdff;border:3px dashed #999999}:host .drag-zone:focus-within{border:1px solid #999999}:host .visually-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}\n"], dependencies: [{ kind: "directive", type: FileUploadDirective, selector: "[appDragDrop]", inputs: ["appDragDrop"], outputs: ["dropped"] }] });
88
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: FileUploadComponent, isStandalone: true, selector: "dsv-file-upload", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, fileType: { classPropertyName: "fileType", publicName: "fileType", isSignal: true, isRequired: false, transformFunction: null }, imgAlt: { classPropertyName: "imgAlt", publicName: "imgAlt", isSignal: true, isRequired: false, transformFunction: null }, dragDropEnabled: { classPropertyName: "dragDropEnabled", publicName: "dragDropEnabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filesChanged: "filesChanged" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<label class=\"drag-zone\" [appDragDrop]=\"dragDropEnabled()\" (dropped)=\"handleFileDrop($event)\">\n <input\n type=\"file\"\n [accept]=\"fileType()\"\n [multiple]=\"multiple()\"\n (change)=\"addFiles(fileInput.files!)\"\n #fileInput\n class=\"visually-hidden\"\n />\n @if (!file()) {\n <ng-content></ng-content>\n } @else {\n <img [src]=\"file()\" [alt]=\"imgAlt()\" width=\"100%\" />\n }\n</label>\n", styles: [":host{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--background)}:host label{padding:5px}:host .drag-zone{width:80%;min-height:200px;border:1px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:space-around;cursor:pointer}:host .drag-zone.dragging{background-color:#cdcdff;border:3px dashed #999999}:host .drag-zone:focus-within{border:1px solid #999999}:host .visually-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}\n"], dependencies: [{ kind: "directive", type: FileUploadDirective, selector: "[appDragDrop]", inputs: ["appDragDrop"], outputs: ["dropped"] }] });
109
89
  }
110
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: FileUploadComponent, decorators: [{
111
91
  type: Component,
112
- args: [{ selector: 'dsv-file-upload', imports: [FileUploadDirective], template: "<label\n class=\"drag-zone\"\n [appDragDrop]=\"dragDropEnabled()\"\n (dropped)=\"handleFileDrop($event)\"\n>\n <input\n type=\"file\"\n [accept]=\"fileType()\"\n [multiple]=\"multiple()\"\n (change)=\"addFiles(fileInput.files!)\"\n #fileInput\n class=\"visually-hidden\"\n />\n @if (!file()) {\n <ng-content></ng-content>\n } @else {\n <img\n [src]=\"file()\"\n alt=\"Aper\u00E7u du Meme\"\n width=\"100%\"\n />\n }\n</label>\n", styles: [":host{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--background)}:host label{padding:5px}:host .drag-zone{width:80%;min-height:200px;border:1px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:space-around;cursor:pointer}:host .drag-zone.dragging{background-color:#cdcdff;border:3px dashed #999999}:host .drag-zone:focus-within{border:1px solid #999999}:host .visually-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}\n"] }]
113
- }], propDecorators: { multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], fileType: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileType", required: false }] }], dragDropEnabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragDropEnabled", required: false }] }], filesChanged: [{ type: i0.Output, args: ["filesChanged"] }], inputRef: [{
92
+ args: [{ selector: 'dsv-file-upload', imports: [FileUploadDirective], template: "<label class=\"drag-zone\" [appDragDrop]=\"dragDropEnabled()\" (dropped)=\"handleFileDrop($event)\">\n <input\n type=\"file\"\n [accept]=\"fileType()\"\n [multiple]=\"multiple()\"\n (change)=\"addFiles(fileInput.files!)\"\n #fileInput\n class=\"visually-hidden\"\n />\n @if (!file()) {\n <ng-content></ng-content>\n } @else {\n <img [src]=\"file()\" [alt]=\"imgAlt()\" width=\"100%\" />\n }\n</label>\n", styles: [":host{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--background)}:host label{padding:5px}:host .drag-zone{width:80%;min-height:200px;border:1px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:space-around;cursor:pointer}:host .drag-zone.dragging{background-color:#cdcdff;border:3px dashed #999999}:host .drag-zone:focus-within{border:1px solid #999999}:host .visually-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}\n"] }]
93
+ }], propDecorators: { multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], fileType: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileType", required: false }] }], imgAlt: [{ type: i0.Input, args: [{ isSignal: true, alias: "imgAlt", required: false }] }], dragDropEnabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragDropEnabled", required: false }] }], filesChanged: [{ type: i0.Output, args: ["filesChanged"] }], inputRef: [{
114
94
  type: ViewChild,
115
95
  args: ['fileInput']
116
96
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-file.mjs","sources":["../../../projects/ng-dsv/ds/file/show/component/file.show.component.ts","../../../projects/ng-dsv/ds/file/show/component/file.show.component.html","../../../projects/ng-dsv/ds/file/upload/directive/file-upload-directives.ts","../../../projects/ng-dsv/ds/file/upload/component/file-upload.component.ts","../../../projects/ng-dsv/ds/file/upload/component/file-upload.component.html","../../../projects/ng-dsv/ds/file/ng-vagabond-lab-ng-dsv-ds-file.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'dsv-file-show',\n templateUrl: './file.show.component.html',\n})\nexport class FileShowComponent {\n url = input<string>('');\n src = input.required<string>();\n alt = input<string>('Exemple du dsv file show');\n\n fileUrl = computed<string>(() => this.url() + '/file/download?fileName=' + this.src());\n}\n","<img\n [src]=\"fileUrl()\"\n [alt]=\"alt()\"\n width=\"100%\"\n/>\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\n\n@Directive({\n selector: '[appDragDrop]',\n})\nexport class FileUploadDirective {\n private _enabled: boolean = false;\n private _dragInProgress: boolean = false;\n\n @Input() set appDragDrop(value: any) {\n this._enabled = value === '' ? true : !!value;\n }\n\n @HostBinding('class.dragging') get dragInProgress() {\n return this._dragInProgress;\n }\n\n @Output() dropped: EventEmitter<any>;\n\n constructor() {\n this.dropped = new EventEmitter();\n }\n\n @HostListener('dragenter', ['$event'])\n @HostListener('dragover', ['$event'])\n handleDragOver(event: DragEvent): void {\n if (!this._enabled) {\n return;\n }\n this.stopAndPreventDefault(event);\n this._dragInProgress = true;\n }\n\n @HostListener('dragleave', ['$event'])\n @HostListener('dragend', ['$event'])\n handleDragEnd(event: DragEvent): void {\n if (!this._enabled) {\n return;\n }\n this.stopAndPreventDefault(event);\n this._dragInProgress = false;\n }\n\n @HostListener('drop', ['$event'])\n handleDrop(event: UIEvent): void {\n this.stopAndPreventDefault(event);\n this._dragInProgress = false;\n this.dropped.emit(event);\n }\n\n stopAndPreventDefault(e: UIEvent): void {\n e.stopPropagation();\n e.preventDefault();\n }\n}\n","import { Component, ElementRef, input, output, signal, ViewChild } from '@angular/core';\nimport { FileUploadDirective } from '../directive/file-upload-directives';\n\n@Component({\n selector: 'dsv-file-upload',\n imports: [FileUploadDirective],\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n})\nexport class FileUploadComponent {\n multiple = input<boolean>(false);\n fileType = input<string>('image/*');\n dragDropEnabled = input<boolean>(true);\n\n filesChanged = output<FileList>();\n\n file = signal<string | undefined>(undefined);\n\n @ViewChild('fileInput')\n inputRef!: ElementRef<HTMLInputElement>;\n\n addFiles(files: FileList): void {\n const reader = new FileReader();\n reader.onload = () => {\n this.file.set(reader.result as string);\n };\n reader.readAsDataURL(files.item(0) as Blob);\n this.filesChanged.emit(files);\n }\n\n handleFileDrop(event: DragEvent) {\n if (event?.dataTransfer?.files?.length) {\n const files = event.dataTransfer.files;\n this.inputRef.nativeElement.files = files;\n this.addFiles(files);\n }\n }\n}\n","<label\n class=\"drag-zone\"\n [appDragDrop]=\"dragDropEnabled()\"\n (dropped)=\"handleFileDrop($event)\"\n>\n <input\n type=\"file\"\n [accept]=\"fileType()\"\n [multiple]=\"multiple()\"\n (change)=\"addFiles(fileInput.files!)\"\n #fileInput\n class=\"visually-hidden\"\n />\n @if (!file()) {\n <ng-content></ng-content>\n } @else {\n <img\n [src]=\"file()\"\n alt=\"Aperçu du Meme\"\n width=\"100%\"\n />\n }\n</label>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-file.mjs","sources":["../../../projects/ng-dsv/ds/file/show/component/file.show.component.ts","../../../projects/ng-dsv/ds/file/show/component/file.show.component.html","../../../projects/ng-dsv/ds/file/upload/directive/file-upload-directives.ts","../../../projects/ng-dsv/ds/file/upload/component/file-upload.component.ts","../../../projects/ng-dsv/ds/file/upload/component/file-upload.component.html","../../../projects/ng-dsv/ds/file/ng-vagabond-lab-ng-dsv-ds-file.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'dsv-file-show',\n templateUrl: './file.show.component.html',\n})\nexport class FileShowComponent {\n url = input<string>('');\n src = input.required<string>();\n alt = input<string>('Exemple du dsv file show');\n\n fileUrl = computed<string>(() => this.url() + '/file/download?fileName=' + this.src());\n}\n","<img\n [src]=\"fileUrl()\"\n [alt]=\"alt()\"\n width=\"100%\"\n/>\n","import { computed, Directive, input, output, signal } from '@angular/core';\n\n@Directive({\n selector: '[appDragDrop]',\n host: {\n '[class.dragging]': 'dragInProgress()',\n '(dragenter)': 'onDragOver($event)',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragEnd($event)',\n '(dragend)': 'onDragEnd($event)',\n '(drop)': 'onDrop($event)',\n },\n})\nexport class FileUploadDirective {\n readonly appDragDrop = input<any>();\n\n readonly dropped = output<DragEvent>();\n\n readonly dragInProgress = signal(false);\n\n private readonly enabled = computed(() => {\n const value = this.appDragDrop();\n return value === '' ? true : !!value;\n });\n\n onDragOver(event: DragEvent): void {\n if (!this.enabled()) return;\n this.stopAndPreventDefault(event);\n this.dragInProgress.set(true);\n }\n\n onDragEnd(event: DragEvent): void {\n if (!this.enabled()) return;\n this.stopAndPreventDefault(event);\n this.dragInProgress.set(false);\n }\n\n onDrop(event: DragEvent): void {\n this.stopAndPreventDefault(event);\n this.dragInProgress.set(false);\n this.dropped.emit(event);\n }\n\n private stopAndPreventDefault(e: UIEvent): void {\n e.stopPropagation();\n e.preventDefault();\n }\n}\n","import { Component, ElementRef, input, output, signal, ViewChild } from '@angular/core';\nimport { FileUploadDirective } from '../directive/file-upload-directives';\n\n@Component({\n selector: 'dsv-file-upload',\n imports: [FileUploadDirective],\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n})\nexport class FileUploadComponent {\n multiple = input<boolean>(false);\n fileType = input<string>('image/*');\n imgAlt = input<string>(\"Apperçu de l'image\");\n dragDropEnabled = input<boolean>(true);\n\n filesChanged = output<FileList>();\n\n file = signal<string | undefined>(undefined);\n\n @ViewChild('fileInput')\n inputRef!: ElementRef<HTMLInputElement>;\n\n addFiles(files: FileList): void {\n const reader = new FileReader();\n reader.onload = () => {\n this.file.set(reader.result as string);\n };\n reader.readAsDataURL(files.item(0) as Blob);\n this.filesChanged.emit(files);\n }\n\n handleFileDrop(event: DragEvent) {\n if (event?.dataTransfer?.files?.length) {\n const files = event.dataTransfer.files;\n this.inputRef.nativeElement.files = files;\n this.addFiles(files);\n }\n }\n}\n","<label class=\"drag-zone\" [appDragDrop]=\"dragDropEnabled()\" (dropped)=\"handleFileDrop($event)\">\n <input\n type=\"file\"\n [accept]=\"fileType()\"\n [multiple]=\"multiple()\"\n (change)=\"addFiles(fileInput.files!)\"\n #fileInput\n class=\"visually-hidden\"\n />\n @if (!file()) {\n <ng-content></ng-content>\n } @else {\n <img [src]=\"file()\" [alt]=\"imgAlt()\" width=\"100%\" />\n }\n</label>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}