@acorex/components 7.8.14 → 7.8.15

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.
@@ -1,18 +1,19 @@
1
1
  import { MXBaseComponent } from '@acorex/components/common';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, ViewEncapsulation, inject, Directive, Injectable, NgModule } from '@angular/core';
3
+ import { Component, ViewEncapsulation, inject, Injectable, afterNextRender, Directive, Input, HostBinding, NgModule } from '@angular/core';
4
4
  import * as i1 from '@acorex/components/decorators';
5
5
  import { AXDecoratorModule } from '@acorex/components/decorators';
6
6
  import { trigger, state, style, AUTO_STYLE, transition, animate } from '@angular/animations';
7
7
  import * as i1$1 from '@angular/cdk/dialog';
8
- import { Dialog } from '@angular/cdk/dialog';
8
+ import { Dialog, DIALOG_DATA } from '@angular/cdk/dialog';
9
+ import { GlobalPositionStrategy } from '@angular/cdk/overlay';
10
+ import { HttpClient, HttpClientModule } from '@angular/common/http';
9
11
  import * as i2 from '@angular/common';
10
12
  import { CommonModule } from '@angular/common';
11
13
  import * as i3 from '@acorex/core/translation';
12
14
  import { AXTranslator, AXTranslationModule } from '@acorex/core/translation';
13
15
  import { AXFileService } from '@acorex/core/file';
14
16
  import { AXButtonModule } from '@acorex/components/button';
15
- import { GlobalPositionStrategy } from '@angular/cdk/overlay';
16
17
 
17
18
  class AXUploaderDropZoneComponent extends MXBaseComponent {
18
19
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderDropZoneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
@@ -23,35 +24,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
23
24
  args: [{ selector: 'ax-uploader-drop-zone', encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-uploader-drop-zone-container\">\n <ax-icon class=\"ax-icon ax-icon-upload\"></ax-icon>\n <div class=\"ax-uploader-drop-zone-description\">\n <span>Drag & Drop or <a href=\"#\">Choose file</a> to upload</span>\n <p>SVG, PNG, JPG or GIF (MAX. 800x400px)</p>\n </div>\n</div>\n" }]
24
25
  }] });
25
26
 
