@libs-ui/components-inputs-upload 0.2.348-8 → 0.2.350-1
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/esm2022/avatar/avatar.component.mjs +4 -4
- package/esm2022/index.mjs +3 -3
- package/esm2022/upload.component.mjs +3 -4
- package/fesm2022/libs-ui-components-inputs-upload.mjs +48 -82
- package/fesm2022/libs-ui-components-inputs-upload.mjs.map +1 -1
- package/index.d.ts +2 -2
- package/package.json +14 -14
- package/esm2022/pipes/check-file-extension.pipe.mjs +0 -37
- package/pipes/check-file-extension.pipe.d.ts +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-components-inputs-upload.mjs","sources":["../../../../../../libs-ui/components/inputs/upload/src/pipes/calc-duration-video.pipe.ts","../../../../../../libs-ui/components/inputs/upload/src/pipes/check-file-extension.pipe.ts","../../../../../../libs-ui/components/inputs/upload/src/avatar/avatar.component.ts","../../../../../../libs-ui/components/inputs/upload/src/avatar/avatar.component.html","../../../../../../libs-ui/components/inputs/upload/src/defines/helper.define.ts","../../../../../../libs-ui/components/inputs/upload/src/upload-drop-file.directive.ts","../../../../../../libs-ui/components/inputs/upload/src/upload-file.directive.ts","../../../../../../libs-ui/components/inputs/upload/src/upload.component.ts","../../../../../../libs-ui/components/inputs/upload/src/upload.component.html","../../../../../../libs-ui/components/inputs/upload/src/libs-ui-components-inputs-upload.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'LibsUiPipesInputsUploadCalcDurationVideoPipe',\n standalone: true,\n})\nexport class LibsUiPipesInputsUploadCalcDurationVideoPipe implements PipeTransform {\n transform(duration: number) {\n if (!duration) {\n return '0:0';\n }\n duration = Math.round(duration);\n if (duration >= 3600) {\n const hour = Math.floor(duration / 3600);\n const minute = Math.floor((duration - hour * 3600) / 60);\n const second = duration - (hour * 3600 + minute * 60);\n\n return `${hour}:${minute < 10 ? `0${minute}` : minute}:${second < 10 ? `0${second}` : second}`;\n }\n if (duration >= 60) {\n const minute = Math.floor(duration / 60);\n const second = duration - minute * 60;\n\n return `${minute}:${second < 10 ? `0${second}` : second}`;\n }\n\n return `0:${duration}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IFile } from '@libs-ui/interfaces-types';\nimport { DocumentExtList, getFileExtension, ImageExtList, VideoExtList } from '@libs-ui/utils';\n\n@Pipe({\n name: 'LibsUiPipesInputsUploadCheckFileExtensionPipe',\n standalone: true,\n})\nexport class LibsUiPipesInputsUploadCheckFileExtensionPipe implements PipeTransform {\n transform(file: IFile, type: 'image' | 'video' | 'word' | 'xlsx' | 'pdf' | 'pptx' | 'other') {\n const fileExtension = getFileExtension(file);\n\n if (!fileExtension) {\n return false;\n }\n switch (type) {\n case 'image':\n return ImageExtList.includes(fileExtension);\n\n case 'video':\n return VideoExtList.includes(fileExtension);\n\n case 'word':\n return ['doc', 'docx', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'].includes(fileExtension);\n\n case 'xlsx':\n return ['xls', 'xlsx', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'gsheet'].includes(fileExtension);\n\n case 'pdf':\n return ['pdf', 'application/pdf'].includes(fileExtension);\n\n case 'pptx':\n return ['ppt', 'pptx', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'].includes(fileExtension);\n\n case 'other':\n return ![...ImageExtList, ...VideoExtList, ...DocumentExtList].includes(fileExtension);\n }\n }\n}\n","import { AsyncPipe, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, input, model, Optional, output } from '@angular/core';\nimport { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';\nimport { LibsUiIconsGetIconComponentPipe } from '@libs-ui/icons';\nimport { IEvent, IFile } from '@libs-ui/interfaces-types';\nimport { LibsUiPipesSecurityTrustPipe } from '@libs-ui/pipes-security-trust';\nimport { LINK_IMAGE_ERROR_TOKEN_INJECT } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LibsUiPipesInputsUploadCalcDurationVideoPipe } from '../pipes/calc-duration-video.pipe';\nimport { LibsUiPipesInputsUploadCheckFileExtensionPipe } from '../pipes/check-file-extension.pipe';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-upload-avatar',\n templateUrl: './avatar.component.html',\n standalone: true,\n imports: [NgComponentOutlet, AsyncPipe, TranslateModule, LibsUiComponentsSpinnerComponent, LibsUiPipesSecurityTrustPipe, LibsUiPipesInputsUploadCalcDurationVideoPipe, LibsUiPipesInputsUploadCheckFileExtensionPipe, LibsUiIconsGetIconComponentPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsInputsUploadAvatarComponent {\n readonly item = model.required<IFile>();\n readonly showVideoDuration = input<boolean>();\n readonly disable = input<boolean>();\n readonly size = input<number>();\n readonly classInclude = input<string, string | undefined>('', { transform: (value) => value ?? '' });\n\n readonly outOpenPreview = output<IFile>();\n\n constructor(@Optional() @Inject(LINK_IMAGE_ERROR_TOKEN_INJECT) private linkImageError: string) {}\n\n protected async handlerImageError(event: Event) {\n if (!this.linkImageError) {\n return;\n }\n (event as IEvent).target.src = this.linkImageError;\n }\n\n protected handlerImageClick(event: Event) {\n event.stopPropagation();\n this.outOpenPreview.emit(this.item());\n }\n}\n","<div\n class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px] {{ classInclude() }}\"\n [class.libs-ui-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe: 'image') {\n <div\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img\n [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n } @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe: 'video') {\n <div\n class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n @let constHtmlSrc = item().url || item().origin_url || '';\n <video\n #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"constHtmlSrc | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\"></div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n } @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe: 'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: size() || 32 }\" />\n } @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe: 'word') {\n <ng-container *ngComponentOutlet=\"'word' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: size() || 32 }\" />\n } @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe: 'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: size() || 32 }\" />\n } @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe: 'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: size() || 32 }\" />\n } @else {\n <div\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i\n class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n","import { getLabelBySizeFile } from '@libs-ui/utils';\nimport { IUploadDescriptionFormatAndSizeFile, TYPE_FILE_UPLOAD } from '../interfaces/upload.interface';\n\nexport const getDescriptionFormatAndSizeFileDefault = (type: TYPE_FILE_UPLOAD, maxImageSize: number, maxVideoSize: number, maxDocumentSize: number, maxAudioSize: number): IUploadDescriptionFormatAndSizeFile[] => {\n const image = {\n message: 'i18n_note_upload_image_volume',\n interpolateParams: { value: getLabelBySizeFile(maxImageSize, 0) },\n };\n const video = {\n message: 'i18n_note_upload_video_volume',\n interpolateParams: { value: getLabelBySizeFile(maxVideoSize, 0) },\n };\n const document = {\n message: 'i18n_note_upload_file_volume',\n interpolateParams: { value: getLabelBySizeFile(maxDocumentSize, 0) },\n };\n const audio = {\n message: 'i18n_note_upload_audio_volume',\n interpolateParams: { value: getLabelBySizeFile(maxAudioSize, 0) },\n };\n\n const typeSplit = type.split('_');\n const description = [];\n\n if (typeSplit.includes('image')) {\n description.push(image);\n }\n if (typeSplit.includes('audio')) {\n description.push(audio);\n }\n if (typeSplit.includes('video')) {\n description.push(video);\n }\n if (typeSplit.includes('document')) {\n description.push(document);\n }\n\n return description;\n};\n","import { AfterViewInit, Directive, ElementRef, input, OnDestroy, output } from '@angular/core';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { checkMouseOverInContainer, isTypeFile } from '@libs-ui/utils';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsInputsUploadDropFileDirective]',\n standalone: true,\n})\nexport class LibsUiComponentsInputsUploadDropFileDirective implements AfterViewInit, OnDestroy {\n private onDestroy = new Subject<void>();\n\n readonly multiple = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n\n readonly outDragOver = output<IEvent>();\n readonly outDragLeave = output<IEvent>();\n readonly outDrop = output<IEvent>();\n readonly outDropFiles = output<File[]>();\n readonly outDropFile = output<File>();\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit() {\n fromEvent<IEvent>(this.elementRef.nativeElement, 'dragover')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n this.outDragOver.emit(e);\n });\n fromEvent<IEvent>(this.elementRef.nativeElement, 'dragleave')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n if (checkMouseOverInContainer(e, this.elementRef.nativeElement)) {\n return;\n }\n this.outDragLeave.emit(e);\n });\n\n fromEvent<IEvent>(this.elementRef.nativeElement, 'drop')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n this.outDrop.emit(e);\n\n const fileList = Array.from<File>(e.dataTransfer?.files || e.clipboardData?.files || []).filter(isTypeFile);\n\n if (!fileList || !fileList.length) {\n return;\n }\n\n if (this.multiple()) {\n this.outDropFiles.emit(fileList);\n\n return;\n }\n this.outDropFile.emit(fileList[0]);\n });\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import { AfterViewInit, Directive, ElementRef, inject, input, OnDestroy, output } from '@angular/core';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsInputsUploadDirective]',\n standalone: true,\n})\nexport class LibsUiComponentsInputsUploadDirective implements AfterViewInit, OnDestroy {\n private onDestroy = new Subject<void>();\n\n readonly multiple = input<boolean, boolean | undefined>(true, { transform: (val) => val ?? true });\n readonly accessFiles = input<string, string | undefined>('image/x-png,image/jpg,image/jpeg,image/PNG,image/x-PNG,image/JPG,image/JPEG', { transform: (val) => val ?? 'image/x-png,image/jpg,image/jpeg,image/PNG,image/x-PNG,image/JPG,image/JPEG' });\n\n readonly outUploadFiles = output<File[]>();\n readonly outUploadFile = output<File>();\n\n private elementRef = inject(ElementRef);\n\n ngAfterViewInit() {\n fromEvent<IEvent>(this.elementRef.nativeElement, 'click')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n const inputElementUpload = document.createElement('input');\n inputElementUpload.type = 'file';\n inputElementUpload.accept = this.accessFiles();\n inputElementUpload.multiple = this.multiple();\n inputElementUpload.style.display = 'none';\n inputElementUpload.click();\n fromEvent<IEvent>(inputElementUpload, 'change')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((event: IEvent) => {\n const files = Array.from<File>(event.dataTransfer?.files || event.target?.files || []);\n inputElementUpload.remove();\n if (!files?.length) {\n return;\n }\n if (this.multiple()) {\n this.outUploadFiles.emit(files);\n\n return;\n }\n this.outUploadFile.emit(files[0]);\n });\n });\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ComponentRef, computed, effect, ElementRef, inject, input, OnDestroy, OnInit, output, signal, untracked, viewChild, WritableSignal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsGalleryViewerComponent } from '@libs-ui/components-gallery';\nimport { ISaveFile, LibsUiComponentsImageEditorComponent } from '@libs-ui/components-image-editor';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { LibsUiComponentsPreviewFileComponent } from '@libs-ui/components-preview-file';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { IAspectRatio, IFile, IIsValidRequired, IMessageTranslate } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { LibsUiNotificationService } from '@libs-ui/services-notification';\nimport {\n AudioExtList,\n convertBlobToFile,\n convertFileToBase64_ObjectUrl,\n DocumentExtList,\n downloadFileByUrl,\n ERROR_MESSAGE_EMPTY_VALID,\n getFileExtension,\n getLabelBySizeFile,\n ImageExtList,\n isIncludeAudioExtList,\n isIncludeDocumentExtList,\n isIncludeImageExtList,\n isIncludeVideoExtList,\n isTypeAudio,\n isTypeImage,\n isTypeVideo,\n uuid,\n VideoExtList,\n} from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { LibsUiComponentsInputsUploadAvatarComponent } from './avatar/avatar.component';\nimport { getDescriptionFormatAndSizeFileDefault } from './defines/helper.define';\nimport { IUploadConfigDownloadSampleFile, IUploadDescriptionFormatAndSizeFile, IUploadFunctionControlEvent, TYPE_FILE_UPLOAD, TYPE_MODE_FILE_DISPLAY } from './interfaces/upload.interface';\nimport { LibsUiComponentsInputsUploadDropFileDirective } from './upload-drop-file.directive';\nimport { LibsUiComponentsInputsUploadDirective } from './upload-file.directive';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-upload',\n templateUrl: './upload.component.html',\n styleUrls: ['./upload.component.scss'],\n standalone: true,\n imports: [\n TranslateModule,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsInputsUploadAvatarComponent,\n LibsUiComponentsScrollOverlayDirective,\n LibsUiComponentsInputsUploadDirective,\n LibsUiComponentsInputsUploadDropFileDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsInputsUploadComponent implements OnInit, AfterViewInit, OnDestroy {\n // #region PROPERTIES\n private imageEditorComponentRef?: ComponentRef<LibsUiComponentsImageEditorComponent>;\n private previewFileComponentRef?: ComponentRef<LibsUiComponentsPreviewFileComponent>;\n private previewFileImageComponentRef?: ComponentRef<LibsUiComponentsGalleryViewerComponent>;\n protected isDragOver = signal(false);\n protected fileList = signal<Array<WritableSignal<IFile>>>([]);\n protected accessFiles = signal<string>('');\n protected messageError = signal<string | undefined>(undefined);\n protected descriptionFormatAndSizeFileComputed = computed<Array<IUploadDescriptionFormatAndSizeFile>>(() => {\n if (this.descriptionFormatAndSizeFile()?.length) {\n return this.descriptionFormatAndSizeFile() as unknown as Array<IUploadDescriptionFormatAndSizeFile>;\n }\n return getDescriptionFormatAndSizeFileDefault(this.fileType(), this.maxImageSize(), this.maxVideoSize(), this.maxDocumentSize(), this.maxAudioSize());\n });\n\n private onDestroy = new Subject<void>();\n // #endregion\n\n // #region INPUTS\n readonly originFiles = input<Array<WritableSignal<IFile>>, Array<WritableSignal<IFile>> | undefined>([], { transform: (val) => val ?? [] });\n readonly fileType = input<TYPE_FILE_UPLOAD, TYPE_FILE_UPLOAD | undefined>('image_video_document', { transform: (val) => val ?? 'image_video_document' });\n readonly multiple = input<boolean>();\n readonly canUploadIfHasExistFile = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly canSetAvatar = input<boolean | undefined>(false);\n readonly limitFile = input<number, number | undefined>(10, { transform: (val) => val ?? 10 });\n readonly maxTotalSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: (val) => val ?? 10 * 1024 * 1024 });\n readonly maxImageSize = input<number, number | undefined>(5 * 1024 * 1024, { transform: (val) => val ?? 5 * 1024 * 1024 });\n readonly maxVideoSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: (val) => val ?? 10 * 1024 * 1024 });\n readonly maxDocumentSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: (val) => val ?? 10 * 1024 * 1024 });\n readonly maxAudioSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: (val) => val ?? 10 * 1024 * 1024 });\n readonly imageExtList = input<string[], string[] | undefined>(ImageExtList, { transform: (val) => val ?? ImageExtList });\n readonly videoExtList = input<string[], string[] | undefined>(VideoExtList, { transform: (val) => val ?? VideoExtList });\n readonly documentExtList = input<string[], string[] | undefined>(DocumentExtList, { transform: (val) => val ?? DocumentExtList });\n readonly audioExtList = input<string[], string[] | undefined>(AudioExtList, { transform: (val) => val ?? AudioExtList });\n readonly classIncludeListItem = input<string>();\n readonly validRequired = input<IIsValidRequired>();\n readonly disable = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly readonly = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly aspectRatio = input<IAspectRatio>();\n readonly zIndex = input<number, number | undefined>(1200, { transform: (val) => val ?? 1200 });\n readonly ignoreShowSizeFile = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly allowShowPushMessageMaxSizeError = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly messageTypeFileError = input<string, string | undefined>('i18n_the_file_support_format_is_not_correct', { transform: (val) => val || 'i18n_the_file_support_format_is_not_correct' });\n readonly messageMaxSizeError = input<string, string | undefined>('i18n_file_size_exceeds_the_allowed_limit', { transform: (val) => val || 'i18n_file_size_exceeds_the_allowed_limit' });\n readonly messageFileUploadError = input<string, string | undefined>('i18n_invalid_file_upload', { transform: (val) => val || 'i18n_invalid_file_upload' });\n readonly messageTotalFileExceedsError = input<string, string | undefined>('i18n_file_number_exceeds_the_allowed_limit_please_delete_the_file', { transform: (val) => val || 'i18n_file_number_exceeds_the_allowed_limit_please_delete_the_file' });\n readonly configDescriptionInputUpload = input<IMessageTranslate, IMessageTranslate | undefined>(\n { message: 'i18n_drag_file_here_to_upload_or_select_file' },\n {\n transform: (val) => val ?? { message: 'i18n_drag_file_here_to_upload_or_select_file' },\n }\n );\n\n readonly modeDisplayFile = input<TYPE_MODE_FILE_DISPLAY, TYPE_MODE_FILE_DISPLAY | undefined>('full', { transform: (val) => val || 'full' });\n readonly descriptionFormatAndSizeFile = input<Array<IUploadDescriptionFormatAndSizeFile>>();\n readonly showVideoDuration = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly labelConfig = input<ILabel>();\n readonly showPopupUploadWhenHasFileAndModeSingle = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly ignoreIconRemove = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly ignoreIconEdit = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly ignoreIconPreview = input<boolean, boolean | undefined>(true, { transform: (val) => val ?? true });\n readonly classIncludeFileContent = input<string, string | undefined>('', { transform: (value) => value ?? '' });\n readonly classIncludeAvatar = input<string, string | undefined>('', { transform: (value) => value ?? '' });\n readonly showBorderErrorAllItemWhenError = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly configDownloadSampleFile = input<IUploadConfigDownloadSampleFile>();\n // #endregion\n\n // #region OUTPUTS\n readonly outClose = output<boolean>();\n readonly outFileChanged = output<Array<WritableSignal<IFile>>>();\n readonly outFileRemoved = output<WritableSignal<IFile>>();\n readonly outFunctionsControl = output<IUploadFunctionControlEvent>();\n // #endregion\n\n // #region VIEW CHILDREN\n readonly uploadRef = viewChild<ElementRef>('upload');\n readonly uploadInputRef = viewChild<ElementRef>('uploadInput');\n // #endregion\n\n // #region INJECTIONS\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n private translateService = inject(TranslateService);\n private notificationService = inject(LibsUiNotificationService);\n // #endregion\n\n constructor() {\n effect(() => {\n if (this.originFiles()) {\n untracked(() => {\n this.fileList.set([...this.originFiles()]);\n });\n }\n });\n }\n\n // #region LIFECYCLE HOOKS\n ngOnInit() {\n this.outFunctionsControl.emit(this.FunctionsControl);\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.initAccessFiles();\n }, 0);\n }\n // #endregion\n\n // #region INITIALIZATION\n protected async initAccessFiles() {\n const accessExts: string[] = [];\n const typeSplit = this.fileType().split('_');\n\n if (typeSplit.includes('image')) {\n accessExts.push(...this.imageExtList());\n }\n if (typeSplit.includes('document')) {\n accessExts.push(...this.documentExtList());\n }\n if (typeSplit.includes('video')) {\n accessExts.push(...this.videoExtList());\n }\n if (typeSplit.includes('audio')) {\n accessExts.push(...this.audioExtList());\n }\n this.accessFiles.set(accessExts.map((ext) => `.${ext}`).join(','));\n }\n // #endregion\n\n // #region FILE OPERATIONS\n protected async handlerSetClassDrag(toogle: boolean) {\n this.uploadRef()?.nativeElement.classList.toggle('libs-ui-components-inputs-upload-drag-over', toogle);\n }\n\n protected async handleUploadFiles(files: Array<File>) {\n if (this.maxTotalSize()) {\n let total = 0;\n\n for (let i = 0; i < files.length; i++) {\n total += files[i].size;\n }\n\n if (this.maxTotalSize() < total) {\n this.notificationService.showCompTypeTextError(this.translateService.instant('i18n_size_not_number_mb', { number: this.maxTotalSize() / 1024 / 1024 }), { timeRemove: 3000 });\n\n return;\n }\n }\n\n let errorExceedsMaxFile = false;\n if (!files || !files.length) {\n return;\n }\n if (!this.multiple() && this.fileList().length && !this.canUploadIfHasExistFile()) {\n return;\n }\n\n const remainFileTotal = this.limitFile() - this.fileList().length;\n if (files.length > remainFileTotal) {\n errorExceedsMaxFile = true;\n this.messageError.set(this.messageTotalFileExceedsError());\n }\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const newFile: IFile = {\n name: file.name,\n file: file,\n size: getLabelBySizeFile(file.size),\n type: isImage ? 'image' : isVideo ? 'video' : isAudio ? 'audio' : 'document',\n id: uuid(),\n };\n if (!(await this.checkValidFileExtension(file))) {\n if (!errorExceedsMaxFile) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : this.messageTypeFileError());\n }\n newFile.error = this.messageTypeFileError();\n await this.pushFileInList(file, newFile);\n continue;\n }\n if (!(await this.checkValidFileSize(file))) {\n if (!errorExceedsMaxFile) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : this.messageMaxSizeError());\n }\n newFile.error = this.messageMaxSizeError();\n if (!this.multiple() && this.allowShowPushMessageMaxSizeError()) {\n this.notificationService.showCompTypeTextError(this.messageMaxSizeError());\n\n return;\n }\n await this.pushFileInList(file, newFile);\n continue;\n }\n await this.pushFileInList(file, newFile);\n }\n if (this.canSetAvatar() && this.fileList().length && !this.fileList().find((file) => file().isAvatar)) {\n this.fileList.update((fileList) => {\n const itemImage = fileList.find((file) => file().type === 'image');\n if (itemImage) {\n itemImage.update((file) => ({ ...file, isAvatar: true }));\n }\n return [...fileList];\n });\n }\n this.outFileChanged.emit(this.fileList());\n this.validate();\n }\n\n private async pushFileInList(file: File, newFile: IFile) {\n newFile.url = (await convertFileToBase64_ObjectUrl(file)) as string;\n\n this.fileList.update((fileList) => {\n fileList.splice(0, this.canUploadIfHasExistFile() ? 1 : 0, signal(newFile));\n return [...fileList];\n });\n }\n\n protected async handlerOpenPreviewFile(item: IFile) {\n if (item.type === 'document') {\n this.previewFileDocument(item);\n return;\n }\n this.previewFileImage(item);\n }\n\n private async previewFileDocument(item: IFile) {\n if (this.previewFileComponentRef) {\n return;\n }\n this.previewFileComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsPreviewFileComponent);\n this.previewFileComponentRef.setInput('data', item);\n this.previewFileComponentRef.setInput('zIndex', this.zIndex() + 1);\n this.previewFileComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.previewFileComponentRef);\n this.previewFileComponentRef = undefined;\n });\n this.dynamicComponentService.addToBody(this.previewFileComponentRef);\n }\n\n private async previewFileImage(item: IFile) {\n if (this.previewFileImageComponentRef) {\n return;\n }\n this.previewFileImageComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsGalleryViewerComponent);\n const url = item.url || item.origin_url;\n this.previewFileImageComponentRef.setInput('images', [{ url }]);\n this.previewFileImageComponentRef.setInput('imageSelected', { url });\n this.previewFileImageComponentRef.setInput('fieldDisplaySrcImage', 'url');\n this.previewFileImageComponentRef.setInput('singleImage', true);\n this.previewFileImageComponentRef.setInput('zIndex', this.zIndex() + 1);\n this.previewFileImageComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.previewFileImageComponentRef);\n this.previewFileImageComponentRef = undefined;\n });\n this.dynamicComponentService.addToBody(this.previewFileImageComponentRef);\n }\n\n protected async handlerEditImage(event: Event, item: WritableSignal<IFile>) {\n event.stopPropagation();\n this.showEditModal(item);\n }\n\n protected async handlerRemoveFile(event: Event, item: WritableSignal<IFile>) {\n event.stopPropagation();\n this.removeFile(item);\n if (this.originFiles().find((file) => file().url === item().url)) {\n this.outFileRemoved.emit(item);\n }\n this.validate();\n if (!this.multiple() && this.showPopupUploadWhenHasFileAndModeSingle()) {\n setTimeout(() => {\n this.showUploadPopup();\n }, 0);\n }\n }\n\n protected async removeFile(fileItem: WritableSignal<IFile>) {\n this.fileList.update((fileList) => fileList.filter((item) => item().id !== fileItem().id));\n if (this.canSetAvatar() && fileItem().isAvatar && this.fileList().length) {\n this.fileList.update((fileList) => {\n fileList[0].update((file) => ({ ...file, isAvatar: true }));\n\n return [...fileList];\n });\n }\n this.outFileChanged.emit(this.fileList());\n }\n\n protected async showEditModal(fileItem: WritableSignal<IFile>) {\n if (this.imageEditorComponentRef) {\n return;\n }\n const fileDataUrl = fileItem().url || fileItem().origin_url || '';\n this.imageEditorComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsImageEditorComponent);\n\n this.imageEditorComponentRef.setInput('imgSrc', fileDataUrl);\n this.imageEditorComponentRef.setInput('zIndex', this.zIndex() + 1);\n this.imageEditorComponentRef.setInput('nameFile', fileItem().name);\n this.imageEditorComponentRef.setInput('aspectRatio', this.aspectRatio());\n this.imageEditorComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.imageEditorComponentRef);\n this.imageEditorComponentRef = undefined;\n });\n\n this.imageEditorComponentRef.instance.outSaveFile.subscribe(async (result: ISaveFile) => {\n const messageError = !(await this.checkValidFileSize(result.file)) ? this.messageMaxSizeError() : undefined;\n const nameFile = fileItem().file?.name || fileItem().name;\n fileItem.update((data) => ({ ...data, file: convertBlobToFile(result.file, nameFile), name: nameFile, origin_url: undefined, size: getLabelBySizeFile(result.file.size), error: messageError, url: result.url, isUpdate: true }));\n this.outFileChanged.emit(this.fileList());\n this.imageEditorComponentRef?.instance.outClose.emit({ isClickButtonClose: true });\n });\n this.dynamicComponentService.addToBody(this.imageEditorComponentRef);\n }\n\n protected async checkValidFileExtension(file: File) {\n const extension = getFileExtension(file);\n\n if (!extension) {\n return false;\n }\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const validImage = isIncludeImageExtList(extension, this.imageExtList());\n const validVideo = isIncludeVideoExtList(extension, this.videoExtList());\n const validAudio = isIncludeAudioExtList(extension, this.audioExtList());\n const validDocument = isIncludeDocumentExtList(extension, this.documentExtList());\n\n const typeSplit = this.fileType().split('_');\n\n if (isImage && typeSplit.includes('image')) {\n return validImage;\n }\n if (isVideo && typeSplit.includes('video')) {\n return validVideo;\n }\n if (isAudio && typeSplit.includes('audio')) {\n return validAudio;\n }\n if (typeSplit.includes('document')) {\n return validDocument;\n }\n\n return false;\n }\n\n protected async checkValidFileSize(file: File | Blob) {\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const validImage = file.size <= this.maxImageSize();\n const validVideo = file.size <= this.maxVideoSize();\n const validAudio = file.size <= this.maxAudioSize();\n const validDocument = file.size <= this.maxDocumentSize();\n\n const typeSplit = this.fileType().split('_');\n\n if (isImage && typeSplit.includes('image')) {\n return validImage;\n }\n if (isVideo && typeSplit.includes('video')) {\n return validVideo;\n }\n if (isAudio && typeSplit.includes('audio')) {\n return validAudio;\n }\n if (typeSplit.includes('document')) {\n return validDocument;\n }\n\n return false;\n }\n\n protected async validate() {\n if (this.validRequired()?.isRequired && !this.fileList().length) {\n this.messageError.set(this.validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID);\n\n return false;\n }\n if (this.multiple() && this.fileList().length > this.limitFile()) {\n this.messageError.set(this.messageTotalFileExceedsError());\n\n return false;\n }\n const fileError = this.fileList().find((item) => item().error);\n\n if (fileError) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : fileError().error);\n\n return false;\n }\n this.messageError.set(undefined);\n\n return true;\n }\n\n protected async handlerSetAvatar(event: Event, file: WritableSignal<IFile>) {\n event.stopPropagation();\n\n this.fileList().forEach((item) => {\n if (item().id === file().id) {\n item.update((file) => ({ ...file, isAvatar: true }));\n return;\n }\n item.update((file) => ({ ...file, isAvatar: false }));\n });\n this.outFileChanged.emit(this.fileList());\n }\n\n private async removeAllFile() {\n this.fileList.set([]);\n this.messageError.set(undefined);\n }\n\n protected async handlerDownloadSampleFile(event: Event) {\n event.stopPropagation();\n const config = this.configDownloadSampleFile();\n if (!config) {\n return;\n }\n if (config?.callBack) {\n config.callBack();\n\n return;\n }\n if (config?.url) {\n downloadFileByUrl(config.url, config.title);\n }\n }\n\n private async showUploadPopup() {\n this.uploadInputRef()?.nativeElement.click();\n this.uploadInputRef()?.nativeElement.setAttribute('accept', this.accessFiles());\n }\n\n // #endregion\n\n // #region FUNCTIONS\n public get FunctionsControl(): IUploadFunctionControlEvent {\n return {\n checkIsValid: this.validate.bind(this),\n removeAll: this.removeAllFile.bind(this),\n uploading: async (process, id) => {\n const fileUploading = this.fileList().find((file) => file().id === id);\n\n if (fileUploading) {\n fileUploading.update((file) => ({ ...file, percentUploading: process.percent, isUploading: process.percent !== 100 }));\n }\n },\n setMessageError: async (message, id) => {\n this.messageError.set(message);\n if (id) {\n const fileError = this.fileList().find((file) => file().id === id);\n\n if (fileError) {\n fileError.update((file) => ({ ...file, error: message }));\n }\n }\n },\n handlerUploadFile: this.showUploadPopup.bind(this),\n };\n }\n // #endregion\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","<div class=\"flex flex-col w-full h-full\">\n <div>\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable() || readonly()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable() || readonly()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable() || readonly()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable() || readonly()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n @if ((!configDownloadSampleFile()?.position || configDownloadSampleFile()?.position === 'top') && configDownloadSampleFile(); as configDownloadSampleFile) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classLabel]=\"'libs-ui-font-h7m'\"\n [classInclude]=\"'!mb-[8px] !p-0'\"\n [classIconLeft]=\"'libs-ui-icon-attachment before:!text-[12px]'\"\n [label]=\"configDownloadSampleFile?.title || ' '\"\n (outClick)=\"handlerDownloadSampleFile($event)\" />\n }\n @if (multiple() || !showPopupUploadWhenHasFileAndModeSingle() || (!fileList().length && !multiple())) {\n <div\n #upload\n LibsUiComponentsInputsUploadDirective\n LibsUiComponentsInputsUploadDropFileDirective\n class=\"libs-ui-components-inputs-upload\"\n [class.libs-ui-components-inputs-upload-disable]=\"disable() || readonly() || (!multiple() && fileList().length && !canUploadIfHasExistFile())\"\n [class.libs-ui-components-inputs-upload-readonly]=\"readonly()\"\n [class.libs-ui-components-inputs-upload-error]=\"messageError()\"\n [multiple]=\"multiple()\"\n [accessFiles]=\"accessFiles()\"\n (outUploadFiles)=\"handleUploadFiles($event)\"\n (outUploadFile)=\"handleUploadFiles([$event])\"\n (outDragOver)=\"handlerSetClassDrag(true)\"\n (outDragLeave)=\"handlerSetClassDrag(false)\"\n (outDrop)=\"handlerSetClassDrag(false)\"\n (outDropFiles)=\"handleUploadFiles($event)\"\n (outDropFile)=\"handleUploadFiles([$event])\">\n <div class=\"flex items-center\">\n <div class=\"mr-[16px]\">\n <i class=\"libs-ui-components-inputs-upload-icon libs-ui-icon-file-upload before:!text-[32px]\"></i>\n </div>\n <div class=\"libs-ui-components-inputs-upload-description\">\n @let constHtmlMessage = configDescriptionInputUpload().message || ' ';\n <div\n class=\"mb-[4px] libs-ui-font-h6m\"\n [innerHTML]=\"constHtmlMessage | translate: configDescriptionInputUpload().interpolateParams\"></div>\n @for (item of descriptionFormatAndSizeFileComputed(); track item; let last = $last) {\n <div\n class=\"libs-ui-font-h7r\"\n [class.mb-[4px]]=\"!last\"\n [innerHTML]=\"item.message | translate: item.interpolateParams\"></div>\n }\n </div>\n </div>\n @if (multiple()) {\n <input\n #uploadInput\n class=\"upload-input hidden\"\n type=\"file\"\n name=\"files[]\"\n multiple\n [accept]=\"accessFiles()\" />\n } @else {\n <input\n #uploadInput\n class=\"upload-input hidden\"\n type=\"file\"\n name=\"files[]\"\n [accept]=\"accessFiles()\" />\n }\n </div>\n }\n @if (messageError() && (multiple() || !showPopupUploadWhenHasFileAndModeSingle() || (!fileList().length && !multiple()))) {\n <div class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r\">\n @let constHtmlMessage = messageError() || ' ';\n {{ constHtmlMessage | translate: { value: limitFile() } }}\n </div>\n }\n @if (configDownloadSampleFile()?.position === 'bottom' && configDownloadSampleFile(); as configDownloadSampleFile) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classLabel]=\"'libs-ui-font-h7m'\"\n [classInclude]=\"'!mt-[8px] !p-0'\"\n [classIconLeft]=\"'libs-ui-icon-attachment before:!text-[12px]'\"\n [label]=\"configDownloadSampleFile.title || ' '\"\n (moClick)=\"handlerDownloadSampleFile($event)\" />\n }\n </div>\n @if (fileList().length) {\n <div\n LibsUiComponentsScrollOverlayDirective\n class=\"relative w-full h-full px-[10px] libs-ui-components-inputs-upload-view-list {{ classIncludeFileContent() || '' }}\"\n [class.mt-[12px]]=\"multiple() || !showPopupUploadWhenHasFileAndModeSingle()\">\n <ng-content select=\"[label-file]\"></ng-content>\n @for (item of fileList(); track item(); let first = $first) {\n <div\n class=\"libs-ui-components-inputs-upload-view-list-item {{ classIncludeListItem() || '' }}\"\n [class.libs-ui-components-inputs-upload-file-full]=\"modeDisplayFile() === 'full'\"\n [class.libs-ui-components-inputs-upload-file-short]=\"modeDisplayFile() === 'short'\"\n [class.libs-ui-border-error-general]=\"item().error || (messageError() && showBorderErrorAllItemWhenError())\"\n [class.mt-0]=\"first && !multiple() && !showPopupUploadWhenHasFileAndModeSingle()\">\n <div class=\"flex w-full\">\n <div class=\"flex items-center\">\n @if (canSetAvatar() && item().type === 'image') {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classIconLeft]=\"\n '!mr-0' + (item().isAvatar ? ' libs-ui-icon-check-circle-solid before:!text-[#00bc62]' : ' libs-ui-icon-check-circle-outline') + (disable() || readonly() || item().isUploading || !!item().error ? ' libs-ui-disable' : '')\n \"\n [popover]=\"{ config: { content: item().isAvatar ? 'i18n_avatar' : 'i18n_choose_as_your_avatar', zIndex: zIndex() } }\"\n [classInclude]=\"'!mr-[12px] !p-0'\"\n [disable]=\"disable() || readonly() || item().isUploading || !!item().error\"\n (outClick)=\"handlerSetAvatar($event, item)\" />\n }\n </div>\n <div\n class=\"flex\"\n [class.w-[calc(100%-28px)]]=\"canSetAvatar()\"\n [class.w-full]=\"!canSetAvatar()\">\n @if (modeDisplayFile() === 'full') {\n <libs_ui-components-inputs-upload-avatar\n [classInclude]=\"classIncludeAvatar()\"\n [disable]=\"disable() || readonly()\"\n [(item)]=\"item\"\n [showVideoDuration]=\"showVideoDuration()\"\n (outOpenPreview)=\"handlerOpenPreviewFile($event)\" />\n }\n <div class=\"relative w-full\">\n <div\n class=\"flex absolute w-full h-full flex-col\"\n [class.flex-col]=\"modeDisplayFile() === 'full'\"\n [class.justify-center]=\"modeDisplayFile() === 'full'\"\n [class.items-center]=\"modeDisplayFile() === 'short'\">\n <libs_ui-components-label\n class=\"flex w-full\"\n [labelLeft]=\"item().name\"\n [zIndexPopover]=\"zIndex() + 1\"\n [labelLeftClass]=\"'libs-ui-font-h6m ' + (disable() || readonly() || item().isUploading || item().error ? 'text-[#6a7383]' : 'text-[#071631]')\"\n [classInclude]=\"modeDisplayFile() === 'short' ? '!mb-0' : ''\" />\n\n @if (!ignoreShowSizeFile()) {\n <div\n class=\"text-[#9ca2ad] libs-ui-font-h7r shrink-0\"\n [class.flex]=\"modeDisplayFile() === 'full'\"\n [class.items-center]=\"modeDisplayFile() === 'short'\"\n [class.ml-[12px]]=\"modeDisplayFile() === 'short'\">\n {{ item().size }}\n </div>\n }\n </div>\n </div>\n @if (item().isUploading && item().percentUploading) {\n <div\n class=\"flex items-center ml-[16px]\"\n [class.mr-[26px]]=\"modeDisplayFile() === 'full'\">\n <div class=\"w-[120px] h-[4px] rounded-[4px] bg-[#f8f9fa] relative\">\n <div\n class=\"absolute top-0 left-0 h-[4px] rounded-[4px] bg-[#00bc62]\"\n [style.width.px]=\"(item().percentUploading ?? 0) * 1.2\"></div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex ml-[16px]\">\n @if (!ignoreIconPreview()) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-eye-outline !mr-0'\"\n [popover]=\"{ config: { content: 'i18n_preview', zIndex: zIndex() + 1 } }\"\n [classInclude]=\"'!p-0' + (ignoreIconRemove() && !ignoreIconEdit() ? '' : ' !mr-[12px]')\"\n [disable]=\"item().isUploading || disable() || readonly()\"\n (outClick)=\"handlerOpenPreviewFile(item())\" />\n }\n @if (item().type === 'image' && !item().error && !ignoreIconEdit()) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-edit-line !mr-0'\"\n [popover]=\"{ config: { content: 'i18n_edit', zIndex: zIndex() + 1 } }\"\n [classInclude]=\"'!p-0' + (ignoreIconRemove() ? '' : ' !mr-[12px]')\"\n [disable]=\"item().isUploading || disable() || readonly()\"\n (outClick)=\"handlerEditImage($event, item)\" />\n }\n @if (!ignoreIconRemove()) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-close !mr-0'\"\n [popover]=\"{ config: { content: 'i18n_delete', zIndex: zIndex() + 1 } }\"\n [classInclude]=\"'!p-0'\"\n [disable]=\"item().isUploading || disable() || readonly()\"\n (outClick)=\"handlerRemoveFile($event, item)\" />\n }\n </div>\n </div>\n @if (item().error && (multiple() || showPopupUploadWhenHasFileAndModeSingle())) {\n <div class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r\">\n @let constHtmlMessage = item().error || ' ';\n {{ constHtmlMessage | translate }}\n </div>\n }\n }\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-components-inputs-upload.mjs","sources":["../../../../../../libs-ui/components/inputs/upload/src/pipes/calc-duration-video.pipe.ts","../../../../../../libs-ui/components/inputs/upload/src/avatar/avatar.component.ts","../../../../../../libs-ui/components/inputs/upload/src/avatar/avatar.component.html","../../../../../../libs-ui/components/inputs/upload/src/upload-drop-file.directive.ts","../../../../../../libs-ui/components/inputs/upload/src/upload-file.directive.ts","../../../../../../libs-ui/components/inputs/upload/src/defines/helper.define.ts","../../../../../../libs-ui/components/inputs/upload/src/upload.component.ts","../../../../../../libs-ui/components/inputs/upload/src/upload.component.html","../../../../../../libs-ui/components/inputs/upload/src/libs-ui-components-inputs-upload.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'LibsUiPipesInputsUploadCalcDurationVideoPipe',\n standalone: true,\n})\nexport class LibsUiPipesInputsUploadCalcDurationVideoPipe implements PipeTransform {\n transform(duration: number) {\n if (!duration) {\n return '0:0';\n }\n duration = Math.round(duration);\n if (duration >= 3600) {\n const hour = Math.floor(duration / 3600);\n const minute = Math.floor((duration - hour * 3600) / 60);\n const second = duration - (hour * 3600 + minute * 60);\n\n return `${hour}:${minute < 10 ? `0${minute}` : minute}:${second < 10 ? `0${second}` : second}`;\n }\n if (duration >= 60) {\n const minute = Math.floor(duration / 60);\n const second = duration - minute * 60;\n\n return `${minute}:${second < 10 ? `0${second}` : second}`;\n }\n\n return `0:${duration}`;\n }\n}\n","import { AsyncPipe, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, input, model, Optional, output } from '@angular/core';\nimport { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';\nimport { LibsUiIconsGetIconComponentPipe } from '@libs-ui/icons';\nimport { IEvent, IFile } from '@libs-ui/interfaces-types';\nimport { LibsUiPipesCheckFileExtensionPipe } from '@libs-ui/pipes-check-file-extension';\nimport { LibsUiPipesSecurityTrustPipe } from '@libs-ui/pipes-security-trust';\nimport { LINK_IMAGE_ERROR_TOKEN_INJECT } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LibsUiPipesInputsUploadCalcDurationVideoPipe } from '../pipes/calc-duration-video.pipe';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-upload-avatar',\n templateUrl: './avatar.component.html',\n standalone: true,\n imports: [NgComponentOutlet, AsyncPipe, TranslateModule, LibsUiComponentsSpinnerComponent, LibsUiPipesSecurityTrustPipe, LibsUiPipesInputsUploadCalcDurationVideoPipe, LibsUiPipesCheckFileExtensionPipe, LibsUiIconsGetIconComponentPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsInputsUploadAvatarComponent {\n readonly item = model.required<IFile>();\n readonly showVideoDuration = input<boolean>();\n readonly disable = input<boolean>();\n readonly size = input<number>();\n readonly classInclude = input<string, string | undefined>('', { transform: (value) => value ?? '' });\n\n readonly outOpenPreview = output<IFile>();\n\n constructor(@Optional() @Inject(LINK_IMAGE_ERROR_TOKEN_INJECT) private linkImageError: string) {}\n\n protected async handlerImageError(event: Event) {\n if (!this.linkImageError) {\n return;\n }\n (event as IEvent).target.src = this.linkImageError;\n }\n\n protected handlerImageClick(event: Event) {\n event.stopPropagation();\n this.outOpenPreview.emit(this.item());\n }\n}\n","<div\n class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px] {{ classInclude() }}\"\n [class.libs-ui-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesCheckFileExtensionPipe: 'image') {\n <div\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img\n [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n } @else if (item() | LibsUiPipesCheckFileExtensionPipe: 'video') {\n <div\n class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n @let constHtmlSrc = item().url || item().origin_url || '';\n <video\n #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"constHtmlSrc | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\"></div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n } @else if (item() | LibsUiPipesCheckFileExtensionPipe: 'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: size() || 32 }\" />\n } @else if (item() | LibsUiPipesCheckFileExtensionPipe: 'word') {\n <ng-container *ngComponentOutlet=\"'word' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: size() || 32 }\" />\n } @else if (item() | LibsUiPipesCheckFileExtensionPipe: 'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: size() || 32 }\" />\n } @else if (item() | LibsUiPipesCheckFileExtensionPipe: 'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: size() || 32 }\" />\n } @else {\n <div\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i\n class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n","import { AfterViewInit, Directive, ElementRef, input, OnDestroy, output } from '@angular/core';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { checkMouseOverInContainer, isTypeFile } from '@libs-ui/utils';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsInputsUploadDropFileDirective]',\n standalone: true,\n})\nexport class LibsUiComponentsInputsUploadDropFileDirective implements AfterViewInit, OnDestroy {\n private onDestroy = new Subject<void>();\n\n readonly multiple = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n\n readonly outDragOver = output<IEvent>();\n readonly outDragLeave = output<IEvent>();\n readonly outDrop = output<IEvent>();\n readonly outDropFiles = output<File[]>();\n readonly outDropFile = output<File>();\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit() {\n fromEvent<IEvent>(this.elementRef.nativeElement, 'dragover')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n this.outDragOver.emit(e);\n });\n fromEvent<IEvent>(this.elementRef.nativeElement, 'dragleave')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n if (checkMouseOverInContainer(e, this.elementRef.nativeElement)) {\n return;\n }\n this.outDragLeave.emit(e);\n });\n\n fromEvent<IEvent>(this.elementRef.nativeElement, 'drop')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n this.outDrop.emit(e);\n\n const fileList = Array.from<File>(e.dataTransfer?.files || e.clipboardData?.files || []).filter(isTypeFile);\n\n if (!fileList || !fileList.length) {\n return;\n }\n\n if (this.multiple()) {\n this.outDropFiles.emit(fileList);\n\n return;\n }\n this.outDropFile.emit(fileList[0]);\n });\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import { AfterViewInit, Directive, ElementRef, inject, input, OnDestroy, output } from '@angular/core';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsInputsUploadDirective]',\n standalone: true,\n})\nexport class LibsUiComponentsInputsUploadDirective implements AfterViewInit, OnDestroy {\n private onDestroy = new Subject<void>();\n\n readonly multiple = input<boolean, boolean | undefined>(true, { transform: (val) => val ?? true });\n readonly accessFiles = input<string, string | undefined>('image/x-png,image/jpg,image/jpeg,image/PNG,image/x-PNG,image/JPG,image/JPEG', { transform: (val) => val ?? 'image/x-png,image/jpg,image/jpeg,image/PNG,image/x-PNG,image/JPG,image/JPEG' });\n\n readonly outUploadFiles = output<File[]>();\n readonly outUploadFile = output<File>();\n\n private elementRef = inject(ElementRef);\n\n ngAfterViewInit() {\n fromEvent<IEvent>(this.elementRef.nativeElement, 'click')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n const inputElementUpload = document.createElement('input');\n inputElementUpload.type = 'file';\n inputElementUpload.accept = this.accessFiles();\n inputElementUpload.multiple = this.multiple();\n inputElementUpload.style.display = 'none';\n inputElementUpload.click();\n fromEvent<IEvent>(inputElementUpload, 'change')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((event: IEvent) => {\n const files = Array.from<File>(event.dataTransfer?.files || event.target?.files || []);\n inputElementUpload.remove();\n if (!files?.length) {\n return;\n }\n if (this.multiple()) {\n this.outUploadFiles.emit(files);\n\n return;\n }\n this.outUploadFile.emit(files[0]);\n });\n });\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import { getLabelBySizeFile } from '@libs-ui/utils';\nimport { IUploadDescriptionFormatAndSizeFile, TYPE_FILE_UPLOAD } from '../interfaces/upload.interface';\n\nexport const getDescriptionFormatAndSizeFileDefault = (type: TYPE_FILE_UPLOAD, maxImageSize: number, maxVideoSize: number, maxDocumentSize: number, maxAudioSize: number): IUploadDescriptionFormatAndSizeFile[] => {\n const image = {\n message: 'i18n_note_upload_image_volume',\n interpolateParams: { value: getLabelBySizeFile(maxImageSize, 0) },\n };\n const video = {\n message: 'i18n_note_upload_video_volume',\n interpolateParams: { value: getLabelBySizeFile(maxVideoSize, 0) },\n };\n const document = {\n message: 'i18n_note_upload_file_volume',\n interpolateParams: { value: getLabelBySizeFile(maxDocumentSize, 0) },\n };\n const audio = {\n message: 'i18n_note_upload_audio_volume',\n interpolateParams: { value: getLabelBySizeFile(maxAudioSize, 0) },\n };\n\n const typeSplit = type.split('_');\n const description = [];\n\n if (typeSplit.includes('image')) {\n description.push(image);\n }\n if (typeSplit.includes('audio')) {\n description.push(audio);\n }\n if (typeSplit.includes('video')) {\n description.push(video);\n }\n if (typeSplit.includes('document')) {\n description.push(document);\n }\n\n return description;\n};\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ComponentRef, computed, effect, ElementRef, inject, input, OnDestroy, OnInit, output, signal, untracked, viewChild, WritableSignal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsGalleryViewerComponent } from '@libs-ui/components-gallery';\nimport { ISaveFile, LibsUiComponentsImageEditorComponent } from '@libs-ui/components-image-editor';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { LibsUiComponentsPreviewFileComponent } from '@libs-ui/components-preview-file';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { IAspectRatio, IFile, IIsValidRequired, IMessageTranslate } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService, setInputs } from '@libs-ui/services-dynamic-component';\nimport { LibsUiNotificationService } from '@libs-ui/services-notification';\nimport {\n AudioExtList,\n convertBlobToFile,\n convertFileToBase64_ObjectUrl,\n DocumentExtList,\n downloadFileByUrl,\n ERROR_MESSAGE_EMPTY_VALID,\n getFileExtension,\n getLabelBySizeFile,\n ImageExtList,\n isIncludeAudioExtList,\n isIncludeDocumentExtList,\n isIncludeImageExtList,\n isIncludeVideoExtList,\n isTypeAudio,\n isTypeImage,\n isTypeVideo,\n uuid,\n VideoExtList,\n} from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { LibsUiComponentsInputsUploadAvatarComponent } from './avatar/avatar.component';\nimport { getDescriptionFormatAndSizeFileDefault } from './defines/helper.define';\nimport { IUploadConfigDownloadSampleFile, IUploadDescriptionFormatAndSizeFile, IUploadFunctionControlEvent, TYPE_FILE_UPLOAD, TYPE_MODE_FILE_DISPLAY } from './interfaces/upload.interface';\nimport { LibsUiComponentsInputsUploadDropFileDirective } from './upload-drop-file.directive';\nimport { LibsUiComponentsInputsUploadDirective } from './upload-file.directive';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-upload',\n templateUrl: './upload.component.html',\n styleUrls: ['./upload.component.scss'],\n standalone: true,\n imports: [\n TranslateModule,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsInputsUploadAvatarComponent,\n LibsUiComponentsScrollOverlayDirective,\n LibsUiComponentsInputsUploadDirective,\n LibsUiComponentsInputsUploadDropFileDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsInputsUploadComponent implements OnInit, AfterViewInit, OnDestroy {\n // #region PROPERTIES\n private imageEditorComponentRef?: ComponentRef<LibsUiComponentsImageEditorComponent>;\n private previewFileComponentRef?: ComponentRef<LibsUiComponentsPreviewFileComponent>;\n private previewFileImageComponentRef?: ComponentRef<LibsUiComponentsGalleryViewerComponent>;\n protected isDragOver = signal(false);\n protected fileList = signal<Array<WritableSignal<IFile>>>([]);\n protected accessFiles = signal<string>('');\n protected messageError = signal<string | undefined>(undefined);\n protected descriptionFormatAndSizeFileComputed = computed<Array<IUploadDescriptionFormatAndSizeFile>>(() => {\n if (this.descriptionFormatAndSizeFile()?.length) {\n return this.descriptionFormatAndSizeFile() as unknown as Array<IUploadDescriptionFormatAndSizeFile>;\n }\n return getDescriptionFormatAndSizeFileDefault(this.fileType(), this.maxImageSize(), this.maxVideoSize(), this.maxDocumentSize(), this.maxAudioSize());\n });\n\n private onDestroy = new Subject<void>();\n // #endregion\n\n // #region INPUTS\n readonly originFiles = input<Array<WritableSignal<IFile>>, Array<WritableSignal<IFile>> | undefined>([], { transform: (val) => val ?? [] });\n readonly fileType = input<TYPE_FILE_UPLOAD, TYPE_FILE_UPLOAD | undefined>('image_video_document', { transform: (val) => val ?? 'image_video_document' });\n readonly multiple = input<boolean>();\n readonly canUploadIfHasExistFile = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly canSetAvatar = input<boolean | undefined>(false);\n readonly limitFile = input<number, number | undefined>(10, { transform: (val) => val ?? 10 });\n readonly maxTotalSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: (val) => val ?? 10 * 1024 * 1024 });\n readonly maxImageSize = input<number, number | undefined>(5 * 1024 * 1024, { transform: (val) => val ?? 5 * 1024 * 1024 });\n readonly maxVideoSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: (val) => val ?? 10 * 1024 * 1024 });\n readonly maxDocumentSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: (val) => val ?? 10 * 1024 * 1024 });\n readonly maxAudioSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: (val) => val ?? 10 * 1024 * 1024 });\n readonly imageExtList = input<string[], string[] | undefined>(ImageExtList, { transform: (val) => val ?? ImageExtList });\n readonly videoExtList = input<string[], string[] | undefined>(VideoExtList, { transform: (val) => val ?? VideoExtList });\n readonly documentExtList = input<string[], string[] | undefined>(DocumentExtList, { transform: (val) => val ?? DocumentExtList });\n readonly audioExtList = input<string[], string[] | undefined>(AudioExtList, { transform: (val) => val ?? AudioExtList });\n readonly classIncludeListItem = input<string>();\n readonly validRequired = input<IIsValidRequired>();\n readonly disable = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly readonly = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly aspectRatio = input<IAspectRatio>();\n readonly zIndex = input<number, number | undefined>(1200, { transform: (val) => val ?? 1200 });\n readonly ignoreShowSizeFile = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly allowShowPushMessageMaxSizeError = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly messageTypeFileError = input<string, string | undefined>('i18n_the_file_support_format_is_not_correct', { transform: (val) => val || 'i18n_the_file_support_format_is_not_correct' });\n readonly messageMaxSizeError = input<string, string | undefined>('i18n_file_size_exceeds_the_allowed_limit', { transform: (val) => val || 'i18n_file_size_exceeds_the_allowed_limit' });\n readonly messageFileUploadError = input<string, string | undefined>('i18n_invalid_file_upload', { transform: (val) => val || 'i18n_invalid_file_upload' });\n readonly messageTotalFileExceedsError = input<string, string | undefined>('i18n_file_number_exceeds_the_allowed_limit_please_delete_the_file', { transform: (val) => val || 'i18n_file_number_exceeds_the_allowed_limit_please_delete_the_file' });\n readonly configDescriptionInputUpload = input<IMessageTranslate, IMessageTranslate | undefined>(\n { message: 'i18n_drag_file_here_to_upload_or_select_file' },\n {\n transform: (val) => val ?? { message: 'i18n_drag_file_here_to_upload_or_select_file' },\n }\n );\n\n readonly modeDisplayFile = input<TYPE_MODE_FILE_DISPLAY, TYPE_MODE_FILE_DISPLAY | undefined>('full', { transform: (val) => val || 'full' });\n readonly descriptionFormatAndSizeFile = input<Array<IUploadDescriptionFormatAndSizeFile>>();\n readonly showVideoDuration = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly labelConfig = input<ILabel>();\n readonly showPopupUploadWhenHasFileAndModeSingle = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly ignoreIconRemove = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly ignoreIconEdit = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly ignoreIconPreview = input<boolean, boolean | undefined>(true, { transform: (val) => val ?? true });\n readonly classIncludeFileContent = input<string, string | undefined>('', { transform: (value) => value ?? '' });\n readonly classIncludeAvatar = input<string, string | undefined>('', { transform: (value) => value ?? '' });\n readonly showBorderErrorAllItemWhenError = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly configDownloadSampleFile = input<IUploadConfigDownloadSampleFile>();\n // #endregion\n\n // #region OUTPUTS\n readonly outClose = output<boolean>();\n readonly outFileChanged = output<Array<WritableSignal<IFile>>>();\n readonly outFileRemoved = output<WritableSignal<IFile>>();\n readonly outFunctionsControl = output<IUploadFunctionControlEvent>();\n // #endregion\n\n // #region VIEW CHILDREN\n readonly uploadRef = viewChild<ElementRef>('upload');\n readonly uploadInputRef = viewChild<ElementRef>('uploadInput');\n // #endregion\n\n // #region INJECTIONS\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n private translateService = inject(TranslateService);\n private notificationService = inject(LibsUiNotificationService);\n // #endregion\n\n constructor() {\n effect(() => {\n if (this.originFiles()) {\n untracked(() => {\n this.fileList.set([...this.originFiles()]);\n });\n }\n });\n }\n\n // #region LIFECYCLE HOOKS\n ngOnInit() {\n this.outFunctionsControl.emit(this.FunctionsControl);\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.initAccessFiles();\n }, 0);\n }\n // #endregion\n\n // #region INITIALIZATION\n protected async initAccessFiles() {\n const accessExts: string[] = [];\n const typeSplit = this.fileType().split('_');\n\n if (typeSplit.includes('image')) {\n accessExts.push(...this.imageExtList());\n }\n if (typeSplit.includes('document')) {\n accessExts.push(...this.documentExtList());\n }\n if (typeSplit.includes('video')) {\n accessExts.push(...this.videoExtList());\n }\n if (typeSplit.includes('audio')) {\n accessExts.push(...this.audioExtList());\n }\n this.accessFiles.set(accessExts.map((ext) => `.${ext}`).join(','));\n }\n // #endregion\n\n // #region FILE OPERATIONS\n protected async handlerSetClassDrag(toogle: boolean) {\n this.uploadRef()?.nativeElement.classList.toggle('libs-ui-components-inputs-upload-drag-over', toogle);\n }\n\n protected async handleUploadFiles(files: Array<File>) {\n if (this.maxTotalSize()) {\n let total = 0;\n\n for (let i = 0; i < files.length; i++) {\n total += files[i].size;\n }\n\n if (this.maxTotalSize() < total) {\n this.notificationService.showCompTypeTextError(this.translateService.instant('i18n_size_not_number_mb', { number: this.maxTotalSize() / 1024 / 1024 }), { timeRemove: 3000 });\n\n return;\n }\n }\n\n let errorExceedsMaxFile = false;\n if (!files || !files.length) {\n return;\n }\n if (!this.multiple() && this.fileList().length && !this.canUploadIfHasExistFile()) {\n return;\n }\n\n const remainFileTotal = this.limitFile() - this.fileList().length;\n if (files.length > remainFileTotal) {\n errorExceedsMaxFile = true;\n this.messageError.set(this.messageTotalFileExceedsError());\n }\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const newFile: IFile = {\n name: file.name,\n file: file,\n size: getLabelBySizeFile(file.size),\n type: isImage ? 'image' : isVideo ? 'video' : isAudio ? 'audio' : 'document',\n id: uuid(),\n };\n if (!(await this.checkValidFileExtension(file))) {\n if (!errorExceedsMaxFile) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : this.messageTypeFileError());\n }\n newFile.error = this.messageTypeFileError();\n await this.pushFileInList(file, newFile);\n continue;\n }\n if (!(await this.checkValidFileSize(file))) {\n if (!errorExceedsMaxFile) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : this.messageMaxSizeError());\n }\n newFile.error = this.messageMaxSizeError();\n if (!this.multiple() && this.allowShowPushMessageMaxSizeError()) {\n this.notificationService.showCompTypeTextError(this.messageMaxSizeError());\n\n return;\n }\n await this.pushFileInList(file, newFile);\n continue;\n }\n await this.pushFileInList(file, newFile);\n }\n if (this.canSetAvatar() && this.fileList().length && !this.fileList().find((file) => file().isAvatar)) {\n this.fileList.update((fileList) => {\n const itemImage = fileList.find((file) => file().type === 'image');\n if (itemImage) {\n itemImage.update((file) => ({ ...file, isAvatar: true }));\n }\n return [...fileList];\n });\n }\n this.outFileChanged.emit(this.fileList());\n this.validate();\n }\n\n private async pushFileInList(file: File, newFile: IFile) {\n newFile.url = (await convertFileToBase64_ObjectUrl(file)) as string;\n\n this.fileList.update((fileList) => {\n fileList.splice(0, this.canUploadIfHasExistFile() ? 1 : 0, signal(newFile));\n return [...fileList];\n });\n }\n\n protected async handlerOpenPreviewFile(item: IFile) {\n if (item.type === 'document') {\n this.previewFileDocument(item);\n return;\n }\n this.previewFileImage(item);\n }\n\n private async previewFileDocument(item: IFile) {\n if (this.previewFileComponentRef) {\n return;\n }\n this.previewFileComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsPreviewFileComponent);\n setInputs(this.previewFileComponentRef, { index: 0, data: [item], zIndex: this.zIndex() + 1 });\n this.previewFileComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.previewFileComponentRef);\n this.previewFileComponentRef = undefined;\n });\n this.dynamicComponentService.addToBody(this.previewFileComponentRef);\n }\n\n private async previewFileImage(item: IFile) {\n if (this.previewFileImageComponentRef) {\n return;\n }\n this.previewFileImageComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsGalleryViewerComponent);\n const url = item.url || item.origin_url;\n this.previewFileImageComponentRef.setInput('images', [{ url }]);\n this.previewFileImageComponentRef.setInput('imageSelected', { url });\n this.previewFileImageComponentRef.setInput('fieldDisplaySrcImage', 'url');\n this.previewFileImageComponentRef.setInput('singleImage', true);\n this.previewFileImageComponentRef.setInput('zIndex', this.zIndex() + 1);\n this.previewFileImageComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.previewFileImageComponentRef);\n this.previewFileImageComponentRef = undefined;\n });\n this.dynamicComponentService.addToBody(this.previewFileImageComponentRef);\n }\n\n protected async handlerEditImage(event: Event, item: WritableSignal<IFile>) {\n event.stopPropagation();\n this.showEditModal(item);\n }\n\n protected async handlerRemoveFile(event: Event, item: WritableSignal<IFile>) {\n event.stopPropagation();\n this.removeFile(item);\n if (this.originFiles().find((file) => file().url === item().url)) {\n this.outFileRemoved.emit(item);\n }\n this.validate();\n if (!this.multiple() && this.showPopupUploadWhenHasFileAndModeSingle()) {\n setTimeout(() => {\n this.showUploadPopup();\n }, 0);\n }\n }\n\n protected async removeFile(fileItem: WritableSignal<IFile>) {\n this.fileList.update((fileList) => fileList.filter((item) => item().id !== fileItem().id));\n if (this.canSetAvatar() && fileItem().isAvatar && this.fileList().length) {\n this.fileList.update((fileList) => {\n fileList[0].update((file) => ({ ...file, isAvatar: true }));\n\n return [...fileList];\n });\n }\n this.outFileChanged.emit(this.fileList());\n }\n\n protected async showEditModal(fileItem: WritableSignal<IFile>) {\n if (this.imageEditorComponentRef) {\n return;\n }\n const fileDataUrl = fileItem().url || fileItem().origin_url || '';\n this.imageEditorComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsImageEditorComponent);\n\n this.imageEditorComponentRef.setInput('imgSrc', fileDataUrl);\n this.imageEditorComponentRef.setInput('zIndex', this.zIndex() + 1);\n this.imageEditorComponentRef.setInput('nameFile', fileItem().name);\n this.imageEditorComponentRef.setInput('aspectRatio', this.aspectRatio());\n this.imageEditorComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.imageEditorComponentRef);\n this.imageEditorComponentRef = undefined;\n });\n\n this.imageEditorComponentRef.instance.outSaveFile.subscribe(async (result: ISaveFile) => {\n const messageError = !(await this.checkValidFileSize(result.file)) ? this.messageMaxSizeError() : undefined;\n const nameFile = fileItem().file?.name || fileItem().name;\n fileItem.update((data) => ({ ...data, file: convertBlobToFile(result.file, nameFile), name: nameFile, origin_url: undefined, size: getLabelBySizeFile(result.file.size), error: messageError, url: result.url, isUpdate: true }));\n this.outFileChanged.emit(this.fileList());\n this.imageEditorComponentRef?.instance.outClose.emit({ isClickButtonClose: true });\n });\n this.dynamicComponentService.addToBody(this.imageEditorComponentRef);\n }\n\n protected async checkValidFileExtension(file: File) {\n const extension = getFileExtension(file);\n\n if (!extension) {\n return false;\n }\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const validImage = isIncludeImageExtList(extension, this.imageExtList());\n const validVideo = isIncludeVideoExtList(extension, this.videoExtList());\n const validAudio = isIncludeAudioExtList(extension, this.audioExtList());\n const validDocument = isIncludeDocumentExtList(extension, this.documentExtList());\n\n const typeSplit = this.fileType().split('_');\n\n if (isImage && typeSplit.includes('image')) {\n return validImage;\n }\n if (isVideo && typeSplit.includes('video')) {\n return validVideo;\n }\n if (isAudio && typeSplit.includes('audio')) {\n return validAudio;\n }\n if (typeSplit.includes('document')) {\n return validDocument;\n }\n\n return false;\n }\n\n protected async checkValidFileSize(file: File | Blob) {\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const validImage = file.size <= this.maxImageSize();\n const validVideo = file.size <= this.maxVideoSize();\n const validAudio = file.size <= this.maxAudioSize();\n const validDocument = file.size <= this.maxDocumentSize();\n\n const typeSplit = this.fileType().split('_');\n\n if (isImage && typeSplit.includes('image')) {\n return validImage;\n }\n if (isVideo && typeSplit.includes('video')) {\n return validVideo;\n }\n if (isAudio && typeSplit.includes('audio')) {\n return validAudio;\n }\n if (typeSplit.includes('document')) {\n return validDocument;\n }\n\n return false;\n }\n\n protected async validate() {\n if (this.validRequired()?.isRequired && !this.fileList().length) {\n this.messageError.set(this.validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID);\n\n return false;\n }\n if (this.multiple() && this.fileList().length > this.limitFile()) {\n this.messageError.set(this.messageTotalFileExceedsError());\n\n return false;\n }\n const fileError = this.fileList().find((item) => item().error);\n\n if (fileError) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : fileError().error);\n\n return false;\n }\n this.messageError.set(undefined);\n\n return true;\n }\n\n protected async handlerSetAvatar(event: Event, file: WritableSignal<IFile>) {\n event.stopPropagation();\n\n this.fileList().forEach((item) => {\n if (item().id === file().id) {\n item.update((file) => ({ ...file, isAvatar: true }));\n return;\n }\n item.update((file) => ({ ...file, isAvatar: false }));\n });\n this.outFileChanged.emit(this.fileList());\n }\n\n private async removeAllFile() {\n this.fileList.set([]);\n this.messageError.set(undefined);\n }\n\n protected async handlerDownloadSampleFile(event: Event) {\n event.stopPropagation();\n const config = this.configDownloadSampleFile();\n if (!config) {\n return;\n }\n if (config?.callBack) {\n config.callBack();\n\n return;\n }\n if (config?.url) {\n downloadFileByUrl(config.url, config.title);\n }\n }\n\n private async showUploadPopup() {\n this.uploadInputRef()?.nativeElement.click();\n this.uploadInputRef()?.nativeElement.setAttribute('accept', this.accessFiles());\n }\n\n // #endregion\n\n // #region FUNCTIONS\n public get FunctionsControl(): IUploadFunctionControlEvent {\n return {\n checkIsValid: this.validate.bind(this),\n removeAll: this.removeAllFile.bind(this),\n uploading: async (process, id) => {\n const fileUploading = this.fileList().find((file) => file().id === id);\n\n if (fileUploading) {\n fileUploading.update((file) => ({ ...file, percentUploading: process.percent, isUploading: process.percent !== 100 }));\n }\n },\n setMessageError: async (message, id) => {\n this.messageError.set(message);\n if (id) {\n const fileError = this.fileList().find((file) => file().id === id);\n\n if (fileError) {\n fileError.update((file) => ({ ...file, error: message }));\n }\n }\n },\n handlerUploadFile: this.showUploadPopup.bind(this),\n };\n }\n // #endregion\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","<div class=\"flex flex-col w-full h-full\">\n <div>\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable() || readonly()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable() || readonly()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable() || readonly()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable() || readonly()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n @if ((!configDownloadSampleFile()?.position || configDownloadSampleFile()?.position === 'top') && configDownloadSampleFile(); as configDownloadSampleFile) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classLabel]=\"'libs-ui-font-h7m'\"\n [classInclude]=\"'!mb-[8px] !p-0'\"\n [classIconLeft]=\"'libs-ui-icon-attachment before:!text-[12px]'\"\n [label]=\"configDownloadSampleFile?.title || ' '\"\n (outClick)=\"handlerDownloadSampleFile($event)\" />\n }\n @if (multiple() || !showPopupUploadWhenHasFileAndModeSingle() || (!fileList().length && !multiple())) {\n <div\n #upload\n LibsUiComponentsInputsUploadDirective\n LibsUiComponentsInputsUploadDropFileDirective\n class=\"libs-ui-components-inputs-upload\"\n [class.libs-ui-components-inputs-upload-disable]=\"disable() || readonly() || (!multiple() && fileList().length && !canUploadIfHasExistFile())\"\n [class.libs-ui-components-inputs-upload-readonly]=\"readonly()\"\n [class.libs-ui-components-inputs-upload-error]=\"messageError()\"\n [multiple]=\"multiple()\"\n [accessFiles]=\"accessFiles()\"\n (outUploadFiles)=\"handleUploadFiles($event)\"\n (outUploadFile)=\"handleUploadFiles([$event])\"\n (outDragOver)=\"handlerSetClassDrag(true)\"\n (outDragLeave)=\"handlerSetClassDrag(false)\"\n (outDrop)=\"handlerSetClassDrag(false)\"\n (outDropFiles)=\"handleUploadFiles($event)\"\n (outDropFile)=\"handleUploadFiles([$event])\">\n <div class=\"flex items-center\">\n <div class=\"mr-[16px]\">\n <i class=\"libs-ui-components-inputs-upload-icon libs-ui-icon-file-upload before:!text-[32px]\"></i>\n </div>\n <div class=\"libs-ui-components-inputs-upload-description\">\n @let constHtmlMessage = configDescriptionInputUpload().message || ' ';\n <div\n class=\"mb-[4px] libs-ui-font-h6m\"\n [innerHTML]=\"constHtmlMessage | translate: configDescriptionInputUpload().interpolateParams\"></div>\n @for (item of descriptionFormatAndSizeFileComputed(); track item; let last = $last) {\n <div\n class=\"libs-ui-font-h7r\"\n [class.mb-[4px]]=\"!last\"\n [innerHTML]=\"item.message | translate: item.interpolateParams\"></div>\n }\n </div>\n </div>\n @if (multiple()) {\n <input\n #uploadInput\n class=\"upload-input hidden\"\n type=\"file\"\n name=\"files[]\"\n multiple\n [accept]=\"accessFiles()\" />\n } @else {\n <input\n #uploadInput\n class=\"upload-input hidden\"\n type=\"file\"\n name=\"files[]\"\n [accept]=\"accessFiles()\" />\n }\n </div>\n }\n @if (messageError() && (multiple() || !showPopupUploadWhenHasFileAndModeSingle() || (!fileList().length && !multiple()))) {\n <div class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r\">\n @let constHtmlMessage = messageError() || ' ';\n {{ constHtmlMessage | translate: { value: limitFile() } }}\n </div>\n }\n @if (configDownloadSampleFile()?.position === 'bottom' && configDownloadSampleFile(); as configDownloadSampleFile) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classLabel]=\"'libs-ui-font-h7m'\"\n [classInclude]=\"'!mt-[8px] !p-0'\"\n [classIconLeft]=\"'libs-ui-icon-attachment before:!text-[12px]'\"\n [label]=\"configDownloadSampleFile.title || ' '\"\n (moClick)=\"handlerDownloadSampleFile($event)\" />\n }\n </div>\n @if (fileList().length) {\n <div\n LibsUiComponentsScrollOverlayDirective\n class=\"relative w-full h-full px-[10px] libs-ui-components-inputs-upload-view-list {{ classIncludeFileContent() || '' }}\"\n [class.mt-[12px]]=\"multiple() || !showPopupUploadWhenHasFileAndModeSingle()\">\n <ng-content select=\"[label-file]\"></ng-content>\n @for (item of fileList(); track item(); let first = $first) {\n <div\n class=\"libs-ui-components-inputs-upload-view-list-item {{ classIncludeListItem() || '' }}\"\n [class.libs-ui-components-inputs-upload-file-full]=\"modeDisplayFile() === 'full'\"\n [class.libs-ui-components-inputs-upload-file-short]=\"modeDisplayFile() === 'short'\"\n [class.libs-ui-border-error-general]=\"item().error || (messageError() && showBorderErrorAllItemWhenError())\"\n [class.mt-0]=\"first && !multiple() && !showPopupUploadWhenHasFileAndModeSingle()\">\n <div class=\"flex w-full\">\n <div class=\"flex items-center\">\n @if (canSetAvatar() && item().type === 'image') {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classIconLeft]=\"\n '!mr-0' + (item().isAvatar ? ' libs-ui-icon-check-circle-solid before:!text-[#00bc62]' : ' libs-ui-icon-check-circle-outline') + (disable() || readonly() || item().isUploading || !!item().error ? ' libs-ui-disable' : '')\n \"\n [popover]=\"{ config: { content: item().isAvatar ? 'i18n_avatar' : 'i18n_choose_as_your_avatar', zIndex: zIndex() } }\"\n [classInclude]=\"'!mr-[12px] !p-0'\"\n [disable]=\"disable() || readonly() || item().isUploading || !!item().error\"\n (outClick)=\"handlerSetAvatar($event, item)\" />\n }\n </div>\n <div\n class=\"flex\"\n [class.w-[calc(100%-28px)]]=\"canSetAvatar()\"\n [class.w-full]=\"!canSetAvatar()\">\n @if (modeDisplayFile() === 'full') {\n <libs_ui-components-inputs-upload-avatar\n [classInclude]=\"classIncludeAvatar()\"\n [disable]=\"disable() || readonly()\"\n [(item)]=\"item\"\n [showVideoDuration]=\"showVideoDuration()\"\n (outOpenPreview)=\"handlerOpenPreviewFile($event)\" />\n }\n <div class=\"relative w-full\">\n <div\n class=\"flex absolute w-full h-full flex-col\"\n [class.flex-col]=\"modeDisplayFile() === 'full'\"\n [class.justify-center]=\"modeDisplayFile() === 'full'\"\n [class.items-center]=\"modeDisplayFile() === 'short'\">\n <libs_ui-components-label\n class=\"flex w-full\"\n [labelLeft]=\"item().name\"\n [zIndexPopover]=\"zIndex() + 1\"\n [labelLeftClass]=\"'libs-ui-font-h6m ' + (disable() || readonly() || item().isUploading || item().error ? 'text-[#6a7383]' : 'text-[#071631]')\"\n [classInclude]=\"modeDisplayFile() === 'short' ? '!mb-0' : ''\" />\n\n @if (!ignoreShowSizeFile()) {\n <div\n class=\"text-[#9ca2ad] libs-ui-font-h7r shrink-0\"\n [class.flex]=\"modeDisplayFile() === 'full'\"\n [class.items-center]=\"modeDisplayFile() === 'short'\"\n [class.ml-[12px]]=\"modeDisplayFile() === 'short'\">\n {{ item().size }}\n </div>\n }\n </div>\n </div>\n @if (item().isUploading && item().percentUploading) {\n <div\n class=\"flex items-center ml-[16px]\"\n [class.mr-[26px]]=\"modeDisplayFile() === 'full'\">\n <div class=\"w-[120px] h-[4px] rounded-[4px] bg-[#f8f9fa] relative\">\n <div\n class=\"absolute top-0 left-0 h-[4px] rounded-[4px] bg-[#00bc62]\"\n [style.width.px]=\"(item().percentUploading ?? 0) * 1.2\"></div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex ml-[16px]\">\n @if (!ignoreIconPreview()) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-eye-outline !mr-0'\"\n [popover]=\"{ config: { content: 'i18n_preview', zIndex: zIndex() + 1 } }\"\n [classInclude]=\"'!p-0' + (ignoreIconRemove() && !ignoreIconEdit() ? '' : ' !mr-[12px]')\"\n [disable]=\"item().isUploading || disable() || readonly()\"\n (outClick)=\"handlerOpenPreviewFile(item())\" />\n }\n @if (item().type === 'image' && !item().error && !ignoreIconEdit()) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-edit-line !mr-0'\"\n [popover]=\"{ config: { content: 'i18n_edit', zIndex: zIndex() + 1 } }\"\n [classInclude]=\"'!p-0' + (ignoreIconRemove() ? '' : ' !mr-[12px]')\"\n [disable]=\"item().isUploading || disable() || readonly()\"\n (outClick)=\"handlerEditImage($event, item)\" />\n }\n @if (!ignoreIconRemove()) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-close !mr-0'\"\n [popover]=\"{ config: { content: 'i18n_delete', zIndex: zIndex() + 1 } }\"\n [classInclude]=\"'!p-0'\"\n [disable]=\"item().isUploading || disable() || readonly()\"\n (outClick)=\"handlerRemoveFile($event, item)\" />\n }\n </div>\n </div>\n @if (item().error && (multiple() || showPopupUploadWhenHasFileAndModeSingle())) {\n <div class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r\">\n @let constHtmlMessage = item().error || ' ';\n {{ constHtmlMessage | translate }}\n </div>\n }\n }\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './upload.component';
|
|
2
1
|
export * from './avatar/avatar.component';
|
|
3
2
|
export * from './interfaces/upload.interface';
|
|
4
|
-
export * from './upload-file.directive';
|
|
5
3
|
export * from './upload-drop-file.directive';
|
|
4
|
+
export * from './upload-file.directive';
|
|
5
|
+
export * from './upload.component';
|
package/package.json
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libs-ui/components-inputs-upload",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.350-1",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">=18.0.0",
|
|
6
6
|
"@angular/core": ">=18.0.0",
|
|
7
|
-
"@libs-ui/components-spinner": "0.2.
|
|
8
|
-
"@libs-ui/icons": "0.2.
|
|
9
|
-
"@libs-ui/interfaces-types": "0.2.
|
|
10
|
-
"@libs-ui/pipes-security-trust": "0.2.
|
|
11
|
-
"@libs-ui/utils": "0.2.
|
|
7
|
+
"@libs-ui/components-spinner": "0.2.350-1",
|
|
8
|
+
"@libs-ui/icons": "0.2.350-1",
|
|
9
|
+
"@libs-ui/interfaces-types": "0.2.350-1",
|
|
10
|
+
"@libs-ui/pipes-security-trust": "0.2.350-1",
|
|
11
|
+
"@libs-ui/utils": "0.2.350-1",
|
|
12
12
|
"@ngx-translate/core": "^15.0.0",
|
|
13
|
-
"@libs-ui/components-buttons-button": "0.2.
|
|
14
|
-
"@libs-ui/components-gallery": "0.2.
|
|
15
|
-
"@libs-ui/components-image-editor": "0.2.
|
|
16
|
-
"@libs-ui/components-label": "0.2.
|
|
17
|
-
"@libs-ui/components-preview-file": "0.2.
|
|
18
|
-
"@libs-ui/components-scroll-overlay": "0.2.
|
|
19
|
-
"@libs-ui/services-dynamic-component": "0.2.
|
|
20
|
-
"@libs-ui/services-notification": "0.2.
|
|
13
|
+
"@libs-ui/components-buttons-button": "0.2.350-1",
|
|
14
|
+
"@libs-ui/components-gallery": "0.2.350-1",
|
|
15
|
+
"@libs-ui/components-image-editor": "0.2.350-1",
|
|
16
|
+
"@libs-ui/components-label": "0.2.350-1",
|
|
17
|
+
"@libs-ui/components-preview-file": "0.2.350-1",
|
|
18
|
+
"@libs-ui/components-scroll-overlay": "0.2.350-1",
|
|
19
|
+
"@libs-ui/services-dynamic-component": "0.2.350-1",
|
|
20
|
+
"@libs-ui/services-notification": "0.2.350-1",
|
|
21
21
|
"rxjs": "~7.8.0"
|
|
22
22
|
},
|
|
23
23
|
"sideEffects": false,
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import { DocumentExtList, getFileExtension, ImageExtList, VideoExtList } from '@libs-ui/utils';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class LibsUiPipesInputsUploadCheckFileExtensionPipe {
|
|
5
|
-
transform(file, type) {
|
|
6
|
-
const fileExtension = getFileExtension(file);
|
|
7
|
-
if (!fileExtension) {
|
|
8
|
-
return false;
|
|
9
|
-
}
|
|
10
|
-
switch (type) {
|
|
11
|
-
case 'image':
|
|
12
|
-
return ImageExtList.includes(fileExtension);
|
|
13
|
-
case 'video':
|
|
14
|
-
return VideoExtList.includes(fileExtension);
|
|
15
|
-
case 'word':
|
|
16
|
-
return ['doc', 'docx', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'].includes(fileExtension);
|
|
17
|
-
case 'xlsx':
|
|
18
|
-
return ['xls', 'xlsx', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'gsheet'].includes(fileExtension);
|
|
19
|
-
case 'pdf':
|
|
20
|
-
return ['pdf', 'application/pdf'].includes(fileExtension);
|
|
21
|
-
case 'pptx':
|
|
22
|
-
return ['ppt', 'pptx', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'].includes(fileExtension);
|
|
23
|
-
case 'other':
|
|
24
|
-
return ![...ImageExtList, ...VideoExtList, ...DocumentExtList].includes(fileExtension);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiPipesInputsUploadCheckFileExtensionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
28
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: LibsUiPipesInputsUploadCheckFileExtensionPipe, isStandalone: true, name: "LibsUiPipesInputsUploadCheckFileExtensionPipe" });
|
|
29
|
-
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiPipesInputsUploadCheckFileExtensionPipe, decorators: [{
|
|
31
|
-
type: Pipe,
|
|
32
|
-
args: [{
|
|
33
|
-
name: 'LibsUiPipesInputsUploadCheckFileExtensionPipe',
|
|
34
|
-
standalone: true,
|
|
35
|
-
}]
|
|
36
|
-
}] });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stZmlsZS1leHRlbnNpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvdXBsb2FkL3NyYy9waXBlcy9jaGVjay1maWxlLWV4dGVuc2lvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQU0vRixNQUFNLE9BQU8sNkNBQTZDO0lBQ3hELFNBQVMsQ0FBQyxJQUFXLEVBQUUsSUFBb0U7UUFDekYsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTlDLEtBQUssT0FBTztnQkFDVixPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFOUMsS0FBSyxNQUFNO2dCQUNULE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLHlFQUF5RSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRWxKLEtBQUssTUFBTTtnQkFDVCxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSwwQkFBMEIsRUFBRSxtRUFBbUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFNUosS0FBSyxLQUFLO2dCQUNSLE9BQU8sQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFNUQsS0FBSyxNQUFNO2dCQUNULE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLCtCQUErQixFQUFFLDJFQUEyRSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRS9KLEtBQUssT0FBTztnQkFDVixPQUFPLENBQUMsQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLFlBQVksRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRixDQUFDO0lBQ0gsQ0FBQzt3R0E3QlUsNkNBQTZDO3NHQUE3Qyw2Q0FBNkM7OzRGQUE3Qyw2Q0FBNkM7a0JBSnpELElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLCtDQUErQztvQkFDckQsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUZpbGUgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCB7IERvY3VtZW50RXh0TGlzdCwgZ2V0RmlsZUV4dGVuc2lvbiwgSW1hZ2VFeHRMaXN0LCBWaWRlb0V4dExpc3QgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ0xpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oZmlsZTogSUZpbGUsIHR5cGU6ICdpbWFnZScgfCAndmlkZW8nIHwgJ3dvcmQnIHwgJ3hsc3gnIHwgJ3BkZicgfCAncHB0eCcgfCAnb3RoZXInKSB7XG4gICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGdldEZpbGVFeHRlbnNpb24oZmlsZSk7XG5cbiAgICBpZiAoIWZpbGVFeHRlbnNpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdpbWFnZSc6XG4gICAgICAgIHJldHVybiBJbWFnZUV4dExpc3QuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbik7XG5cbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgICAgcmV0dXJuIFZpZGVvRXh0TGlzdC5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uKTtcblxuICAgICAgY2FzZSAnd29yZCc6XG4gICAgICAgIHJldHVybiBbJ2RvYycsICdkb2N4JywgJ2FwcGxpY2F0aW9uL21zd29yZCcsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCddLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pO1xuXG4gICAgICBjYXNlICd4bHN4JzpcbiAgICAgICAgcmV0dXJuIFsneGxzJywgJ3hsc3gnLCAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JywgJ2dzaGVldCddLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pO1xuXG4gICAgICBjYXNlICdwZGYnOlxuICAgICAgICByZXR1cm4gWydwZGYnLCAnYXBwbGljYXRpb24vcGRmJ10uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbik7XG5cbiAgICAgIGNhc2UgJ3BwdHgnOlxuICAgICAgICByZXR1cm4gWydwcHQnLCAncHB0eCcsICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJ10uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbik7XG5cbiAgICAgIGNhc2UgJ290aGVyJzpcbiAgICAgICAgcmV0dXJuICFbLi4uSW1hZ2VFeHRMaXN0LCAuLi5WaWRlb0V4dExpc3QsIC4uLkRvY3VtZW50RXh0TGlzdF0uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbik7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { PipeTransform } from '@angular/core';
|
|
2
|
-
import { IFile } from '@libs-ui/interfaces-types';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class LibsUiPipesInputsUploadCheckFileExtensionPipe implements PipeTransform {
|
|
5
|
-
transform(file: IFile, type: 'image' | 'video' | 'word' | 'xlsx' | 'pdf' | 'pptx' | 'other'): boolean;
|
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiPipesInputsUploadCheckFileExtensionPipe, never>;
|
|
7
|
-
static ɵpipe: i0.ɵɵPipeDeclaration<LibsUiPipesInputsUploadCheckFileExtensionPipe, "LibsUiPipesInputsUploadCheckFileExtensionPipe", true>;
|
|
8
|
-
}
|