@ng-vagabond-lab/ng-dsv 0.2.12 → 0.2.13

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 (80) hide show
  1. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs +16 -11
  2. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs.map +1 -1
  3. package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs +32 -22
  4. package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs.map +1 -1
  5. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs +29 -25
  6. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs.map +1 -1
  7. package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs +3 -3
  8. package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs.map +1 -1
  9. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs +15 -9
  10. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs.map +1 -1
  11. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs +11 -7
  12. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs.map +1 -1
  13. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs +26 -16
  14. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs.map +1 -1
  15. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs +16 -14
  16. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs.map +1 -1
  17. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs +7 -5
  18. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs.map +1 -1
  19. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs +22 -14
  20. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs.map +1 -1
  21. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs +7 -5
  22. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs.map +1 -1
  23. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs +35 -22
  24. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs.map +1 -1
  25. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs +70 -47
  26. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs.map +1 -1
  27. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs +81 -54
  28. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs.map +1 -1
  29. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs +11 -7
  30. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs.map +1 -1
  31. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs +19 -11
  32. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs.map +1 -1
  33. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs +15 -9
  34. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs.map +1 -1
  35. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs +9 -6
  36. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs.map +1 -1
  37. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs +6 -6
  38. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs.map +1 -1
  39. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs +22 -17
  40. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs.map +1 -1
  41. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs +24 -18
  42. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs.map +1 -1
  43. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +46 -29
  44. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs.map +1 -1
  45. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs +7 -5
  46. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs.map +1 -1
  47. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs +33 -21
  48. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs.map +1 -1
  49. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs +3 -3
  50. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs.map +1 -1
  51. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs +14 -10
  52. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs.map +1 -1
  53. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs +15 -9
  54. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs.map +1 -1
  55. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs +11 -10
  56. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs.map +1 -1
  57. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs +16 -11
  58. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs.map +1 -1
  59. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs +15 -9
  60. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs.map +1 -1
  61. package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs +7 -5
  62. package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs.map +1 -1
  63. package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs +7 -5
  64. package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs.map +1 -1
  65. package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs +51 -33
  66. package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs.map +1 -1
  67. package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs +21 -15
  68. package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs.map +1 -1
  69. package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs +5 -4
  70. package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs.map +1 -1
  71. package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs +9 -6
  72. package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs.map +1 -1
  73. package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs +13 -11
  74. package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs.map +1 -1
  75. package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs +15 -9
  76. package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs.map +1 -1
  77. package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs +38 -28
  78. package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs.map +1 -1
  79. package/package.json +1 -1
  80. package/types/ng-vagabond-lab-ng-dsv-ds-form-signal.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-form-signal.mjs","sources":["../../../projects/ng-dsv/ds/form/signal/form/base/input/base-form-signal-input.component.ts","../../../projects/ng-dsv/ds/form/signal/label/component/form-signal-label.component.ts","../../../projects/ng-dsv/ds/form/signal/label/component/form-signal-label.component.html","../../../projects/ng-dsv/ds/form/signal/checkbox/component/form-signal-checkbox.component.ts","../../../projects/ng-dsv/ds/form/signal/checkbox/component/form-signal-checkbox.component.html","../../../projects/ng-dsv/ds/form/signal/error/component/form-signal-error.component.ts","../../../projects/ng-dsv/ds/form/signal/error/component/form-signal-error.component.html","../../../projects/ng-dsv/ds/form/signal/form/component/form-signal.component.ts","../../../projects/ng-dsv/ds/form/signal/form/component/form-signal.component.html","../../../projects/ng-dsv/ds/form/signal/input/component/form-signal-input.component.ts","../../../projects/ng-dsv/ds/form/signal/input/component/form-signal-input.component.html","../../../projects/ng-dsv/ds/form/signal/form/base/base-form-signal.component.ts","../../../projects/ng-dsv/ds/form/signal/searchbar/component/form-signal-searchbar.component.ts","../../../projects/ng-dsv/ds/form/signal/searchbar/component/form-signal-searchbar.component.html","../../../projects/ng-dsv/ds/form/signal/select/component/form-signal-select.component.ts","../../../projects/ng-dsv/ds/form/signal/select/component/form-signal-select.component.html","../../../projects/ng-dsv/ds/form/signal/utils/form-signal.utils.ts","../../../projects/ng-dsv/ds/form/signal/ng-vagabond-lab-ng-dsv-ds-form-signal.ts"],"sourcesContent":["import { Directive, effect, input, output, signal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\n\n@Directive()\nexport abstract class DsvBaseFormSignalInputComponent<T> {\n readonly form = input.required<FieldTree<T, string | number>>();\n readonly fieldName = input.required<string>();\n readonly label = input<string>();\n readonly withLabel = input<boolean>(true);\n readonly placeholder = input<string>('');\n readonly required = input<boolean>(false);\n readonly debug = input<boolean>(false);\n\n readonly isError = signal<boolean>(false);\n\n readonly callbackSend = output<string>();\n readonly callbackChange = output<string>();\n\n constructor() {\n effect(() => {\n this.getSignal() &&\n this.isError.set(this.getSignal()().touched() && this.getSignal()().errors().length > 0);\n });\n }\n\n isTouched(): boolean {\n return this.getSignal()().touched() ?? false;\n }\n\n getSignal(): FieldTree<string, string | number> {\n return this.form()?.[this.fieldName() as keyof FieldTree<T, string | number>] as FieldTree<\n string,\n string | number\n >;\n }\n\n doOnSend(): void {\n this.getValue() && this.callbackSend.emit(this.getValue());\n }\n\n doChange(): void {\n this.callbackChange.emit(this.getValue());\n }\n\n protected getValue(): string {\n const signal = this.getSignal();\n if (signal) {\n const value = signal().value();\n this.debug() && console.log(signal, signal().errors(), value);\n return value;\n }\n return '';\n }\n}\n","import { Component, effect, input, signal } from '@angular/core';\nimport { FieldState } from '@angular/forms/signals';\n\n@Component({\n selector: 'dsv-form-signal-label',\n templateUrl: './form-signal-label.component.html',\n styleUrls: ['../../../reactive/label/component/form-reactive-label.component.scss'],\n})\nexport class DsvFormSignalLabelComponent<T> {\n readonly label = input.required<string>();\n readonly name = input.required<string>();\n readonly signal = input.required<FieldState<T>>();\n readonly show = input<boolean>(true);\n\n readonly isRequired = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n this.isRequired.set(this.signal().required());\n });\n }\n}\n","@if (show()) {\n <label\n [for]=\"name()\"\n class=\"text\"\n [class.error]=\"signal().touched() && signal().errors().length! > 0\"\n >\n {{ label() }} {{ isRequired() ? '*' : '' }}\n </label>\n}\n","import { Component } from '@angular/core';\nimport { FieldTree, FormField } from '@angular/forms/signals';\nimport { DsvBaseFormSignalInputComponent } from '../../form/base/input/base-form-signal-input.component';\nimport { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\n\n@Component({\n selector: 'dsv-form-signal-checkbox',\n imports: [FormField, DsvFormSignalLabelComponent],\n templateUrl: './form-signal-checkbox.component.html',\n styleUrls: [\n '../../../reactive/input/component/form-reactive-input.component.scss',\n '../../../reactive/checkbox/component/form-reactive-checkbox.component.scss',\n ],\n})\nexport class DsvFormSignalCheckboxComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n getBooleanSignal(): FieldTree<boolean, string | number> {\n return this.form()?.[this.fieldName() as keyof FieldTree<T, string | number>] as FieldTree<\n boolean,\n string | number\n >;\n }\n}\n","<div>\n @if (getSignal()) {\n <dsv-form-signal-label\n [name]=\"fieldName()\"\n [label]=\"label() ?? fieldName()\"\n [signal]=\"getSignal()()\"\n [show]=\"withLabel()\"\n />\n <div>\n <input\n type=\"checkbox\"\n [id]=\"fieldName()\"\n class=\"form-control\"\n [class.error]=\"isError()\"\n [formField]=\"getBooleanSignal()\"\n (change)=\"doChange()\"\n />\n </div>\n }\n</div>\n","import { Component, effect, input, signal } from '@angular/core';\nimport { ValidationError } from '@angular/forms/signals';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-form-signal-error',\n imports: [TranslatePipe],\n templateUrl: './form-signal-error.component.html',\n styleUrls: ['../../../reactive/error/component/form-reactive-error.component.scss'],\n host: {\n class: 'text error',\n },\n})\nexport class FormSignalErrorComponent {\n errors = input.required<ValidationError[]>();\n isTouched = input<boolean>(false);\n\n error = signal<string>('');\n\n constructor() {\n effect(() => {\n let errorMessage = '';\n this.errors().forEach((error) => {\n switch (error.kind) {\n case 'required':\n errorMessage = 'Le champ est obligatoire.';\n break;\n case 'min':\n errorMessage =\n 'La valeur minimum est de ' + error['min' as keyof ValidationError] + '.';\n break;\n case 'max':\n errorMessage =\n 'La valeur maximum est de ' + error['max' as keyof ValidationError] + '.';\n break;\n case 'minLength':\n errorMessage =\n 'La taille minimum est de ' + error['minLength' as keyof ValidationError] + '.';\n break;\n case 'maxLength':\n errorMessage =\n 'La taille maximum est de ' + error['maxLength' as keyof ValidationError] + '.';\n break;\n case 'email':\n errorMessage = \"Le format n'est pas celui d'un email.\";\n break;\n default:\n errorMessage = error.message ?? 'Erreur inconnue.';\n break;\n }\n });\n this.error.set(errorMessage);\n });\n }\n}\n","@if (errors().length > 0 && isTouched()) {\n @if (error() !== '') {\n <div>{{ error() | translate }}</div>\n }\n}\n","import { Component, computed, inject, input, output } from '@angular/core';\nimport { FieldTree, submit } from '@angular/forms/signals';\nimport { RouterLink } from '@angular/router';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { isCallback } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-form-signal',\n imports: [DsvButtonComponent, RouterLink, TranslatePipe],\n templateUrl: './form-signal.component.html',\n styleUrl: '../../../reactive/form/component/form-reactive.component.scss',\n})\nexport class DsvFormSignalComponent<T> {\n readonly toastService = inject(ToastService);\n\n readonly form = input.required<FieldTree<T, string | number>>();\n\n readonly urlBack = input<string>();\n readonly textValid = input<string>('ENREGISTRER');\n readonly formValid = input<string>('');\n\n readonly callbackBack = output<void>();\n readonly callback = output<ApiDto>();\n\n readonly isCallbackBack = computed<boolean>(() => isCallback(this.callbackBack));\n\n onSubmit(event: Event): void {\n event.preventDefault();\n submit(this.form(), async (form) => {\n if (form().valid()) {\n this.callback.emit(form().value() as ApiDto);\n if (this.formValid() !== '') {\n this.toastService.showToast({\n text: this.formValid(),\n });\n }\n } else {\n this.toastService.showToast({\n text: 'Erreur dans le formulaire !',\n type: 'error',\n });\n }\n });\n }\n}\n","<form (submit)=\"onSubmit($event)\" novalidate>\n <div class=\"form-scroll\">\n <ng-content></ng-content>\n </div>\n <div class=\"form-buttons\">\n @if (urlBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" [routerLink]=\"urlBack()\" [prevent]=\"false\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (isCallbackBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" (callback)=\"callbackBack.emit()\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (textValid() && textValid() !== '') {\n <dsv-button type=\"submit\" color=\"primary\">{{ textValid()! | translate }}</dsv-button>\n }\n </div>\n</form>\n","import { Component, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\nimport { INPUT_TYPE } from '@ng-vagabond-lab/ng-dsv/type';\nimport { FormSignalErrorComponent } from '../../error/component/form-signal-error.component';\nimport { DsvBaseFormSignalInputComponent } from '../../form/base/input/base-form-signal-input.component';\nimport { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\n\n@Component({\n selector: 'dsv-form-signal-input',\n imports: [FormField, DsvFormSignalLabelComponent, FormSignalErrorComponent],\n templateUrl: './form-signal-input.component.html',\n styleUrl: '../../../reactive/input/component/form-reactive-input.component.scss',\n})\nexport class DsvFormSignalInputComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n readonly type = input<INPUT_TYPE>('text');\n readonly icon = input<string>();\n readonly withError = input<boolean>(true);\n}\n","<div>\n @if (getSignal()) {\n @if (withLabel()) {\n <dsv-form-signal-label\n [name]=\"fieldName()\"\n [label]=\"label() ?? fieldName()\"\n [signal]=\"getSignal()()\"\n />\n }\n @if (type() === 'textarea') {\n <textarea\n [id]=\"fieldName()\"\n [formField]=\"getSignal()\"\n [placeholder]=\"placeholder()\"\n class=\"form-control\"\n ></textarea>\n } @else {\n <input\n #input\n [type]=\"type()\"\n [id]=\"fieldName()\"\n class=\"form-control\"\n [class.error]=\"isError()\"\n [formField]=\"getSignal()\"\n [placeholder]=\"placeholder()\"\n [class.icon]=\"icon()\"\n (blur)=\"doOnSend()\"\n (change)=\"doChange()\"\n (keydown.enter)=\"doOnSend()\"\n />\n }\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (withError()) {\n <dsv-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n }\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class DsvBaseFormSignalComponent {}\n","import { Component, effect, input, output, signal } from '@angular/core';\nimport { form } from '@angular/forms/signals';\nimport { DsvBaseFormSignalComponent } from '../../form/base/base-form-signal.component';\nimport { DsvFormSignalComponent, DsvFormSignalInputComponent } from '../../public-api';\n\n@Component({\n selector: 'dsv-form-signal-searchbar',\n imports: [DsvFormSignalComponent, DsvFormSignalInputComponent],\n templateUrl: './form-signal-searchbar.component.html',\n styleUrls: ['../../../reactive/searchbar/component/form-reactive-searchbar.component.scss'],\n})\nexport class DsvFormSignalSearchbarComponent extends DsvBaseFormSignalComponent {\n readonly search = input<string>('');\n readonly callbackSearch = output<string>();\n\n readonly form = form(signal({ search: this.search() }));\n\n constructor() {\n super();\n effect(() => {\n this.form().reset({ search: this.search() });\n });\n }\n\n onSend(value: string): void {\n this.callbackSearch.emit(value);\n }\n}\n","<dsv-form-signal\n [form]=\"form\"\n textValid=\"\"\n>\n <dsv-form-signal-input\n [form]=\"form\"\n fieldName=\"search\"\n type=\"search\"\n [withLabel]=\"false\"\n (callbackChange)=\"onSend($event)\"\n (callbackSend)=\"onSend($event)\"\n icon=\"icon ri-search-line\"\n ></dsv-form-signal-input>\n</dsv-form-signal>\n","import { Component, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { FormSignalErrorComponent } from '../../error/component/form-signal-error.component';\nimport { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\nimport { DsvBaseFormSignalInputComponent } from '../../public-api';\n\n@Component({\n selector: 'dsv-form-signal-select',\n imports: [FormField, DsvFormSignalLabelComponent, FormSignalErrorComponent],\n templateUrl: './form-signal-select.component.html',\n styleUrls: [\n '../../../reactive/input/component/form-reactive-input.component.scss',\n '../../../reactive/select/component/form-reactive-select.component.scss',\n ],\n})\nexport class DsvFormSignalSelectComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n readonly multiple = input<boolean>(false);\n readonly list = input<(ApiDto & { name: string })[]>([]);\n}\n","<div>\n @if (getSignal()) {\n <dsv-form-signal-label\n [name]=\"fieldName()\"\n [label]=\"label() ?? fieldName()\"\n [signal]=\"getSignal()()\"\n [show]=\"withLabel()\"\n />\n <div class=\"flex-column\">\n <select\n [id]=\"fieldName()\"\n [formField]=\"getSignal()\"\n class=\"form-control\"\n (change)=\"doChange()\"\n [class.error]=\"isError()\"\n [multiple]=\"multiple()\"\n >\n @for (list of list(); track list.id) {\n <option\n [value]=\"list.id\"\n [selected]=\"list.id?.toString() === getSignal()().value().toString()\"\n >\n {{ list.name }}\n </option>\n }\n </select>\n <dsv-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n </div>\n }\n</div>\n","import { ChildFieldContext } from '@angular/forms/signals';\n\nexport const requiredTrim = (value: ChildFieldContext<string>): { kind: 'required' } | null =>\n value.value().trim() === '' ? { kind: 'required' } : null;\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-form-signal.mjs","sources":["../../../projects/ng-dsv/ds/form/signal/form/base/input/base-form-signal-input.component.ts","../../../projects/ng-dsv/ds/form/signal/label/component/form-signal-label.component.ts","../../../projects/ng-dsv/ds/form/signal/label/component/form-signal-label.component.html","../../../projects/ng-dsv/ds/form/signal/checkbox/component/form-signal-checkbox.component.ts","../../../projects/ng-dsv/ds/form/signal/checkbox/component/form-signal-checkbox.component.html","../../../projects/ng-dsv/ds/form/signal/error/component/form-signal-error.component.ts","../../../projects/ng-dsv/ds/form/signal/error/component/form-signal-error.component.html","../../../projects/ng-dsv/ds/form/signal/form/component/form-signal.component.ts","../../../projects/ng-dsv/ds/form/signal/form/component/form-signal.component.html","../../../projects/ng-dsv/ds/form/signal/input/component/form-signal-input.component.ts","../../../projects/ng-dsv/ds/form/signal/input/component/form-signal-input.component.html","../../../projects/ng-dsv/ds/form/signal/form/base/base-form-signal.component.ts","../../../projects/ng-dsv/ds/form/signal/searchbar/component/form-signal-searchbar.component.ts","../../../projects/ng-dsv/ds/form/signal/searchbar/component/form-signal-searchbar.component.html","../../../projects/ng-dsv/ds/form/signal/select/component/form-signal-select.component.ts","../../../projects/ng-dsv/ds/form/signal/select/component/form-signal-select.component.html","../../../projects/ng-dsv/ds/form/signal/utils/form-signal.utils.ts","../../../projects/ng-dsv/ds/form/signal/ng-vagabond-lab-ng-dsv-ds-form-signal.ts"],"sourcesContent":["import { Directive, effect, input, output, signal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\n\n@Directive()\nexport abstract class DsvBaseFormSignalInputComponent<T> {\n readonly form = input.required<FieldTree<T, string | number>>();\n readonly fieldName = input.required<string>();\n readonly label = input<string>();\n readonly withLabel = input<boolean>(true);\n readonly placeholder = input<string>('');\n readonly required = input<boolean>(false);\n readonly debug = input<boolean>(false);\n\n readonly isError = signal<boolean>(false);\n\n readonly callbackSend = output<string>();\n readonly callbackChange = output<string>();\n\n constructor() {\n effect(() => {\n this.getSignal() &&\n this.isError.set(this.getSignal()().touched() && this.getSignal()().errors().length > 0);\n });\n }\n\n isTouched(): boolean {\n return this.getSignal()().touched() ?? false;\n }\n\n getSignal(): FieldTree<string, string | number> {\n return this.form()?.[this.fieldName() as keyof FieldTree<T, string | number>] as FieldTree<\n string,\n string | number\n >;\n }\n\n doOnSend(): void {\n this.getValue() && this.callbackSend.emit(this.getValue());\n }\n\n doChange(): void {\n this.callbackChange.emit(this.getValue());\n }\n\n protected getValue(): string {\n const signal = this.getSignal();\n if (signal) {\n const value = signal().value();\n this.debug() && console.log(signal, signal().errors(), value);\n return value;\n }\n return '';\n }\n}\n","import { Component, effect, input, signal } from '@angular/core';\nimport { FieldState } from '@angular/forms/signals';\n\n@Component({\n selector: 'dsv-form-signal-label',\n templateUrl: './form-signal-label.component.html',\n styleUrls: ['../../../reactive/label/component/form-reactive-label.component.scss'],\n})\nexport class DsvFormSignalLabelComponent<T> {\n readonly label = input.required<string>();\n readonly name = input.required<string>();\n readonly signal = input.required<FieldState<T>>();\n readonly show = input<boolean>(true);\n\n readonly isRequired = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n this.isRequired.set(this.signal().required());\n });\n }\n}\n","@if (show()) {\n <label\n [for]=\"name()\"\n class=\"text\"\n [class.error]=\"signal().touched() && signal().errors().length! > 0\"\n >\n {{ label() }} {{ isRequired() ? '*' : '' }}\n </label>\n}\n","import { Component } from '@angular/core';\nimport { FieldTree, FormField } from '@angular/forms/signals';\nimport { DsvBaseFormSignalInputComponent } from '../../form/base/input/base-form-signal-input.component';\nimport { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\n\n@Component({\n selector: 'dsv-form-signal-checkbox',\n imports: [FormField, DsvFormSignalLabelComponent],\n templateUrl: './form-signal-checkbox.component.html',\n styleUrls: [\n '../../../reactive/input/component/form-reactive-input.component.scss',\n '../../../reactive/checkbox/component/form-reactive-checkbox.component.scss',\n ],\n})\nexport class DsvFormSignalCheckboxComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n getBooleanSignal(): FieldTree<boolean, string | number> {\n return this.form()?.[this.fieldName() as keyof FieldTree<T, string | number>] as FieldTree<\n boolean,\n string | number\n >;\n }\n}\n","<div>\n @if (getSignal()) {\n <dsv-form-signal-label\n [name]=\"fieldName()\"\n [label]=\"label() ?? fieldName()\"\n [signal]=\"getSignal()()\"\n [show]=\"withLabel()\"\n />\n <div>\n <input\n type=\"checkbox\"\n [id]=\"fieldName()\"\n class=\"form-control\"\n [class.error]=\"isError()\"\n [formField]=\"getBooleanSignal()\"\n (change)=\"doChange()\"\n />\n </div>\n }\n</div>\n","import { Component, effect, input, signal } from '@angular/core';\nimport { ValidationError } from '@angular/forms/signals';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-form-signal-error',\n imports: [TranslatePipe],\n templateUrl: './form-signal-error.component.html',\n styleUrls: ['../../../reactive/error/component/form-reactive-error.component.scss'],\n host: {\n class: 'text error',\n },\n})\nexport class FormSignalErrorComponent {\n errors = input.required<ValidationError[]>();\n isTouched = input<boolean>(false);\n\n error = signal<string>('');\n\n constructor() {\n effect(() => {\n let errorMessage = '';\n this.errors().forEach((error) => {\n switch (error.kind) {\n case 'required':\n errorMessage = 'Le champ est obligatoire.';\n break;\n case 'min':\n errorMessage =\n 'La valeur minimum est de ' + error['min' as keyof ValidationError] + '.';\n break;\n case 'max':\n errorMessage =\n 'La valeur maximum est de ' + error['max' as keyof ValidationError] + '.';\n break;\n case 'minLength':\n errorMessage =\n 'La taille minimum est de ' + error['minLength' as keyof ValidationError] + '.';\n break;\n case 'maxLength':\n errorMessage =\n 'La taille maximum est de ' + error['maxLength' as keyof ValidationError] + '.';\n break;\n case 'email':\n errorMessage = \"Le format n'est pas celui d'un email.\";\n break;\n default:\n errorMessage = error.message ?? 'Erreur inconnue.';\n break;\n }\n });\n this.error.set(errorMessage);\n });\n }\n}\n","@if (errors().length > 0 && isTouched()) {\n @if (error() !== '') {\n <div>{{ error() | translate }}</div>\n }\n}\n","import { Component, computed, inject, input, output } from '@angular/core';\nimport { FieldTree, submit } from '@angular/forms/signals';\nimport { RouterLink } from '@angular/router';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { isCallback } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-form-signal',\n imports: [DsvButtonComponent, RouterLink, TranslatePipe],\n templateUrl: './form-signal.component.html',\n styleUrl: '../../../reactive/form/component/form-reactive.component.scss',\n})\nexport class DsvFormSignalComponent<T> {\n readonly toastService = inject(ToastService);\n\n readonly form = input.required<FieldTree<T, string | number>>();\n\n readonly urlBack = input<string>();\n readonly textValid = input<string>('ENREGISTRER');\n readonly formValid = input<string>('');\n\n readonly callbackBack = output<void>();\n readonly callback = output<ApiDto>();\n\n readonly isCallbackBack = computed<boolean>(() => isCallback(this.callbackBack));\n\n onSubmit(event: Event): void {\n event.preventDefault();\n submit(this.form(), async (form) => {\n if (form().valid()) {\n this.callback.emit(form().value() as ApiDto);\n if (this.formValid() !== '') {\n this.toastService.showToast({\n text: this.formValid(),\n });\n }\n } else {\n this.toastService.showToast({\n text: 'Erreur dans le formulaire !',\n type: 'error',\n });\n }\n });\n }\n}\n","<form (submit)=\"onSubmit($event)\" novalidate>\n <div class=\"form-scroll\">\n <ng-content></ng-content>\n </div>\n <div class=\"form-buttons\">\n @if (urlBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" [routerLink]=\"urlBack()\" [prevent]=\"false\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (isCallbackBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" (callback)=\"callbackBack.emit()\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (textValid() && textValid() !== '') {\n <dsv-button type=\"submit\" color=\"primary\">{{ textValid()! | translate }}</dsv-button>\n }\n </div>\n</form>\n","import { Component, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\nimport { INPUT_TYPE } from '@ng-vagabond-lab/ng-dsv/type';\nimport { FormSignalErrorComponent } from '../../error/component/form-signal-error.component';\nimport { DsvBaseFormSignalInputComponent } from '../../form/base/input/base-form-signal-input.component';\nimport { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\n\n@Component({\n selector: 'dsv-form-signal-input',\n imports: [FormField, DsvFormSignalLabelComponent, FormSignalErrorComponent],\n templateUrl: './form-signal-input.component.html',\n styleUrl: '../../../reactive/input/component/form-reactive-input.component.scss',\n})\nexport class DsvFormSignalInputComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n readonly type = input<INPUT_TYPE>('text');\n readonly icon = input<string>();\n readonly withError = input<boolean>(true);\n}\n","<div>\n @if (getSignal()) {\n @if (withLabel()) {\n <dsv-form-signal-label\n [name]=\"fieldName()\"\n [label]=\"label() ?? fieldName()\"\n [signal]=\"getSignal()()\"\n />\n }\n @if (type() === 'textarea') {\n <textarea\n [id]=\"fieldName()\"\n [formField]=\"getSignal()\"\n [placeholder]=\"placeholder()\"\n class=\"form-control\"\n ></textarea>\n } @else {\n <input\n #input\n [type]=\"type()\"\n [id]=\"fieldName()\"\n class=\"form-control\"\n [class.error]=\"isError()\"\n [formField]=\"getSignal()\"\n [placeholder]=\"placeholder()\"\n [class.icon]=\"icon()\"\n (blur)=\"doOnSend()\"\n (change)=\"doChange()\"\n (keydown.enter)=\"doOnSend()\"\n />\n }\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (withError()) {\n <dsv-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n }\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class DsvBaseFormSignalComponent {}\n","import { Component, effect, input, output, signal } from '@angular/core';\nimport { form } from '@angular/forms/signals';\nimport { DsvBaseFormSignalComponent } from '../../form/base/base-form-signal.component';\nimport { DsvFormSignalComponent, DsvFormSignalInputComponent } from '../../public-api';\n\n@Component({\n selector: 'dsv-form-signal-searchbar',\n imports: [DsvFormSignalComponent, DsvFormSignalInputComponent],\n templateUrl: './form-signal-searchbar.component.html',\n styleUrls: ['../../../reactive/searchbar/component/form-reactive-searchbar.component.scss'],\n})\nexport class DsvFormSignalSearchbarComponent extends DsvBaseFormSignalComponent {\n readonly search = input<string>('');\n readonly callbackSearch = output<string>();\n\n readonly form = form(signal({ search: this.search() }));\n\n constructor() {\n super();\n effect(() => {\n this.form().reset({ search: this.search() });\n });\n }\n\n onSend(value: string): void {\n this.callbackSearch.emit(value);\n }\n}\n","<dsv-form-signal\n [form]=\"form\"\n textValid=\"\"\n>\n <dsv-form-signal-input\n [form]=\"form\"\n fieldName=\"search\"\n type=\"search\"\n [withLabel]=\"false\"\n (callbackChange)=\"onSend($event)\"\n (callbackSend)=\"onSend($event)\"\n icon=\"icon ri-search-line\"\n ></dsv-form-signal-input>\n</dsv-form-signal>\n","import { Component, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { FormSignalErrorComponent } from '../../error/component/form-signal-error.component';\nimport { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\nimport { DsvBaseFormSignalInputComponent } from '../../public-api';\n\n@Component({\n selector: 'dsv-form-signal-select',\n imports: [FormField, DsvFormSignalLabelComponent, FormSignalErrorComponent],\n templateUrl: './form-signal-select.component.html',\n styleUrls: [\n '../../../reactive/input/component/form-reactive-input.component.scss',\n '../../../reactive/select/component/form-reactive-select.component.scss',\n ],\n})\nexport class DsvFormSignalSelectComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n readonly multiple = input<boolean>(false);\n readonly list = input<(ApiDto & { name: string })[]>([]);\n}\n","<div>\n @if (getSignal()) {\n <dsv-form-signal-label\n [name]=\"fieldName()\"\n [label]=\"label() ?? fieldName()\"\n [signal]=\"getSignal()()\"\n [show]=\"withLabel()\"\n />\n <div class=\"flex-column\">\n <select\n [id]=\"fieldName()\"\n [formField]=\"getSignal()\"\n class=\"form-control\"\n (change)=\"doChange()\"\n [class.error]=\"isError()\"\n [multiple]=\"multiple()\"\n >\n @for (list of list(); track list.id) {\n <option\n [value]=\"list.id\"\n [selected]=\"list.id?.toString() === getSignal()().value().toString()\"\n >\n {{ list.name }}\n </option>\n }\n </select>\n <dsv-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n </div>\n }\n</div>\n","import { ChildFieldContext } from '@angular/forms/signals';\n\nexport const requiredTrim = (value: ChildFieldContext<string>): { kind: 'required' } | null =>\n value.value().trim() === '' ? { kind: 'required' } : null;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -6,17 +6,21 @@ import { RouterInternalPipe } from '@ng-vagabond-lab/ng-dsv/router';
6
6
 
7
7
  class DsvHeaderComponent {
8
8
  menuService = inject(MenuService);
9
- img = input(...(ngDevMode ? [undefined, { debugName: "img" }] : /* istanbul ignore next */ []));
10
- titleText = input('', ...(ngDevMode ? [{ debugName: "titleText" }] : /* istanbul ignore next */ []));
11
- withMenu = input(true, ...(ngDevMode ? [{ debugName: "withMenu" }] : /* istanbul ignore next */ []));
12
- titleTextParts = computed(() => this.titleText().split(' '), ...(ngDevMode ? [{ debugName: "titleTextParts" }] : /* istanbul ignore next */ []));
9
+ img = input(/* @ts-ignore */
10
+ ...(ngDevMode ? [undefined, { debugName: "img" }] : /* istanbul ignore next */ []));
11
+ titleText = input('', /* @ts-ignore */
12
+ ...(ngDevMode ? [{ debugName: "titleText" }] : /* istanbul ignore next */ []));
13
+ withMenu = input(true, /* @ts-ignore */
14
+ ...(ngDevMode ? [{ debugName: "withMenu" }] : /* istanbul ignore next */ []));
15
+ titleTextParts = computed(() => this.titleText().split(' '), /* @ts-ignore */
16
+ ...(ngDevMode ? [{ debugName: "titleTextParts" }] : /* istanbul ignore next */ []));
13
17
  doToogleMenu() {
14
18
  this.menuService.toogleMenu();
15
19
  }
16
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: DsvHeaderComponent, isStandalone: true, selector: "dsv-header", inputs: { img: { classPropertyName: "img", publicName: "img", isSignal: true, isRequired: false, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, withMenu: { classPropertyName: "withMenu", publicName: "withMenu", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"header-title\">\n @if (withMenu()) {\n <dsv-menu-button />\n }\n <a href=\"/\" class=\"dsv-header-logo\" dsvLink>\n @if (img()) {\n <img src=\"{{ img() }}\" alt=\"logo\" />\n }\n <div>\n @for (titleText of titleTextParts(); track titleText; let index = $index) {\n <span class=\"title-{{ index }}\">{{ titleText }}</span>\n @if (index < titleTextParts().length - 1) {\n <span>&nbsp;</span>\n }\n }\n </div>\n </a>\n</div>\n<ng-content></ng-content>\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;width:100%;min-height:48px;padding:0 16px;box-sizing:border-box;background-color:var(--background-card);color:var(--text);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none}:host .header-title{display:flex;gap:10px;align-items:center;flex:1}:host .dsv-header-logo{display:flex;justify-content:flex-start;align-items:center;font-size:1.3rem;gap:10px}:host .dsv-header-logo img{width:30px;height:30px;cursor:pointer}:host .dsv-header-logo span{font-weight:700;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvMenuButtonComponent, selector: "dsv-menu-button" }, { kind: "directive", type: RouterInternalPipe, selector: "a[dsvLink]", outputs: ["dsvLink"] }] });
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: DsvHeaderComponent, isStandalone: true, selector: "dsv-header", inputs: { img: { classPropertyName: "img", publicName: "img", isSignal: true, isRequired: false, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, withMenu: { classPropertyName: "withMenu", publicName: "withMenu", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"header-title\">\n @if (withMenu()) {\n <dsv-menu-button />\n }\n <a href=\"/\" class=\"dsv-header-logo\" dsvLink>\n @if (img()) {\n <img src=\"{{ img() }}\" alt=\"logo\" />\n }\n <div>\n @for (titleText of titleTextParts(); track titleText; let index = $index) {\n <span class=\"title-{{ index }}\">{{ titleText }}</span>\n @if (index < titleTextParts().length - 1) {\n <span>&nbsp;</span>\n }\n }\n </div>\n </a>\n</div>\n<ng-content></ng-content>\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;width:100%;min-height:48px;padding:0 16px;box-sizing:border-box;background-color:var(--background-card);color:var(--text);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none}:host .header-title{display:flex;gap:10px;align-items:center;flex:1}:host .dsv-header-logo{display:flex;justify-content:flex-start;align-items:center;font-size:1.3rem;gap:10px}:host .dsv-header-logo img{width:30px;height:30px;cursor:pointer}:host .dsv-header-logo span{font-weight:700;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvMenuButtonComponent, selector: "dsv-menu-button" }, { kind: "directive", type: RouterInternalPipe, selector: "a[dsvLink]", outputs: ["dsvLink"] }] });
18
22
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvHeaderComponent, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvHeaderComponent, decorators: [{
20
24
  type: Component,
21
25
  args: [{ selector: 'dsv-header', imports: [CommonModule, DsvMenuButtonComponent, RouterInternalPipe], template: "<div class=\"header-title\">\n @if (withMenu()) {\n <dsv-menu-button />\n }\n <a href=\"/\" class=\"dsv-header-logo\" dsvLink>\n @if (img()) {\n <img src=\"{{ img() }}\" alt=\"logo\" />\n }\n <div>\n @for (titleText of titleTextParts(); track titleText; let index = $index) {\n <span class=\"title-{{ index }}\">{{ titleText }}</span>\n @if (index < titleTextParts().length - 1) {\n <span>&nbsp;</span>\n }\n }\n </div>\n </a>\n</div>\n<ng-content></ng-content>\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;width:100%;min-height:48px;padding:0 16px;box-sizing:border-box;background-color:var(--background-card);color:var(--text);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none}:host .header-title{display:flex;gap:10px;align-items:center;flex:1}:host .dsv-header-logo{display:flex;justify-content:flex-start;align-items:center;font-size:1.3rem;gap:10px}:host .dsv-header-logo img{width:30px;height:30px;cursor:pointer}:host .dsv-header-logo span{font-weight:700;cursor:pointer}\n"] }]
22
26
  }], propDecorators: { img: [{ type: i0.Input, args: [{ isSignal: true, alias: "img", required: false }] }], titleText: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleText", required: false }] }], withMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "withMenu", required: false }] }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-header.mjs","sources":["../../../projects/ng-dsv/ds/header/component/header.component.ts","../../../projects/ng-dsv/ds/header/component/header.component.html","../../../projects/ng-dsv/ds/header/ng-vagabond-lab-ng-dsv-ds-header.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { DsvMenuButtonComponent, MenuService } from '@ng-vagabond-lab/ng-dsv/ds/menu';\nimport { RouterInternalPipe } from '@ng-vagabond-lab/ng-dsv/router';\n\n@Component({\n selector: 'dsv-header',\n imports: [CommonModule, DsvMenuButtonComponent, RouterInternalPipe],\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class DsvHeaderComponent {\n readonly menuService = inject(MenuService);\n\n readonly img = input<string>();\n readonly titleText = input<string>('');\n readonly withMenu = input<boolean>(true);\n\n readonly titleTextParts = computed<string[]>(() => this.titleText().split(' '));\n\n doToogleMenu(): void {\n this.menuService.toogleMenu();\n }\n}\n","<div class=\"header-title\">\n @if (withMenu()) {\n <dsv-menu-button />\n }\n <a href=\"/\" class=\"dsv-header-logo\" dsvLink>\n @if (img()) {\n <img src=\"{{ img() }}\" alt=\"logo\" />\n }\n <div>\n @for (titleText of titleTextParts(); track titleText; let index = $index) {\n <span class=\"title-{{ index }}\">{{ titleText }}</span>\n @if (index < titleTextParts().length - 1) {\n <span>&nbsp;</span>\n }\n }\n </div>\n </a>\n</div>\n<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAWa,kBAAkB,CAAA;AAClB,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAEjC,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AACrB,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,+EAAC;AAE/B,IAAA,cAAc,GAAG,QAAQ,CAAW,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,qFAAC;IAE/E,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;IACjC;wGAXS,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,ycCX/B,imBAmBA,EAAA,MAAA,EAAA,CAAA,wlBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,4DAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIzD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,CAAC,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,imBAAA,EAAA,MAAA,EAAA,CAAA,wlBAAA,CAAA,EAAA;;;AEPvE;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-header.mjs","sources":["../../../projects/ng-dsv/ds/header/component/header.component.ts","../../../projects/ng-dsv/ds/header/component/header.component.html","../../../projects/ng-dsv/ds/header/ng-vagabond-lab-ng-dsv-ds-header.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { DsvMenuButtonComponent, MenuService } from '@ng-vagabond-lab/ng-dsv/ds/menu';\nimport { RouterInternalPipe } from '@ng-vagabond-lab/ng-dsv/router';\n\n@Component({\n selector: 'dsv-header',\n imports: [CommonModule, DsvMenuButtonComponent, RouterInternalPipe],\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class DsvHeaderComponent {\n readonly menuService = inject(MenuService);\n\n readonly img = input<string>();\n readonly titleText = input<string>('');\n readonly withMenu = input<boolean>(true);\n\n readonly titleTextParts = computed<string[]>(() => this.titleText().split(' '));\n\n doToogleMenu(): void {\n this.menuService.toogleMenu();\n }\n}\n","<div class=\"header-title\">\n @if (withMenu()) {\n <dsv-menu-button />\n }\n <a href=\"/\" class=\"dsv-header-logo\" dsvLink>\n @if (img()) {\n <img src=\"{{ img() }}\" alt=\"logo\" />\n }\n <div>\n @for (titleText of titleTextParts(); track titleText; let index = $index) {\n <span class=\"title-{{ index }}\">{{ titleText }}</span>\n @if (index < titleTextParts().length - 1) {\n <span>&nbsp;</span>\n }\n }\n </div>\n </a>\n</div>\n<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAWa,kBAAkB,CAAA;AAClB,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAEjC,IAAA,GAAG,GAAG,KAAK;uFAAU;IACrB,SAAS,GAAG,KAAK,CAAS,EAAE;kFAAC;IAC7B,QAAQ,GAAG,KAAK,CAAU,IAAI;iFAAC;AAE/B,IAAA,cAAc,GAAG,QAAQ,CAAW,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;uFAAC;IAE/E,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;IACjC;uGAXS,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,QAAA,EAAA,IAAA,EAAA,kBAAkB,ycCX/B,imBAmBA,EAAA,MAAA,EAAA,CAAA,wlBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,4DAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIzD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,CAAC,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,imBAAA,EAAA,MAAA,EAAA,CAAA,wlBAAA,CAAA,EAAA;;;AEPvE;;AAEG;;;;"}
@@ -3,24 +3,32 @@ import { input, signal, computed, Component } from '@angular/core';
3
3
  import { DsvSekeletonComponent } from '@ng-vagabond-lab/ng-dsv/ds/skeleton';
4
4
 
5
5
  class DsvImgComponent {
6
- src = input.required(...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
7
- alt = input('description', ...(ngDevMode ? [{ debugName: "alt" }] : /* istanbul ignore next */ []));
8
- empty = input('images/empty.svg', ...(ngDevMode ? [{ debugName: "empty" }] : /* istanbul ignore next */ []));
9
- width = input(500, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
10
- height = input(750, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
11
- load = signal(false, ...(ngDevMode ? [{ debugName: "load" }] : /* istanbul ignore next */ []));
12
- error = signal(false, ...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
13
- aspectRatio = computed(() => this.width() + '/' + this.height(), ...(ngDevMode ? [{ debugName: "aspectRatio" }] : /* istanbul ignore next */ []));
6
+ src = input.required(/* @ts-ignore */
7
+ ...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
8
+ alt = input('description', /* @ts-ignore */
9
+ ...(ngDevMode ? [{ debugName: "alt" }] : /* istanbul ignore next */ []));
10
+ empty = input('images/empty.svg', /* @ts-ignore */
11
+ ...(ngDevMode ? [{ debugName: "empty" }] : /* istanbul ignore next */ []));
12
+ width = input(500, /* @ts-ignore */
13
+ ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
14
+ height = input(750, /* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
16
+ load = signal(false, /* @ts-ignore */
17
+ ...(ngDevMode ? [{ debugName: "load" }] : /* istanbul ignore next */ []));
18
+ error = signal(false, /* @ts-ignore */
19
+ ...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
20
+ aspectRatio = computed(() => this.width() + '/' + this.height(), /* @ts-ignore */
21
+ ...(ngDevMode ? [{ debugName: "aspectRatio" }] : /* istanbul ignore next */ []));
14
22
  doLoad() {
15
23
  this.load.set(true);
16
24
  }
17
25
  onImageError() {
18
26
  this.error.set(true);
19
27
  }
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvImgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: DsvImgComponent, isStandalone: true, selector: "dsv-img", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: true, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, empty: { classPropertyName: "empty", publicName: "empty", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (!load() || src() === '') {\n <dsv-skeleton>\n <svg\n [attr.viewBox]=\"'0 0 ' + width() + ' ' + height()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ></svg>\n </dsv-skeleton>\n}\n@if (src() !== '' && !error()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n (error)=\"onImageError()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n [class.hidden]=\"!load()\"\n />\n} @else if (error()) {\n <img\n [src]=\"empty()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n />\n}\n", styles: [":host{--img-width: 100%;--img-height: 100%;--img-border-radius: 0px;display:flex;flex-direction:column}:host img{background-color:var(--background);border-radius:var(--img-border-radius);width:var(--img-width);height:var(--img-height)}:host svg{background-color:var(--background-card);opacity:.5;margin:0;padding:0;border-radius:10px}\n"], dependencies: [{ kind: "component", type: DsvSekeletonComponent, selector: "dsv-skeleton" }] });
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvImgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: DsvImgComponent, isStandalone: true, selector: "dsv-img", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: true, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, empty: { classPropertyName: "empty", publicName: "empty", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (!load() || src() === '') {\n <dsv-skeleton>\n <svg\n [attr.viewBox]=\"'0 0 ' + width() + ' ' + height()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ></svg>\n </dsv-skeleton>\n}\n@if (src() !== '' && !error()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n (error)=\"onImageError()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n [class.hidden]=\"!load()\"\n />\n} @else if (error()) {\n <img\n [src]=\"empty()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n />\n}\n", styles: [":host{--img-width: 100%;--img-height: 100%;--img-border-radius: 0px;display:flex;flex-direction:column}:host img{background-color:var(--background);border-radius:var(--img-border-radius);width:var(--img-width);height:var(--img-height)}:host svg{background-color:var(--background-card);opacity:.5;margin:0;padding:0;border-radius:10px}\n"], dependencies: [{ kind: "component", type: DsvSekeletonComponent, selector: "dsv-skeleton" }] });
22
30
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvImgComponent, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvImgComponent, decorators: [{
24
32
  type: Component,
25
33
  args: [{ selector: 'dsv-img', imports: [DsvSekeletonComponent], template: "@if (!load() || src() === '') {\n <dsv-skeleton>\n <svg\n [attr.viewBox]=\"'0 0 ' + width() + ' ' + height()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ></svg>\n </dsv-skeleton>\n}\n@if (src() !== '' && !error()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n (error)=\"onImageError()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n [class.hidden]=\"!load()\"\n />\n} @else if (error()) {\n <img\n [src]=\"empty()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n />\n}\n", styles: [":host{--img-width: 100%;--img-height: 100%;--img-border-radius: 0px;display:flex;flex-direction:column}:host img{background-color:var(--background);border-radius:var(--img-border-radius);width:var(--img-width);height:var(--img-height)}:host svg{background-color:var(--background-card);opacity:.5;margin:0;padding:0;border-radius:10px}\n"] }]
26
34
  }], propDecorators: { src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: true }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }], empty: [{ type: i0.Input, args: [{ isSignal: true, alias: "empty", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-img.mjs","sources":["../../../projects/ng-dsv/ds/img/component/img.component.ts","../../../projects/ng-dsv/ds/img/component/img.component.html","../../../projects/ng-dsv/ds/img/ng-vagabond-lab-ng-dsv-ds-img.ts"],"sourcesContent":["import { Component, computed, input, signal } from '@angular/core';\nimport { DsvSekeletonComponent } from '@ng-vagabond-lab/ng-dsv/ds/skeleton';\n\n@Component({\n selector: 'dsv-img',\n imports: [DsvSekeletonComponent],\n templateUrl: './img.component.html',\n styleUrl: './img.component.scss',\n})\nexport class DsvImgComponent {\n readonly src = input.required<string>();\n readonly alt = input<string>('description');\n readonly empty = input<string>('images/empty.svg');\n\n readonly width = input<number>(500);\n readonly height = input<number>(750);\n\n readonly load = signal<boolean>(false);\n readonly error = signal<boolean>(false);\n\n readonly aspectRatio = computed<string>(() => this.width() + '/' + this.height());\n\n doLoad(): void {\n this.load.set(true);\n }\n\n onImageError(): void {\n this.error.set(true);\n }\n}\n","@if (!load() || src() === '') {\n <dsv-skeleton>\n <svg\n [attr.viewBox]=\"'0 0 ' + width() + ' ' + height()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ></svg>\n </dsv-skeleton>\n}\n@if (src() !== '' && !error()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n (error)=\"onImageError()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n [class.hidden]=\"!load()\"\n />\n} @else if (error()) {\n <img\n [src]=\"empty()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MASa,eAAe,CAAA;AACf,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,yEAAU;AAC9B,IAAA,GAAG,GAAG,KAAK,CAAS,aAAa,0EAAC;AAClC,IAAA,KAAK,GAAG,KAAK,CAAS,kBAAkB,4EAAC;AAEzC,IAAA,KAAK,GAAG,KAAK,CAAS,GAAG,4EAAC;AAC1B,IAAA,MAAM,GAAG,KAAK,CAAS,GAAG,6EAAC;AAE3B,IAAA,IAAI,GAAG,MAAM,CAAU,KAAK,2EAAC;AAC7B,IAAA,KAAK,GAAG,MAAM,CAAU,KAAK,4EAAC;AAE9B,IAAA,WAAW,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,kFAAC;IAEjF,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;IAEA,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;wGAnBS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECT5B,2oBAyBA,EAAA,MAAA,EAAA,CAAA,kVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpBc,qBAAqB,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA;;4FAItB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACI,SAAS,EAAA,OAAA,EACV,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,2oBAAA,EAAA,MAAA,EAAA,CAAA,kVAAA,CAAA,EAAA;;;AELpC;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-img.mjs","sources":["../../../projects/ng-dsv/ds/img/component/img.component.ts","../../../projects/ng-dsv/ds/img/component/img.component.html","../../../projects/ng-dsv/ds/img/ng-vagabond-lab-ng-dsv-ds-img.ts"],"sourcesContent":["import { Component, computed, input, signal } from '@angular/core';\nimport { DsvSekeletonComponent } from '@ng-vagabond-lab/ng-dsv/ds/skeleton';\n\n@Component({\n selector: 'dsv-img',\n imports: [DsvSekeletonComponent],\n templateUrl: './img.component.html',\n styleUrl: './img.component.scss',\n})\nexport class DsvImgComponent {\n readonly src = input.required<string>();\n readonly alt = input<string>('description');\n readonly empty = input<string>('images/empty.svg');\n\n readonly width = input<number>(500);\n readonly height = input<number>(750);\n\n readonly load = signal<boolean>(false);\n readonly error = signal<boolean>(false);\n\n readonly aspectRatio = computed<string>(() => this.width() + '/' + this.height());\n\n doLoad(): void {\n this.load.set(true);\n }\n\n onImageError(): void {\n this.error.set(true);\n }\n}\n","@if (!load() || src() === '') {\n <dsv-skeleton>\n <svg\n [attr.viewBox]=\"'0 0 ' + width() + ' ' + height()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ></svg>\n </dsv-skeleton>\n}\n@if (src() !== '' && !error()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n (error)=\"onImageError()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n [class.hidden]=\"!load()\"\n />\n} @else if (error()) {\n <img\n [src]=\"empty()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MASa,eAAe,CAAA;IACf,GAAG,GAAG,KAAK,CAAC,QAAQ;4EAAU;IAC9B,GAAG,GAAG,KAAK,CAAS,aAAa;4EAAC;IAClC,KAAK,GAAG,KAAK,CAAS,kBAAkB;8EAAC;IAEzC,KAAK,GAAG,KAAK,CAAS,GAAG;8EAAC;IAC1B,MAAM,GAAG,KAAK,CAAS,GAAG;+EAAC;IAE3B,IAAI,GAAG,MAAM,CAAU,KAAK;6EAAC;IAC7B,KAAK,GAAG,MAAM,CAAU,KAAK;8EAAC;AAE9B,IAAA,WAAW,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;oFAAC;IAEjF,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;IAEA,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;uGAnBS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECT5B,2oBAyBA,EAAA,MAAA,EAAA,CAAA,kVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpBc,qBAAqB,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA;;2FAItB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACI,SAAS,EAAA,OAAA,EACV,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,2oBAAA,EAAA,MAAA,EAAA,CAAA,kVAAA,CAAA,EAAA;;;AELpC;;AAEG;;;;"}
@@ -7,13 +7,19 @@ import { TranslatePipe } from '@ngx-translate/core';
7
7
 
8
8
  class DsvItemComponent {
9
9
  router = inject(Router);
10
- icon = input('', ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
11
- text = input('', ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
12
- nb = input(-1, ...(ngDevMode ? [{ debugName: "nb" }] : /* istanbul ignore next */ []));
13
- url = input(...(ngDevMode ? [undefined, { debugName: "url" }] : /* istanbul ignore next */ []));
14
- small = input(false, ...(ngDevMode ? [{ debugName: "small" }] : /* istanbul ignore next */ []));
10
+ icon = input('', /* @ts-ignore */
11
+ ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
12
+ text = input('', /* @ts-ignore */
13
+ ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
14
+ nb = input(-1, /* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "nb" }] : /* istanbul ignore next */ []));
16
+ url = input(/* @ts-ignore */
17
+ ...(ngDevMode ? [undefined, { debugName: "url" }] : /* istanbul ignore next */ []));
18
+ small = input(false, /* @ts-ignore */
19
+ ...(ngDevMode ? [{ debugName: "small" }] : /* istanbul ignore next */ []));
15
20
  callback = output();
16
- isCallback = signal(false, ...(ngDevMode ? [{ debugName: "isCallback" }] : /* istanbul ignore next */ []));
21
+ isCallback = signal(false, /* @ts-ignore */
22
+ ...(ngDevMode ? [{ debugName: "isCallback" }] : /* istanbul ignore next */ []));
17
23
  constructor() {
18
24
  effect(() => {
19
25
  this.isCallback.set(isCallback(this.callback));
@@ -27,10 +33,10 @@ class DsvItemComponent {
27
33
  }
28
34
  this.isCallback() && this.callback.emit();
29
35
  }
30
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: DsvItemComponent, isStandalone: true, selector: "dsv-item", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, nb: { classPropertyName: "nb", publicName: "nb", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, small: { classPropertyName: "small", publicName: "small", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<a [href]=\"this.url() ?? '#'\" class=\"text\" (click)=\"doClick($event)\" [class.small]=\"small()\">\n <span>\n @if (icon()) {\n <i class=\"ri-{{ icon() }}-line\"></i>\n }\n {{ text() | translate }}\n </span>\n @if (nb() >= 0) {\n <dsv-chip color=\"secondary\">{{ nb() }}</dsv-chip>\n }\n</a>\n<ng-content></ng-content>\n", styles: [":host{--a-margin: 5px 10px;--a-padding: 10px;--a-color: inherit;display:flex;flex-direction:column;-webkit-user-select:none;user-select:none}:host a{margin:var(--a-margin);padding:var(--a-padding);color:var(--a-color);display:flex;justify-content:space-between;cursor:pointer}:host a span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host a dsv-chip{font-size:.8rem;padding:3px 7px;min-width:10px}:host a:hover{background-color:#d9d9d9}:host i{margin-right:10px}:host .text{font-size:1rem;font-weight:700}:host .text.small{margin-left:20px}:host.active .small{--a-color: #6e6e6e}:host:not(.active) .small{--a-color: #aeaeae}:host-context(body.dark) a:hover{background-color:#313131!important}:host-context(body.dark) a dsv-chip{color:var(--text)!important}:host-context(body.dark).active .small{--a-color: #aeaeae}:host-context(body.dark):not(.active) .small{--a-color: #6e6e6e}\n"], dependencies: [{ kind: "component", type: DsvChipComponent, selector: "dsv-chip", inputs: ["text"], outputs: ["delete"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
36
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: DsvItemComponent, isStandalone: true, selector: "dsv-item", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, nb: { classPropertyName: "nb", publicName: "nb", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, small: { classPropertyName: "small", publicName: "small", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<a [href]=\"this.url() ?? '#'\" class=\"text\" (click)=\"doClick($event)\" [class.small]=\"small()\">\n <span>\n @if (icon()) {\n <i class=\"ri-{{ icon() }}-line\"></i>\n }\n {{ text() | translate }}\n </span>\n @if (nb() >= 0) {\n <dsv-chip color=\"secondary\">{{ nb() }}</dsv-chip>\n }\n</a>\n<ng-content></ng-content>\n", styles: [":host{--a-margin: 5px 10px;--a-padding: 10px;--a-color: inherit;display:flex;flex-direction:column;-webkit-user-select:none;user-select:none}:host a{margin:var(--a-margin);padding:var(--a-padding);color:var(--a-color);display:flex;justify-content:space-between;cursor:pointer}:host a span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host a dsv-chip{font-size:.8rem;padding:3px 7px;min-width:10px}:host a:hover{background-color:#d9d9d9}:host i{margin-right:10px}:host .text{font-size:1rem;font-weight:700}:host .text.small{margin-left:20px}:host.active .small{--a-color: #6e6e6e}:host:not(.active) .small{--a-color: #aeaeae}:host-context(body.dark) a:hover{background-color:#313131!important}:host-context(body.dark) a dsv-chip{color:var(--text)!important}:host-context(body.dark).active .small{--a-color: #aeaeae}:host-context(body.dark):not(.active) .small{--a-color: #6e6e6e}\n"], dependencies: [{ kind: "component", type: DsvChipComponent, selector: "dsv-chip", inputs: ["text"], outputs: ["delete"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
32
38
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvItemComponent, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvItemComponent, decorators: [{
34
40
  type: Component,
35
41
  args: [{ selector: 'dsv-item', imports: [DsvChipComponent, TranslatePipe], template: "<a [href]=\"this.url() ?? '#'\" class=\"text\" (click)=\"doClick($event)\" [class.small]=\"small()\">\n <span>\n @if (icon()) {\n <i class=\"ri-{{ icon() }}-line\"></i>\n }\n {{ text() | translate }}\n </span>\n @if (nb() >= 0) {\n <dsv-chip color=\"secondary\">{{ nb() }}</dsv-chip>\n }\n</a>\n<ng-content></ng-content>\n", styles: [":host{--a-margin: 5px 10px;--a-padding: 10px;--a-color: inherit;display:flex;flex-direction:column;-webkit-user-select:none;user-select:none}:host a{margin:var(--a-margin);padding:var(--a-padding);color:var(--a-color);display:flex;justify-content:space-between;cursor:pointer}:host a span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host a dsv-chip{font-size:.8rem;padding:3px 7px;min-width:10px}:host a:hover{background-color:#d9d9d9}:host i{margin-right:10px}:host .text{font-size:1rem;font-weight:700}:host .text.small{margin-left:20px}:host.active .small{--a-color: #6e6e6e}:host:not(.active) .small{--a-color: #aeaeae}:host-context(body.dark) a:hover{background-color:#313131!important}:host-context(body.dark) a dsv-chip{color:var(--text)!important}:host-context(body.dark).active .small{--a-color: #aeaeae}:host-context(body.dark):not(.active) .small{--a-color: #6e6e6e}\n"] }]
36
42
  }], ctorParameters: () => [], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], nb: [{ type: i0.Input, args: [{ isSignal: true, alias: "nb", required: false }] }], url: [{ type: i0.Input, args: [{ isSignal: true, alias: "url", required: false }] }], small: [{ type: i0.Input, args: [{ isSignal: true, alias: "small", required: false }] }], callback: [{ type: i0.Output, args: ["callback"] }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-item.mjs","sources":["../../../projects/ng-dsv/ds/item/component/item.component.ts","../../../projects/ng-dsv/ds/item/component/item.component.html","../../../projects/ng-dsv/ds/item/ng-vagabond-lab-ng-dsv-ds-item.ts"],"sourcesContent":["import { Component, effect, inject, input, output, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isCallback } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvChipComponent } from '@ng-vagabond-lab/ng-dsv/ds/chip';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-item',\n imports: [DsvChipComponent, TranslatePipe],\n templateUrl: './item.component.html',\n styleUrls: ['./item.component.scss'],\n})\nexport class DsvItemComponent {\n readonly router = inject(Router);\n\n readonly icon = input<string>('');\n readonly text = input<string>('');\n readonly nb = input<number>(-1);\n readonly url = input<string>();\n readonly small = input<boolean>(false);\n\n readonly callback = output<void>();\n\n readonly isCallback = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n this.isCallback.set(isCallback(this.callback));\n });\n }\n\n doClick(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.url()) {\n this.router.navigate([this.url()]);\n }\n this.isCallback() && this.callback.emit();\n }\n}\n","<a [href]=\"this.url() ?? '#'\" class=\"text\" (click)=\"doClick($event)\" [class.small]=\"small()\">\n <span>\n @if (icon()) {\n <i class=\"ri-{{ icon() }}-line\"></i>\n }\n {{ text() | translate }}\n </span>\n @if (nb() >= 0) {\n <dsv-chip color=\"secondary\">{{ nb() }}</dsv-chip>\n }\n</a>\n<ng-content></ng-content>\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-item.mjs","sources":["../../../projects/ng-dsv/ds/item/component/item.component.ts","../../../projects/ng-dsv/ds/item/component/item.component.html","../../../projects/ng-dsv/ds/item/ng-vagabond-lab-ng-dsv-ds-item.ts"],"sourcesContent":["import { Component, effect, inject, input, output, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isCallback } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvChipComponent } from '@ng-vagabond-lab/ng-dsv/ds/chip';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-item',\n imports: [DsvChipComponent, TranslatePipe],\n templateUrl: './item.component.html',\n styleUrls: ['./item.component.scss'],\n})\nexport class DsvItemComponent {\n readonly router = inject(Router);\n\n readonly icon = input<string>('');\n readonly text = input<string>('');\n readonly nb = input<number>(-1);\n readonly url = input<string>();\n readonly small = input<boolean>(false);\n\n readonly callback = output<void>();\n\n readonly isCallback = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n this.isCallback.set(isCallback(this.callback));\n });\n }\n\n doClick(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.url()) {\n this.router.navigate([this.url()]);\n }\n this.isCallback() && this.callback.emit();\n }\n}\n","<a [href]=\"this.url() ?? '#'\" class=\"text\" (click)=\"doClick($event)\" [class.small]=\"small()\">\n <span>\n @if (icon()) {\n <i class=\"ri-{{ icon() }}-line\"></i>\n }\n {{ text() | translate }}\n </span>\n @if (nb() >= 0) {\n <dsv-chip color=\"secondary\">{{ nb() }}</dsv-chip>\n }\n</a>\n<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -2,13 +2,16 @@ import * as i0 from '@angular/core';
2
2
  import { input, Component } from '@angular/core';
3
3
 
4
4
  class LinearProgressComponent {
5
- load = input(false, ...(ngDevMode ? [{ debugName: "load" }] : /* istanbul ignore next */ []));
6
- value = input(0, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
7
- indeterminate = input(true, ...(ngDevMode ? [{ debugName: "indeterminate" }] : /* istanbul ignore next */ []));
8
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LinearProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: LinearProgressComponent, isStandalone: true, selector: "dsv-linear-progress", inputs: { load: { classPropertyName: "load", publicName: "load", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (load()) {\n <div class=\"progress-container\">\n <div\n class=\"progress-bar\"\n [style.width]=\"indeterminate() ? null : value + '%'\"\n [class.indeterminate]=\"indeterminate()\"\n ></div>\n </div>\n}\n", styles: [".progress-container{width:100%;height:3px;background-color:transparent;overflow:hidden;position:absolute;z-index:1}.progress-container .progress-bar{height:100%}.progress-container .indeterminate{width:100%;height:100%;background-color:var(--primary);animation:indeterminateAnimation .5s infinite linear;transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(0) scaleX(0)}40%{transform:translate(0) scaleX(.4)}to{transform:translate(100%) scaleX(.5)}}\n"] });
5
+ load = input(false, /* @ts-ignore */
6
+ ...(ngDevMode ? [{ debugName: "load" }] : /* istanbul ignore next */ []));
7
+ value = input(0, /* @ts-ignore */
8
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
9
+ indeterminate = input(true, /* @ts-ignore */
10
+ ...(ngDevMode ? [{ debugName: "indeterminate" }] : /* istanbul ignore next */ []));
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: LinearProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: LinearProgressComponent, isStandalone: true, selector: "dsv-linear-progress", inputs: { load: { classPropertyName: "load", publicName: "load", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (load()) {\n <div class=\"progress-container\">\n <div\n class=\"progress-bar\"\n [style.width]=\"indeterminate() ? null : value + '%'\"\n [class.indeterminate]=\"indeterminate()\"\n ></div>\n </div>\n}\n", styles: [".progress-container{width:100%;height:3px;background-color:transparent;overflow:hidden;position:absolute;z-index:1}.progress-container .progress-bar{height:100%}.progress-container .indeterminate{width:100%;height:100%;background-color:var(--primary);animation:indeterminateAnimation .5s infinite linear;transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(0) scaleX(0)}40%{transform:translate(0) scaleX(.4)}to{transform:translate(100%) scaleX(.5)}}\n"] });
10
13
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LinearProgressComponent, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: LinearProgressComponent, decorators: [{
12
15
  type: Component,
13
16
  args: [{ selector: 'dsv-linear-progress', template: "@if (load()) {\n <div class=\"progress-container\">\n <div\n class=\"progress-bar\"\n [style.width]=\"indeterminate() ? null : value + '%'\"\n [class.indeterminate]=\"indeterminate()\"\n ></div>\n </div>\n}\n", styles: [".progress-container{width:100%;height:3px;background-color:transparent;overflow:hidden;position:absolute;z-index:1}.progress-container .progress-bar{height:100%}.progress-container .indeterminate{width:100%;height:100%;background-color:var(--primary);animation:indeterminateAnimation .5s infinite linear;transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(0) scaleX(0)}40%{transform:translate(0) scaleX(.4)}to{transform:translate(100%) scaleX(.5)}}\n"] }]
14
17
  }], propDecorators: { load: [{ type: i0.Input, args: [{ isSignal: true, alias: "load", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs","sources":["../../../projects/ng-dsv/ds/linear-progress/component/linear-progress.component.ts","../../../projects/ng-dsv/ds/linear-progress/component/linear-progress.component.html","../../../projects/ng-dsv/ds/linear-progress/ng-vagabond-lab-ng-dsv-ds-linear-progress.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'dsv-linear-progress',\n templateUrl: './linear-progress.component.html',\n styleUrls: ['./linear-progress.component.scss'],\n})\nexport class LinearProgressComponent {\n readonly load = input<boolean>(false);\n readonly value = input<number>(0);\n readonly indeterminate = input<boolean>(true);\n}\n","@if (load()) {\n <div class=\"progress-container\">\n <div\n class=\"progress-bar\"\n [style.width]=\"indeterminate() ? null : value + '%'\"\n [class.indeterminate]=\"indeterminate()\"\n ></div>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAOa,uBAAuB,CAAA;AACvB,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;AAC5B,IAAA,KAAK,GAAG,KAAK,CAAS,CAAC,4EAAC;AACxB,IAAA,aAAa,GAAG,KAAK,CAAU,IAAI,oFAAC;wGAHpC,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,wdCPpC,uQASA,EAAA,MAAA,EAAA,CAAA,ieAAA,CAAA,EAAA,CAAA;;4FDFa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACI,qBAAqB,EAAA,QAAA,EAAA,uQAAA,EAAA,MAAA,EAAA,CAAA,ieAAA,CAAA,EAAA;;;AEHnC;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs","sources":["../../../projects/ng-dsv/ds/linear-progress/component/linear-progress.component.ts","../../../projects/ng-dsv/ds/linear-progress/component/linear-progress.component.html","../../../projects/ng-dsv/ds/linear-progress/ng-vagabond-lab-ng-dsv-ds-linear-progress.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'dsv-linear-progress',\n templateUrl: './linear-progress.component.html',\n styleUrls: ['./linear-progress.component.scss'],\n})\nexport class LinearProgressComponent {\n readonly load = input<boolean>(false);\n readonly value = input<number>(0);\n readonly indeterminate = input<boolean>(true);\n}\n","@if (load()) {\n <div class=\"progress-container\">\n <div\n class=\"progress-bar\"\n [style.width]=\"indeterminate() ? null : value + '%'\"\n [class.indeterminate]=\"indeterminate()\"\n ></div>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAOa,uBAAuB,CAAA;IACvB,IAAI,GAAG,KAAK,CAAU,KAAK;6EAAC;IAC5B,KAAK,GAAG,KAAK,CAAS,CAAC;8EAAC;IACxB,aAAa,GAAG,KAAK,CAAU,IAAI;sFAAC;uGAHpC,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,wdCPpC,uQASA,EAAA,MAAA,EAAA,CAAA,ieAAA,CAAA,EAAA,CAAA;;2FDFa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACI,qBAAqB,EAAA,QAAA,EAAA,uQAAA,EAAA,MAAA,EAAA,CAAA,ieAAA,CAAA,EAAA;;;AEHnC;;AAEG;;;;"}
@@ -12,10 +12,10 @@ class LinkClickablePipe {
12
12
  const html = value.replaceAll(URL_PATTERN, (url) => `<a class="text warning" href="${url}" target="_blank" rel="noopener noreferrer">${url}</a>`);
13
13
  return this.sanitizer.bypassSecurityTrustHtml(html); // NOSONAR: URLs extracted by URL_PATTERN
14
14
  }
15
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LinkClickablePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
16
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: LinkClickablePipe, isStandalone: true, name: "clickableUrl" });
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: LinkClickablePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
16
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: LinkClickablePipe, isStandalone: true, name: "clickableUrl" });
17
17
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LinkClickablePipe, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: LinkClickablePipe, decorators: [{
19
19
  type: Pipe,
20
20
  args: [{
21
21
  name: 'clickableUrl',
@@ -34,10 +34,10 @@ class LinkYoutubePipe {
34
34
  const url = `${YOUTUBE_EMBED_BASE}${key}`;
35
35
  return this.sanitizer.bypassSecurityTrustResourceUrl(url); // NOSONAR: URL validated by YOUTUBE_KEY_PATTERN
36
36
  }
37
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LinkYoutubePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
38
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: LinkYoutubePipe, isStandalone: true, name: "youtubeUrl" });
37
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: LinkYoutubePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
38
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: LinkYoutubePipe, isStandalone: true, name: "youtubeUrl" });
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LinkYoutubePipe, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: LinkYoutubePipe, decorators: [{
41
41
  type: Pipe,
42
42
  args: [{
43
43
  name: 'youtubeUrl',
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs","sources":["../../../projects/ng-dsv/ds/link/pipe/clickable/link.clickable.pipe.ts","../../../projects/ng-dsv/ds/link/pipe/youtube/link.youtube.pipe.ts","../../../projects/ng-dsv/ds/link/pipe/ng-vagabond-lab-ng-dsv-ds-link-pipe.ts"],"sourcesContent":["import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nconst URL_PATTERN = /(https?:\\/\\/[^\\s]+)/g;\n\n@Pipe({\n name: 'clickableUrl',\n standalone: true,\n})\nexport class LinkClickablePipe implements PipeTransform {\n readonly sanitizer = inject(DomSanitizer);\n\n transform(value: string | null | undefined): SafeHtml | null {\n if (!value) {\n return null;\n }\n const html = value.replaceAll(\n URL_PATTERN,\n (url) =>\n `<a class=\"text warning\" href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">${url}</a>`,\n );\n return this.sanitizer.bypassSecurityTrustHtml(html); // NOSONAR: URLs extracted by URL_PATTERN\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nconst YOUTUBE_EMBED_BASE = 'https://www.youtube.com/embed/';\nconst YOUTUBE_KEY_PATTERN = /^[a-zA-Z0-9_-]{11}$/;\n\n@Pipe({\n name: 'youtubeUrl',\n standalone: true,\n})\nexport class LinkYoutubePipe implements PipeTransform {\n readonly sanitizer = inject(DomSanitizer);\n\n transform(key: string | null | undefined): SafeResourceUrl | null {\n if (!key || !YOUTUBE_KEY_PATTERN.test(key)) {\n return null;\n }\n const url = `${YOUTUBE_EMBED_BASE}${key}`;\n return this.sanitizer.bypassSecurityTrustResourceUrl(url); // NOSONAR: URL validated by YOUTUBE_KEY_PATTERN\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAGA,MAAM,WAAW,GAAG,sBAAsB;MAM7B,iBAAiB,CAAA;AACjB,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAEzC,IAAA,SAAS,CAAC,KAAgC,EAAA;QACtC,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,IAAI;QACf;AACA,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CACzB,WAAW,EACX,CAAC,GAAG,KACA,CAAA,8BAAA,EAAiC,GAAG,+CAA+C,GAAG,CAAA,IAAA,CAAM,CACnG;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACxD;wGAbS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;ACLD,MAAM,kBAAkB,GAAG,gCAAgC;AAC3D,MAAM,mBAAmB,GAAG,qBAAqB;MAMpC,eAAe,CAAA;AACf,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAEzC,IAAA,SAAS,CAAC,GAA8B,EAAA;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACxC,YAAA,OAAO,IAAI;QACf;AACA,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,kBAAkB,CAAA,EAAG,GAAG,EAAE;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;IAC9D;wGATS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;ACTD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs","sources":["../../../projects/ng-dsv/ds/link/pipe/clickable/link.clickable.pipe.ts","../../../projects/ng-dsv/ds/link/pipe/youtube/link.youtube.pipe.ts","../../../projects/ng-dsv/ds/link/pipe/ng-vagabond-lab-ng-dsv-ds-link-pipe.ts"],"sourcesContent":["import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nconst URL_PATTERN = /(https?:\\/\\/[^\\s]+)/g;\n\n@Pipe({\n name: 'clickableUrl',\n standalone: true,\n})\nexport class LinkClickablePipe implements PipeTransform {\n readonly sanitizer = inject(DomSanitizer);\n\n transform(value: string | null | undefined): SafeHtml | null {\n if (!value) {\n return null;\n }\n const html = value.replaceAll(\n URL_PATTERN,\n (url) =>\n `<a class=\"text warning\" href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">${url}</a>`,\n );\n return this.sanitizer.bypassSecurityTrustHtml(html); // NOSONAR: URLs extracted by URL_PATTERN\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nconst YOUTUBE_EMBED_BASE = 'https://www.youtube.com/embed/';\nconst YOUTUBE_KEY_PATTERN = /^[a-zA-Z0-9_-]{11}$/;\n\n@Pipe({\n name: 'youtubeUrl',\n standalone: true,\n})\nexport class LinkYoutubePipe implements PipeTransform {\n readonly sanitizer = inject(DomSanitizer);\n\n transform(key: string | null | undefined): SafeResourceUrl | null {\n if (!key || !YOUTUBE_KEY_PATTERN.test(key)) {\n return null;\n }\n const url = `${YOUTUBE_EMBED_BASE}${key}`;\n return this.sanitizer.bypassSecurityTrustResourceUrl(url); // NOSONAR: URL validated by YOUTUBE_KEY_PATTERN\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAGA,MAAM,WAAW,GAAG,sBAAsB;MAM7B,iBAAiB,CAAA;AACjB,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAEzC,IAAA,SAAS,CAAC,KAAgC,EAAA;QACtC,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,IAAI;QACf;AACA,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CACzB,WAAW,EACX,CAAC,GAAG,KACA,CAAA,8BAAA,EAAiC,GAAG,+CAA+C,GAAG,CAAA,IAAA,CAAM,CACnG;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACxD;uGAbS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;ACLD,MAAM,kBAAkB,GAAG,gCAAgC;AAC3D,MAAM,mBAAmB,GAAG,qBAAqB;MAMpC,eAAe,CAAA;AACf,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAEzC,IAAA,SAAS,CAAC,GAA8B,EAAA;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACxC,YAAA,OAAO,IAAI;QACf;AACA,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,kBAAkB,CAAA,EAAG,GAAG,EAAE;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;IAC9D;uGATS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;ACTD;;AAEG;;;;"}
@@ -4,7 +4,8 @@ import { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';
4
4
 
5
5
  class DsvListItemDragComponent {
6
6
  listDragService = inject(ListDragService);
7
- variant = input('text', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
7
+ variant = input('text', /* @ts-ignore */
8
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
8
9
  onHandleMouseDown(event) {
9
10
  const li = event.currentTarget.closest('li');
10
11
  if (li) {
@@ -14,30 +15,34 @@ class DsvListItemDragComponent {
14
15
  onTouchStart() {
15
16
  this.listDragService.touchDragging.set(true);
16
17
  }
17
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvListItemDragComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.14", type: DsvListItemDragComponent, isStandalone: true, selector: "dsv-list-item-drag", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<dsv-button\n class=\"drag-handle\"\n icon=\"ri-menu-line\"\n [variant]=\"variant()\"\n color=\"primary\"\n (mousedown)=\"onHandleMouseDown($event)\"\n (touchstart)=\"onTouchStart()\"\n/>\n", styles: [":host .drag-handle{cursor:grab;transition:opacity .15s}:host .drag-handle:active{cursor:grabbing}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
18
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvListItemDragComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.1", type: DsvListItemDragComponent, isStandalone: true, selector: "dsv-list-item-drag", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<dsv-button\n class=\"drag-handle\"\n icon=\"ri-menu-line\"\n [variant]=\"variant()\"\n color=\"primary\"\n (mousedown)=\"onHandleMouseDown($event)\"\n (touchstart)=\"onTouchStart()\"\n/>\n", styles: [":host .drag-handle{cursor:grab;transition:opacity .15s}:host .drag-handle:active{cursor:grabbing}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
19
20
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvListItemDragComponent, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvListItemDragComponent, decorators: [{
21
22
  type: Component,
22
23
  args: [{ selector: 'dsv-list-item-drag', imports: [DsvButtonComponent], template: "<dsv-button\n class=\"drag-handle\"\n icon=\"ri-menu-line\"\n [variant]=\"variant()\"\n color=\"primary\"\n (mousedown)=\"onHandleMouseDown($event)\"\n (touchstart)=\"onTouchStart()\"\n/>\n", styles: [":host .drag-handle{cursor:grab;transition:opacity .15s}:host .drag-handle:active{cursor:grabbing}\n"] }]
23
24
  }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
24
25
 
25
26
  class ListDragService {
26
- dragSrcIndex = signal(null, ...(ngDevMode ? [{ debugName: "dragSrcIndex" }] : /* istanbul ignore next */ []));
27
- touchDragging = signal(false, ...(ngDevMode ? [{ debugName: "touchDragging" }] : /* istanbul ignore next */ []));
28
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ListDragService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ListDragService, providedIn: 'root' });
27
+ dragSrcIndex = signal(null, /* @ts-ignore */
28
+ ...(ngDevMode ? [{ debugName: "dragSrcIndex" }] : /* istanbul ignore next */ []));
29
+ touchDragging = signal(false, /* @ts-ignore */
30
+ ...(ngDevMode ? [{ debugName: "touchDragging" }] : /* istanbul ignore next */ []));
31
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ListDragService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
32
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ListDragService, providedIn: 'root' });
30
33
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ListDragService, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ListDragService, decorators: [{
32
35
  type: Injectable,
33
36
  args: [{ providedIn: 'root' }]
34
37
  }] });
35
38
 
36
39
  class DsvListItemComponent {
37
40
  listDragService = inject(ListDragService);
38
- index = input.required(...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
41
+ index = input.required(/* @ts-ignore */
42
+ ...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
39
43
  callbackOrder = output();
40
- liRef = viewChild('liRef', ...(ngDevMode ? [{ debugName: "liRef" }] : /* istanbul ignore next */ []));
44
+ liRef = viewChild('liRef', /* @ts-ignore */
45
+ ...(ngDevMode ? [{ debugName: "liRef" }] : /* istanbul ignore next */ []));
41
46
  ghostEl = null;
42
47
  onHandleMouseDown(event) {
43
48
  const div = event.currentTarget.closest('div');
@@ -132,19 +137,19 @@ class DsvListItemComponent {
132
137
  this.listDragService.dragSrcIndex.set(null);
133
138
  this.listDragService.touchDragging.set(false);
134
139
  }
135
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
136
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.14", type: DsvListItemComponent, isStandalone: true, selector: "dsv-list-item", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { callbackOrder: "callbackOrder" }, viewQueries: [{ propertyName: "liRef", first: true, predicate: ["liRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<li\n #liRef\n [attr.data-index]=\"index()\"\n [attr.draggable]=\"false\"\n [class.dragging]=\"listDragService.dragSrcIndex() === index()\"\n [class.drag-over]=\"listDragService.dragSrcIndex() === index()\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop(index(), $event)\"\n (dragstart)=\"onDragStart(index(), $event)\"\n (dragend)=\"onDragEnd()\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n>\n <ng-content></ng-content>\n</li>\n", styles: [":host li{display:flex;align-items:center;gap:10px;padding:10px 15px;border:1px solid var(--border);border-radius:5px;transition:opacity .2s,border-color .2s;-webkit-user-select:none;user-select:none}:host li.dragging{opacity:.4}.ghost-drag{display:flex;align-items:center;gap:10px;padding:10px 15px;border:1px solid var(--border);border-radius:5px;opacity:.3;pointer-events:none;z-index:1;position:fixed;transform:scale(.98)}\n"] });
140
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
141
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.1", type: DsvListItemComponent, isStandalone: true, selector: "dsv-list-item", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { callbackOrder: "callbackOrder" }, viewQueries: [{ propertyName: "liRef", first: true, predicate: ["liRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<li\n #liRef\n [attr.data-index]=\"index()\"\n [attr.draggable]=\"false\"\n [class.dragging]=\"listDragService.dragSrcIndex() === index()\"\n [class.drag-over]=\"listDragService.dragSrcIndex() === index()\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop(index(), $event)\"\n (dragstart)=\"onDragStart(index(), $event)\"\n (dragend)=\"onDragEnd()\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n>\n <ng-content></ng-content>\n</li>\n", styles: [":host li{display:flex;align-items:center;gap:10px;padding:10px 15px;border:1px solid var(--border);border-radius:5px;transition:opacity .2s,border-color .2s;-webkit-user-select:none;user-select:none}:host li.dragging{opacity:.4}.ghost-drag{display:flex;align-items:center;gap:10px;padding:10px 15px;border:1px solid var(--border);border-radius:5px;opacity:.3;pointer-events:none;z-index:1;position:fixed;transform:scale(.98)}\n"] });
137
142
  }
138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvListItemComponent, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvListItemComponent, decorators: [{
139
144
  type: Component,
140
145
  args: [{ selector: 'dsv-list-item', imports: [], template: "<li\n #liRef\n [attr.data-index]=\"index()\"\n [attr.draggable]=\"false\"\n [class.dragging]=\"listDragService.dragSrcIndex() === index()\"\n [class.drag-over]=\"listDragService.dragSrcIndex() === index()\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop(index(), $event)\"\n (dragstart)=\"onDragStart(index(), $event)\"\n (dragend)=\"onDragEnd()\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n>\n <ng-content></ng-content>\n</li>\n", styles: [":host li{display:flex;align-items:center;gap:10px;padding:10px 15px;border:1px solid var(--border);border-radius:5px;transition:opacity .2s,border-color .2s;-webkit-user-select:none;user-select:none}:host li.dragging{opacity:.4}.ghost-drag{display:flex;align-items:center;gap:10px;padding:10px 15px;border:1px solid var(--border);border-radius:5px;opacity:.3;pointer-events:none;z-index:1;position:fixed;transform:scale(.98)}\n"] }]
141
146
  }], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: true }] }], callbackOrder: [{ type: i0.Output, args: ["callbackOrder"] }], liRef: [{ type: i0.ViewChild, args: ['liRef', { isSignal: true }] }] } });
142
147
 
143
148
  class DsvListComponent {
144
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
145
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: DsvListComponent, isStandalone: true, selector: "dsv-list", ngImport: i0, template: "<ul>\n <ng-content></ng-content>\n</ul>\n", styles: [":host{width:100%;--ul-margin: 0;--ul-width: 100%}:host ul{list-style:none;padding:0;margin:var(--ul-margin);width:var(--ul-width);display:flex;flex-direction:column;gap:8px}\n"] });
149
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
150
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: DsvListComponent, isStandalone: true, selector: "dsv-list", ngImport: i0, template: "<ul>\n <ng-content></ng-content>\n</ul>\n", styles: [":host{width:100%;--ul-margin: 0;--ul-width: 100%}:host ul{list-style:none;padding:0;margin:var(--ul-margin);width:var(--ul-width);display:flex;flex-direction:column;gap:8px}\n"] });
146
151
  }
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvListComponent, decorators: [{
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvListComponent, decorators: [{
148
153
  type: Component,
149
154
  args: [{ selector: 'dsv-list', imports: [], template: "<ul>\n <ng-content></ng-content>\n</ul>\n", styles: [":host{width:100%;--ul-margin: 0;--ul-width: 100%}:host ul{list-style:none;padding:0;margin:var(--ul-margin);width:var(--ul-width);display:flex;flex-direction:column;gap:8px}\n"] }]
150
155
  }] });