27
+ class AXUploaderService {
28
+ constructor() {
29
+ this.dialog = inject(Dialog);
30
+ this.http = inject(HttpClient);
31
+ this.files = [];
32
+ }
33
+ openDialog(data) {
34
+ this.files = [...data];
35
+ const positionStrategy = new GlobalPositionStrategy();
36
+ this.dialogRef = this.dialog.open(AXUploaderListComponent, {
37
+ hasBackdrop: false,
38
+ closeOnNavigation: false,
39
+ width: '320px',
40
+ maxWidth: 320,
41
+ panelClass: ['ax-uploader-list-pane', 'ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],
42
+ positionStrategy: positionStrategy.bottom().end('24px'),
43
+ data,
44
+ });
45
+ }
46
+ closeDialog() {
47
+ this.dialogRef.close();
48
+ }
49
+ upload(requestUrl, file, options) {
50
+ const formData = new FormData();
51
+ formData.append(file.name, file);
52
+ return this.http.post(requestUrl, formData, options);
53
+ }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
55
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderService }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderService, decorators: [{
58
+ type: Injectable
59
+ }] });
60
+
26
61
  class AXUploaderListComponent extends MXBaseComponent {
27
62
  constructor(dialogRef) {
28
63
  super();
29
64
  this.dialogRef = dialogRef;
30
- this.items = [
31
- {
32
- name: 'avatar.png',
33
- size: 2048,
34
- type: 'picture',
35
- description: 'Upload canceled',
36
- },
37
- {
38
- name: 'intro.mkv',
39
- size: 10024,
40
- type: 'video',
41
- },
42
- {
43
- name: 'time.xls',
44
- size: 10024,
45
- type: 'doc',
46
- },
47
- {
48
- name: 'resume.pdf',
49
- size: 10024,
50
- type: 'pdf',
51
- },
52
- ];
65
+ this.items = inject(DIALOG_DATA);
66
+ this.uploadService = inject(AXUploaderService);
53
67
  this.leftTime = 5;
54
68
  this.isCollapsed = false;
69
+ afterNextRender(() => {
70
+ this.uploadService.upload('http://api.acorexui.com/api/v1/files', this.items[0]).subscribe({
71
+ next: (e) => {
72
+ console.log(e);
73
+ },
74
+ error: (err) => {
75
+ console.error(err);
76
+ },
77
+ });
78
+ });
55
79
  }
56
80
  toggle() {
57
81
  this.isCollapsed = !this.isCollapsed;
@@ -60,7 +84,7 @@ class AXUploaderListComponent extends MXBaseComponent {
60
84
  this.dialogRef.close();
61
85
  }
62
86
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderListComponent, deps: [{ token: i1$1.DialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
63
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: AXUploaderListComponent, selector: "ax-uploader-list", usesInheritance: true, ngImport: i0, template: "<div class=\"ax-uploader-list-header\">\n <div>Uploader list</div>\n <div>\n <i\n class=\"ax-icon\"\n [ngClass]=\"{ 'ax-icon-chevron-down': !isCollapsed, 'ax-icon-chevron-up': isCollapsed }\"\n (click)=\"toggle()\"\n ></i>\n\n <i class=\"ax-icon ax-icon-close\" (click)=\"close()\"></i>\n </div>\n</div>\n\n<div [@collapse]=\"isCollapsed\">\n <div class=\"ax-uploader-progress-status\">\n <div>{{ leftTime }}min left</div>\n <button>{{ 'common.cancel' | trans }}</button>\n </div>\n <ul class=\"ax-uploader-list-items\">\n <ng-container *ngFor=\"let item of items\">\n <li>\n <div>\n <i class=\"ax-icon ax-icon-inbox\"></i>\n <div class=\"ax-uploader-item-text\">\n <strong>{{ item.name }}</strong>\n <small>{{ item.description }}</small>\n </div>\n </div>\n <div></div>\n </li>\n </ng-container>\n </ul>\n</div>\n", styles: [".ax-dark ax-uploader-list .ax-uploader-progress-status{background-color:rgba(var(--ax-color-primary-500),.25);color:rgba(var(--ax-color-primary-50));border-color:rgba(var(--ax-color-primary-500))}ax-uploader-list{display:block;background-color:rgba(var(--ax-color-surface));-webkit-border-top-left-radius:.75rem;-webkit-border-top-right-radius:.75rem;-moz-border-radius-topleft:.75rem;-moz-border-radius-topright:.75rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem;overflow:hidden;box-shadow:-1px -1px 10px #00000029;border:1px solid;border-color:rgba(var(--ax-color-border-default));outline-color:rgba(var(--ax-color-primary-500))}ax-uploader-list .ax-uploader-list-header{display:flex;justify-content:space-between;padding:.75rem 1rem;background-color:rgba(var(--ax-color-on-surface));color:rgba(var(--ax-color-on-surface-fore));font-weight:500}ax-uploader-list .ax-uploader-list-header .ax-icon{font-size:1.5rem;cursor:pointer;margin-inline-start:.5rem}ax-uploader-list .ax-uploader-list-header .ax-icon:hover{opacity:.6}ax-uploader-list .ax-uploader-progress-status{display:flex;align-items:center;justify-content:space-between;font-size:.875rem;background-color:rgba(var(--ax-color-primary-100));color:rgba(var(--ax-color-primary-700));padding:.5rem .75rem;border-top:1px solid;border-bottom:1px solid;border-color:rgba(var(--ax-color-primary-200))}ax-uploader-list .ax-uploader-list-items{padding:.5rem 0}ax-uploader-list .ax-uploader-list-items li{font-size:.875rem;padding:.75rem;display:flex;align-items:center;justify-content:space-between}ax-uploader-list .ax-uploader-list-items li>div{display:flex}ax-uploader-list .ax-uploader-list-items li>div .ax-icon{display:flex;font-size:1.5rem;margin-inline-end:.5rem}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text{display:flex;flex-direction:column}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text strong{font-weight:500;display:block}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text small{color:rgba(var(--ax-color-on-surface-fore),.75)}.ax-uploader-list-pane .cdk-dialog-container:focus,.ax-uploader-list-pane .cdk-dialog-container:focus-visible,.ax-uploader-list-pane .cdk-dialog-container:focus-within{outline:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "trans" }], animations: [
87
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: AXUploaderListComponent, selector: "ax-uploader-list", usesInheritance: true, ngImport: i0, template: "<div class=\"ax-uploader-list-header\">\n <div>Uploader list</div>\n <div>\n <i\n class=\"ax-icon\"\n [ngClass]=\"{ 'ax-icon-chevron-down': !isCollapsed, 'ax-icon-chevron-up': isCollapsed }\"\n (click)=\"toggle()\"\n ></i>\n\n <i class=\"ax-icon ax-icon-close\" (click)=\"close()\"></i>\n </div>\n</div>\n\n<div [@collapse]=\"isCollapsed\">\n <div class=\"ax-uploader-progress-status\">\n <div>{{ leftTime }}min left</div>\n <button>{{ 'common.cancel' | trans }}</button>\n </div>\n <ul class=\"ax-uploader-list-items\">\n <ng-container *ngFor=\"let item of items\">\n <li>\n <div>\n <i class=\"ax-icon ax-icon-inbox\"></i>\n <div class=\"ax-uploader-item-text\">\n <strong>{{ item.name }}</strong>\n <small>{{ item.size }}</small>\n </div>\n </div>\n <div></div>\n </li>\n </ng-container>\n </ul>\n</div>\n", styles: [".ax-dark ax-uploader-list .ax-uploader-progress-status{background-color:rgba(var(--ax-color-primary-500),.25);color:rgba(var(--ax-color-primary-50));border-color:rgba(var(--ax-color-primary-500))}ax-uploader-list{display:block;background-color:rgba(var(--ax-color-surface));-webkit-border-top-left-radius:.75rem;-webkit-border-top-right-radius:.75rem;-moz-border-radius-topleft:.75rem;-moz-border-radius-topright:.75rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem;overflow:hidden;box-shadow:-1px -1px 10px #00000029;border:1px solid;border-color:rgba(var(--ax-color-border-default));outline-color:rgba(var(--ax-color-primary-500))}ax-uploader-list .ax-uploader-list-header{display:flex;justify-content:space-between;padding:.75rem 1rem;background-color:rgba(var(--ax-color-on-surface));color:rgba(var(--ax-color-on-surface-fore));font-weight:500}ax-uploader-list .ax-uploader-list-header .ax-icon{font-size:1.5rem;cursor:pointer;margin-inline-start:.5rem}ax-uploader-list .ax-uploader-list-header .ax-icon:hover{opacity:.6}ax-uploader-list .ax-uploader-progress-status{display:flex;align-items:center;justify-content:space-between;font-size:.875rem;background-color:rgba(var(--ax-color-primary-100));color:rgba(var(--ax-color-primary-700));padding:.5rem .75rem;border-top:1px solid;border-bottom:1px solid;border-color:rgba(var(--ax-color-primary-200))}ax-uploader-list .ax-uploader-list-items{padding:.5rem 0;max-height:50vh;overflow-y:auto;overflow-x:hidden}ax-uploader-list .ax-uploader-list-items li{font-size:.875rem;padding:.75rem;display:flex;align-items:center;justify-content:space-between}ax-uploader-list .ax-uploader-list-items li>div{display:flex}ax-uploader-list .ax-uploader-list-items li>div .ax-icon{display:flex;font-size:1.5rem;margin-inline-end:.5rem}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text{display:flex;flex-direction:column}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text strong{font-weight:500;display:block}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text small{color:rgba(var(--ax-color-on-surface-fore),.75)}.ax-uploader-list-pane .cdk-dialog-container:focus,.ax-uploader-list-pane .cdk-dialog-container:focus-visible,.ax-uploader-list-pane .cdk-dialog-container:focus-within{outline:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "trans" }], animations: [
64
88
  trigger('collapse', [
65
89
  state('false', style({ height: AUTO_STYLE, visibility: AUTO_STYLE })),
66
90
  state('true', style({ height: '0', visibility: 'hidden' })),
@@ -78,7 +102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
78
102
  transition('false => true', animate(150 + 'ms ease-in')),
79
103
  transition('true => false', animate(150 + 'ms ease-out')),
80
104
  ]),
81
- ], template: "<div class=\"ax-uploader-list-header\">\n <div>Uploader list</div>\n <div>\n <i\n class=\"ax-icon\"\n [ngClass]=\"{ 'ax-icon-chevron-down': !isCollapsed, 'ax-icon-chevron-up': isCollapsed }\"\n (click)=\"toggle()\"\n ></i>\n\n <i class=\"ax-icon ax-icon-close\" (click)=\"close()\"></i>\n </div>\n</div>\n\n<div [@collapse]=\"isCollapsed\">\n <div class=\"ax-uploader-progress-status\">\n <div>{{ leftTime }}min left</div>\n <button>{{ 'common.cancel' | trans }}</button>\n </div>\n <ul class=\"ax-uploader-list-items\">\n <ng-container *ngFor=\"let item of items\">\n <li>\n <div>\n <i class=\"ax-icon ax-icon-inbox\"></i>\n <div class=\"ax-uploader-item-text\">\n <strong>{{ item.name }}</strong>\n <small>{{ item.description }}</small>\n </div>\n </div>\n <div></div>\n </li>\n </ng-container>\n </ul>\n</div>\n", styles: [".ax-dark ax-uploader-list .ax-uploader-progress-status{background-color:rgba(var(--ax-color-primary-500),.25);color:rgba(var(--ax-color-primary-50));border-color:rgba(var(--ax-color-primary-500))}ax-uploader-list{display:block;background-color:rgba(var(--ax-color-surface));-webkit-border-top-left-radius:.75rem;-webkit-border-top-right-radius:.75rem;-moz-border-radius-topleft:.75rem;-moz-border-radius-topright:.75rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem;overflow:hidden;box-shadow:-1px -1px 10px #00000029;border:1px solid;border-color:rgba(var(--ax-color-border-default));outline-color:rgba(var(--ax-color-primary-500))}ax-uploader-list .ax-uploader-list-header{display:flex;justify-content:space-between;padding:.75rem 1rem;background-color:rgba(var(--ax-color-on-surface));color:rgba(var(--ax-color-on-surface-fore));font-weight:500}ax-uploader-list .ax-uploader-list-header .ax-icon{font-size:1.5rem;cursor:pointer;margin-inline-start:.5rem}ax-uploader-list .ax-uploader-list-header .ax-icon:hover{opacity:.6}ax-uploader-list .ax-uploader-progress-status{display:flex;align-items:center;justify-content:space-between;font-size:.875rem;background-color:rgba(var(--ax-color-primary-100));color:rgba(var(--ax-color-primary-700));padding:.5rem .75rem;border-top:1px solid;border-bottom:1px solid;border-color:rgba(var(--ax-color-primary-200))}ax-uploader-list .ax-uploader-list-items{padding:.5rem 0}ax-uploader-list .ax-uploader-list-items li{font-size:.875rem;padding:.75rem;display:flex;align-items:center;justify-content:space-between}ax-uploader-list .ax-uploader-list-items li>div{display:flex}ax-uploader-list .ax-uploader-list-items li>div .ax-icon{display:flex;font-size:1.5rem;margin-inline-end:.5rem}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text{display:flex;flex-direction:column}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text strong{font-weight:500;display:block}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text small{color:rgba(var(--ax-color-on-surface-fore),.75)}.ax-uploader-list-pane .cdk-dialog-container:focus,.ax-uploader-list-pane .cdk-dialog-container:focus-visible,.ax-uploader-list-pane .cdk-dialog-container:focus-within{outline:none}\n"] }]
105
+ ], template: "<div class=\"ax-uploader-list-header\">\n <div>Uploader list</div>\n <div>\n <i\n class=\"ax-icon\"\n [ngClass]=\"{ 'ax-icon-chevron-down': !isCollapsed, 'ax-icon-chevron-up': isCollapsed }\"\n (click)=\"toggle()\"\n ></i>\n\n <i class=\"ax-icon ax-icon-close\" (click)=\"close()\"></i>\n </div>\n</div>\n\n<div [@collapse]=\"isCollapsed\">\n <div class=\"ax-uploader-progress-status\">\n <div>{{ leftTime }}min left</div>\n <button>{{ 'common.cancel' | trans }}</button>\n </div>\n <ul class=\"ax-uploader-list-items\">\n <ng-container *ngFor=\"let item of items\">\n <li>\n <div>\n <i class=\"ax-icon ax-icon-inbox\"></i>\n <div class=\"ax-uploader-item-text\">\n <strong>{{ item.name }}</strong>\n <small>{{ item.size }}</small>\n </div>\n </div>\n <div></div>\n </li>\n </ng-container>\n </ul>\n</div>\n", styles: [".ax-dark ax-uploader-list .ax-uploader-progress-status{background-color:rgba(var(--ax-color-primary-500),.25);color:rgba(var(--ax-color-primary-50));border-color:rgba(var(--ax-color-primary-500))}ax-uploader-list{display:block;background-color:rgba(var(--ax-color-surface));-webkit-border-top-left-radius:.75rem;-webkit-border-top-right-radius:.75rem;-moz-border-radius-topleft:.75rem;-moz-border-radius-topright:.75rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem;overflow:hidden;box-shadow:-1px -1px 10px #00000029;border:1px solid;border-color:rgba(var(--ax-color-border-default));outline-color:rgba(var(--ax-color-primary-500))}ax-uploader-list .ax-uploader-list-header{display:flex;justify-content:space-between;padding:.75rem 1rem;background-color:rgba(var(--ax-color-on-surface));color:rgba(var(--ax-color-on-surface-fore));font-weight:500}ax-uploader-list .ax-uploader-list-header .ax-icon{font-size:1.5rem;cursor:pointer;margin-inline-start:.5rem}ax-uploader-list .ax-uploader-list-header .ax-icon:hover{opacity:.6}ax-uploader-list .ax-uploader-progress-status{display:flex;align-items:center;justify-content:space-between;font-size:.875rem;background-color:rgba(var(--ax-color-primary-100));color:rgba(var(--ax-color-primary-700));padding:.5rem .75rem;border-top:1px solid;border-bottom:1px solid;border-color:rgba(var(--ax-color-primary-200))}ax-uploader-list .ax-uploader-list-items{padding:.5rem 0;max-height:50vh;overflow-y:auto;overflow-x:hidden}ax-uploader-list .ax-uploader-list-items li{font-size:.875rem;padding:.75rem;display:flex;align-items:center;justify-content:space-between}ax-uploader-list .ax-uploader-list-items li>div{display:flex}ax-uploader-list .ax-uploader-list-items li>div .ax-icon{display:flex;font-size:1.5rem;margin-inline-end:.5rem}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text{display:flex;flex-direction:column}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text strong{font-weight:500;display:block}ax-uploader-list .ax-uploader-list-items li>div .ax-uploader-item-text small{color:rgba(var(--ax-color-on-surface-fore),.75)}.ax-uploader-list-pane .cdk-dialog-container:focus,.ax-uploader-list-pane .cdk-dialog-container:focus-visible,.ax-uploader-list-pane .cdk-dialog-container:focus-within{outline:none}\n"] }]
82
106
  }], ctorParameters: function () { return [{ type: i1$1.DialogRef }]; } });
