@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.
- package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs +16 -11
- package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs +32 -22
- package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs +29 -25
- package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs +15 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs +11 -7
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs +26 -16
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs +16 -14
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs +7 -5
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs +22 -14
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs +7 -5
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs +35 -22
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs +70 -47
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs +81 -54
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs +11 -7
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs +19 -11
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs +15 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs +9 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs +6 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs +22 -17
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs +24 -18
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +46 -29
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs +7 -5
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs +33 -21
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs +14 -10
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs +15 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs +11 -10
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs +16 -11
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs +15 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs +7 -5
- package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs +7 -5
- package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs +51 -33
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs +21 -15
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs +5 -4
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs +9 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs +13 -11
- package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs +15 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs +38 -28
- package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs.map +1 -1
- package/package.json +1 -1
- 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(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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: "
|
|
17
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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> </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: "
|
|
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> </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> </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;
|
|
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> </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(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: "
|
|
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;
|
|
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('',
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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,
|
|
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: "
|
|
31
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: "
|
|
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":";;;;;;;MAYa,gBAAgB,CAAA;AAChB,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;
|
|
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,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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: "
|
|
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;
|
|
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: "
|
|
16
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
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: "
|
|
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: "
|
|
38
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
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: "
|
|
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;
|
|
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',
|
|
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: "
|
|
18
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
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
|
+
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,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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: "
|
|
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(
|
|
41
|
+
index = input.required(/* @ts-ignore */
|
|
42
|
+
...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
|
|
39
43
|
callbackOrder = output();
|
|
40
|
-
liRef = viewChild('liRef',
|
|
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: "
|
|
136
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "
|
|
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: "
|
|
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: "
|
|
145
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
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: "
|
|
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
|
}] });
|