@koobiq/components 18.25.0 → 18.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/checkbox/checkbox-tokens.scss +0 -2
  2. package/checkbox/checkbox.scss +17 -11
  3. package/core/pop-up/pop-up-trigger.d.ts +2 -1
  4. package/core/styles/common/_select.scss +1 -2
  5. package/dropdown/_dropdown-theme.scss +6 -6
  6. package/dropdown/dropdown.scss +3 -3
  7. package/esm2022/checkbox/checkbox.mjs +2 -2
  8. package/esm2022/core/pop-up/pop-up-trigger.mjs +3 -2
  9. package/esm2022/core/version.mjs +2 -2
  10. package/esm2022/file-upload/multiple-file-upload.component.mjs +3 -4
  11. package/esm2022/file-upload/single-file-upload.component.mjs +6 -7
  12. package/esm2022/form-field/form-field.mjs +2 -2
  13. package/esm2022/list/list-selection.component.mjs +2 -2
  14. package/esm2022/list/list.component.mjs +2 -2
  15. package/esm2022/modal/modal.component.mjs +2 -2
  16. package/esm2022/popover/popover.component.mjs +20 -1
  17. package/esm2022/select/select.component.mjs +3 -3
  18. package/esm2022/sidepanel/sidepanel-container.component.mjs +2 -2
  19. package/esm2022/tags/tag-list.component.mjs +12 -6
  20. package/esm2022/timezone/timezone-select.component.mjs +2 -2
  21. package/esm2022/top-bar/top-bar.mjs +14 -6
  22. package/esm2022/tree-select/tree-select.component.mjs +3 -3
  23. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  24. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  25. package/fesm2022/koobiq-components-core.mjs +3 -2
  26. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  27. package/fesm2022/koobiq-components-file-upload.mjs +7 -9
  28. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  29. package/fesm2022/koobiq-components-form-field.mjs +2 -2
  30. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  31. package/fesm2022/koobiq-components-list.mjs +4 -4
  32. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  33. package/fesm2022/koobiq-components-modal.mjs +2 -2
  34. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  35. package/fesm2022/koobiq-components-popover.mjs +19 -0
  36. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  37. package/fesm2022/koobiq-components-select.mjs +2 -2
  38. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  39. package/fesm2022/koobiq-components-sidepanel.mjs +2 -2
  40. package/fesm2022/koobiq-components-tags.mjs +11 -5
  41. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  42. package/fesm2022/koobiq-components-timezone.mjs +2 -2
  43. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  44. package/fesm2022/koobiq-components-top-bar.mjs +13 -5
  45. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  46. package/fesm2022/koobiq-components-tree-select.mjs +2 -2
  47. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  48. package/file-upload/_file-upload-theme.scss +8 -8
  49. package/file-upload/file-upload.scss +3 -3
  50. package/list/_list-theme.scss +9 -19
  51. package/list/list.scss +20 -6
  52. package/modal/modal-tokens.scss +1 -1
  53. package/modal/modal.scss +6 -3
  54. package/package.json +4 -4
  55. package/popover/popover.component.d.ts +5 -3
  56. package/schematics/ng-add/index.js +2 -2
  57. package/sidepanel/sidepanel-tokens.scss +4 -4
  58. package/textarea/textarea-tokens.scss +1 -1
  59. package/top-bar/top-bar-tokens.scss +4 -3
  60. package/top-bar/top-bar.d.ts +7 -0
  61. package/top-bar/top-bar.scss +27 -3
@@ -308,9 +308,6 @@ class KbqMultipleFileUploadComponent extends KbqFileUploadBase {
308
308
  return;
309
309
  }
310
310
  const filesToAdd = this.mapToFileItem(target.files);