83
107
 
84
108
  class AXUploaderOverlayComponent extends MXBaseComponent {
@@ -91,33 +115,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
91
115
  }] });
92
116
 
93
117
  class AXUploaderZoneDirective {
118
+ initElement() {
119
+ this.element = this.elementRef.nativeElement;
120
+ this.element.style.position = 'relative';
121
+ }
94
122
  constructor(elementRef) {
95
123
  this.elementRef = elementRef;
96
124
  this.fileService = inject(AXFileService);
125
+ this.uploadService = inject(AXUploaderService);
126
+ this.multiple = true;
97
127
  this.stateClass = 'ax-uploader-overlay-state';
98
- }
99
- ngOnInit() {
100
- this.element = this.elementRef.nativeElement;
101
- this.element.style.position = 'relative';
102
- this.init();
103
- }
104
- init() {
128
+ this.files = [];
129
+ this.initElement();
105
130
  this.element.addEventListener('dragenter', this.handleDragEnter.bind(this));
131
+ this.element.addEventListener('dragover', this.handleDragOver.bind(this));
132
+ this.element.addEventListener('drop', this.handleOnDrop.bind(this));
106
133
  this.element.addEventListener('dragleave', this.handleDragLeave.bind(this));
107
134
  }
108
135
  ngOnDestroy() {
109
136
  this.element.removeEventListener('dragenter', this.handleDragEnter.bind(this));
110
- this.element.removeEventListener('dragover', this.handleDragEnter.bind(this));
137
+ this.element.removeEventListener('drop', this.handleOnDrop.bind(this));
138
+ this.element.removeEventListener('dragover', this.handleDragOver.bind(this));
139
+ this.element.removeEventListener('dragleave', this.handleDragLeave.bind(this));
111
140
  }
112
141
  handleDragEnter(event) {
113
142
  this.createZone();
114
143
  event.preventDefault();
115
144
  }
116
- handleDragLeave(event) {
145
+ handleOnDrop(event) {
146
+ event.preventDefault();
147
+ this.uploadService.openDialog(event.dataTransfer?.files);
117
148
  this.removeZone();
118
- this.fileService.choose();
149
+ }
150
+ handleDragOver(event) {
119
151
  event.preventDefault();
120
152
  }
153
+ handleDragLeave(event) {
154
+ event.preventDefault();
155
+ this.removeZone();
156
+ }
121
157
  createZone() {
122
158
  this.overlayElement = document.createElement('div');
123
159
  this.overlayElement.classList.add('ax-uploader-overlay-state');
@@ -132,51 +168,34 @@ class AXUploaderZoneDirective {
132
168
  removeZone() {
133
169
  this.overlayElement.remove();
134
170
  }
171
+ get __hostClass() {
172
+ return `ax-drop-zone`;
173
+ }
135
174
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderZoneDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
136
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: AXUploaderZoneDirective, selector: "[axUploaderZone]", ngImport: i0 }); }
175
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: AXUploaderZoneDirective, selector: "[axUploaderZone]", inputs: { multiple: "multiple" }, host: { properties: { "class": "this.__hostClass" } }, ngImport: i0 }); }
137
176
  }
