@shival99/z-vnetcity 1.4.16 → 1.4.17
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/shival99-z-vnetcity-components-z-calendar.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-calendar.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-editor.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-editor.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-input.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-input.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-select.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-table.mjs +4 -3
- package/fesm2022/shival99-z-vnetcity-components-z-table.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-upload.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-upload.mjs.map +1 -1
- package/package.json +1 -1
- package/types/shival99-z-vnetcity-components-z-calendar.d.ts +2 -2
- package/types/shival99-z-vnetcity-components-z-editor.d.ts +2 -2
- package/types/shival99-z-vnetcity-components-z-input.d.ts +2 -2
- package/types/shival99-z-vnetcity-components-z-modal.d.ts +1 -1
- package/types/shival99-z-vnetcity-components-z-select.d.ts +2 -2
- package/types/shival99-z-vnetcity-components-z-upload.d.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-vnetcity-components-z-upload.mjs","sources":["../../../../libs/core-ui/components/z-upload/z-upload.types.ts","../../../../libs/core-ui/components/z-upload/z-upload.variants.ts","../../../../libs/core-ui/components/z-upload/z-upload.component.ts","../../../../libs/core-ui/components/z-upload/z-upload.component.html","../../../../libs/core-ui/components/z-upload/shival99-z-vnetcity-components-z-upload.ts"],"sourcesContent":["import type { Signal } from '@angular/core';\n\nexport type ZUploadSize = 'sm' | 'default' | 'lg';\nexport type ZUploadStatus = 'pending' | 'uploading' | 'success' | 'error';\n\nexport interface ZUploadFile {\n id: string;\n name: string;\n size: number;\n type: string;\n file?: File;\n url?: string;\n progress: number;\n status: ZUploadStatus;\n}\n\nexport interface ZUploadError {\n file: File;\n error: string;\n}\n\nexport interface ZUploadValidator {\n error: string;\n message: string;\n validate?: (files: ZUploadFile[]) => boolean;\n}\n\nexport interface ZUploadControl {\n validate: () => void;\n reset: () => void;\n clearFiles: () => void;\n openFileDialog: () => void;\n markAsTouched: () => void;\n markAsUntouched: () => void;\n markAsDirty: () => void;\n markAsPristine: () => void;\n hasError: Signal<boolean>;\n files: Signal<ZUploadFile[]>;\n errorMessage: Signal<string>;\n}\n\nexport const formatFileSize = (bytes: number): string => {\n if (bytes === 0) {\n return '0 B';\n }\n\n const units = ['B', 'KB', 'MB', 'GB'];\n const k = 1024;\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const size = bytes / Math.pow(k, i);\n return `${size.toFixed(i > 0 ? 1 : 0)} ${units[i]}`;\n};\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zUploadDropzoneVariants = cva(\n [\n 'relative flex flex-col items-center justify-center rounded-[6px] border-2 border-dashed',\n 'transition-[border-color,background-color] duration-200 cursor-pointer',\n 'hover:border-primary/50 hover:bg-primary/5',\n ],\n {\n variants: {\n zSize: {\n sm: 'min-h-24 gap-1 p-3',\n default: 'min-h-32 gap-2 p-4',\n lg: 'min-h-40 gap-3 p-6',\n },\n zStatus: {\n default: 'border-input bg-background',\n active: 'border-primary bg-primary/10',\n disabled: 'opacity-50 cursor-not-allowed bg-muted border-muted',\n readonly: 'opacity-70 cursor-default bg-muted/50 border-muted',\n error: 'border-destructive! bg-destructive/5 hover:border-destructive!',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zStatus: 'default',\n },\n }\n);\n\nexport type ZUploadDropzoneVariants = VariantProps<typeof zUploadDropzoneVariants>;\n\nexport const zUploadFileItemVariants = cva(\n [\n 'relative flex items-center gap-3 rounded-[6px] border border-input bg-background p-3',\n 'transition-all duration-200',\n ],\n {\n variants: {\n zStatus: {\n pending: '',\n uploading: '',\n success: '',\n error: '',\n },\n },\n defaultVariants: {\n zStatus: 'pending',\n },\n }\n);\n\nexport type ZUploadFileItemVariants = VariantProps<typeof zUploadFileItemVariants>;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n type OnInit,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n type AbstractControl,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NgControl,\n NgModel,\n PristineChangeEvent,\n TouchedChangeEvent,\n} from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZIconComponent } from '@shival99/z-vnetcity/components/z-icon';\nimport { ZLoadingComponent } from '@shival99/z-vnetcity/components/z-loading';\nimport { ZTooltipDirective } from '@shival99/z-vnetcity/components/z-tooltip';\nimport { ZTranslateService } from '@shival99/z-vnetcity/services';\nimport { zUuid, zMergeClasses, zTransform } from '@shival99/z-vnetcity/utils';\nimport type { ClassValue } from 'clsx';\nimport { filter, merge } from 'rxjs';\nimport {\n formatFileSize,\n type ZUploadControl,\n type ZUploadError,\n type ZUploadFile,\n type ZUploadSize,\n type ZUploadValidator,\n} from './z-upload.types';\nimport { zUploadDropzoneVariants, zUploadFileItemVariants } from './z-upload.variants';\n\n@Component({\n selector: 'z-upload',\n imports: [ZIconComponent, ZLoadingComponent, ZTooltipDirective, TranslatePipe],\n standalone: true,\n templateUrl: './z-upload.component.html',\n styleUrl: './z-upload.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZUploadComponent),\n multi: true,\n },\n TranslatePipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'zUpload',\n})\nexport class ZUploadComponent implements OnInit, ControlValueAccessor {\n private readonly _injector = inject(Injector);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _zTranslate = inject(ZTranslateService);\n\n protected readonly fileInputRef = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n public readonly zOnUpload = output<ZUploadFile[]>();\n public readonly zOnRemove = output<ZUploadFile>();\n public readonly zOnDownload = output<ZUploadFile>();\n public readonly zOnError = output<ZUploadError>();\n public readonly zOnFileChange = output<File[]>();\n public readonly zControl = output<ZUploadControl>();\n\n public readonly class = input<ClassValue>('');\n public readonly zLabel = input<string>('');\n public readonly zLabelClass = input<string>('');\n public readonly zNote = input<string>('');\n public readonly zSize = input<ZUploadSize>('default');\n public readonly zAcceptFile = input<string>('*');\n public readonly zMultipleFile = input(false, { transform: zTransform });\n public readonly zMaxSize = input<number>(10);\n public readonly zMaxFiles = input<number>(5);\n public readonly zRequired = input(false, { transform: zTransform });\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zReadonly = input(false, { transform: zTransform });\n public readonly zLoading = input(false, { transform: zTransform });\n public readonly zShowProgress = input(true, { transform: zTransform });\n public readonly zValidators = input<ZUploadValidator[]>([]);\n\n public readonly files = signal<ZUploadFile[]>([]);\n protected readonly inputId = zUuid('z-upload');\n protected readonly isDragOver = signal(false);\n protected readonly isTouched = signal(false);\n\n private readonly _dirty = signal(false);\n private readonly _fileError = signal<string>('');\n private readonly _disabled = signal(false);\n private readonly _formControl = signal<AbstractControl | null>(null);\n private readonly _formStateVersion = signal(0);\n private readonly _isNgModel = signal(false);\n private _onChange: (value: ZUploadFile[]) => void = () => void 0;\n private _onTouched: () => void = () => void 0;\n private _ngControl: NgControl | null = null;\n\n protected readonly isDisabled = computed(() => this._disabled() || this.zDisabled());\n\n protected readonly isBlocked = computed(() => this.isDisabled() || this.zLoading() || this.zReadonly());\n\n private readonly _shouldShowValidation = computed(() => {\n const control = this._formControl();\n this._formStateVersion();\n\n if (this._isNgModel()) {\n return this._dirty() || this.isTouched();\n }\n\n if (control) {\n return control.dirty;\n }\n\n return this._dirty() || this.isTouched();\n });\n\n protected readonly hasError = computed(() => {\n if (this._fileError()) {\n return true;\n }\n\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return true;\n }\n\n const control = this._formControl();\n this._formStateVersion();\n if (!control) {\n return false;\n }\n\n return control.invalid && this._shouldShowValidation();\n });\n\n protected readonly showError = computed(\n () => this.hasError() && (this._shouldShowValidation() || !!this._fileError())\n );\n\n protected readonly errorMessage = computed(() => {\n const fileError = this._fileError();\n if (fileError) {\n return fileError;\n }\n\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return customErrors[0];\n }\n\n const control = this._formControl();\n const errors = control?.errors;\n if (!errors) {\n return '';\n }\n\n const validators = this.zValidators();\n for (const validator of validators) {\n if (errors[validator.error]) {\n return validator.message;\n }\n }\n\n return '';\n });\n\n protected readonly currentStatus = computed(() => {\n if (this.isDisabled()) {\n return 'disabled';\n }\n if (this.zReadonly()) {\n return 'readonly';\n }\n if (this._fileError()) {\n return 'error';\n }\n if (this.hasError() && this._shouldShowValidation()) {\n return 'error';\n }\n if (this.isDragOver()) {\n return 'active';\n }\n return 'default';\n });\n\n protected readonly dropzoneClasses = computed(() =>\n zMergeClasses(\n zUploadDropzoneVariants({\n zSize: this.zSize(),\n zStatus: this.currentStatus(),\n }),\n this.class()\n )\n );\n\n protected readonly acceptTypes = computed(() => {\n const accept = this.zAcceptFile();\n return accept === '*' ? '' : accept;\n });\n\n protected readonly formatFileSize = formatFileSize;\n protected readonly getFileItemClasses = (file: ZUploadFile) => zUploadFileItemVariants({ zStatus: file.status });\n\n public ngOnInit(): void {\n queueMicrotask(() => {\n try {\n this._ngControl = this._injector.get(NgControl, null);\n this._isNgModel.set(this._ngControl instanceof NgModel);\n\n if (this._ngControl?.control) {\n const { control } = this._ngControl;\n this._formControl.set(control);\n merge(\n control.statusChanges,\n control.valueChanges,\n control.events.pipe(\n filter(event => event instanceof PristineChangeEvent || event instanceof TouchedChangeEvent)\n )\n )\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._formStateVersion.update(v => v + 1);\n });\n }\n } catch {\n this._ngControl = null;\n }\n });\n\n setTimeout(() => this._emitControl());\n }\n\n public writeValue(value: ZUploadFile[] | null): void {\n this.files.set(value ?? []);\n }\n\n public registerOnChange(fn: (value: ZUploadFile[]) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n public updateProgress(fileId: string, progress: number): void {\n this.files.update(files =>\n files.map(f => {\n if (f.id !== fileId) {\n return f;\n }\n return {\n ...f,\n progress: Math.min(100, Math.max(0, progress)),\n status: progress >= 100 ? 'success' : 'uploading',\n };\n })\n );\n this._notifyChange();\n }\n\n public setFileStatus(fileId: string, status: ZUploadFile['status']): void {\n this.files.update(files =>\n files.map(f => {\n if (f.id !== fileId) {\n return f;\n }\n return { ...f, status };\n })\n );\n this._notifyChange();\n }\n\n public clearFiles(): void {\n this.files.set([]);\n this._notifyChange();\n }\n\n public validate(): void {\n this.isTouched.set(true);\n this._dirty.set(true);\n this._onTouched();\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsDirty();\n this._ngControl.control.markAsTouched();\n }\n }\n\n public reset(): void {\n this.files.set([]);\n this.isTouched.set(false);\n this._dirty.set(false);\n this._fileError.set('');\n this._onChange([]);\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsPristine();\n this._ngControl.control.markAsUntouched();\n }\n }\n\n public markAsTouched(): void {\n this.isTouched.set(true);\n this._onTouched();\n }\n\n public markAsUntouched(): void {\n this.isTouched.set(false);\n }\n\n public markAsDirty(): void {\n this._dirty.set(true);\n }\n\n public markAsPristine(): void {\n this._dirty.set(false);\n }\n\n private _emitControl(): void {\n this.zControl.emit({\n validate: () => this.validate(),\n reset: () => this.reset(),\n clearFiles: () => this.clearFiles(),\n openFileDialog: () => this.openFileDialog(),\n markAsTouched: () => this.markAsTouched(),\n markAsUntouched: () => this.markAsUntouched(),\n markAsDirty: () => this.markAsDirty(),\n markAsPristine: () => this.markAsPristine(),\n hasError: this.hasError,\n files: this.files.asReadonly(),\n errorMessage: this.errorMessage,\n });\n }\n\n public getFiles(): File[] {\n return this.files()\n .filter(f => f.file)\n .map(f => f.file as File);\n }\n\n protected openFileDialog(): void {\n if (this.isBlocked()) {\n return;\n }\n this.fileInputRef()?.nativeElement.click();\n }\n\n protected onFileSelected(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (!input.files?.length) {\n return;\n }\n\n this._processFiles(Array.from(input.files));\n input.value = '';\n }\n\n protected onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (this.isBlocked()) {\n return;\n }\n this.isDragOver.set(true);\n }\n\n protected onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver.set(false);\n }\n\n protected onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver.set(false);\n\n if (this.isBlocked()) {\n return;\n }\n\n const droppedFiles = event.dataTransfer?.files;\n if (!droppedFiles?.length) {\n return;\n }\n\n this._processFiles(Array.from(droppedFiles));\n }\n\n protected removeFile(file: ZUploadFile): void {\n if (this.zLoading()) {\n return;\n }\n\n this.files.update(files => files.filter(f => f.id !== file.id));\n this._notifyChange();\n this._emitFileChange();\n this.zOnRemove.emit(file);\n }\n\n protected downloadFile(file: ZUploadFile): void {\n if (this.zLoading()) {\n return;\n }\n\n this.zOnDownload.emit(file);\n if (file.url) {\n const link = document.createElement('a');\n link.href = file.url;\n link.download = file.name;\n link.target = '_blank';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n return;\n }\n\n if (file.file) {\n const url = URL.createObjectURL(file.file);\n const link = document.createElement('a');\n link.href = url;\n link.download = file.name;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n }\n }\n\n private _getValidationErrors(): string[] {\n const validators = this.zValidators();\n const currentFiles = this.files();\n const control = this._formControl();\n const errors: string[] = [];\n\n const isRequired = this.zRequired() || control?.errors?.['required'];\n if (isRequired && currentFiles.length === 0) {\n this._zTranslate.currentLang();\n errors.push(this._zTranslate.instant('i18n_z_ui_upload_required'));\n }\n\n for (const validator of validators) {\n if (validator.validate && !validator.validate(currentFiles)) {\n errors.push(validator.message);\n }\n }\n\n return errors;\n }\n\n private _processFiles(newFiles: File[]): void {\n const maxFiles = this.zMaxFiles();\n const maxSize = this.zMaxSize() * 1024 * 1024;\n const accept = this.zAcceptFile();\n const validFiles: ZUploadFile[] = [];\n if (!this.zMultipleFile()) {\n this.files.set([]);\n }\n\n for (const file of newFiles) {\n if (!this.zMultipleFile() && validFiles.length > 0) {\n break;\n }\n\n if (this.zMultipleFile()) {\n const currentCount = this.files().length + validFiles.length;\n if (currentCount >= maxFiles) {\n const errorMsg = this._zTranslate.instant('i18n_z_ui_upload_max_files', { count: maxFiles });\n this._fileError.set(errorMsg);\n this.zOnError.emit({ file, error: errorMsg });\n continue;\n }\n }\n\n if (file.size > maxSize) {\n const errorMsg = this._zTranslate.instant('i18n_z_ui_upload_max_size', { size: this.zMaxSize() + 'MB' });\n this._fileError.set(errorMsg);\n this.zOnError.emit({ file, error: errorMsg });\n continue;\n }\n\n if (accept !== '*' && !this._isValidFileType(file, accept)) {\n const errorMsg = this._zTranslate.instant('i18n_z_ui_upload_invalid_type');\n this._fileError.set(errorMsg);\n this.zOnError.emit({ file, error: errorMsg });\n continue;\n }\n\n validFiles.push({\n id: zUuid('file'),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: 'pending',\n });\n }\n\n if (validFiles.length === 0) {\n this._notifyChange();\n return;\n }\n\n this._fileError.set('');\n if (!this.zMultipleFile()) {\n this.files.set(validFiles.slice(0, 1));\n this.isTouched.set(true);\n this._dirty.set(true);\n this._onTouched();\n this._notifyChange();\n this._emitFileChange();\n this.zOnUpload.emit(validFiles);\n return;\n }\n\n this.files.update(files => [...files, ...validFiles]);\n this.isTouched.set(true);\n this._dirty.set(true);\n this._onTouched();\n this._notifyChange();\n this._emitFileChange();\n this.zOnUpload.emit(validFiles);\n }\n\n private _emitFileChange(): void {\n const rawFiles = this.getFiles();\n this.zOnFileChange.emit(rawFiles);\n }\n\n private _isValidFileType(file: File, accept: string): boolean {\n const acceptTypes = accept.split(',').map(t => t.trim().toLowerCase());\n\n for (const type of acceptTypes) {\n if (type.startsWith('.')) {\n if (file.name.toLowerCase().endsWith(type)) {\n return true;\n }\n continue;\n }\n\n if (type.endsWith('/*')) {\n const category = type.slice(0, -2);\n if (file.type.startsWith(category + '/')) {\n return true;\n }\n continue;\n }\n\n if (file.type.toLowerCase() === type) {\n return true;\n }\n }\n\n return false;\n }\n\n private _notifyChange(): void {\n this._onChange(this.files());\n }\n}\n","<div class=\"z-upload-wrapper flex w-full flex-col gap-2\">\n @if (zLabel()) {\n <label [for]=\"inputId\" class=\"text-xs leading-none font-medium\" [class]=\"zLabelClass()\">\n {{ zLabel() }}\n @if (zRequired()) {\n <span class=\"text-destructive! ml-0.5\">*</span>\n }\n </label>\n }\n\n <div\n class=\"z-upload-dropzone\"\n [class]=\"dropzoneClasses()\"\n (click)=\"openFileDialog()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\">\n @if (zLoading()) {\n <div class=\"bg-background/80 absolute inset-0 z-10 flex items-center justify-center rounded-[6px]\">\n <svg\n class=\"text-primary size-6 animate-spin\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\">\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n </div>\n }\n\n <svg\n class=\"text-muted-foreground\"\n [class.size-5]=\"zSize() === 'sm'\"\n [class.size-6]=\"zSize() === 'default'\"\n [class.size-8]=\"zSize() === 'lg'\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n @if (isDragOver()) {\n <path d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\" />\n <path d=\"M12 12v9\" />\n <path d=\"m16 16-4-4-4 4\" />\n } @else {\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" x2=\"12\" y1=\"3\" y2=\"15\" />\n }\n </svg>\n\n <div class=\"text-center\">\n <p class=\"text-muted-foreground m-0 text-sm\">\n @if (isDragOver()) {\n {{ 'i18n_z_ui_upload_drop_here' | translate }}\n } @else {\n {{ 'i18n_z_ui_upload_drag_drop' | translate }}\n {{ 'i18n_z_ui_upload_or' | translate }}\n <span class=\"text-primary cursor-pointer font-medium\">{{ 'i18n_z_ui_upload_browse' | translate }}</span>\n }\n </p>\n\n @if (zNote() || zAcceptFile() !== '*') {\n <div class=\"text-muted-foreground/70 mt-2 flex flex-col gap-0.5 text-xs\">\n @if (zNote()) {\n <span>{{ zNote() }}</span>\n }\n @if (zAcceptFile() !== '*') {\n <span>{{ 'i18n_z_ui_upload_accepted' | translate }}: {{ zAcceptFile() }}</span>\n }\n </div>\n }\n </div>\n\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptTypes()\"\n [multiple]=\"zMultipleFile()\"\n [disabled]=\"isBlocked()\"\n (change)=\"onFileSelected($event)\" />\n </div>\n\n @if (showError()) {\n <p class=\"text-destructive animate-in fade-in slide-in-from-top-1 m-0 text-xs duration-200\">\n {{ errorMessage() }}\n </p>\n }\n\n @if (files().length > 0) {\n <div class=\"z-upload-file-list flex flex-col gap-1.5\">\n @for (file of files(); track file.id) {\n <div [class]=\"getFileItemClasses(file)\" class=\"relative overflow-hidden p-2!\">\n <!-- Progress border at bottom -->\n @if (zShowProgress() && file.status === 'uploading') {\n <div\n class=\"bg-primary absolute bottom-0 left-0 h-0.5 transition-all duration-300\"\n [style.width.%]=\"file.progress\"></div>\n }\n\n <div class=\"bg-muted relative flex size-8 shrink-0 items-center justify-center self-start rounded\">\n <z-icon zType=\"lucideFile\" zSize=\"16\" class=\"text-muted-foreground\" />\n </div>\n\n <div class=\"flex min-w-0 flex-1 flex-col\">\n <div class=\"flex items-center gap-1.5\">\n <span class=\"line-clamp-2 text-xs font-medium\" z-tooltip [zContent]=\"file.name\" [zAlwaysShow]=\"false\">\n {{ file.name }}\n </span>\n\n @if (file.status === 'uploading') {\n <z-loading zSize=\"2xs\" class=\"shrink-0\" [zLoading]=\"true\" />\n @if (zShowProgress() && file.progress > 0) {\n <span class=\"text-primary shrink-0 text-[10px] font-medium\">{{ file.progress }}%</span>\n }\n }\n @if (file.status === 'success') {\n <z-icon zType=\"lucideCheckCircle\" zSize=\"14\" class=\"shrink-0 text-green-500\" />\n }\n @if (file.status === 'error') {\n <z-icon zType=\"lucideXCircle\" zSize=\"14\" class=\"text-destructive shrink-0\" />\n }\n </div>\n\n <span class=\"text-muted-foreground mt-0.5 text-[10px]\">\n {{ formatFileSize(file.size) }}\n </span>\n </div>\n\n <div class=\"flex shrink-0 items-center gap-0.5\">\n @if (file.url || file.file) {\n <button\n type=\"button\"\n class=\"group hover:bg-accent flex size-6 cursor-pointer items-center justify-center rounded transition-colors\"\n [class.pointer-events-none]=\"zLoading()\"\n [class.opacity-50]=\"zLoading()\"\n (click)=\"downloadFile(file); $event.stopPropagation()\">\n <z-icon zType=\"lucideDownload\" zSize=\"14\" class=\"text-muted-foreground\" />\n </button>\n }\n\n @if (!zReadonly()) {\n <button\n type=\"button\"\n class=\"hover:bg-destructive/10 flex size-6 cursor-pointer items-center justify-center rounded transition-colors\"\n [class.pointer-events-none]=\"zLoading()\"\n [class.opacity-50]=\"zLoading()\"\n (click)=\"removeFile(file); $event.stopPropagation()\">\n <z-icon zType=\"lucideX\" zSize=\"14\" class=\"text-destructive\" />\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shival99-z-vnetcity-components-z-upload.mjs","sources":["../../../../libs/core-ui/components/z-upload/z-upload.types.ts","../../../../libs/core-ui/components/z-upload/z-upload.variants.ts","../../../../libs/core-ui/components/z-upload/z-upload.component.ts","../../../../libs/core-ui/components/z-upload/z-upload.component.html","../../../../libs/core-ui/components/z-upload/shival99-z-vnetcity-components-z-upload.ts"],"sourcesContent":["import type { Signal } from '@angular/core';\n\nexport type ZUploadSize = 'sm' | 'default' | 'lg';\nexport type ZUploadStatus = 'pending' | 'uploading' | 'success' | 'error';\n\nexport interface ZUploadFile {\n id: string;\n name: string;\n size: number;\n type: string;\n file?: File;\n url?: string;\n progress: number;\n status: ZUploadStatus;\n}\n\nexport interface ZUploadError {\n file: File;\n error: string;\n}\n\nexport interface ZUploadValidator {\n error: string;\n message: string;\n validate?: (files: ZUploadFile[]) => boolean;\n}\n\nexport interface ZUploadControl {\n validate: () => boolean;\n reset: () => void;\n clearFiles: () => void;\n openFileDialog: () => void;\n markAsTouched: () => void;\n markAsUntouched: () => void;\n markAsDirty: () => void;\n markAsPristine: () => void;\n hasError: Signal<boolean>;\n files: Signal<ZUploadFile[]>;\n errorMessage: Signal<string>;\n}\n\nexport const formatFileSize = (bytes: number): string => {\n if (bytes === 0) {\n return '0 B';\n }\n\n const units = ['B', 'KB', 'MB', 'GB'];\n const k = 1024;\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const size = bytes / Math.pow(k, i);\n return `${size.toFixed(i > 0 ? 1 : 0)} ${units[i]}`;\n};\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zUploadDropzoneVariants = cva(\n [\n 'relative flex flex-col items-center justify-center rounded-[6px] border-2 border-dashed',\n 'transition-[border-color,background-color] duration-200 cursor-pointer',\n 'hover:border-primary/50 hover:bg-primary/5',\n ],\n {\n variants: {\n zSize: {\n sm: 'min-h-24 gap-1 p-3',\n default: 'min-h-32 gap-2 p-4',\n lg: 'min-h-40 gap-3 p-6',\n },\n zStatus: {\n default: 'border-input bg-background',\n active: 'border-primary bg-primary/10',\n disabled: 'opacity-50 cursor-not-allowed bg-muted border-muted',\n readonly: 'opacity-70 cursor-default bg-muted/50 border-muted',\n error: 'border-destructive! bg-destructive/5 hover:border-destructive!',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zStatus: 'default',\n },\n }\n);\n\nexport type ZUploadDropzoneVariants = VariantProps<typeof zUploadDropzoneVariants>;\n\nexport const zUploadFileItemVariants = cva(\n [\n 'relative flex items-center gap-3 rounded-[6px] border border-input bg-background p-3',\n 'transition-all duration-200',\n ],\n {\n variants: {\n zStatus: {\n pending: '',\n uploading: '',\n success: '',\n error: '',\n },\n },\n defaultVariants: {\n zStatus: 'pending',\n },\n }\n);\n\nexport type ZUploadFileItemVariants = VariantProps<typeof zUploadFileItemVariants>;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n type OnInit,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n type AbstractControl,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NgControl,\n NgModel,\n PristineChangeEvent,\n TouchedChangeEvent,\n} from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZIconComponent } from '@shival99/z-vnetcity/components/z-icon';\nimport { ZLoadingComponent } from '@shival99/z-vnetcity/components/z-loading';\nimport { ZTooltipDirective } from '@shival99/z-vnetcity/components/z-tooltip';\nimport { ZTranslateService } from '@shival99/z-vnetcity/services';\nimport { zUuid, zMergeClasses, zTransform } from '@shival99/z-vnetcity/utils';\nimport type { ClassValue } from 'clsx';\nimport { filter, merge } from 'rxjs';\nimport {\n formatFileSize,\n type ZUploadControl,\n type ZUploadError,\n type ZUploadFile,\n type ZUploadSize,\n type ZUploadValidator,\n} from './z-upload.types';\nimport { zUploadDropzoneVariants, zUploadFileItemVariants } from './z-upload.variants';\n\n@Component({\n selector: 'z-upload',\n imports: [ZIconComponent, ZLoadingComponent, ZTooltipDirective, TranslatePipe],\n standalone: true,\n templateUrl: './z-upload.component.html',\n styleUrl: './z-upload.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZUploadComponent),\n multi: true,\n },\n TranslatePipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'zUpload',\n})\nexport class ZUploadComponent implements OnInit, ControlValueAccessor {\n private readonly _injector = inject(Injector);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _zTranslate = inject(ZTranslateService);\n\n protected readonly fileInputRef = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n public readonly zOnUpload = output<ZUploadFile[]>();\n public readonly zOnRemove = output<ZUploadFile>();\n public readonly zOnDownload = output<ZUploadFile>();\n public readonly zOnError = output<ZUploadError>();\n public readonly zOnFileChange = output<File[]>();\n public readonly zControl = output<ZUploadControl>();\n\n public readonly class = input<ClassValue>('');\n public readonly zLabel = input<string>('');\n public readonly zLabelClass = input<string>('');\n public readonly zNote = input<string>('');\n public readonly zSize = input<ZUploadSize>('default');\n public readonly zAcceptFile = input<string>('*');\n public readonly zMultipleFile = input(false, { transform: zTransform });\n public readonly zMaxSize = input<number>(10);\n public readonly zMaxFiles = input<number>(5);\n public readonly zRequired = input(false, { transform: zTransform });\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zReadonly = input(false, { transform: zTransform });\n public readonly zLoading = input(false, { transform: zTransform });\n public readonly zShowProgress = input(true, { transform: zTransform });\n public readonly zValidators = input<ZUploadValidator[]>([]);\n\n public readonly files = signal<ZUploadFile[]>([]);\n protected readonly inputId = zUuid('z-upload');\n protected readonly isDragOver = signal(false);\n protected readonly isTouched = signal(false);\n\n private readonly _dirty = signal(false);\n private readonly _fileError = signal<string>('');\n private readonly _disabled = signal(false);\n private readonly _formControl = signal<AbstractControl | null>(null);\n private readonly _formStateVersion = signal(0);\n private readonly _isNgModel = signal(false);\n private _onChange: (value: ZUploadFile[]) => void = () => void 0;\n private _onTouched: () => void = () => void 0;\n private _ngControl: NgControl | null = null;\n\n protected readonly isDisabled = computed(() => this._disabled() || this.zDisabled());\n\n protected readonly isBlocked = computed(() => this.isDisabled() || this.zLoading() || this.zReadonly());\n\n private readonly _shouldShowValidation = computed(() => {\n const control = this._formControl();\n this._formStateVersion();\n\n if (this._isNgModel()) {\n return this._dirty() || this.isTouched();\n }\n\n if (control) {\n return control.dirty;\n }\n\n return this._dirty() || this.isTouched();\n });\n\n protected readonly hasError = computed(() => {\n if (this._fileError()) {\n return true;\n }\n\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return true;\n }\n\n const control = this._formControl();\n this._formStateVersion();\n if (!control) {\n return false;\n }\n\n return control.invalid && this._shouldShowValidation();\n });\n\n protected readonly showError = computed(\n () => this.hasError() && (this._shouldShowValidation() || !!this._fileError())\n );\n\n protected readonly errorMessage = computed(() => {\n const fileError = this._fileError();\n if (fileError) {\n return fileError;\n }\n\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return customErrors[0];\n }\n\n const control = this._formControl();\n const errors = control?.errors;\n if (!errors) {\n return '';\n }\n\n const validators = this.zValidators();\n for (const validator of validators) {\n if (errors[validator.error]) {\n return validator.message;\n }\n }\n\n return '';\n });\n\n protected readonly currentStatus = computed(() => {\n if (this.isDisabled()) {\n return 'disabled';\n }\n if (this.zReadonly()) {\n return 'readonly';\n }\n if (this._fileError()) {\n return 'error';\n }\n if (this.hasError() && this._shouldShowValidation()) {\n return 'error';\n }\n if (this.isDragOver()) {\n return 'active';\n }\n return 'default';\n });\n\n protected readonly dropzoneClasses = computed(() =>\n zMergeClasses(\n zUploadDropzoneVariants({\n zSize: this.zSize(),\n zStatus: this.currentStatus(),\n }),\n this.class()\n )\n );\n\n protected readonly acceptTypes = computed(() => {\n const accept = this.zAcceptFile();\n return accept === '*' ? '' : accept;\n });\n\n protected readonly formatFileSize = formatFileSize;\n protected readonly getFileItemClasses = (file: ZUploadFile) => zUploadFileItemVariants({ zStatus: file.status });\n\n public ngOnInit(): void {\n queueMicrotask(() => {\n try {\n this._ngControl = this._injector.get(NgControl, null);\n this._isNgModel.set(this._ngControl instanceof NgModel);\n\n if (this._ngControl?.control) {\n const { control } = this._ngControl;\n this._formControl.set(control);\n merge(\n control.statusChanges,\n control.valueChanges,\n control.events.pipe(\n filter(event => event instanceof PristineChangeEvent || event instanceof TouchedChangeEvent)\n )\n )\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._formStateVersion.update(v => v + 1);\n });\n }\n } catch {\n this._ngControl = null;\n }\n });\n\n setTimeout(() => this._emitControl());\n }\n\n public writeValue(value: ZUploadFile[] | null): void {\n this.files.set(value ?? []);\n }\n\n public registerOnChange(fn: (value: ZUploadFile[]) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n public updateProgress(fileId: string, progress: number): void {\n this.files.update(files =>\n files.map(f => {\n if (f.id !== fileId) {\n return f;\n }\n return {\n ...f,\n progress: Math.min(100, Math.max(0, progress)),\n status: progress >= 100 ? 'success' : 'uploading',\n };\n })\n );\n this._notifyChange();\n }\n\n public setFileStatus(fileId: string, status: ZUploadFile['status']): void {\n this.files.update(files =>\n files.map(f => {\n if (f.id !== fileId) {\n return f;\n }\n return { ...f, status };\n })\n );\n this._notifyChange();\n }\n\n public clearFiles(): void {\n this.files.set([]);\n this._notifyChange();\n }\n\n public validate(): boolean {\n this.isTouched.set(true);\n this._dirty.set(true);\n this._onTouched();\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsDirty();\n this._ngControl.control.markAsTouched();\n }\n\n return this._ngControl?.control?.valid ?? true;\n }\n\n public reset(): void {\n this.files.set([]);\n this.isTouched.set(false);\n this._dirty.set(false);\n this._fileError.set('');\n this._onChange([]);\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsPristine();\n this._ngControl.control.markAsUntouched();\n }\n }\n\n public markAsTouched(): void {\n this.isTouched.set(true);\n this._onTouched();\n }\n\n public markAsUntouched(): void {\n this.isTouched.set(false);\n }\n\n public markAsDirty(): void {\n this._dirty.set(true);\n }\n\n public markAsPristine(): void {\n this._dirty.set(false);\n }\n\n private _emitControl(): void {\n this.zControl.emit({\n validate: () => this.validate(),\n reset: () => this.reset(),\n clearFiles: () => this.clearFiles(),\n openFileDialog: () => this.openFileDialog(),\n markAsTouched: () => this.markAsTouched(),\n markAsUntouched: () => this.markAsUntouched(),\n markAsDirty: () => this.markAsDirty(),\n markAsPristine: () => this.markAsPristine(),\n hasError: this.hasError,\n files: this.files.asReadonly(),\n errorMessage: this.errorMessage,\n });\n }\n\n public getFiles(): File[] {\n return this.files()\n .filter(f => f.file)\n .map(f => f.file as File);\n }\n\n protected openFileDialog(): void {\n if (this.isBlocked()) {\n return;\n }\n this.fileInputRef()?.nativeElement.click();\n }\n\n protected onFileSelected(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (!input.files?.length) {\n return;\n }\n\n this._processFiles(Array.from(input.files));\n input.value = '';\n }\n\n protected onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (this.isBlocked()) {\n return;\n }\n this.isDragOver.set(true);\n }\n\n protected onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver.set(false);\n }\n\n protected onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver.set(false);\n\n if (this.isBlocked()) {\n return;\n }\n\n const droppedFiles = event.dataTransfer?.files;\n if (!droppedFiles?.length) {\n return;\n }\n\n this._processFiles(Array.from(droppedFiles));\n }\n\n protected removeFile(file: ZUploadFile): void {\n if (this.zLoading()) {\n return;\n }\n\n this.files.update(files => files.filter(f => f.id !== file.id));\n this._notifyChange();\n this._emitFileChange();\n this.zOnRemove.emit(file);\n }\n\n protected downloadFile(file: ZUploadFile): void {\n if (this.zLoading()) {\n return;\n }\n\n this.zOnDownload.emit(file);\n if (file.url) {\n const link = document.createElement('a');\n link.href = file.url;\n link.download = file.name;\n link.target = '_blank';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n return;\n }\n\n if (file.file) {\n const url = URL.createObjectURL(file.file);\n const link = document.createElement('a');\n link.href = url;\n link.download = file.name;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n }\n }\n\n private _getValidationErrors(): string[] {\n const validators = this.zValidators();\n const currentFiles = this.files();\n const control = this._formControl();\n const errors: string[] = [];\n\n const isRequired = this.zRequired() || control?.errors?.['required'];\n if (isRequired && currentFiles.length === 0) {\n this._zTranslate.currentLang();\n errors.push(this._zTranslate.instant('i18n_z_ui_upload_required'));\n }\n\n for (const validator of validators) {\n if (validator.validate && !validator.validate(currentFiles)) {\n errors.push(validator.message);\n }\n }\n\n return errors;\n }\n\n private _processFiles(newFiles: File[]): void {\n const maxFiles = this.zMaxFiles();\n const maxSize = this.zMaxSize() * 1024 * 1024;\n const accept = this.zAcceptFile();\n const validFiles: ZUploadFile[] = [];\n if (!this.zMultipleFile()) {\n this.files.set([]);\n }\n\n for (const file of newFiles) {\n if (!this.zMultipleFile() && validFiles.length > 0) {\n break;\n }\n\n if (this.zMultipleFile()) {\n const currentCount = this.files().length + validFiles.length;\n if (currentCount >= maxFiles) {\n const errorMsg = this._zTranslate.instant('i18n_z_ui_upload_max_files', { count: maxFiles });\n this._fileError.set(errorMsg);\n this.zOnError.emit({ file, error: errorMsg });\n continue;\n }\n }\n\n if (file.size > maxSize) {\n const errorMsg = this._zTranslate.instant('i18n_z_ui_upload_max_size', { size: this.zMaxSize() + 'MB' });\n this._fileError.set(errorMsg);\n this.zOnError.emit({ file, error: errorMsg });\n continue;\n }\n\n if (accept !== '*' && !this._isValidFileType(file, accept)) {\n const errorMsg = this._zTranslate.instant('i18n_z_ui_upload_invalid_type');\n this._fileError.set(errorMsg);\n this.zOnError.emit({ file, error: errorMsg });\n continue;\n }\n\n validFiles.push({\n id: zUuid('file'),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: 'pending',\n });\n }\n\n if (validFiles.length === 0) {\n this._notifyChange();\n return;\n }\n\n this._fileError.set('');\n if (!this.zMultipleFile()) {\n this.files.set(validFiles.slice(0, 1));\n this.isTouched.set(true);\n this._dirty.set(true);\n this._onTouched();\n this._notifyChange();\n this._emitFileChange();\n this.zOnUpload.emit(validFiles);\n return;\n }\n\n this.files.update(files => [...files, ...validFiles]);\n this.isTouched.set(true);\n this._dirty.set(true);\n this._onTouched();\n this._notifyChange();\n this._emitFileChange();\n this.zOnUpload.emit(validFiles);\n }\n\n private _emitFileChange(): void {\n const rawFiles = this.getFiles();\n this.zOnFileChange.emit(rawFiles);\n }\n\n private _isValidFileType(file: File, accept: string): boolean {\n const acceptTypes = accept.split(',').map(t => t.trim().toLowerCase());\n\n for (const type of acceptTypes) {\n if (type.startsWith('.')) {\n if (file.name.toLowerCase().endsWith(type)) {\n return true;\n }\n continue;\n }\n\n if (type.endsWith('/*')) {\n const category = type.slice(0, -2);\n if (file.type.startsWith(category + '/')) {\n return true;\n }\n continue;\n }\n\n if (file.type.toLowerCase() === type) {\n return true;\n }\n }\n\n return false;\n }\n\n private _notifyChange(): void {\n this._onChange(this.files());\n }\n}\n","<div class=\"z-upload-wrapper flex w-full flex-col gap-2\">\n @if (zLabel()) {\n <label [for]=\"inputId\" class=\"text-xs leading-none font-medium\" [class]=\"zLabelClass()\">\n {{ zLabel() }}\n @if (zRequired()) {\n <span class=\"text-destructive! ml-0.5\">*</span>\n }\n </label>\n }\n\n <div\n class=\"z-upload-dropzone\"\n [class]=\"dropzoneClasses()\"\n (click)=\"openFileDialog()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\">\n @if (zLoading()) {\n <div class=\"bg-background/80 absolute inset-0 z-10 flex items-center justify-center rounded-[6px]\">\n <svg\n class=\"text-primary size-6 animate-spin\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\">\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n </div>\n }\n\n <svg\n class=\"text-muted-foreground\"\n [class.size-5]=\"zSize() === 'sm'\"\n [class.size-6]=\"zSize() === 'default'\"\n [class.size-8]=\"zSize() === 'lg'\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n @if (isDragOver()) {\n <path d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\" />\n <path d=\"M12 12v9\" />\n <path d=\"m16 16-4-4-4 4\" />\n } @else {\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" x2=\"12\" y1=\"3\" y2=\"15\" />\n }\n </svg>\n\n <div class=\"text-center\">\n <p class=\"text-muted-foreground m-0 text-sm\">\n @if (isDragOver()) {\n {{ 'i18n_z_ui_upload_drop_here' | translate }}\n } @else {\n {{ 'i18n_z_ui_upload_drag_drop' | translate }}\n {{ 'i18n_z_ui_upload_or' | translate }}\n <span class=\"text-primary cursor-pointer font-medium\">{{ 'i18n_z_ui_upload_browse' | translate }}</span>\n }\n </p>\n\n @if (zNote() || zAcceptFile() !== '*') {\n <div class=\"text-muted-foreground/70 mt-2 flex flex-col gap-0.5 text-xs\">\n @if (zNote()) {\n <span>{{ zNote() }}</span>\n }\n @if (zAcceptFile() !== '*') {\n <span>{{ 'i18n_z_ui_upload_accepted' | translate }}: {{ zAcceptFile() }}</span>\n }\n </div>\n }\n </div>\n\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptTypes()\"\n [multiple]=\"zMultipleFile()\"\n [disabled]=\"isBlocked()\"\n (change)=\"onFileSelected($event)\" />\n </div>\n\n @if (showError()) {\n <p class=\"text-destructive animate-in fade-in slide-in-from-top-1 m-0 text-xs duration-200\">\n {{ errorMessage() }}\n </p>\n }\n\n @if (files().length > 0) {\n <div class=\"z-upload-file-list flex flex-col gap-1.5\">\n @for (file of files(); track file.id) {\n <div [class]=\"getFileItemClasses(file)\" class=\"relative overflow-hidden p-2!\">\n <!-- Progress border at bottom -->\n @if (zShowProgress() && file.status === 'uploading') {\n <div\n class=\"bg-primary absolute bottom-0 left-0 h-0.5 transition-all duration-300\"\n [style.width.%]=\"file.progress\"></div>\n }\n\n <div class=\"bg-muted relative flex size-8 shrink-0 items-center justify-center self-start rounded\">\n <z-icon zType=\"lucideFile\" zSize=\"16\" class=\"text-muted-foreground\" />\n </div>\n\n <div class=\"flex min-w-0 flex-1 flex-col\">\n <div class=\"flex items-center gap-1.5\">\n <span class=\"line-clamp-2 text-xs font-medium\" z-tooltip [zContent]=\"file.name\" [zAlwaysShow]=\"false\">\n {{ file.name }}\n </span>\n\n @if (file.status === 'uploading') {\n <z-loading zSize=\"2xs\" class=\"shrink-0\" [zLoading]=\"true\" />\n @if (zShowProgress() && file.progress > 0) {\n <span class=\"text-primary shrink-0 text-[10px] font-medium\">{{ file.progress }}%</span>\n }\n }\n @if (file.status === 'success') {\n <z-icon zType=\"lucideCheckCircle\" zSize=\"14\" class=\"shrink-0 text-green-500\" />\n }\n @if (file.status === 'error') {\n <z-icon zType=\"lucideXCircle\" zSize=\"14\" class=\"text-destructive shrink-0\" />\n }\n </div>\n\n <span class=\"text-muted-foreground mt-0.5 text-[10px]\">\n {{ formatFileSize(file.size) }}\n </span>\n </div>\n\n <div class=\"flex shrink-0 items-center gap-0.5\">\n @if (file.url || file.file) {\n <button\n type=\"button\"\n class=\"group hover:bg-accent flex size-6 cursor-pointer items-center justify-center rounded transition-colors\"\n [class.pointer-events-none]=\"zLoading()\"\n [class.opacity-50]=\"zLoading()\"\n (click)=\"downloadFile(file); $event.stopPropagation()\">\n <z-icon zType=\"lucideDownload\" zSize=\"14\" class=\"text-muted-foreground\" />\n </button>\n }\n\n @if (!zReadonly()) {\n <button\n type=\"button\"\n class=\"hover:bg-destructive/10 flex size-6 cursor-pointer items-center justify-center rounded transition-colors\"\n [class.pointer-events-none]=\"zLoading()\"\n [class.opacity-50]=\"zLoading()\"\n (click)=\"removeFile(file); $event.stopPropagation()\">\n <z-icon zType=\"lucideX\" zSize=\"14\" class=\"text-destructive\" />\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shival99/z-vnetcity",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.17",
|
|
4
4
|
"description": "Z-UI: Modern Angular UI Component Library - A comprehensive, high-performance design system built with Angular 20+, featuring 40+ customizable components with dark mode, accessibility, and enterprise-ready features.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -40,7 +40,7 @@ interface ZCalendarState {
|
|
|
40
40
|
open: boolean;
|
|
41
41
|
}
|
|
42
42
|
interface ZCalendarControl {
|
|
43
|
-
validate: () =>
|
|
43
|
+
validate: () => boolean;
|
|
44
44
|
reset: () => void;
|
|
45
45
|
focus: () => void;
|
|
46
46
|
blur: () => void;
|
|
@@ -278,7 +278,7 @@ declare class ZCalendarComponent implements OnInit, ControlValueAccessor {
|
|
|
278
278
|
focus(): void;
|
|
279
279
|
blur(): void;
|
|
280
280
|
reset(): void;
|
|
281
|
-
validate():
|
|
281
|
+
validate(): boolean;
|
|
282
282
|
markAsTouched(): void;
|
|
283
283
|
markAsUntouched(): void;
|
|
284
284
|
markAsDirty(): void;
|
|
@@ -15,7 +15,7 @@ interface ZEditorControl {
|
|
|
15
15
|
getContent: () => string;
|
|
16
16
|
getText: () => string;
|
|
17
17
|
getLength: () => number;
|
|
18
|
-
validate: () =>
|
|
18
|
+
validate: () => boolean;
|
|
19
19
|
reset: () => void;
|
|
20
20
|
markAsTouched: () => void;
|
|
21
21
|
markAsUntouched: () => void;
|
|
@@ -100,7 +100,7 @@ declare class ZEditorComponent implements OnInit, ControlValueAccessor {
|
|
|
100
100
|
markAsPristine(): void;
|
|
101
101
|
markAsUntouched(): void;
|
|
102
102
|
setValue(content: string): void;
|
|
103
|
-
validate():
|
|
103
|
+
validate(): boolean;
|
|
104
104
|
reset(): void;
|
|
105
105
|
private _emitControl;
|
|
106
106
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZEditorComponent, never>;
|
|
@@ -15,7 +15,7 @@ interface ZInputState {
|
|
|
15
15
|
readonly: boolean;
|
|
16
16
|
}
|
|
17
17
|
interface ZInputControl {
|
|
18
|
-
validate: () =>
|
|
18
|
+
validate: () => boolean;
|
|
19
19
|
reset: () => void;
|
|
20
20
|
focus: () => void;
|
|
21
21
|
blur: () => void;
|
|
@@ -155,7 +155,7 @@ declare class ZInputComponent implements OnInit, ControlValueAccessor {
|
|
|
155
155
|
markAsUntouched(): void;
|
|
156
156
|
markAsDirty(): void;
|
|
157
157
|
markAsPristine(): void;
|
|
158
|
-
validate():
|
|
158
|
+
validate(): boolean;
|
|
159
159
|
reset(): void;
|
|
160
160
|
setValue(value: string | number | null): void;
|
|
161
161
|
getValue(): string | number | null;
|
|
@@ -220,7 +220,7 @@ declare class ZModalComponent<T, U> extends BasePortalOutlet implements OnDestro
|
|
|
220
220
|
protected readonly effectiveOkText: _angular_core.Signal<string | null | undefined>;
|
|
221
221
|
protected readonly effectiveCancelText: _angular_core.Signal<string | null | undefined>;
|
|
222
222
|
protected readonly effectiveOkDestructive: _angular_core.Signal<boolean | undefined>;
|
|
223
|
-
protected readonly effectiveTypeOk: _angular_core.Signal<"info" | "warning" | "error" | "default" | "primary" | "secondary" | "destructive" | "success" | "outline" | "outline-primary" | "outline-secondary" | "outline-success" | "outline-info" | "outline-warning" | "outline-error" | "outline-destructive" | "outline-success-secondary" | "outline-info-secondary" | "outline-warning-secondary" | "outline-error-secondary" | "outline-destructive-secondary" | "outline-primary-secondary" | "ghost" | "ghost-primary" | "ghost-success" | "ghost-info" | "ghost-warning" | "ghost-error" | "ghost-destructive" | "subtle" |
|
|
223
|
+
protected readonly effectiveTypeOk: _angular_core.Signal<"info" | "warning" | "error" | "link" | "default" | "primary" | "secondary" | "destructive" | "success" | "outline" | "outline-primary" | "outline-secondary" | "outline-success" | "outline-info" | "outline-warning" | "outline-error" | "outline-destructive" | "outline-success-secondary" | "outline-info-secondary" | "outline-warning-secondary" | "outline-error-secondary" | "outline-destructive-secondary" | "outline-primary-secondary" | "ghost" | "ghost-primary" | "ghost-success" | "ghost-info" | "ghost-warning" | "ghost-error" | "ghost-destructive" | "subtle" | null | undefined>;
|
|
224
224
|
protected readonly effectiveOkDisabled: _angular_core.Signal<boolean | undefined>;
|
|
225
225
|
protected readonly effectiveLoading: _angular_core.Signal<boolean>;
|
|
226
226
|
protected readonly effectiveContentLoading: _angular_core.Signal<boolean>;
|
|
@@ -29,7 +29,7 @@ interface ZSelectState {
|
|
|
29
29
|
open: boolean;
|
|
30
30
|
}
|
|
31
31
|
interface ZSelectControl<T = unknown> {
|
|
32
|
-
validate: () =>
|
|
32
|
+
validate: () => boolean;
|
|
33
33
|
reset: () => void;
|
|
34
34
|
focus: () => void;
|
|
35
35
|
blur: () => void;
|
|
@@ -222,7 +222,7 @@ declare class ZSelectComponent<T = unknown> implements OnInit, ControlValueAcces
|
|
|
222
222
|
markAsUntouched(): void;
|
|
223
223
|
markAsDirty(): void;
|
|
224
224
|
markAsPristine(): void;
|
|
225
|
-
validate():
|
|
225
|
+
validate(): boolean;
|
|
226
226
|
protected onTriggerKeydown(event: KeyboardEvent): void;
|
|
227
227
|
protected onTriggerMousedown(): void;
|
|
228
228
|
protected toggleDropdown(): void;
|
|
@@ -27,7 +27,7 @@ interface ZUploadValidator {
|
|
|
27
27
|
validate?: (files: ZUploadFile[]) => boolean;
|
|
28
28
|
}
|
|
29
29
|
interface ZUploadControl {
|
|
30
|
-
validate: () =>
|
|
30
|
+
validate: () => boolean;
|
|
31
31
|
reset: () => void;
|
|
32
32
|
clearFiles: () => void;
|
|
33
33
|
openFileDialog: () => void;
|
|
@@ -99,7 +99,7 @@ declare class ZUploadComponent implements OnInit, ControlValueAccessor {
|
|
|
99
99
|
updateProgress(fileId: string, progress: number): void;
|
|
100
100
|
setFileStatus(fileId: string, status: ZUploadFile['status']): void;
|
|
101
101
|
clearFiles(): void;
|
|
102
|
-
validate():
|
|
102
|
+
validate(): boolean;
|
|
103
103
|
reset(): void;
|
|
104
104
|
markAsTouched(): void;
|
|
105
105
|
markAsUntouched(): void;
|