311
- /* even if the user selects the same file,
312
- the onchange event will be triggered every time user clicks on the control.*/
313
- this.renderer.setProperty(this.input.nativeElement, 'value', null);
314
311
  this.files = [
315
312
  ...this.files,
316
313
  ...filesToAdd
@@ -318,6 +315,8 @@ class KbqMultipleFileUploadComponent extends KbqFileUploadBase {
318
315
  this.filesAdded.emit(filesToAdd);
319
316
  this.filesChange.emit(this.files);
320
317
  this.onTouched();
318
+ // allows the same file selection every time user clicks on the control.
319
+ this.renderer.setProperty(target, 'value', null);
321
320
  }
322
321
  /** @docs-private */
323
322
  onFileDropped(files) {
@@ -553,15 +552,14 @@ class KbqSingleFileUploadComponent extends KbqFileUploadBase {
553
552
  if (this.disabled) {
554
553
  return;
555
554
  }
556
- /* even if the user selects the same file,
557
- the onchange event will be triggered every time user clicks on the control.*/
558
- this.renderer.setProperty(this.input.nativeElement, 'value', null);
559
- const files = target.files;
560
- if (files?.length) {
561
- this.file = this.mapToFileItem(files[0]);
555
+ const fileToAdd = target.files?.item(0);
556
+ if (fileToAdd) {
557
+ this.file = this.mapToFileItem(fileToAdd);
562
558
  this.fileChange.emit(this.file);
563
559
  }
564
560
  this.onTouched();
561
+ // allows the same file selection every time user clicks on the control.
562
+ this.renderer.setProperty(target, 'value', null);
565
563
  }
566
564
  /** @docs-private */
567
565
  deleteItem(event) {
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-file-upload.mjs","sources":["../../../packages/components/file-upload/file-drop.ts","../../../packages/components/file-upload/file-upload.ts","../../../packages/components/file-upload/multiple-file-upload.component.ts","../../../packages/components/file-upload/multiple-file-upload.component.html","../../../packages/components/file-upload/single-file-upload.component.ts","../../../packages/components/file-upload/single-file-upload.component.html","../../../packages/components/file-upload/file-upload.module.ts","../../../packages/components/file-upload/koobiq-components-file-upload.ts"],"sourcesContent":["import { Directive, EventEmitter, Output } from '@angular/core';\nimport { KbqFile } from './file-upload';\n\nconst isFolderCanBeDragged = (): boolean => 'webkitGetAsEntry' in DataTransferItem.prototype;\nconst entryIsDirectory = (entry?: FileSystemEntry): entry is FileSystemDirectoryEntry => !!entry && entry.isDirectory;\nconst entryIsFile = (entry?: FileSystemEntry): entry is FileSystemFileEntry => !!entry && entry.isFile;\n\n@Directive({\n selector: '[kbqFileDrop]',\n exportAs: 'kbqFileDrop',\n host: {\n '[class.dragover]': 'dragover',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)'\n }\n})\nexport class KbqFileDropDirective {\n /** Flag that controls css-class modifications on drag events. */\n dragover: boolean;\n\n /** Emits an event when file items were dropped. */\n @Output() filesDropped: EventEmitter<FileList | KbqFile[]> = new EventEmitter<FileList | KbqFile[]>();\n\n /** @docs-private */\n onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = true;\n }\n\n /** @docs-private */\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n }\n\n /** @docs-private */\n onDrop(event: DragEvent) {\n if (!isFolderCanBeDragged()) {\n console.warn('Drag-and-drop functionality for folders is not supported by this browser.');\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n\n if (event.dataTransfer && event.dataTransfer.items.length > 0) {\n // event.dataTransfer.items requires dom.iterable lib\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const fileEntries: FileSystemEntry[] = [...event.dataTransfer.items]\n .filter((item: DataTransferItem) => item.kind === 'file')\n .map((item: DataTransferItem) => item.webkitGetAsEntry()!);\n\n Promise.all(fileEntries.map(unwrapDirectory))\n .then((fileList) => fileList.reduce((res, next) => res.concat(next), []))\n .then((entries: KbqFile[]) => this.filesDropped.emit(entries));\n }\n }\n}\n\nconst unwrapDirectory = async (item: FileSystemEntry): Promise<KbqFile[]> => {\n const queue: (FileSystemEntry | Promise<FileSystemEntry[]>)[] = [item];\n const result: Promise<KbqFile>[] = [];\n\n while (queue.length > 0) {\n const next = queue.pop();\n\n if (next instanceof Promise) {\n queue.push(...(await next));\n } else if (entryIsDirectory(next)) {\n const directoryReader = next.createReader();\n\n queue.push(\n new Promise<FileSystemEntry[]>((resolve, reject) => directoryReader.readEntries(resolve, reject))\n );\n } else if (entryIsFile(next)) {\n const fileEntry = next;\n\n result.push(\n new Promise((resolve, reject) => {\n fileEntry.file((file) => {\n (file as KbqFile).fullPath = fileEntry.fullPath;\n resolve(file as KbqFile);\n }, reject);\n })\n );\n }\n }\n\n return Promise.all(result);\n};\n","import { ChangeDetectorRef, DestroyRef, ElementRef, inject, InjectionToken, Renderer2 } from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms';\nimport { CanUpdateErrorState, ErrorStateMatcher, KBQ_LOCALE_SERVICE } from '@koobiq/components/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nexport interface KbqFile extends File {\n /* used when directory dropped */\n fullPath: string;\n}\n\nexport interface KbqFileItem {\n file: File;\n hasError?: boolean;\n loading?: BehaviorSubject<boolean>;\n progress?: BehaviorSubject<number>;\n}\n\nexport interface KbqInputFile {\n disabled: boolean;\n accept?: string[];\n onFileSelectedViaClick(event: Event): void;\n onFileDropped(files: FileList | KbqFile[]): void;\n}\n\nexport interface KbqInputFileLabel {\n /* Text for description, used with `browseLink` */\n captionText: string;\n /* Text for link with which the file(s) can be selected to download */\n browseLink: string;\n /* Header for multiple file-upload in default size */\n title?: string | undefined;\n}\n\n/**\n * @deprecated use FormControl for validation\n */\nexport type KbqFileValidatorFn = (file: File) => string | null;\n\n/* Object for labels customization inside file upload component */\nexport const KBQ_FILE_UPLOAD_CONFIGURATION = new InjectionToken<KbqInputFileLabel>('KbqFileUploadConfiguration');\n\nexport const isCorrectExtension = (file: File, accept?: string[]): boolean => {\n if (!accept?.length) return true;\n\n const { name, type } = file;\n const fileExt: string = name.split('.').pop() || '';\n\n for (const acceptedExtensionOrMimeType of accept) {\n const typeAsRegExp = new RegExp(acceptedExtensionOrMimeType);\n\n if (typeAsRegExp.test(fileExt) || typeAsRegExp.test(type)) {\n return true;\n }\n }\n\n return false;\n};\n\n/** @docs-private */\nexport abstract class KbqFileUploadBase implements CanUpdateErrorState {\n /** Tracks whether the component is in an error state based on the control, parent form,\n * and `errorStateMatcher`, triggering visual updates and state changes if needed. */\n errorState: boolean = false;\n\n /** An object used to control the error state of the component. */\n abstract errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `KbqFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n /** @docs-private */\n protected readonly cdr = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly renderer = inject(Renderer2);\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly ngControl = inject(NgControl, { optional: true, self: true });\n /** @docs-private */\n protected readonly parentForm = inject(NgForm, { optional: true });\n /** @docs-private */\n protected readonly parentFormGroup = inject(FormGroupDirective, { optional: true });\n /** @docs-private */\n protected readonly defaultErrorStateMatcher = inject(ErrorStateMatcher);\n /** @docs-private */\n protected readonly elementRef = inject(ElementRef);\n\n /** implemented as part of base class. Decided not use mixinErrorState, not to overcomplicate\n * @docs-private */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;\n const control = this.ngControl ? (this.ngControl.control as UntypedFormControl) : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { ErrorStateMatcher, ruRULocaleData } from '@koobiq/components/core';\nimport { KbqHint } from '@koobiq/components/form-field';\nimport { ProgressSpinnerMode } from '@koobiq/components/progress-spinner';\nimport { BehaviorSubject } from 'rxjs';\nimport {\n isCorrectExtension,\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFile,\n KbqFileItem,\n KbqFileUploadBase,\n KbqFileValidatorFn,\n KbqInputFile,\n KbqInputFileLabel\n} from './file-upload';\n\nlet nextMultipleFileUploadUniqueId = 0;\n\nexport interface KbqInputFileMultipleLabel extends KbqInputFileLabel {\n captionTextWhenSelected: string;\n captionTextForCompactSize: string;\n gridHeaders: {\n file: string;\n size: string;\n };\n\n [k: string | number | symbol]: unknown;\n}\n\nexport const KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileMultipleLabel =\n ruRULocaleData.fileUpload.multiple;\n\n@Component({\n selector: 'kbq-multiple-file-upload,kbq-file-upload[multiple]',\n templateUrl: './multiple-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './file-upload-tokens.scss', './multiple-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-multiple-file-upload'\n }\n})\nexport class KbqMultipleFileUploadComponent\n extends KbqFileUploadBase\n implements AfterViewInit, KbqInputFile, ControlValueAccessor, DoCheck\n{\n /**\n * A value responsible for progress spinner type.\n * Loading logic depends on selected mode */\n @Input() progressMode: ProgressSpinnerMode = 'determinate';\n /** Array of file type specifiers */\n @Input() accept?: string[];\n @Input() disabled: boolean;\n /**\n * @deprecated use `FormControl.errors`\n */\n @Input() errors: string[] = [];\n @Input() size: 'compact' | 'default' = 'default';\n /**\n * custom ID for the file input element.\n */\n @Input() inputId: string = `kbq-multiple-file-upload-${nextMultipleFileUploadUniqueId++}`;\n /**\n * @deprecated use FormControl for validation\n */\n @Input() customValidation?: KbqFileValidatorFn[];\n\n /** An object used to control the error state of the component. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n private _files: KbqFileItem[] = [];\n\n get files(): KbqFileItem[] {\n return this._files;\n }\n\n @Input()\n set files(currentFileList: KbqFileItem[]) {\n this._files = currentFileList;\n this.cvaOnChange(this._files);\n this.cdr.markForCheck();\n }\n\n /** Emits an event containing updated file list.\n * public output will be renamed to filesChange in next major release (#DS-3700) */\n @Output('fileQueueChanged') filesChange: EventEmitter<KbqFileItem[]> = new EventEmitter<KbqFileItem[]>();\n /**\n * Emits an event containing a chunk of files added to the file list.\n * Useful when handling added files, skipping filtering file list.\n */\n @Output() filesAdded: EventEmitter<KbqFileItem[]> = new EventEmitter<KbqFileItem[]>();\n /**\n * Emits an event containing a tuple of file and file's index when removed from the file list.\n * Useful when handle removed files, skipping filtering file list.\n */\n @Output() fileRemoved: EventEmitter<[KbqFileItem, number]> = new EventEmitter<[KbqFileItem, number]>();\n\n /** File Icon Template */\n @ContentChild('kbqFileIcon', { static: false, read: TemplateRef }) customFileIcon: TemplateRef<HTMLElement>;\n\n /** @docs-private */\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\n\n /** @docs-private */\n @ContentChildren(KbqHint) protected readonly hint: QueryList<TemplateRef<any>>;\n\n /** @docs-private */\n hasFocus = false;\n /** @docs-private */\n columnDefs: { header: string; cssClass: string }[];\n /** @docs-private */\n config: KbqInputFileMultipleLabel;\n\n /** @docs-private */\n separatedCaptionText: string[];\n /** @docs-private */\n separatedCaptionTextWhenSelected: string[];\n /** @docs-private */\n separatedCaptionTextForCompactSize: string[];\n\n /** cvaOnChange function registered via registerOnChange (ControlValueAccessor).\n * @docs-private\n */\n cvaOnChange = (_: KbqFileItem[]) => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private */\n onTouched = () => {};\n\n /** @docs-private */\n get acceptedFiles(): string {\n return this.accept?.join(',') || '*/*';\n }\n\n /**\n * @deprecated use `FormControl.errors`\n */\n get hasErrors(): boolean {\n return this.errors && !!this.errors.length;\n }\n\n /** @docs-private */\n get hasHint(): boolean {\n return this.hint.length > 0;\n }\n\n /**\n * Indicates an invalid state based on `errorState`,\n * applying a CSS class in HTML for visual feedback.\n * @docs-private\n */\n get invalid(): boolean {\n return this.errorState;\n }\n\n /** @docs-private */\n readonly configuration = inject<KbqInputFileMultipleLabel>(KBQ_FILE_UPLOAD_CONFIGURATION, {\n optional: true\n });\n\n constructor() {\n super();\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngAfterViewInit() {\n // FormControl specific errors update\n this.ngControl?.statusChanges?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.errors = Object.values(this.ngControl?.errors || {});\n this.cdr.markForCheck();\n });\n\n this.stateChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.cdr.markForCheck());\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n writeValue(files: FileList | KbqFileItem[] | null): void {\n this.files = files instanceof FileList || !files ? this.mapToFileItem(files) : files;\n this.filesChange.emit(this.files);\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n /** @docs-private */\n onFileSelectedViaClick({ target }: Event) {\n if (this.disabled) {\n return;\n }\n\n const filesToAdd = this.mapToFileItem((target as HTMLInputElement).files);\n\n /* even if the user selects the same file,\n the onchange event will be triggered every time user clicks on the control.*/\n this.renderer.setProperty(this.input.nativeElement, 'value', null);\n\n this.files = [\n ...this.files,\n ...filesToAdd\n ];\n this.filesAdded.emit(filesToAdd);\n this.filesChange.emit(this.files);\n this.onTouched();\n }\n\n /** @docs-private */\n onFileDropped(files: FileList | KbqFile[]) {\n if (this.disabled) {\n return;\n }\n\n const filesToAdd = this.mapToFileItem(files);\n\n this.files = [\n ...this.files,\n ...filesToAdd\n ];\n this.filesAdded.emit(filesToAdd);\n this.filesChange.emit(this.files);\n this.onTouched();\n }\n\n /** @docs-private */\n deleteFile(index: number, event?: MouseEvent) {\n if (this.disabled) {\n return;\n }\n\n event?.stopPropagation();\n const removedFile = this.files.splice(index, 1)[0];\n\n this.files = [...this.files];\n this.fileRemoved.emit([removedFile, index]);\n this.filesChange.emit(this.files);\n this.onTouched();\n }\n\n private updateLocaleParams = () => {\n this.config = this.configuration || this.localeService?.getParams('fileUpload').multiple;\n\n this.columnDefs = [\n { header: this.config.gridHeaders.file, cssClass: 'file' },\n { header: this.config.gridHeaders.size, cssClass: 'size' },\n { header: '', cssClass: 'action' }\n ];\n\n this.getCaptionText();\n\n this.cdr.markForCheck();\n };\n\n private mapToFileItem(files: FileList | KbqFile[] | null): KbqFileItem[] {\n if (!files) {\n return [];\n }\n\n return Array.from(files)\n .filter((file) => isCorrectExtension(file, this.accept))\n .map((file: File) => ({\n file,\n hasError: this.validateFile(file),\n loading: new BehaviorSubject<boolean>(false),\n progress: new BehaviorSubject<number>(0)\n }));\n }\n\n private validateFile(file: File): boolean | undefined {\n if (!this.customValidation?.length) {\n return;\n }\n\n const errorsPerFile = this.customValidation\n .reduce((errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n }, [])\n .filter(Boolean) as string[];\n\n this.errors = [\n ...this.errors,\n ...errorsPerFile\n ];\n\n return !!errorsPerFile.length;\n }\n\n private initDefaultParams() {\n this.config = KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION;\n\n this.columnDefs = [\n { header: this.config.gridHeaders.file, cssClass: 'file' },\n { header: this.config.gridHeaders.size, cssClass: 'size' },\n { header: '', cssClass: 'action' }\n ];\n\n this.getCaptionText();\n }\n\n private getCaptionText() {\n this.separatedCaptionText = this.config.captionText.split('{{ browseLink }}');\n this.separatedCaptionTextWhenSelected = this.config.captionTextWhenSelected.split('{{ browseLink }}');\n this.separatedCaptionTextForCompactSize = this.config.captionTextForCompactSize.split('{{ browseLink }}');\n }\n}\n","<div\n kbqFileDrop\n class=\"kbq-file-upload\"\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"invalid\"\n [class.selected]=\"files?.length\"\n [ngClass]=\"size\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n @if (!files.length) {\n <div class=\"dropzone\">\n @if (size === 'default') {\n <i color=\"contrast-fade\" kbq-icon=\"kbq-cloud-arrow-up-o_32\"></i>\n <div class=\"dropzone__text\">\n <span class=\"multiple__header\">{{ config.title }}</span>\n <div>\n <!-- prettier-ignore -->\n <span class=\"multiple__caption\">{{ separatedCaptionText[0] }}<label kbq-link pseudo [disabled]=\"disabled\" [tabIndex]=\"-1\" [for]=\"inputId\">{{ config.browseLink }}<ng-container *ngTemplateOutlet=\"inputTemplate\" /></label>{{ separatedCaptionText[1] }}</span>\n </div>\n </div>\n } @else {\n <i color=\"contrast-fade\" kbq-icon=\"kbq-cloud-arrow-up-o_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ separatedCaptionTextForCompactSize[0] }}\n <label kbq-link pseudo [disabled]=\"disabled\" [for]=\"inputId\" [tabIndex]=\"-1\">\n {{ config.browseLink }}\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n </label>\n {{ separatedCaptionTextForCompactSize[1] }}\n </span>\n }\n </div>\n } @else {\n <div class=\"file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n @for (column of columnDefs; track column) {\n <div [class]=\"'kbq-file-upload__' + column.cssClass\">\n {{ column.header }}\n </div>\n }\n </div>\n </div>\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n @for (file of files; track file; let index = $index) {\n <kbq-list-option\n class=\"multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.backspace)=\"deleteFile(index)\"\n (keydown.delete)=\"deleteFile(index)\"\n >\n <div class=\"kbq-file-upload__row\" [class.error]=\"file.hasError\">\n <div class=\"kbq-file-upload__file\">\n @if (\n { loading: file.loading | async, progress: file.progress | async };\n as asyncData\n ) {\n @if (!asyncData.loading) {\n <ng-container\n [ngTemplateOutlet]=\"$any(customFileIcon)\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n />\n }\n @if (asyncData.loading) {\n <kbq-progress-spinner\n class=\"kbq-file-upload-name-cell__icon\"\n [mode]=\"progressMode\"\n [value]=\"asyncData.progress || 0\"\n />\n }\n }\n <span\n class=\"file-item__text\"\n [kbqEllipsisCenter]=\"file.file.name\"\n [minVisibleLength]=\"10\"\n ></span>\n </div>\n <div class=\"kbq-file-upload__size\">{{ file.file.size | kbqDataSize }}</div>\n <div class=\"kbq-file-upload__action\">\n <i kbq-icon-button=\"kbq-xmark-circle_16\" (click)=\"deleteFile(index, $event)\"></i>\n </div>\n </div>\n </kbq-list-option>\n }\n </kbq-list-selection>\n </div>\n <div class=\"btn-upload\">\n <div class=\"dropzone\">\n <i kbq-icon=\"kbq-cloud-arrow-up-o_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ separatedCaptionTextWhenSelected[0] }}\n <label kbq-link pseudo [disabled]=\"disabled\" [for]=\"inputId\" [tabIndex]=\"-1\">\n {{ config.browseLink }}\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n </label>\n {{ separatedCaptionTextWhenSelected[1] }}\n </span>\n </div>\n </div>\n </div>\n }\n</div>\n\n@if (hasHint) {\n <div class=\"kbq-file-upload__hint\">\n <ng-content select=\"kbq-hint\" />\n </div>\n}\n\n<ng-template #inputTemplate>\n <input\n #input\n multiple\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n (change)=\"onFileSelectedViaClick($event)\"\n />\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControlStatus } from '@angular/forms';\nimport { ErrorStateMatcher, ruRULocaleData } from '@koobiq/components/core';\nimport { KbqHint } from '@koobiq/components/form-field';\nimport { ProgressSpinnerMode } from '@koobiq/components/progress-spinner';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport {\n isCorrectExtension,\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFile,\n KbqFileItem,\n KbqFileUploadBase,\n KbqFileValidatorFn,\n KbqInputFile,\n KbqInputFileLabel\n} from './file-upload';\n\nlet nextSingleFileUploadUniqueId = 0;\n\nexport const KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileLabel = ruRULocaleData.fileUpload.single;\n\n@Component({\n selector: 'kbq-single-file-upload,kbq-file-upload:not([multiple])',\n templateUrl: './single-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './file-upload-tokens.scss', './single-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-single-file-upload'\n }\n})\nexport class KbqSingleFileUploadComponent\n extends KbqFileUploadBase\n implements AfterViewInit, KbqInputFile, ControlValueAccessor, DoCheck\n{\n /**\n * A value responsible for progress spinner type.\n * Loading logic depends on selected mode */\n @Input() progressMode: ProgressSpinnerMode = 'determinate';\n /** Array of file type specifiers */\n @Input() accept?: string[];\n @Input() disabled: boolean = false;\n /**\n * @deprecated use `FormControl.errors`\n */\n @Input() errors: string[] = [];\n @Input() inputId: string = `kbq-single-file-upload-${nextSingleFileUploadUniqueId++}`;\n /**\n * @deprecated use FormControl for validation\n */\n @Input() customValidation?: KbqFileValidatorFn[];\n\n /** An object used to control the error state of the component. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n private _file: KbqFileItem | null = null;\n\n @Input()\n get file(): KbqFileItem | null {\n return this._file;\n }\n\n set file(currentFile: KbqFileItem | null) {\n this._file = currentFile;\n this.cvaOnChange(this._file);\n this.cdr.markForCheck();\n }\n\n /** Emits an event containing updated file.\n * public output will be renamed to fileChange in next major release (#DS-3700) */\n @Output('fileQueueChange') fileChange: EventEmitter<KbqFileItem | null> = new EventEmitter<KbqFileItem | null>();\n\n /** @docs-private */\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\n\n /** @docs-private */\n @ContentChildren(KbqHint) private readonly hint: QueryList<KbqHint>;\n\n /** @docs-private */\n config: KbqInputFileLabel;\n /** @docs-private */\n separatedCaptionText: string[];\n\n /** cvaOnChange function registered via registerOnChange (ControlValueAccessor).\n * @docs-private\n */\n cvaOnChange = (_: KbqFileItem | null) => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n onTouched = () => {};\n\n /** @docs-private */\n get acceptedFiles(): string {\n return this.accept?.join(',') || '*/*';\n }\n\n /** @docs-private */\n get hasHint(): boolean {\n return this.hint.length > 0;\n }\n\n /**\n * Indicates an invalid state based on file errors or `errorState`,\n * applying a CSS class in HTML for visual feedback.\n * @docs-private\n */\n get invalid(): boolean {\n return !!this.file?.hasError || this.errorState;\n }\n\n /** @docs-private */\n readonly configuration: KbqInputFileLabel | null = inject(KBQ_FILE_UPLOAD_CONFIGURATION, {\n optional: true\n });\n\n constructor() {\n super();\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngAfterViewInit() {\n // FormControl specific errors update\n this.ngControl?.statusChanges\n ?.pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe((status: FormControlStatus) => {\n if (this._file) {\n this._file.hasError = status === 'INVALID';\n }\n\n this.errors = Object.values(this.ngControl?.errors || {});\n this.cdr.markForCheck();\n });\n\n this.stateChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.cdr.markForCheck());\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n writeValue(file: File | KbqFileItem | null): void {\n this.file = file instanceof File ? this.mapToFileItem(file) : file;\n this.fileChange.emit(this.file);\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n /** @docs-private */\n onFileSelectedViaClick({ target }: Event): void {\n if (this.disabled) {\n return;\n }\n\n /* even if the user selects the same file,\n the onchange event will be triggered every time user clicks on the control.*/\n this.renderer.setProperty(this.input.nativeElement, 'value', null);\n\n const files: FileList | null = (target as HTMLInputElement).files;\n\n if (files?.length) {\n this.file = this.mapToFileItem(files[0]);\n this.fileChange.emit(this.file);\n }\n\n this.onTouched();\n }\n\n /** @docs-private */\n deleteItem(event?: MouseEvent): void {\n if (this.disabled) return;\n\n event?.stopPropagation();\n this.file = null;\n this.fileChange.emit(this.file);\n this.errors = [];\n // mark as touched after file drop even if file wasn't correct\n this.onTouched();\n }\n\n /** @docs-private */\n onFileDropped(files: FileList | KbqFile[]): void {\n if (this.disabled) {\n return;\n }\n\n if (files?.length && isCorrectExtension(files[0], this.accept)) {\n this.file = this.mapToFileItem(files[0]);\n this.fileChange.emit(this.file);\n }\n\n // mark as touched after file drop even if file wasn't correct\n this.onTouched();\n }\n\n private updateLocaleParams = () => {\n this.config = this.configuration || this.localeService?.getParams('fileUpload').multiple;\n\n this.getCaptionText();\n\n this.cdr.markForCheck();\n };\n\n private mapToFileItem(file: File): KbqFileItem {\n return {\n file,\n hasError: this.validateFile(file),\n progress: new BehaviorSubject<number>(0),\n loading: new BehaviorSubject<boolean>(false)\n };\n }\n\n private validateFile(file: File): boolean | undefined {\n if (!this.customValidation?.length) return;\n\n this.errors = this.customValidation\n .reduce((errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n }, [])\n .filter(Boolean) as string[];\n\n return !!this.errors.length;\n }\n\n private initDefaultParams() {\n this.config = KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION;\n\n this.getCaptionText();\n }\n\n private getCaptionText() {\n this.separatedCaptionText = this.config.captionText.split('{{ browseLink }}');\n }\n}\n","<div\n kbqFileDrop\n class=\"kbq-file-upload\"\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"invalid\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n @if (!file) {\n <div class=\"dropzone\">\n <i color=\"contrast-fade\" kbq-icon=\"kbq-cloud-arrow-up-o_24\"></i>\n <!-- prettier-ignore -->\n <span class=\"dropzone__text\">{{ separatedCaptionText[0] }}<label kbq-link pseudo [disabled]=\"disabled\" [tabIndex]=\"-1\" [for]=\"inputId\">{{ config.browseLink }}<input #input type=\"file\" class=\"cdk-visually-hidden\" [id]=\"inputId\" [accept]=\"acceptedFiles\" [disabled]=\"disabled\" (change)=\"onFileSelectedViaClick($event)\"></label>{{ separatedCaptionText[1] }}</span>\n </div>\n } @else {\n @if (file) {\n <div class=\"file-item\">\n <div class=\"file-item__text-wrapper\">\n @if ({ loading: file.loading | async, progress: file.progress | async }; as asyncData) {\n @if (!asyncData.loading) {\n <ng-content select=\"[kbq-icon]\" />\n }\n @if (asyncData.loading) {\n <kbq-progress-spinner [mode]=\"progressMode\" [value]=\"asyncData.progress || 0\" />\n }\n }\n <div class=\"file-item__text\" [kbqEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <i\n kbq-icon-button=\"kbq-xmark-circle_16\"\n [disabled]=\"disabled\"\n (click)=\"deleteItem($event)\"\n (keydown.backspace)=\"deleteItem()\"\n (keydown.delete)=\"deleteItem()\"\n ></i>\n </div>\n }\n }\n</div>\n\n@if (hasHint) {\n <div class=\"kbq-file-upload__hint\">\n <ng-content select=\"kbq-hint\" />\n </div>\n}\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDataSizePipe } from '@koobiq/components/core';\nimport { KbqEllipsisCenterModule } from '@koobiq/components/ellipsis-center';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqListModule } from '@koobiq/components/list';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqFileDropDirective } from './file-drop';\nimport { KbqMultipleFileUploadComponent } from './multiple-file-upload.component';\nimport { KbqSingleFileUploadComponent } from './single-file-upload.component';\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n KbqToolTipModule,\n KbqProgressSpinnerModule,\n KbqIconModule,\n KbqButtonModule,\n KbqListModule,\n KbqFormFieldModule,\n KbqEllipsisCenterModule,\n KbqDataSizePipe,\n KbqLinkModule,\n AsyncPipe,\n NgClass,\n NgTemplateOutlet\n ],\n declarations: [\n KbqFileDropDirective,\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent\n ],\n exports: [\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent,\n KbqFileDropDirective\n ]\n})\nexport class KbqFileUploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i7.KbqFileDropDirective","i3","i4","i5.KbqFileDropDirective"],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-file-upload.mjs","sources":["../../../packages/components/file-upload/file-drop.ts","../../../packages/components/file-upload/file-upload.ts","../../../packages/components/file-upload/multiple-file-upload.component.ts","../../../packages/components/file-upload/multiple-file-upload.component.html","../../../packages/components/file-upload/single-file-upload.component.ts","../../../packages/components/file-upload/single-file-upload.component.html","../../../packages/components/file-upload/file-upload.module.ts","../../../packages/components/file-upload/koobiq-components-file-upload.ts"],"sourcesContent":["import { Directive, EventEmitter, Output } from '@angular/core';\nimport { KbqFile } from './file-upload';\n\nconst isFolderCanBeDragged = (): boolean => 'webkitGetAsEntry' in DataTransferItem.prototype;\nconst entryIsDirectory = (entry?: FileSystemEntry): entry is FileSystemDirectoryEntry => !!entry && entry.isDirectory;\nconst entryIsFile = (entry?: FileSystemEntry): entry is FileSystemFileEntry => !!entry && entry.isFile;\n\n@Directive({\n selector: '[kbqFileDrop]',\n exportAs: 'kbqFileDrop',\n host: {\n '[class.dragover]': 'dragover',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)'\n }\n})\nexport class KbqFileDropDirective {\n /** Flag that controls css-class modifications on drag events. */\n dragover: boolean;\n\n /** Emits an event when file items were dropped. */\n @Output() filesDropped: EventEmitter<FileList | KbqFile[]> = new EventEmitter<FileList | KbqFile[]>();\n\n /** @docs-private */\n onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = true;\n }\n\n /** @docs-private */\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n }\n\n /** @docs-private */\n onDrop(event: DragEvent) {\n if (!isFolderCanBeDragged()) {\n console.warn('Drag-and-drop functionality for folders is not supported by this browser.');\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n\n if (event.dataTransfer && event.dataTransfer.items.length > 0) {\n // event.dataTransfer.items requires dom.iterable lib\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const fileEntries: FileSystemEntry[] = [...event.dataTransfer.items]\n .filter((item: DataTransferItem) => item.kind === 'file')\n .map((item: DataTransferItem) => item.webkitGetAsEntry()!);\n\n Promise.all(fileEntries.map(unwrapDirectory))\n .then((fileList) => fileList.reduce((res, next) => res.concat(next), []))\n .then((entries: KbqFile[]) => this.filesDropped.emit(entries));\n }\n }\n}\n\nconst unwrapDirectory = async (item: FileSystemEntry): Promise<KbqFile[]> => {\n const queue: (FileSystemEntry | Promise<FileSystemEntry[]>)[] = [item];\n const result: Promise<KbqFile>[] = [];\n\n while (queue.length > 0) {\n const next = queue.pop();\n\n if (next instanceof Promise) {\n queue.push(...(await next));\n } else if (entryIsDirectory(next)) {\n const directoryReader = next.createReader();\n\n queue.push(\n new Promise<FileSystemEntry[]>((resolve, reject) => directoryReader.readEntries(resolve, reject))\n );\n } else if (entryIsFile(next)) {\n const fileEntry = next;\n\n result.push(\n new Promise((resolve, reject) => {\n fileEntry.file((file) => {\n (file as KbqFile).fullPath = fileEntry.fullPath;\n resolve(file as KbqFile);\n }, reject);\n })\n );\n }\n }\n\n return Promise.all(result);\n};\n","import { ChangeDetectorRef, DestroyRef, ElementRef, inject, InjectionToken, Renderer2 } from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms';\nimport { CanUpdateErrorState, ErrorStateMatcher, KBQ_LOCALE_SERVICE } from '@koobiq/components/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nexport interface KbqFile extends File {\n /* used when directory dropped */\n fullPath: string;\n}\n\nexport interface KbqFileItem {\n file: File;\n hasError?: boolean;\n loading?: BehaviorSubject<boolean>;\n progress?: BehaviorSubject<number>;\n}\n\nexport interface KbqInputFile {\n disabled: boolean;\n accept?: string[];\n onFileSelectedViaClick(event: Event): void;\n onFileDropped(files: FileList | KbqFile[]): void;\n}\n\nexport interface KbqInputFileLabel {\n /* Text for description, used with `browseLink` */\n captionText: string;\n /* Text for link with which the file(s) can be selected to download */\n browseLink: string;\n /* Header for multiple file-upload in default size */\n title?: string | undefined;\n}\n\n/**\n * @deprecated use FormControl for validation\n */\nexport type KbqFileValidatorFn = (file: File) => string | null;\n\n/* Object for labels customization inside file upload component */\nexport const KBQ_FILE_UPLOAD_CONFIGURATION = new InjectionToken<KbqInputFileLabel>('KbqFileUploadConfiguration');\n\nexport const isCorrectExtension = (file: File, accept?: string[]): boolean => {\n if (!accept?.length) return true;\n\n const { name, type } = file;\n const fileExt: string = name.split('.').pop() || '';\n\n for (const acceptedExtensionOrMimeType of accept) {\n const typeAsRegExp = new RegExp(acceptedExtensionOrMimeType);\n\n if (typeAsRegExp.test(fileExt) || typeAsRegExp.test(type)) {\n return true;\n }\n }\n\n return false;\n};\n\n/** @docs-private */\nexport abstract class KbqFileUploadBase implements CanUpdateErrorState {\n /** Tracks whether the component is in an error state based on the control, parent form,\n * and `errorStateMatcher`, triggering visual updates and state changes if needed. */\n errorState: boolean = false;\n\n /** An object used to control the error state of the component. */\n abstract errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `KbqFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n /** @docs-private */\n protected readonly cdr = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly renderer = inject(Renderer2);\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly ngControl = inject(NgControl, { optional: true, self: true });\n /** @docs-private */\n protected readonly parentForm = inject(NgForm, { optional: true });\n /** @docs-private */\n protected readonly parentFormGroup = inject(FormGroupDirective, { optional: true });\n /** @docs-private */\n protected readonly defaultErrorStateMatcher = inject(ErrorStateMatcher);\n /** @docs-private */\n protected readonly elementRef = inject(ElementRef);\n\n /** implemented as part of base class. Decided not use mixinErrorState, not to overcomplicate\n * @docs-private */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;\n const control = this.ngControl ? (this.ngControl.control as UntypedFormControl) : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { ErrorStateMatcher, ruRULocaleData } from '@koobiq/components/core';\nimport { KbqHint } from '@koobiq/components/form-field';\nimport { ProgressSpinnerMode } from '@koobiq/components/progress-spinner';\nimport { BehaviorSubject } from 'rxjs';\nimport {\n isCorrectExtension,\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFile,\n KbqFileItem,\n KbqFileUploadBase,\n KbqFileValidatorFn,\n KbqInputFile,\n KbqInputFileLabel\n} from './file-upload';\n\nlet nextMultipleFileUploadUniqueId = 0;\n\nexport interface KbqInputFileMultipleLabel extends KbqInputFileLabel {\n captionTextWhenSelected: string;\n captionTextForCompactSize: string;\n gridHeaders: {\n file: string;\n size: string;\n };\n\n [k: string | number | symbol]: unknown;\n}\n\nexport const KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileMultipleLabel =\n ruRULocaleData.fileUpload.multiple;\n\n@Component({\n selector: 'kbq-multiple-file-upload,kbq-file-upload[multiple]',\n templateUrl: './multiple-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './file-upload-tokens.scss', './multiple-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-multiple-file-upload'\n }\n})\nexport class KbqMultipleFileUploadComponent\n extends KbqFileUploadBase\n implements AfterViewInit, KbqInputFile, ControlValueAccessor, DoCheck\n{\n /**\n * A value responsible for progress spinner type.\n * Loading logic depends on selected mode */\n @Input() progressMode: ProgressSpinnerMode = 'determinate';\n /** Array of file type specifiers */\n @Input() accept?: string[];\n @Input() disabled: boolean;\n /**\n * @deprecated use `FormControl.errors`\n */\n @Input() errors: string[] = [];\n @Input() size: 'compact' | 'default' = 'default';\n /**\n * custom ID for the file input element.\n */\n @Input() inputId: string = `kbq-multiple-file-upload-${nextMultipleFileUploadUniqueId++}`;\n /**\n * @deprecated use FormControl for validation\n */\n @Input() customValidation?: KbqFileValidatorFn[];\n\n /** An object used to control the error state of the component. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n private _files: KbqFileItem[] = [];\n\n get files(): KbqFileItem[] {\n return this._files;\n }\n\n @Input()\n set files(currentFileList: KbqFileItem[]) {\n this._files = currentFileList;\n this.cvaOnChange(this._files);\n this.cdr.markForCheck();\n }\n\n /** Emits an event containing updated file list.\n * public output will be renamed to filesChange in next major release (#DS-3700) */\n @Output('fileQueueChanged') filesChange: EventEmitter<KbqFileItem[]> = new EventEmitter<KbqFileItem[]>();\n /**\n * Emits an event containing a chunk of files added to the file list.\n * Useful when handling added files, skipping filtering file list.\n */\n @Output() filesAdded: EventEmitter<KbqFileItem[]> = new EventEmitter<KbqFileItem[]>();\n /**\n * Emits an event containing a tuple of file and file's index when removed from the file list.\n * Useful when handle removed files, skipping filtering file list.\n */\n @Output() fileRemoved: EventEmitter<[KbqFileItem, number]> = new EventEmitter<[KbqFileItem, number]>();\n\n /** File Icon Template */\n @ContentChild('kbqFileIcon', { static: false, read: TemplateRef }) customFileIcon: TemplateRef<HTMLElement>;\n\n /** @docs-private */\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\n\n /** @docs-private */\n @ContentChildren(KbqHint) protected readonly hint: QueryList<TemplateRef<any>>;\n\n /** @docs-private */\n hasFocus = false;\n /** @docs-private */\n columnDefs: { header: string; cssClass: string }[];\n /** @docs-private */\n config: KbqInputFileMultipleLabel;\n\n /** @docs-private */\n separatedCaptionText: string[];\n /** @docs-private */\n separatedCaptionTextWhenSelected: string[];\n /** @docs-private */\n separatedCaptionTextForCompactSize: string[];\n\n /** cvaOnChange function registered via registerOnChange (ControlValueAccessor).\n * @docs-private\n */\n cvaOnChange = (_: KbqFileItem[]) => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private */\n onTouched = () => {};\n\n /** @docs-private */\n get acceptedFiles(): string {\n return this.accept?.join(',') || '*/*';\n }\n\n /**\n * @deprecated use `FormControl.errors`\n */\n get hasErrors(): boolean {\n return this.errors && !!this.errors.length;\n }\n\n /** @docs-private */\n get hasHint(): boolean {\n return this.hint.length > 0;\n }\n\n /**\n * Indicates an invalid state based on `errorState`,\n * applying a CSS class in HTML for visual feedback.\n * @docs-private\n */\n get invalid(): boolean {\n return this.errorState;\n }\n\n /** @docs-private */\n readonly configuration = inject<KbqInputFileMultipleLabel>(KBQ_FILE_UPLOAD_CONFIGURATION, {\n optional: true\n });\n\n constructor() {\n super();\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngAfterViewInit() {\n // FormControl specific errors update\n this.ngControl?.statusChanges?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.errors = Object.values(this.ngControl?.errors || {});\n this.cdr.markForCheck();\n });\n\n this.stateChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.cdr.markForCheck());\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n writeValue(files: FileList | KbqFileItem[] | null): void {\n this.files = files instanceof FileList || !files ? this.mapToFileItem(files) : files;\n this.filesChange.emit(this.files);\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n /** @docs-private */\n onFileSelectedViaClick({ target }: Event) {\n if (this.disabled) {\n return;\n }\n\n const filesToAdd = this.mapToFileItem((target as HTMLInputElement).files);\n\n this.files = [\n ...this.files,\n ...filesToAdd\n ];\n this.filesAdded.emit(filesToAdd);\n this.filesChange.emit(this.files);\n this.onTouched();\n // allows the same file selection every time user clicks on the control.\n this.renderer.setProperty(target, 'value', null);\n }\n\n /** @docs-private */\n onFileDropped(files: FileList | KbqFile[]) {\n if (this.disabled) {\n return;\n }\n\n const filesToAdd = this.mapToFileItem(files);\n\n this.files = [\n ...this.files,\n ...filesToAdd\n ];\n this.filesAdded.emit(filesToAdd);\n this.filesChange.emit(this.files);\n this.onTouched();\n }\n\n /** @docs-private */\n deleteFile(index: number, event?: MouseEvent) {\n if (this.disabled) {\n return;\n }\n\n event?.stopPropagation();\n const removedFile = this.files.splice(index, 1)[0];\n\n this.files = [...this.files];\n this.fileRemoved.emit([removedFile, index]);\n this.filesChange.emit(this.files);\n this.onTouched();\n }\n\n private updateLocaleParams = () => {\n this.config = this.configuration || this.localeService?.getParams('fileUpload').multiple;\n\n this.columnDefs = [\n { header: this.config.gridHeaders.file, cssClass: 'file' },\n { header: this.config.gridHeaders.size, cssClass: 'size' },\n { header: '', cssClass: 'action' }\n ];\n\n this.getCaptionText();\n\n this.cdr.markForCheck();\n };\n\n private mapToFileItem(files: FileList | KbqFile[] | null): KbqFileItem[] {\n if (!files) {\n return [];\n }\n\n return Array.from(files)\n .filter((file) => isCorrectExtension(file, this.accept))\n .map((file: File) => ({\n file,\n hasError: this.validateFile(file),\n loading: new BehaviorSubject<boolean>(false),\n progress: new BehaviorSubject<number>(0)\n }));\n }\n\n private validateFile(file: File): boolean | undefined {\n if (!this.customValidation?.length) {\n return;\n }\n\n const errorsPerFile = this.customValidation\n .reduce((errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n }, [])\n .filter(Boolean) as string[];\n\n this.errors = [\n ...this.errors,\n ...errorsPerFile\n ];\n\n return !!errorsPerFile.length;\n }\n\n private initDefaultParams() {\n this.config = KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION;\n\n this.columnDefs = [\n { header: this.config.gridHeaders.file, cssClass: 'file' },\n { header: this.config.gridHeaders.size, cssClass: 'size' },\n { header: '', cssClass: 'action' }\n ];\n\n this.getCaptionText();\n }\n\n private getCaptionText() {\n this.separatedCaptionText = this.config.captionText.split('{{ browseLink }}');\n this.separatedCaptionTextWhenSelected = this.config.captionTextWhenSelected.split('{{ browseLink }}');\n this.separatedCaptionTextForCompactSize = this.config.captionTextForCompactSize.split('{{ browseLink }}');\n }\n}\n","<div\n kbqFileDrop\n class=\"kbq-file-upload\"\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"invalid\"\n [class.selected]=\"files?.length\"\n [ngClass]=\"size\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n @if (!files.length) {\n <div class=\"dropzone\">\n @if (size === 'default') {\n <i color=\"contrast-fade\" kbq-icon=\"kbq-cloud-arrow-up-o_32\"></i>\n <div class=\"dropzone__text\">\n <span class=\"multiple__header\">{{ config.title }}</span>\n <div>\n <!-- prettier-ignore -->\n <span class=\"multiple__caption\">{{ separatedCaptionText[0] }}<label kbq-link pseudo [disabled]=\"disabled\" [tabIndex]=\"-1\" [for]=\"inputId\">{{ config.browseLink }}<ng-container *ngTemplateOutlet=\"inputTemplate\" /></label>{{ separatedCaptionText[1] }}</span>\n </div>\n </div>\n } @else {\n <i color=\"contrast-fade\" kbq-icon=\"kbq-cloud-arrow-up-o_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ separatedCaptionTextForCompactSize[0] }}\n <label kbq-link pseudo [disabled]=\"disabled\" [for]=\"inputId\" [tabIndex]=\"-1\">\n {{ config.browseLink }}\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n </label>\n {{ separatedCaptionTextForCompactSize[1] }}\n </span>\n }\n </div>\n } @else {\n <div class=\"file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n @for (column of columnDefs; track column) {\n <div [class]=\"'kbq-file-upload__' + column.cssClass\">\n {{ column.header }}\n </div>\n }\n </div>\n </div>\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n @for (file of files; track file; let index = $index) {\n <kbq-list-option\n class=\"multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.backspace)=\"deleteFile(index)\"\n (keydown.delete)=\"deleteFile(index)\"\n >\n <div class=\"kbq-file-upload__row\" [class.error]=\"file.hasError\">\n <div class=\"kbq-file-upload__file\">\n @if (\n { loading: file.loading | async, progress: file.progress | async };\n as asyncData\n ) {\n @if (!asyncData.loading) {\n <ng-container\n [ngTemplateOutlet]=\"$any(customFileIcon)\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n />\n }\n @if (asyncData.loading) {\n <kbq-progress-spinner\n class=\"kbq-file-upload-name-cell__icon\"\n [mode]=\"progressMode\"\n [value]=\"asyncData.progress || 0\"\n />\n }\n }\n <span\n class=\"file-item__text\"\n [kbqEllipsisCenter]=\"file.file.name\"\n [minVisibleLength]=\"10\"\n ></span>\n </div>\n <div class=\"kbq-file-upload__size\">{{ file.file.size | kbqDataSize }}</div>\n <div class=\"kbq-file-upload__action\">\n <i kbq-icon-button=\"kbq-xmark-circle_16\" (click)=\"deleteFile(index, $event)\"></i>\n </div>\n </div>\n </kbq-list-option>\n }\n </kbq-list-selection>\n </div>\n <div class=\"btn-upload\">\n <div class=\"dropzone\">\n <i kbq-icon=\"kbq-cloud-arrow-up-o_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ separatedCaptionTextWhenSelected[0] }}\n <label kbq-link pseudo [disabled]=\"disabled\" [for]=\"inputId\" [tabIndex]=\"-1\">\n {{ config.browseLink }}\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n </label>\n {{ separatedCaptionTextWhenSelected[1] }}\n </span>\n </div>\n </div>\n </div>\n }\n</div>\n\n@if (hasHint) {\n <div class=\"kbq-file-upload__hint\">\n <ng-content select=\"kbq-hint\" />\n </div>\n}\n\n<ng-template #inputTemplate>\n <input\n #input\n multiple\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n (change)=\"onFileSelectedViaClick($event)\"\n />\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControlStatus } from '@angular/forms';\nimport { ErrorStateMatcher, ruRULocaleData } from '@koobiq/components/core';\nimport { KbqHint } from '@koobiq/components/form-field';\nimport { ProgressSpinnerMode } from '@koobiq/components/progress-spinner';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport {\n isCorrectExtension,\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFile,\n KbqFileItem,\n KbqFileUploadBase,\n KbqFileValidatorFn,\n KbqInputFile,\n KbqInputFileLabel\n} from './file-upload';\n\nlet nextSingleFileUploadUniqueId = 0;\n\nexport const KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileLabel = ruRULocaleData.fileUpload.single;\n\n@Component({\n selector: 'kbq-single-file-upload,kbq-file-upload:not([multiple])',\n templateUrl: './single-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './file-upload-tokens.scss', './single-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-single-file-upload'\n }\n})\nexport class KbqSingleFileUploadComponent\n extends KbqFileUploadBase\n implements AfterViewInit, KbqInputFile, ControlValueAccessor, DoCheck\n{\n /**\n * A value responsible for progress spinner type.\n * Loading logic depends on selected mode */\n @Input() progressMode: ProgressSpinnerMode = 'determinate';\n /** Array of file type specifiers */\n @Input() accept?: string[];\n @Input() disabled: boolean = false;\n /**\n * @deprecated use `FormControl.errors`\n */\n @Input() errors: string[] = [];\n @Input() inputId: string = `kbq-single-file-upload-${nextSingleFileUploadUniqueId++}`;\n /**\n * @deprecated use FormControl for validation\n */\n @Input() customValidation?: KbqFileValidatorFn[];\n\n /** An object used to control the error state of the component. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n private _file: KbqFileItem | null = null;\n\n @Input()\n get file(): KbqFileItem | null {\n return this._file;\n }\n\n set file(currentFile: KbqFileItem | null) {\n this._file = currentFile;\n this.cvaOnChange(this._file);\n this.cdr.markForCheck();\n }\n\n /** Emits an event containing updated file.\n * public output will be renamed to fileChange in next major release (#DS-3700) */\n @Output('fileQueueChange') fileChange: EventEmitter<KbqFileItem | null> = new EventEmitter<KbqFileItem | null>();\n\n /** @docs-private */\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\n\n /** @docs-private */\n @ContentChildren(KbqHint) private readonly hint: QueryList<KbqHint>;\n\n /** @docs-private */\n config: KbqInputFileLabel;\n /** @docs-private */\n separatedCaptionText: string[];\n\n /** cvaOnChange function registered via registerOnChange (ControlValueAccessor).\n * @docs-private\n */\n cvaOnChange = (_: KbqFileItem | null) => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n onTouched = () => {};\n\n /** @docs-private */\n get acceptedFiles(): string {\n return this.accept?.join(',') || '*/*';\n }\n\n /** @docs-private */\n get hasHint(): boolean {\n return this.hint.length > 0;\n }\n\n /**\n * Indicates an invalid state based on file errors or `errorState`,\n * applying a CSS class in HTML for visual feedback.\n * @docs-private\n */\n get invalid(): boolean {\n return !!this.file?.hasError || this.errorState;\n }\n\n /** @docs-private */\n readonly configuration: KbqInputFileLabel | null = inject(KBQ_FILE_UPLOAD_CONFIGURATION, {\n optional: true\n });\n\n constructor() {\n super();\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngAfterViewInit() {\n // FormControl specific errors update\n this.ngControl?.statusChanges\n ?.pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe((status: FormControlStatus) => {\n if (this._file) {\n this._file.hasError = status === 'INVALID';\n }\n\n this.errors = Object.values(this.ngControl?.errors || {});\n this.cdr.markForCheck();\n });\n\n this.stateChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.cdr.markForCheck());\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n writeValue(file: File | KbqFileItem | null): void {\n this.file = file instanceof File ? this.mapToFileItem(file) : file;\n this.fileChange.emit(this.file);\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n /** @docs-private */\n onFileSelectedViaClick({ target }: Event): void {\n if (this.disabled) {\n return;\n }\n\n const fileToAdd = (target as HTMLInputElement).files?.item(0);\n\n if (fileToAdd) {\n this.file = this.mapToFileItem(fileToAdd);\n this.fileChange.emit(this.file);\n }\n\n this.onTouched();\n // allows the same file selection every time user clicks on the control.\n this.renderer.setProperty(target, 'value', null);\n }\n\n /** @docs-private */\n deleteItem(event?: MouseEvent): void {\n if (this.disabled) return;\n\n event?.stopPropagation();\n this.file = null;\n this.fileChange.emit(this.file);\n this.errors = [];\n // mark as touched after file drop even if file wasn't correct\n this.onTouched();\n }\n\n /** @docs-private */\n onFileDropped(files: FileList | KbqFile[]): void {\n if (this.disabled) {\n return;\n }\n\n if (files?.length && isCorrectExtension(files[0], this.accept)) {\n this.file = this.mapToFileItem(files[0]);\n this.fileChange.emit(this.file);\n }\n\n // mark as touched after file drop even if file wasn't correct\n this.onTouched();\n }\n\n private updateLocaleParams = () => {\n this.config = this.configuration || this.localeService?.getParams('fileUpload').multiple;\n\n this.getCaptionText();\n\n this.cdr.markForCheck();\n };\n\n private mapToFileItem(file: File): KbqFileItem {\n return {\n file,\n hasError: this.validateFile(file),\n progress: new BehaviorSubject<number>(0),\n loading: new BehaviorSubject<boolean>(false)\n };\n }\n\n private validateFile(file: File): boolean | undefined {\n if (!this.customValidation?.length) return;\n\n this.errors = this.customValidation\n .reduce((errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n }, [])\n .filter(Boolean) as string[];\n\n return !!this.errors.length;\n }\n\n private initDefaultParams() {\n this.config = KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION;\n\n this.getCaptionText();\n }\n\n private getCaptionText() {\n this.separatedCaptionText = this.config.captionText.split('{{ browseLink }}');\n }\n}\n","<div\n kbqFileDrop\n class=\"kbq-file-upload\"\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"invalid\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n @if (!file) {\n <div class=\"dropzone\">\n <i color=\"contrast-fade\" kbq-icon=\"kbq-cloud-arrow-up-o_24\"></i>\n <!-- prettier-ignore -->\n <span class=\"dropzone__text\">{{ separatedCaptionText[0] }}<label kbq-link pseudo [disabled]=\"disabled\" [tabIndex]=\"-1\" [for]=\"inputId\">{{ config.browseLink }}<input #input type=\"file\" class=\"cdk-visually-hidden\" [id]=\"inputId\" [accept]=\"acceptedFiles\" [disabled]=\"disabled\" (change)=\"onFileSelectedViaClick($event)\"></label>{{ separatedCaptionText[1] }}</span>\n </div>\n } @else {\n @if (file) {\n <div class=\"file-item\">\n <div class=\"file-item__text-wrapper\">\n @if ({ loading: file.loading | async, progress: file.progress | async }; as asyncData) {\n @if (!asyncData.loading) {\n <ng-content select=\"[kbq-icon]\" />\n }\n @if (asyncData.loading) {\n <kbq-progress-spinner [mode]=\"progressMode\" [value]=\"asyncData.progress || 0\" />\n }\n }\n <div class=\"file-item__text\" [kbqEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <i\n kbq-icon-button=\"kbq-xmark-circle_16\"\n [disabled]=\"disabled\"\n (click)=\"deleteItem($event)\"\n (keydown.backspace)=\"deleteItem()\"\n (keydown.delete)=\"deleteItem()\"\n ></i>\n </div>\n }\n }\n</div>\n\n@if (hasHint) {\n <div class=\"kbq-file-upload__hint\">\n <ng-content select=\"kbq-hint\" />\n </div>\n}\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDataSizePipe } from '@koobiq/components/core';\nimport { KbqEllipsisCenterModule } from '@koobiq/components/ellipsis-center';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqListModule } from '@koobiq/components/list';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqFileDropDirective } from './file-drop';\nimport { KbqMultipleFileUploadComponent } from './multiple-file-upload.component';\nimport { KbqSingleFileUploadComponent } from './single-file-upload.component';\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n KbqToolTipModule,\n KbqProgressSpinnerModule,\n KbqIconModule,\n KbqButtonModule,\n KbqListModule,\n KbqFormFieldModule,\n KbqEllipsisCenterModule,\n KbqDataSizePipe,\n KbqLinkModule,\n AsyncPipe,\n NgClass,\n NgTemplateOutlet\n ],\n declarations: [\n KbqFileDropDirective,\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent\n ],\n exports: [\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent,\n KbqFileDropDirective\n ]\n})\nexport class KbqFileUploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i7.KbqFileDropDirective","i3","i4","i5.KbqFileDropDirective"],"mappings":"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"}