138
177
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderZoneDirective, decorators: [{
139
178
  type: Directive,
140
179
  args: [{
141
180
  selector: '[axUploaderZone]',
142
181
  }]
143
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
144
-
145
- class AXUploaderService {
146
- constructor() {
147
- this.dialog = inject(Dialog);
148
- }
149
- openDialog() {
150
- const positionStrategy = new GlobalPositionStrategy();
151
- this.dialogRef = this.dialog.open(AXUploaderListComponent, {
152
- hasBackdrop: false,
153
- closeOnNavigation: false,
154
- width: '320px',
155
- maxWidth: 320,
156
- panelClass: ['ax-uploader-list-pane', 'ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],
157
- positionStrategy: positionStrategy.bottom().end('24px'),
158
- });
159
- }
160
- closeDialog() {
161
- this.dialogRef.close();
162
- }
163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
164
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderService }); }
165
- }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderService, decorators: [{
167
- type: Injectable
168
- }] });
182
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { multiple: [{
183
+ type: Input
184
+ }], __hostClass: [{
185
+ type: HostBinding,
186
+ args: ['class']
187
+ }] } });
169
188
 
170
189
  class AXUploaderModule {
171
190
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
172
191
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderModule, declarations: [AXUploaderDropZoneComponent,
173
192
  AXUploaderListComponent,
174
193
  AXUploaderOverlayComponent,
175
- AXUploaderZoneDirective], imports: [CommonModule, AXDecoratorModule, AXButtonModule, AXTranslationModule], exports: [AXUploaderDropZoneComponent,
194
+ AXUploaderZoneDirective], imports: [CommonModule, AXDecoratorModule, AXButtonModule, AXTranslationModule, HttpClientModule], exports: [AXUploaderDropZoneComponent,
176
195
  AXUploaderListComponent,
177
196
  AXUploaderOverlayComponent,
178
197
  AXUploaderZoneDirective] }); }
