UNPKG

ngx-dropzone-next

Version:

A highly configurable dropzone component for Angular.

1 lines 27.7 kB
{"version":3,"file":"ngx-dropzone-next.mjs","sources":["../../../projects/ngx-dropzone/src/lib/ngx-dropzone-label.directive.ts","../../../projects/ngx-dropzone/src/lib/helpers.ts","../../../projects/ngx-dropzone/src/lib/ngx-dropzone-preview/ngx-dropzone-remove-badge/ngx-dropzone-remove-badge.component.ts","../../../projects/ngx-dropzone/src/lib/ngx-dropzone-preview/ngx-dropzone-preview.component.ts","../../../projects/ngx-dropzone/src/lib/ngx-dropzone-preview/ngx-dropzone-preview.component.html","../../../projects/ngx-dropzone/src/lib/ngx-dropzone/ngx-dropzone.component.ts","../../../projects/ngx-dropzone/src/lib/ngx-dropzone/ngx-dropzone.component.html","../../../projects/ngx-dropzone/src/lib/ngx-dropzone-preview/ngx-dropzone-image-preview/ngx-dropzone-image-preview.component.ts","../../../projects/ngx-dropzone/src/lib/ngx-dropzone-preview/ngx-dropzone-image-preview/ngx-dropzone-image-preview.component.html","../../../projects/ngx-dropzone/src/lib/ngx-dropzone-preview/ngx-dropzone-video-preview/ngx-dropzone-video-preview.component.ts","../../../projects/ngx-dropzone/src/lib/ngx-dropzone-preview/ngx-dropzone-video-preview/ngx-dropzone-video-preview.component.html","../../../projects/ngx-dropzone/src/public_api.ts","../../../projects/ngx-dropzone/src/ngx-dropzone-next.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({ selector: 'ngx-dropzone-label' })\nexport class NgxDropzoneLabelDirective {}\n","export function preventDefault(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-dropzone-remove-badge',\n template: `\n <svg>\n <line x1=\"0\" y1=\"0\" x2=\"10\" y2=\"10\" />\n <line x1=\"0\" y1=\"10\" x2=\"10\" y2=\"0\" />\n </svg>\n `,\n styleUrls: ['./ngx-dropzone-remove-badge.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgxDropzoneRemoveBadgeComponent {}\n","import {\n Component,\n HostBinding,\n HostListener,\n output,\n ChangeDetectionStrategy,\n booleanAttribute,\n input,\n inject,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { NgxDropzoneRemoveBadgeComponent } from './ngx-dropzone-remove-badge/ngx-dropzone-remove-badge.component';\n\n@Component({\n selector: 'ngx-dropzone-preview',\n templateUrl: './ngx-dropzone-preview.component.html',\n styleUrls: ['./ngx-dropzone-preview.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxDropzoneRemoveBadgeComponent],\n host: {\n /** We use the HostBinding to pass these common styles to child components. */\n '[style]': 'hostStyles',\n },\n})\nexport class NgxDropzonePreviewComponent {\n readonly hostStyles = inject(DomSanitizer).bypassSecurityTrustStyle(`\n display: flex;\n height: 140px;\n min-height: 140px;\n min-width: 180px;\n max-width: 180px;\n justify-content: center;\n align-items: center;\n padding: 0 20px;\n margin: 10px;\n border-radius: 5px;\n position: relative;\n `);\n\n /** The file to preview. */\n readonly file = input<File>();\n\n /** Allow the user to remove files. */\n readonly removable = input(false, { transform: booleanAttribute });\n\n /** Emitted when the element should be removed. */\n readonly removed = output<File>();\n\n @HostListener('keyup', ['$event'])\n keyEvent(event: KeyboardEvent) {\n if (\n // Backspace\n event.keyCode === 8 ||\n // Delete\n event.keyCode === 46\n ) {\n this.remove();\n }\n }\n\n /** Make the preview item focusable using the tab key. */\n @HostBinding('tabindex') tabIndex = 0;\n\n /** Remove method to be used from the template. */\n _remove(event: MouseEvent) {\n event.stopPropagation();\n this.remove();\n }\n\n /** Remove the preview item (use from component code). */\n remove() {\n if (this.removable()) {\n this.removed.emit(this.file()!);\n }\n }\n\n protected async readFile(): Promise<string | ArrayBuffer> {\n return new Promise<string | ArrayBuffer>((resolve, reject) => {\n const file = this.file();\n const reader = new FileReader();\n\n const cleanup = () => {\n reader.removeEventListener('load', onLoad);\n reader.removeEventListener('error', onError);\n };\n\n const onLoad = () => {\n cleanup();\n resolve(reader.result!);\n };\n\n const onError = (error: Event) => {\n cleanup();\n reject(error);\n };\n\n reader.addEventListener('load', onLoad);\n reader.addEventListener('error', onError);\n\n if (!file) {\n return reject(\n 'No file to read. Please provide a file using the [file] Input property.'\n );\n }\n\n reader.readAsDataURL(file);\n });\n }\n}\n","<ng-content select=\"ngx-dropzone-label\"></ng-content>\n@if (removable()) {\n <ngx-dropzone-remove-badge (click)=\"_remove($event)\" />\n}\n","import {\n Component,\n HostListener,\n ElementRef,\n output,\n input,\n inject,\n Injector,\n viewChild,\n contentChildren,\n computed,\n booleanAttribute,\n numberAttribute,\n signal,\n type OnChanges,\n type SimpleChanges,\n} from '@angular/core';\n\nimport { preventDefault } from '../helpers';\nimport { NgxDropzonePreviewComponent } from '../ngx-dropzone-preview/ngx-dropzone-preview.component';\n\nimport type { RejectedFile } from './ngx-dropzone.service';\n\nexport interface NgxDropzoneChangeEvent {\n source: NgxDropzoneComponent;\n addedFiles: File[];\n rejectedFiles: RejectedFile[];\n}\n\n@Component({\n selector: 'ngx-dropzone, [ngx-dropzone]',\n templateUrl: './ngx-dropzone.component.html',\n styleUrls: ['./ngx-dropzone.component.scss'],\n host: {\n '[class.ngx-dz-hovered]': 'isHovered()',\n '[class.unclickable]': 'disableClick()',\n '[class.expandable]': 'expandable()',\n '[class.ngx-dz-disabled]': 'disabled()',\n },\n})\nexport class NgxDropzoneComponent implements OnChanges {\n readonly injector = inject(Injector);\n\n /** A list of the content-projected preview children. */\n readonly previewChildren = contentChildren(NgxDropzonePreviewComponent, {\n descendants: true,\n });\n\n protected readonly hasPreviews = computed(\n () => !!this.previewChildren().length\n );\n\n /** A template reference to the native file input element. */\n readonly fileInput =\n viewChild.required<ElementRef<HTMLInputElement>>('fileInput');\n\n /** Emitted when any files were added or rejected. */\n readonly change = output<NgxDropzoneChangeEvent>();\n\n /** Set the accepted file types. Defaults to '*'. */\n readonly accept = input('*');\n\n /** Disable any user interaction with the component. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Allow the selection of multiple files. */\n readonly multiple = input(true, { transform: booleanAttribute });\n\n /** Set the maximum size a single file may have. */\n readonly maxFileSize = input(undefined, { transform: numberAttribute });\n\n /** Allow the dropzone container to expand vertically. */\n readonly expandable = input(false, { transform: booleanAttribute });\n\n /** Open the file selector on click. */\n readonly disableClick = input(false, { transform: booleanAttribute });\n\n /** Allow dropping directories. */\n readonly processDirectoryDrop = input(false, { transform: booleanAttribute });\n\n /** Expose the id, aria-label, aria-labelledby and aria-describedby of the native file input for proper accessibility. */\n readonly id = input('');\n readonly ariaLabel = input('', { alias: 'aria-label' });\n readonly ariaLabelledby = input('', { alias: 'aria-labelledby' });\n readonly ariaDescribedBy = input('', { alias: 'aria-describedby' });\n\n protected readonly isHovered = signal(false);\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled'] && this.isHovered()) {\n this.isHovered.set(false);\n }\n }\n\n /** Show the native OS file explorer to select files. */\n @HostListener('click')\n _onClick() {\n if (!this.disableClick()) {\n this.showFileSelector();\n }\n }\n\n @HostListener('dragover', ['$event'])\n _onDragOver(event: DragEvent) {\n if (this.disabled()) {\n return;\n }\n\n preventDefault(event);\n this.isHovered.set(true);\n }\n\n @HostListener('dragleave')\n _onDragLeave() {\n this.isHovered.set(false);\n }\n\n @HostListener('drop', ['$event'])\n _onDrop(event: DragEvent) {\n if (this.disabled()) {\n return;\n }\n\n preventDefault(event);\n this.isHovered.set(false);\n\n import('./on-drop').then((m) => m.onDrop(this, event));\n }\n\n showFileSelector() {\n if (!this.disabled()) {\n (this.fileInput().nativeElement as HTMLInputElement).click();\n }\n }\n\n async _onFilesSelected(event: Event) {\n const files: FileList = (event.target as HTMLInputElement).files!;\n\n // We must `await` before setting `value` to an empty string,\n // because it's going to prune the `files` on the input element.\n await import('./on-drop').then((m) => m.handleFileDrop(this, files));\n\n // Reset the native file input element to allow selecting the same file again\n this.fileInput().nativeElement.value = '';\n\n // fix(#32): Prevent the default event behaviour which caused the change event to emit twice.\n preventDefault(event);\n }\n}\n","<input\n #fileInput\n type=\"file\"\n [id]=\"id()\"\n [multiple]=\"multiple()\"\n [accept]=\"accept()\"\n [disabled]=\"disabled()\"\n (change)=\"_onFilesSelected($event)\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n/>\n\n@if (!hasPreviews()) {\n <ng-content select=\"ngx-dropzone-label\" />\n}\n\n<ng-content select=\"ngx-dropzone-preview\" />\n<ng-content />\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n signal,\n afterNextRender,\n type OnChanges,\n type SimpleChanges,\n inject,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { NgxDropzonePreviewComponent } from '../ngx-dropzone-preview.component';\nimport { NgxDropzoneRemoveBadgeComponent } from '../ngx-dropzone-remove-badge/ngx-dropzone-remove-badge.component';\n\n@Component({\n selector: 'ngx-dropzone-image-preview',\n templateUrl: './ngx-dropzone-image-preview.component.html',\n styleUrls: ['./ngx-dropzone-image-preview.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxDropzoneRemoveBadgeComponent],\n providers: [\n {\n provide: NgxDropzonePreviewComponent,\n useExisting: NgxDropzoneImagePreviewComponent,\n },\n ],\n})\nexport class NgxDropzoneImagePreviewComponent\n extends NgxDropzonePreviewComponent\n implements OnChanges\n{\n /** The image data source. */\n private defaultImgLoading =\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0ibWFyZ2luOiBhdXRvOyBiYWNrZ3JvdW5kOiByZ2IoMjQxLCAyNDIsIDI0Mykgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDAlOyBkaXNwbGF5OiBibG9jazsgc2hhcGUtcmVuZGVyaW5nOiBhdXRvOyIgd2lkdGg9IjIyNHB4IiBoZWlnaHQ9IjIyNHB4IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPgo8Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSIxNCIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2U9IiM4NWEyYjYiIHN0cm9rZS1kYXNoYXJyYXk9IjIxLjk5MTE0ODU3NTEyODU1MiAyMS45OTExNDg1NzUxMjg1NTIiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CiAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGR1cj0iMS4xNjI3OTA2OTc2NzQ0MTg0cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iMCA1MCA1MDszNjAgNTAgNTAiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KPC9jaXJjbGU+CjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjEwIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZT0iI2JiY2VkZCIgc3Ryb2tlLWRhc2hhcnJheT0iMTUuNzA3OTYzMjY3OTQ4OTY2IDE1LjcwNzk2MzI2Nzk0ODk2NiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjE1LjcwNzk2MzI2Nzk0ODk2NiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj4KICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InJvdGF0ZSIgZHVyPSIxLjE2Mjc5MDY5NzY3NDQxODRzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIwIDUwIDUwOy0zNjAgNTAgNTAiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KPC9jaXJjbGU+CjwhLS0gW2xkaW9dIGdlbmVyYXRlZCBieSBodHRwczovL2xvYWRpbmcuaW8vIC0tPjwvc3ZnPg==';\n protected imageSrc = signal(\n inject(DomSanitizer).bypassSecurityTrustUrl(this.defaultImgLoading)\n );\n\n /** The file to preview. */\n override readonly file = input<File>();\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.renderImage();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['file']) {\n this.renderImage();\n }\n }\n\n private renderImage() {\n this.readFile()\n .then((img) => setTimeout(() => this.imageSrc.set(img)))\n .catch((err) => console.error(err));\n }\n}\n","<img [src]=\"imageSrc()\" />\n<ng-content select=\"ngx-dropzone-label\"></ng-content>\n@if (removable()) {\n <ngx-dropzone-remove-badge (click)=\"_remove($event)\" />\n}\n","import {\n Component,\n inject,\n DestroyRef,\n afterNextRender,\n signal,\n ChangeDetectionStrategy,\n untracked,\n} from '@angular/core';\nimport { DomSanitizer, type SafeUrl } from '@angular/platform-browser';\n\nimport { NgxDropzonePreviewComponent } from '../ngx-dropzone-preview.component';\nimport { NgxDropzoneRemoveBadgeComponent } from '../ngx-dropzone-remove-badge/ngx-dropzone-remove-badge.component';\n\n@Component({\n selector: 'ngx-dropzone-video-preview',\n templateUrl: './ngx-dropzone-video-preview.component.html',\n styleUrls: ['./ngx-dropzone-video-preview.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxDropzoneRemoveBadgeComponent],\n providers: [\n {\n provide: NgxDropzonePreviewComponent,\n useExisting: NgxDropzoneVideoPreviewComponent,\n },\n ],\n})\nexport class NgxDropzoneVideoPreviewComponent extends NgxDropzonePreviewComponent {\n /** The video data source. */\n protected readonly _sanitizedVideoSrc = signal<SafeUrl | null>(null);\n\n constructor() {\n super();\n\n const destroyRef = inject(DestroyRef);\n const sanitizer = inject(DomSanitizer);\n\n afterNextRender(() => {\n const file = untracked(this.file);\n if (!file) return;\n\n /**\n * We sanitize the URL here to enable the preview.\n * Please note that this could cause security issues!\n **/\n const videoObjectUrl = URL.createObjectURL(file);\n this._sanitizedVideoSrc.set(\n sanitizer.bypassSecurityTrustUrl(videoObjectUrl)\n );\n\n destroyRef.onDestroy(() => URL.revokeObjectURL(videoObjectUrl));\n });\n }\n}\n","@if (_sanitizedVideoSrc(); as sanitizedVideoSrc) {\n <video controls (click)=\"$event.stopPropagation()\">\n <source [src]=\"sanitizedVideoSrc\" />\n </video>\n}\n\n<ng-content select=\"ngx-dropzone-label\"></ng-content>\n\n@if (removable()) {\n <ngx-dropzone-remove-badge (click)=\"_remove($event)\" />\n}\n","/*\n * Public API Surface of ngx-dropzone-next\n */\n\nexport { NgxDropzoneLabelDirective } from './lib/ngx-dropzone-label.directive';\n\nexport {\n type NgxDropzoneChangeEvent,\n NgxDropzoneComponent,\n} from './lib/ngx-dropzone/ngx-dropzone.component';\n\nexport { NgxDropzonePreviewComponent } from './lib/ngx-dropzone-preview/ngx-dropzone-preview.component';\n\nexport { NgxDropzoneImagePreviewComponent } from './lib/ngx-dropzone-preview/ngx-dropzone-image-preview/ngx-dropzone-image-preview.component';\n\nexport { NgxDropzoneVideoPreviewComponent } from './lib/ngx-dropzone-preview/ngx-dropzone-video-preview/ngx-dropzone-video-preview.component';\n\nexport { NgxDropzoneRemoveBadgeComponent } from './lib/ngx-dropzone-preview/ngx-dropzone-remove-badge/ngx-dropzone-remove-badge.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}