179
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderModule, providers: [AXUploaderService, AXFileService], imports: [CommonModule, AXDecoratorModule, AXButtonModule, AXTranslationModule] }); }
198
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderModule, providers: [AXUploaderService, AXFileService], imports: [CommonModule, AXDecoratorModule, AXButtonModule, AXTranslationModule, HttpClientModule] }); }
180
199
  }
181
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AXUploaderModule, decorators: [{
182
201
  type: NgModule,
@@ -187,7 +206,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
187
206
  AXUploaderOverlayComponent,
188
207
  AXUploaderZoneDirective,
189
208
  ],
190
- imports: [CommonModule, AXDecoratorModule, AXButtonModule, AXTranslationModule],
209
+ imports: [CommonModule, AXDecoratorModule, AXButtonModule, AXTranslationModule, HttpClientModule],
191
210
  exports: [
192
211
  AXUploaderDropZoneComponent,
193
212
  AXUploaderListComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-uploader.mjs","sources":["../../../../libs/components/uploader/src/lib/uploader-drop-zone.component.ts","../../../../libs/components/uploader/src/lib/uploader-drop-zone.component.html","../../../../libs/components/uploader/src/lib/uploader-list.component.ts","../../../../libs/components/uploader/src/lib/uploader-list.component.html","../../../../libs/components/uploader/src/lib/uploader-overlay.component.ts","../../../../libs/components/uploader/src/lib/uploader-overlay.component.html","../../../../libs/components/uploader/src/lib/uploader-zone.directive.ts","../../../../libs/components/uploader/src/lib/uploader.service.ts","../../../../libs/components/uploader/src/lib/uploader.module.ts","../../../../libs/components/uploader/src/acorex-components-uploader.ts"],"sourcesContent":["import { MXBaseComponent } from '@acorex/components/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ax-uploader-drop-zone',\n templateUrl: './uploader-drop-zone.component.html',\n styleUrls: ['./uploader.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXUploaderDropZoneComponent extends MXBaseComponent {}\n","<div class=\"ax-uploader-drop-zone-container\">\n <ax-icon class=\"ax-icon ax-icon-upload\"></ax-icon>\n <div class=\"ax-uploader-drop-zone-description\">\n <span>Drag & Drop or <a href=\"#\">Choose file</a> to upload</span>\n <p>SVG, PNG, JPG or GIF (MAX. 800x400px)</p>\n </div>\n</div>\n","import { AXComponentCloseEvent, MXBaseComponent } from '@acorex/components/common';\nimport { AUTO_STYLE, animate, state, style, transition, trigger } from '@angular/animations';\nimport { DialogRef } from '@angular/cdk/dialog';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\nexport interface AXUploaderItem {\n type: 'picture' | 'doc' | 'pdf' | 'archive' | 'video' | 'unknow';\n name: string;\n size: number;\n description?: string;\n}\n\n@Component({\n selector: 'ax-uploader-list',\n templateUrl: './uploader-list.component.html',\n styleUrls: ['./uploader-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('collapse', [\n state('false', style({ height: AUTO_STYLE, visibility: AUTO_STYLE })),\n state('true', style({ height: '0', visibility: 'hidden' })),\n transition('false => true', animate(150 + 'ms ease-in')),\n transition('true => false', animate(150 + 'ms ease-out')),\n ]),\n ],\n})\nexport class AXUploaderListComponent extends MXBaseComponent {\n items: AXUploaderItem[] = [\n {\n name: 'avatar.png',\n size: 2048,\n type: 'picture',\n description: 'Upload canceled',\n },\n {\n name: 'intro.mkv',\n size: 10024,\n type: 'video',\n },\n {\n name: 'time.xls',\n size: 10024,\n type: 'doc',\n },\n {\n name: 'resume.pdf',\n size: 10024,\n type: 'pdf',\n },\n ];\n\n leftTime = 5;\n isCollapsed = false;\n constructor(private dialogRef: DialogRef<AXComponentCloseEvent>) {\n super();\n }\n\n toggle() {\n this.isCollapsed = !this.isCollapsed;\n }\n close() {\n this.dialogRef.close();\n }\n}\n","<div class=\"ax-uploader-list-header\">\n <div>Uploader list</div>\n <div>\n <i\n class=\"ax-icon\"\n [ngClass]=\"{ 'ax-icon-chevron-down': !isCollapsed, 'ax-icon-chevron-up': isCollapsed }\"\n (click)=\"toggle()\"\n ></i>\n\n <i class=\"ax-icon ax-icon-close\" (click)=\"close()\"></i>\n </div>\n</div>\n\n<div [@collapse]=\"isCollapsed\">\n <div class=\"ax-uploader-progress-status\">\n <div>{{ leftTime }}min left</div>\n <button>{{ 'common.cancel' | trans }}</button>\n </div>\n <ul class=\"ax-uploader-list-items\">\n <ng-container *ngFor=\"let item of items\">\n <li>\n <div>\n <i class=\"ax-icon ax-icon-inbox\"></i>\n <div class=\"ax-uploader-item-text\">\n <strong>{{ item.name }}</strong>\n <small>{{ item.description }}</small>\n </div>\n </div>\n <div></div>\n </li>\n </ng-container>\n </ul>\n</div>\n","import { MXBaseComponent } from '@acorex/components/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ax-uploader-overlay',\n templateUrl: './uploader-overlay.component.html',\n styleUrls: ['./uploader.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXUploaderOverlayComponent extends MXBaseComponent {}\n","<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-items-center ax-justify-center ax-h-[95vh] hover:ax-bg-primary-50 ax-m-2 hover:ax-border-2 ax-rounded-lg hover:ax-border-primary-500\">\n\n</div>","import { AXFileService } from '@acorex/core/file';\nimport { AXTranslator } from '@acorex/core/translation';\nimport { Directive, ElementRef, OnDestroy, OnInit, inject } from '@angular/core';\n\n@Directive({\n selector: '[axUploaderZone]',\n})\nexport class AXUploaderZoneDirective implements OnInit, OnDestroy {\n private fileService: AXFileService = inject(AXFileService);\n private element: HTMLElement;\n\n stateClass = 'ax-uploader-overlay-state';\n overlayElement: HTMLDivElement;\n\n constructor(private elementRef: ElementRef) {}\n\n ngOnInit(): void {\n this.element = this.elementRef.nativeElement as HTMLElement;\n this.element.style.position = 'relative';\n this.init();\n }\n\n init(): void {\n this.element.addEventListener('dragenter', this.handleDragEnter.bind(this));\n this.element.addEventListener('dragleave', this.handleDragLeave.bind(this));\n }\n\n ngOnDestroy(): void {\n this.element.removeEventListener('dragenter', this.handleDragEnter.bind(this));\n this.element.removeEventListener('dragover', this.handleDragEnter.bind(this));\n }\n\n private handleDragEnter(event: MouseEvent) {\n this.createZone();\n event.preventDefault();\n }\n private handleDragLeave(event: MouseEvent) {\n this.removeZone();\n this.fileService.choose();\n event.preventDefault();\n }\n\n private createZone() {\n this.overlayElement = document.createElement('div');\n this.overlayElement.classList.add('ax-uploader-overlay-state');\n\n const icon: HTMLSpanElement = document.createElement('span');\n icon.classList.add('ax-icon', 'ax-icon-upload');\n\n const text = document.createElement('span');\n text.innerText = AXTranslator.get('uploader.zone.text');\n this.overlayElement.appendChild(icon);\n this.overlayElement.appendChild(text);\n\n this.element.appendChild(this.overlayElement);\n }\n private removeZone() {\n this.overlayElement.remove();\n }\n}\n","import { Dialog, DialogRef } from '@angular/cdk/dialog';\nimport { GlobalPositionStrategy } from '@angular/cdk/overlay';\nimport { Injectable, inject } from '@angular/core';\nimport { AXUploaderListComponent } from './uploader-list.component';\n\n@Injectable()\nexport class AXUploaderService {\n private dialog: Dialog = inject(Dialog);\n dialogRef: DialogRef;\n\n openDialog() {\n const positionStrategy = new GlobalPositionStrategy();\n this.dialogRef = this.dialog.open(AXUploaderListComponent, {\n hasBackdrop: false,\n closeOnNavigation: false,\n width: '320px',\n maxWidth: 320,\n panelClass: ['ax-uploader-list-pane', 'ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],\n positionStrategy: positionStrategy.bottom().end('24px'),\n }) as DialogRef;\n }\n\n closeDialog() {\n this.dialogRef.close();\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AXFileService } from '@acorex/core/file';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUploaderDropZoneComponent } from './uploader-drop-zone.component';\nimport { AXUploaderListComponent } from './uploader-list.component';\nimport { AXUploaderOverlayComponent } from './uploader-overlay.component';\nimport { AXUploaderZoneDirective } from './uploader-zone.directive';\nimport { AXUploaderService } from './uploader.service';\n\n@NgModule({\n declarations: [\n AXUploaderDropZoneComponent,\n AXUploaderListComponent,\n AXUploaderOverlayComponent,\n AXUploaderZoneDirective,\n ],\n imports: [CommonModule, AXDecoratorModule, AXButtonModule, AXTranslationModule],\n exports: [\n AXUploaderDropZoneComponent,\n AXUploaderListComponent,\n AXUploaderOverlayComponent,\n AXUploaderZoneDirective,\n ],\n providers: [AXUploaderService, AXFileService],\n})\nexport class AXUploaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-uploader.mjs","sources":["../../../../libs/components/uploader/src/lib/uploader-drop-zone.component.ts","../../../../libs/components/uploader/src/lib/uploader-drop-zone.component.html","../../../../libs/components/uploader/src/lib/uploader.service.ts","../../../../libs/components/uploader/src/lib/uploader-list.component.ts","../../../../libs/components/uploader/src/lib/uploader-list.component.html","../../../../libs/components/uploader/src/lib/uploader-overlay.component.ts","../../../../libs/components/uploader/src/lib/uploader-overlay.component.html","../../../../libs/components/uploader/src/lib/uploader-zone.directive.ts","../../../../libs/components/uploader/src/lib/uploader.module.ts","../../../../libs/components/uploader/src/acorex-components-uploader.ts"],"sourcesContent":["import { MXBaseComponent } from '@acorex/components/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ax-uploader-drop-zone',\n templateUrl: './uploader-drop-zone.component.html',\n styleUrls: ['./uploader.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXUploaderDropZoneComponent extends MXBaseComponent {}\n","<div class=\"ax-uploader-drop-zone-container\">\n <ax-icon class=\"ax-icon ax-icon-upload\"></ax-icon>\n <div class=\"ax-uploader-drop-zone-description\">\n <span>Drag & Drop or <a href=\"#\">Choose file</a> to upload</span>\n <p>SVG, PNG, JPG or GIF (MAX. 800x400px)</p>\n </div>\n</div>\n","import { Dialog, DialogRef } from '@angular/cdk/dialog';\nimport { GlobalPositionStrategy } from '@angular/cdk/overlay';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { AXUploaderListComponent } from './uploader-list.component';\n\n@Injectable()\nexport class AXUploaderService {\n private dialog: Dialog = inject(Dialog);\n private http: HttpClient = inject(HttpClient);\n dialogRef: DialogRef;\n files: any[] = [];\n openDialog(data: any) {\n this.files = [...data];\n const positionStrategy = new GlobalPositionStrategy();\n this.dialogRef = this.dialog.open(AXUploaderListComponent, {\n hasBackdrop: false,\n closeOnNavigation: false,\n width: '320px',\n maxWidth: 320,\n panelClass: ['ax-uploader-list-pane', 'ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],\n positionStrategy: positionStrategy.bottom().end('24px'),\n data,\n }) as DialogRef;\n }\n\n closeDialog() {\n this.dialogRef.close();\n }\n\n upload(requestUrl: string, file: File, options?: any) {\n const formData = new FormData();\n formData.append(file.name, file);\n return this.http.post(requestUrl, formData, options);\n }\n}\n","import { AXComponentCloseEvent, MXBaseComponent } from '@acorex/components/common';\nimport { AUTO_STYLE, animate, state, style, transition, trigger } from '@angular/animations';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport { Component, ViewEncapsulation, afterNextRender, inject } from '@angular/core';\nimport { AXUploaderService } from './uploader.service';\n\nexport interface AXUploaderItem {\n type: 'picture' | 'doc' | 'pdf' | 'archive' | 'video' | 'unknow';\n name: string;\n size: number;\n description?: string;\n}\n\n@Component({\n selector: 'ax-uploader-list',\n templateUrl: './uploader-list.component.html',\n styleUrls: ['./uploader-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('collapse', [\n state('false', style({ height: AUTO_STYLE, visibility: AUTO_STYLE })),\n state('true', style({ height: '0', visibility: 'hidden' })),\n transition('false => true', animate(150 + 'ms ease-in')),\n transition('true => false', animate(150 + 'ms ease-out')),\n ]),\n ],\n})\nexport class AXUploaderListComponent extends MXBaseComponent {\n items: any[] = inject(DIALOG_DATA);\n private uploadService: AXUploaderService = inject(AXUploaderService);\n\n leftTime = 5;\n isCollapsed = false;\n constructor(private dialogRef: DialogRef<AXComponentCloseEvent>) {\n super();\n afterNextRender(() => {\n this.uploadService.upload('http://api.acorexui.com/api/v1/files', this.items[0]).subscribe({\n next: (e: any) => {\n console.log(e);\n },\n error: (err: any) => {\n console.error(err);\n },\n });\n });\n }\n\n toggle() {\n this.isCollapsed = !this.isCollapsed;\n }\n close() {\n this.dialogRef.close();\n }\n}\n","<div class=\"ax-uploader-list-header\">\n <div>Uploader list</div>\n <div>\n <i\n class=\"ax-icon\"\n [ngClass]=\"{ 'ax-icon-chevron-down': !isCollapsed, 'ax-icon-chevron-up': isCollapsed }\"\n (click)=\"toggle()\"\n ></i>\n\n <i class=\"ax-icon ax-icon-close\" (click)=\"close()\"></i>\n </div>\n</div>\n\n<div [@collapse]=\"isCollapsed\">\n <div class=\"ax-uploader-progress-status\">\n <div>{{ leftTime }}min left</div>\n <button>{{ 'common.cancel' | trans }}</button>\n </div>\n <ul class=\"ax-uploader-list-items\">\n <ng-container *ngFor=\"let item of items\">\n <li>\n <div>\n <i class=\"ax-icon ax-icon-inbox\"></i>\n <div class=\"ax-uploader-item-text\">\n <strong>{{ item.name }}</strong>\n <small>{{ item.size }}</small>\n </div>\n </div>\n <div></div>\n </li>\n </ng-container>\n </ul>\n</div>\n","import { MXBaseComponent } from '@acorex/components/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ax-uploader-overlay',\n templateUrl: './uploader-overlay.component.html',\n styleUrls: ['./uploader.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXUploaderOverlayComponent extends MXBaseComponent {}\n","<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-items-center ax-justify-center ax-h-[95vh] hover:ax-bg-primary-50 ax-m-2 hover:ax-border-2 ax-rounded-lg hover:ax-border-primary-500\">\n\n</div>","import { AXFileService } from '@acorex/core/file';\nimport { AXTranslator } from '@acorex/core/translation';\nimport { Directive, ElementRef, HostBinding, Input, OnDestroy, inject } from '@angular/core';\nimport { AXUploaderService } from './uploader.service';\n@Directive({\n selector: '[axUploaderZone]',\n})\nexport class AXUploaderZoneDirective implements OnDestroy {\n private fileService: AXFileService = inject(AXFileService);\n private uploadService: AXUploaderService = inject(AXUploaderService);\n private element: HTMLElement;\n\n @Input() multiple = true;\n\n stateClass = 'ax-uploader-overlay-state';\n overlayElement: HTMLDivElement;\n files: File[] = [];\n initElement() {\n this.element = this.elementRef.nativeElement as HTMLElement;\n this.element.style.position = 'relative';\n }\n\n constructor(private elementRef: ElementRef) {\n this.initElement();\n this.element.addEventListener('dragenter', this.handleDragEnter.bind(this));\n this.element.addEventListener('dragover', this.handleDragOver.bind(this));\n this.element.addEventListener('drop', this.handleOnDrop.bind(this));\n this.element.addEventListener('dragleave', this.handleDragLeave.bind(this));\n }\n\n ngOnDestroy(): void {\n this.element.removeEventListener('dragenter', this.handleDragEnter.bind(this));\n this.element.removeEventListener('drop', this.handleOnDrop.bind(this));\n this.element.removeEventListener('dragover', this.handleDragOver.bind(this));\n this.element.removeEventListener('dragleave', this.handleDragLeave.bind(this));\n }\n private handleDragEnter(event: Event) {\n this.createZone();\n event.preventDefault();\n }\n private handleOnDrop(event: DragEvent) {\n event.preventDefault();\n this.uploadService.openDialog(event.dataTransfer?.files);\n this.removeZone();\n }\n\n private handleDragOver(event: Event) {\n event.preventDefault();\n }\n\n private handleDragLeave(event: Event) {\n event.preventDefault();\n this.removeZone();\n }\n\n private createZone() {\n this.overlayElement = document.createElement('div');\n this.overlayElement.classList.add('ax-uploader-overlay-state');\n\n const icon: HTMLSpanElement = document.createElement('span');\n icon.classList.add('ax-icon', 'ax-icon-upload');\n\n const text = document.createElement('span');\n text.innerText = AXTranslator.get('uploader.zone.text');\n\n this.overlayElement.appendChild(icon);\n this.overlayElement.appendChild(text);\n\n this.element.appendChild(this.overlayElement);\n }\n private removeZone() {\n this.overlayElement.remove();\n }\n @HostBinding('class')\n get __hostClass(): string {\n return `ax-drop-zone`;\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AXFileService } from '@acorex/core/file';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { HttpClientModule } from '@angular/common/http';\nimport { AXUploaderDropZoneComponent } from './uploader-drop-zone.component';\nimport { AXUploaderListComponent } from './uploader-list.component';\nimport { AXUploaderOverlayComponent } from './uploader-overlay.component';\nimport { AXUploaderZoneDirective } from './uploader-zone.directive';\nimport { AXUploaderService } from './uploader.service';\n\n@NgModule({\n declarations: [\n AXUploaderDropZoneComponent,\n AXUploaderListComponent,\n AXUploaderOverlayComponent,\n AXUploaderZoneDirective,\n ],\n imports: [CommonModule, AXDecoratorModule, AXButtonModule, AXTranslationModule, HttpClientModule],\n exports: [\n AXUploaderDropZoneComponent,\n AXUploaderListComponent,\n AXUploaderOverlayComponent,\n AXUploaderZoneDirective,\n ],\n providers: [AXUploaderService, AXFileService],\n})\nexport class AXUploaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/components",
3
- "version": "7.8.14",
3
+ "version": "7.8.15",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": ">=16.2.0",
@@ -280,18 +280,18 @@
280
280
  "esm": "./esm2022/scheduler/acorex-components-scheduler.mjs",
281
281
  "default": "./fesm2022/acorex-components-scheduler.mjs"
282
282
  },
283
- "./search-box": {
284
- "types": "./search-box/index.d.ts",
285
- "esm2022": "./esm2022/search-box/acorex-components-search-box.mjs",
286
- "esm": "./esm2022/search-box/acorex-components-search-box.mjs",
287
- "default": "./fesm2022/acorex-components-search-box.mjs"
288
- },
289
283
  "./select-box": {
290
284
  "types": "./select-box/index.d.ts",
291
285
  "esm2022": "./esm2022/select-box/acorex-components-select-box.mjs",
292
286
  "esm": "./esm2022/select-box/acorex-components-select-box.mjs",
293
287
  "default": "./fesm2022/acorex-components-select-box.mjs"
294
288
  },
289
+ "./search-box": {
290
+ "types": "./search-box/index.d.ts",
291
+ "esm2022": "./esm2022/search-box/acorex-components-search-box.mjs",
292
+ "esm": "./esm2022/search-box/acorex-components-search-box.mjs",
293
+ "default": "./fesm2022/acorex-components-search-box.mjs"
294
+ },
295
295
  "./selection-list": {
296
296
  "types": "./selection-list/index.d.ts",
297
297
  "esm2022": "./esm2022/selection-list/acorex-components-selection-list.mjs",
@@ -9,7 +9,8 @@ export interface AXUploaderItem {
9
9
  }
10
10
  export declare class AXUploaderListComponent extends MXBaseComponent {
11
11
  private dialogRef;
12
- items: AXUploaderItem[];
12
+ items: any[];
13
+ private uploadService;
13
14
  leftTime: number;
14
15
  isCollapsed: boolean;
15
16
  constructor(dialogRef: DialogRef<AXComponentCloseEvent>);
@@ -1,19 +1,24 @@
1
- import { ElementRef, OnDestroy, OnInit } from '@angular/core';
1
+ import { ElementRef, OnDestroy } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class AXUploaderZoneDirective implements OnInit, OnDestroy {
3
+ export declare class AXUploaderZoneDirective implements OnDestroy {
4
4
  private elementRef;
5
5
  private fileService;
6
+ private uploadService;
6
7
  private element;
8
+ multiple: boolean;
7
9
  stateClass: string;
8
10
  overlayElement: HTMLDivElement;
11
+ files: File[];
12
+ initElement(): void;
9
13
  constructor(elementRef: ElementRef);
10
- ngOnInit(): void;
11
- init(): void;
12
14
  ngOnDestroy(): void;
13
15
  private handleDragEnter;
16
+ private handleOnDrop;
17
+ private handleDragOver;
14
18
  private handleDragLeave;
15
19
  private createZone;
16
20
  private removeZone;
21
+ get __hostClass(): string;
17
22
  static ɵfac: i0.ɵɵFactoryDeclaration<AXUploaderZoneDirective, never>;
18
- static ɵdir: i0.ɵɵDirectiveDeclaration<AXUploaderZoneDirective, "[axUploaderZone]", never, {}, {}, never, never, false, never>;
23
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AXUploaderZoneDirective, "[axUploaderZone]", never, { "multiple": { "alias": "multiple"; "required": false; }; }, {}, never, never, false, never>;
19
24
  }
@@ -7,8 +7,9 @@ import * as i5 from "@angular/common";
7
7
  import * as i6 from "@acorex/components/decorators";
8
8
  import * as i7 from "@acorex/components/button";
9
9
  import * as i8 from "@acorex/core/translation";
10
+ import * as i9 from "@angular/common/http";
10
11
  export declare class AXUploaderModule {
11
12
  static ɵfac: i0.ɵɵFactoryDeclaration<AXUploaderModule, never>;
12
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXUploaderModule, [typeof i1.AXUploaderDropZoneComponent, typeof i2.AXUploaderListComponent, typeof i3.AXUploaderOverlayComponent, typeof i4.AXUploaderZoneDirective], [typeof i5.CommonModule, typeof i6.AXDecoratorModule, typeof i7.AXButtonModule, typeof i8.AXTranslationModule], [typeof i1.AXUploaderDropZoneComponent, typeof i2.AXUploaderListComponent, typeof i3.AXUploaderOverlayComponent, typeof i4.AXUploaderZoneDirective]>;
13
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXUploaderModule, [typeof i1.AXUploaderDropZoneComponent, typeof i2.AXUploaderListComponent, typeof i3.AXUploaderOverlayComponent, typeof i4.AXUploaderZoneDirective], [typeof i5.CommonModule, typeof i6.AXDecoratorModule, typeof i7.AXButtonModule, typeof i8.AXTranslationModule, typeof i9.HttpClientModule], [typeof i1.AXUploaderDropZoneComponent, typeof i2.AXUploaderListComponent, typeof i3.AXUploaderOverlayComponent, typeof i4.AXUploaderZoneDirective]>;
13
14
  static ɵinj: i0.ɵɵInjectorDeclaration<AXUploaderModule>;
14
15
  }
@@ -2,9 +2,12 @@ import { DialogRef } from '@angular/cdk/dialog';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class AXUploaderService {
4
4
  private dialog;
5
+ private http;
5
6
  dialogRef: DialogRef;
6
- openDialog(): void;
7
+ files: any[];
8
+ openDialog(data: any): void;
7
9
  closeDialog(): void;
10
+ upload(requestUrl: string, file: File, options?: any): import("rxjs").Observable<ArrayBuffer>;
8
11
  static ɵfac: i0.ɵɵFactoryDeclaration<AXUploaderService, never>;
9
12
  static ɵprov: i0.ɵɵInjectableDeclaration<AXUploaderService>;
10
13
  }