fixa-admin 0.0.34 → 0.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/uploader/uploader.component.mjs +53 -27
- package/esm2022/lib/models/shared.model.mjs +1 -1
- package/esm2022/lib/popover/image-cropper/image-cropper.popover.mjs +35 -0
- package/esm2022/lib/popover/index.api.mjs +2 -0
- package/esm2022/lib/services/dialog.service.mjs +2 -1
- package/esm2022/lib/shared.module.mjs +17 -11
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/fixa-admin.mjs +254 -192
- package/fesm2022/fixa-admin.mjs.map +1 -1
- package/lib/components/uploader/uploader.component.d.ts +6 -3
- package/lib/models/shared.model.d.ts +5 -0
- package/lib/popover/image-cropper/image-cropper.popover.d.ts +18 -0
- package/lib/popover/index.api.d.ts +1 -0
- package/lib/shared.module.d.ts +28 -26
- package/package.json +2 -1
- package/public-api.d.ts +1 -0
package/fesm2022/fixa-admin.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Inject, Injectable,
|
|
2
|
+
import { Inject, Injectable, Input, Directive as Directive$1, ViewChild, Component, Pipe, EventEmitter, Output, inject, ViewContainerRef, Injector, HostListener, Attribute, APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/common/http';
|
|
4
4
|
import { HttpRequest, HttpResponse, HttpClientModule, HttpClient } from '@angular/common/http';
|
|
5
5
|
import * as i1 from 'ng-zorro-antd/modal';
|
|
6
|
-
import {
|
|
6
|
+
import { NZ_MODAL_DATA, NzModalRef, NzModalModule } from 'ng-zorro-antd/modal';
|
|
7
7
|
import * as i1$1 from 'ng-zorro-antd/message';
|
|
8
8
|
import { NzMessageModule } from 'ng-zorro-antd/message';
|
|
9
9
|
import * as i3$1 from '@ag-grid-community/angular';
|
|
@@ -20,6 +20,8 @@ import { SetFilterModule } from '@ag-grid-enterprise/set-filter';
|
|
|
20
20
|
import { CdkMenuModule } from '@angular/cdk/menu';
|
|
21
21
|
import * as i2$2 from '@angular/common';
|
|
22
22
|
import { CommonModule } from '@angular/common';
|
|
23
|
+
import * as i1$3 from '@angular/forms';
|
|
24
|
+
import { NgControl, FormsModule } from '@angular/forms';
|
|
23
25
|
import * as i1$6 from '@angular/router';
|
|
24
26
|
import { RouterModule } from '@angular/router';
|
|
25
27
|
import * as i1$4 from '@ngx-translate/core';
|
|
@@ -27,8 +29,12 @@ import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
|
|
|
27
29
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
28
30
|
import * as i1$2 from 'ng-zorro-antd/button';
|
|
29
31
|
import { NzButtonModule } from 'ng-zorro-antd/button';
|
|
32
|
+
import * as i7 from 'ng-zorro-antd/form';
|
|
33
|
+
import { NzFormModule } from 'ng-zorro-antd/form';
|
|
30
34
|
import * as i4 from 'ng-zorro-antd/icon';
|
|
31
35
|
import { NzIconModule } from 'ng-zorro-antd/icon';
|
|
36
|
+
import * as i5 from 'ng-zorro-antd/input';
|
|
37
|
+
import { NzInputModule } from 'ng-zorro-antd/input';
|
|
32
38
|
import * as i4$1 from 'ng-zorro-antd/layout';
|
|
33
39
|
import { NzLayoutModule } from 'ng-zorro-antd/layout';
|
|
34
40
|
import * as i5$1 from 'ng-zorro-antd/menu';
|
|
@@ -39,21 +45,17 @@ import { NzTabsModule } from 'ng-zorro-antd/tabs';
|
|
|
39
45
|
import * as i2$3 from 'ng-zorro-antd/tooltip';
|
|
40
46
|
import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
|
|
41
47
|
import { NzTreeViewModule } from 'ng-zorro-antd/tree-view';
|
|
48
|
+
import * as i6$1 from 'ng-zorro-antd/upload';
|
|
49
|
+
import { NzUploadModule } from 'ng-zorro-antd/upload';
|
|
50
|
+
import * as i2$4 from 'ngx-image-cropper';
|
|
51
|
+
import { ImageCropperComponent } from 'ngx-image-cropper';
|
|
42
52
|
import * as moment from 'jalali-moment';
|
|
43
53
|
import moment__default from 'jalali-moment';
|
|
44
54
|
import * as i2$1 from 'ng-zorro-antd/core/transition-patch';
|
|
45
55
|
import * as i3 from 'ng-zorro-antd/core/wave';
|
|
46
|
-
import * as i1$3 from '@angular/forms';
|
|
47
|
-
import { NgControl, FormsModule } from '@angular/forms';
|
|
48
|
-
import * as i5 from 'ng-zorro-antd/input';
|
|
49
|
-
import { NzInputModule } from 'ng-zorro-antd/input';
|
|
50
56
|
import * as i6 from 'ng-zorro-antd/grid';
|
|
51
|
-
import * as i7 from 'ng-zorro-antd/form';
|
|
52
|
-
import { NzFormModule } from 'ng-zorro-antd/form';
|
|
53
57
|
import { Subscription, Observable } from 'rxjs';
|
|
54
58
|
import Compressor from 'compressorjs';
|
|
55
|
-
import * as i6$1 from 'ng-zorro-antd/upload';
|
|
56
|
-
import { NzUploadModule } from 'ng-zorro-antd/upload';
|
|
57
59
|
|
|
58
60
|
class SharedService {
|
|
59
61
|
constructor(environment, _http) {
|
|
@@ -126,6 +128,7 @@ class DialogService {
|
|
|
126
128
|
nzTitle: body.title,
|
|
127
129
|
nzWidth: size,
|
|
128
130
|
nzClassName: className,
|
|
131
|
+
nzMaskClosable: body.closable != null ? body.closable : true,
|
|
129
132
|
nzStyle: body.size == 'full' ? {
|
|
130
133
|
height: height,
|
|
131
134
|
top: '20px'
|
|
@@ -228,59 +231,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
228
231
|
}]
|
|
229
232
|
}], ctorParameters: () => [{ type: i1.NzModalService }] });
|
|
230
233
|
|
|
231
|
-
var FilterOperator;
|
|
232
|
-
(function (FilterOperator) {
|
|
233
|
-
FilterOperator["equals"] = "EQ";
|
|
234
|
-
FilterOperator["notEqual"] = "NEQ";
|
|
235
|
-
FilterOperator["lessThan"] = "LT";
|
|
236
|
-
FilterOperator["lessThanOrEqual"] = "LTE";
|
|
237
|
-
FilterOperator["greaterThan"] = "GT";
|
|
238
|
-
FilterOperator["greaterThanOrEqual"] = "GTE";
|
|
239
|
-
FilterOperator["startsWith"] = "STARTSWITH";
|
|
240
|
-
FilterOperator["endsWith"] = "ENDSWITH";
|
|
241
|
-
FilterOperator["inRange"] = "IN";
|
|
242
|
-
FilterOperator["contains"] = "LIKE";
|
|
243
|
-
FilterOperator["notContains"] = "NOTLIKE";
|
|
244
|
-
FilterOperator["truncEqual"] = "TRUNC_EQ";
|
|
245
|
-
FilterOperator["truncNotEqual"] = "TRUNC_NEQ";
|
|
246
|
-
FilterOperator["truncGreaterThanEqual"] = "TRUNC_GTE";
|
|
247
|
-
FilterOperator["truncGreaterThan"] = "TRUNC_GT";
|
|
248
|
-
FilterOperator["truncLessThanOr"] = "TRUNC_LT";
|
|
249
|
-
FilterOperator["truncLessThanOrEqual"] = "TRUNC_LTE";
|
|
250
|
-
FilterOperator["between"] = "BETWEEN";
|
|
251
|
-
})(FilterOperator || (FilterOperator = {}));
|
|
252
|
-
class SelectModel {
|
|
253
|
-
constructor() {
|
|
254
|
-
this.items = [];
|
|
255
|
-
this.loading = false;
|
|
256
|
-
this.page = null;
|
|
257
|
-
this.pageSize = null;
|
|
258
|
-
this.totalCount = null;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
class JDatePipe {
|
|
263
|
-
transform(value, time = false, format = 'YYYY/MM/DD') {
|
|
264
|
-
if (value != null) {
|
|
265
|
-
if (!time) {
|
|
266
|
-
return moment.from(value, 'YYYY/MM/DD').locale('fa').format(format);
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
return moment.from(value, 'YYYY/MM/DD').locale('fa').format('YYYY/MM/DD-HH:mm');
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
return value;
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
277
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: JDatePipe, name: "jdate" }); }
|
|
278
|
-
}
|
|
279
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JDatePipe, decorators: [{
|
|
280
|
-
type: Pipe,
|
|
281
|
-
args: [{ name: 'jdate' }]
|
|
282
|
-
}] });
|
|
283
|
-
|
|
284
234
|
const _formatToRegExp = {
|
|
285
235
|
'0': /[0-9]/, 'a': /[a-z]/, 'A': /[A-Z]/, 'B': /[a-zA-Z]/,
|
|
286
236
|
};
|
|
@@ -521,6 +471,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
521
471
|
args: ['eFilterText']
|
|
522
472
|
}] } });
|
|
523
473
|
|
|
474
|
+
var FilterOperator;
|
|
475
|
+
(function (FilterOperator) {
|
|
476
|
+
FilterOperator["equals"] = "EQ";
|
|
477
|
+
FilterOperator["notEqual"] = "NEQ";
|
|
478
|
+
FilterOperator["lessThan"] = "LT";
|
|
479
|
+
FilterOperator["lessThanOrEqual"] = "LTE";
|
|
480
|
+
FilterOperator["greaterThan"] = "GT";
|
|
481
|
+
FilterOperator["greaterThanOrEqual"] = "GTE";
|
|
482
|
+
FilterOperator["startsWith"] = "STARTSWITH";
|
|
483
|
+
FilterOperator["endsWith"] = "ENDSWITH";
|
|
484
|
+
FilterOperator["inRange"] = "IN";
|
|
485
|
+
FilterOperator["contains"] = "LIKE";
|
|
486
|
+
FilterOperator["notContains"] = "NOTLIKE";
|
|
487
|
+
FilterOperator["truncEqual"] = "TRUNC_EQ";
|
|
488
|
+
FilterOperator["truncNotEqual"] = "TRUNC_NEQ";
|
|
489
|
+
FilterOperator["truncGreaterThanEqual"] = "TRUNC_GTE";
|
|
490
|
+
FilterOperator["truncGreaterThan"] = "TRUNC_GT";
|
|
491
|
+
FilterOperator["truncLessThanOr"] = "TRUNC_LT";
|
|
492
|
+
FilterOperator["truncLessThanOrEqual"] = "TRUNC_LTE";
|
|
493
|
+
FilterOperator["between"] = "BETWEEN";
|
|
494
|
+
})(FilterOperator || (FilterOperator = {}));
|
|
495
|
+
class SelectModel {
|
|
496
|
+
constructor() {
|
|
497
|
+
this.items = [];
|
|
498
|
+
this.loading = false;
|
|
499
|
+
this.page = null;
|
|
500
|
+
this.pageSize = null;
|
|
501
|
+
this.totalCount = null;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
class JDatePipe {
|
|
506
|
+
transform(value, time = false, format = 'YYYY/MM/DD') {
|
|
507
|
+
if (value != null) {
|
|
508
|
+
if (!time) {
|
|
509
|
+
return moment.from(value, 'YYYY/MM/DD').locale('fa').format(format);
|
|
510
|
+
}
|
|
511
|
+
else {
|
|
512
|
+
return moment.from(value, 'YYYY/MM/DD').locale('fa').format('YYYY/MM/DD-HH:mm');
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
else {
|
|
516
|
+
return value;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
520
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: JDatePipe, name: "jdate" }); }
|
|
521
|
+
}
|
|
522
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JDatePipe, decorators: [{
|
|
523
|
+
type: Pipe,
|
|
524
|
+
args: [{ name: 'jdate' }]
|
|
525
|
+
}] });
|
|
526
|
+
|
|
524
527
|
class GridComponent {
|
|
525
528
|
constructor(_translate) {
|
|
526
529
|
this._translate = _translate;
|
|
@@ -1312,44 +1315,122 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1312
1315
|
args: [{ selector: 'app-spinner', template: "<div class=\"w-full h-full absolute top-0 left-0 flex justify-center items-center bg-white z-10\">\n <nz-spin nzSimple nzSize=\"large\" nzSimple></nz-spin>\n</div>" }]
|
|
1313
1316
|
}], ctorParameters: () => [] });
|
|
1314
1317
|
|
|
1318
|
+
class PopoverComponent {
|
|
1319
|
+
constructor() {
|
|
1320
|
+
this.data = inject(NZ_MODAL_DATA, { optional: true });
|
|
1321
|
+
this.dialogRef = inject(NzModalRef, { optional: true });
|
|
1322
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
1323
|
+
this.injector = inject(Injector);
|
|
1324
|
+
this.spinnerRef = null;
|
|
1325
|
+
}
|
|
1326
|
+
get loadingDialog() {
|
|
1327
|
+
return this.loadingDialog;
|
|
1328
|
+
}
|
|
1329
|
+
set loadingDialog(value) {
|
|
1330
|
+
if (value) {
|
|
1331
|
+
this.spinnerRef = this.viewContainerRef.createComponent(SpinnerComponent, {
|
|
1332
|
+
injector: this.injector,
|
|
1333
|
+
});
|
|
1334
|
+
}
|
|
1335
|
+
else {
|
|
1336
|
+
this.spinnerRef.destroy();
|
|
1337
|
+
this.spinnerRef = null;
|
|
1338
|
+
}
|
|
1339
|
+
}
|
|
1340
|
+
onClose(data) {
|
|
1341
|
+
this.dialogRef.close(data);
|
|
1342
|
+
}
|
|
1343
|
+
}
|
|
1344
|
+
|
|
1345
|
+
class ImageCropperPopover extends PopoverComponent {
|
|
1346
|
+
constructor(_toast) {
|
|
1347
|
+
super();
|
|
1348
|
+
this._toast = _toast;
|
|
1349
|
+
this.croppedImage = null;
|
|
1350
|
+
}
|
|
1351
|
+
imageCropped(event) {
|
|
1352
|
+
this.croppedImage = new File([event.blob], this.data.file.name, { type: event.blob.type });
|
|
1353
|
+
}
|
|
1354
|
+
loadImageFailed() {
|
|
1355
|
+
this._toast.show('خطا در لود تصویر', 'error');
|
|
1356
|
+
}
|
|
1357
|
+
onOk() {
|
|
1358
|
+
return Promise.resolve({
|
|
1359
|
+
file: this.croppedImage
|
|
1360
|
+
});
|
|
1361
|
+
}
|
|
1362
|
+
onCancel() {
|
|
1363
|
+
return Promise.resolve();
|
|
1364
|
+
}
|
|
1365
|
+
ngOnInit() {
|
|
1366
|
+
}
|
|
1367
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageCropperPopover, deps: [{ token: ToastService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1368
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImageCropperPopover, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<image-cropper\n [imageFile]=\"data.file\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"data.aspectRatio\"\n format=\"png\"\n (imageCropped)=\"imageCropped($event)\"\n (loadImageFailed)=\"loadImageFailed()\"\n class=\"max-h-[400px]\"\n></image-cropper>", dependencies: [{ kind: "component", type: i2$4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "options", "cropperFrameAriaLabel", "output", "format", "autoCrop", "cropper", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "checkImageType", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange", "cropperChange"] }] }); }
|
|
1369
|
+
}
|
|
1370
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageCropperPopover, decorators: [{
|
|
1371
|
+
type: Component,
|
|
1372
|
+
args: [{ template: "<image-cropper\n [imageFile]=\"data.file\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"data.aspectRatio\"\n format=\"png\"\n (imageCropped)=\"imageCropped($event)\"\n (loadImageFailed)=\"loadImageFailed()\"\n class=\"max-h-[400px]\"\n></image-cropper>" }]
|
|
1373
|
+
}], ctorParameters: () => [{ type: ToastService }] });
|
|
1374
|
+
|
|
1315
1375
|
class UploaderComponent {
|
|
1316
|
-
constructor(environment, _toast, _http, _sharedService) {
|
|
1376
|
+
constructor(environment, _toast, _http, _sharedService, _dialog) {
|
|
1317
1377
|
this._toast = _toast;
|
|
1318
1378
|
this._http = _http;
|
|
1319
1379
|
this._sharedService = _sharedService;
|
|
1380
|
+
this._dialog = _dialog;
|
|
1320
1381
|
this.loading = false;
|
|
1321
1382
|
this.env = null;
|
|
1322
1383
|
this._avatarUid = null;
|
|
1323
1384
|
this.maxWithSize = 1024;
|
|
1385
|
+
this.cropper = false;
|
|
1386
|
+
this.aspectRatio = 1 / 1;
|
|
1324
1387
|
this.onUploaded = new EventEmitter();
|
|
1325
1388
|
this.customRequest = (item) => {
|
|
1326
1389
|
// return Subscription
|
|
1327
1390
|
const subscription = new Subscription();
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1391
|
+
const uploadFile = (file) => {
|
|
1392
|
+
this.loading = true;
|
|
1393
|
+
this.resizeImage(file).then((res) => {
|
|
1394
|
+
const isLt1M = res.size / 1024 / 1024 < 1;
|
|
1395
|
+
if (!isLt1M) {
|
|
1396
|
+
this._toast.show('Image must smaller than 1MB!', 'error');
|
|
1397
|
+
subscription.unsubscribe();
|
|
1398
|
+
this.loading = false;
|
|
1399
|
+
return;
|
|
1400
|
+
}
|
|
1401
|
+
const formData = new FormData();
|
|
1402
|
+
formData.append('file', res);
|
|
1403
|
+
const req = new HttpRequest('POST', `${this.env.apiUrl}/file`, formData, {
|
|
1404
|
+
reportProgress: true,
|
|
1405
|
+
responseType: 'text',
|
|
1406
|
+
});
|
|
1407
|
+
subscription.add(this._http.request(req).subscribe((event) => {
|
|
1408
|
+
if (event instanceof HttpResponse) {
|
|
1409
|
+
item.onSuccess(event.body, file, event);
|
|
1410
|
+
}
|
|
1411
|
+
}, (err) => {
|
|
1412
|
+
item.onError(err, file);
|
|
1413
|
+
}));
|
|
1414
|
+
}).catch(() => {
|
|
1334
1415
|
this.loading = false;
|
|
1335
|
-
return;
|
|
1336
|
-
}
|
|
1337
|
-
const formData = new FormData();
|
|
1338
|
-
formData.append('file', res);
|
|
1339
|
-
const req = new HttpRequest('POST', `${this.env.apiUrl}/file`, formData, {
|
|
1340
|
-
reportProgress: true,
|
|
1341
|
-
responseType: 'text',
|
|
1342
1416
|
});
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1417
|
+
};
|
|
1418
|
+
if (this.cropper) {
|
|
1419
|
+
this._dialog.open(ImageCropperPopover, {
|
|
1420
|
+
title: 'برش تصویر',
|
|
1421
|
+
data: {
|
|
1422
|
+
file: item.file,
|
|
1423
|
+
aspectRatio: this.aspectRatio
|
|
1346
1424
|
}
|
|
1347
|
-
}
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
}
|
|
1425
|
+
}).afterClose.subscribe((res) => {
|
|
1426
|
+
if (res.file) {
|
|
1427
|
+
uploadFile(res.file);
|
|
1428
|
+
}
|
|
1429
|
+
});
|
|
1430
|
+
}
|
|
1431
|
+
else {
|
|
1432
|
+
uploadFile(item.file);
|
|
1433
|
+
}
|
|
1353
1434
|
return subscription;
|
|
1354
1435
|
};
|
|
1355
1436
|
this.beforeUpload = (file, _fileList) => new Observable((observer) => {
|
|
@@ -1415,8 +1496,8 @@ class UploaderComponent {
|
|
|
1415
1496
|
});
|
|
1416
1497
|
}
|
|
1417
1498
|
ngOnInit() { }
|
|
1418
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UploaderComponent, deps: [{ token: 'environment' }, { token: ToastService }, { token: i2.HttpClient }, { token: SharedService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1419
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: UploaderComponent, selector: "app-uploader", inputs: { maxWithSize: "maxWithSize", avatar: "avatar" }, outputs: { onUploaded: "onUploaded" }, ngImport: i0, template: "<nz-upload class=\"w-[128px] h-[128px] overflow-hidden\" nzAction=\"{{env.apiUrl}}/file\" nzName=\"file\"\n nzListType=\"picture-card\" [nzShowUploadList]=\"false\" [nzBeforeUpload]=\"beforeUpload\"\n (nzChange)=\"handleChange($event)\" [nzCustomRequest]=\"customRequest\">\n @if (!avatarUrl) {\n <span class=\"upload-icon\" nz-icon [nzType]=\"loading ? 'loading' : 'plus'\"></span>\n <div class=\"ant-upload-text\">Upload</div>\n } @else {\n <img [src]=\"avatarUrl\" class=\"max-w-full max-h-full\" />\n }\n</nz-upload>", dependencies: [{ kind: "directive", type: i4.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i2$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "component", type: i6$1.NzUploadComponent, selector: "nz-upload", inputs: ["nzType", "nzLimit", "nzSize", "nzFileType", "nzAccept", "nzAction", "nzDirectory", "nzOpenFileDialogOnClick", "nzBeforeUpload", "nzCustomRequest", "nzData", "nzFilter", "nzFileList", "nzDisabled", "nzHeaders", "nzListType", "nzMultiple", "nzName", "nzShowUploadList", "nzShowButton", "nzWithCredentials", "nzRemove", "nzPreview", "nzPreviewFile", "nzPreviewIsImage", "nzTransformFile", "nzDownload", "nzIconRender", "nzFileListRender"], outputs: ["nzChange", "nzFileListChange"], exportAs: ["nzUpload"] }] }); }
|
|
1499
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UploaderComponent, deps: [{ token: 'environment' }, { token: ToastService }, { token: i2.HttpClient }, { token: SharedService }, { token: DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1500
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: UploaderComponent, selector: "app-uploader", inputs: { maxWithSize: "maxWithSize", cropper: "cropper", aspectRatio: "aspectRatio", avatar: "avatar" }, outputs: { onUploaded: "onUploaded" }, ngImport: i0, template: "<nz-upload class=\"w-[128px] h-[128px] overflow-hidden\" nzAction=\"{{env.apiUrl}}/file\" nzName=\"file\"\n nzListType=\"picture-card\" [nzShowUploadList]=\"false\" [nzBeforeUpload]=\"beforeUpload\"\n (nzChange)=\"handleChange($event)\" [nzCustomRequest]=\"customRequest\">\n @if (!avatarUrl) {\n <span class=\"upload-icon\" nz-icon [nzType]=\"loading ? 'loading' : 'plus'\"></span>\n <div class=\"ant-upload-text\">Upload</div>\n } @else {\n <img [src]=\"avatarUrl\" class=\"max-w-full max-h-full\" />\n }\n</nz-upload>", dependencies: [{ kind: "directive", type: i4.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i2$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "component", type: i6$1.NzUploadComponent, selector: "nz-upload", inputs: ["nzType", "nzLimit", "nzSize", "nzFileType", "nzAccept", "nzAction", "nzDirectory", "nzOpenFileDialogOnClick", "nzBeforeUpload", "nzCustomRequest", "nzData", "nzFilter", "nzFileList", "nzDisabled", "nzHeaders", "nzListType", "nzMultiple", "nzName", "nzShowUploadList", "nzShowButton", "nzWithCredentials", "nzRemove", "nzPreview", "nzPreviewFile", "nzPreviewIsImage", "nzTransformFile", "nzDownload", "nzIconRender", "nzFileListRender"], outputs: ["nzChange", "nzFileListChange"], exportAs: ["nzUpload"] }] }); }
|
|
1420
1501
|
}
|
|
1421
1502
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UploaderComponent, decorators: [{
|
|
1422
1503
|
type: Component,
|
|
@@ -1424,7 +1505,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1424
1505
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
1425
1506
|
type: Inject,
|
|
1426
1507
|
args: ['environment']
|
|
1427
|
-
}] }, { type: ToastService }, { type: i2.HttpClient }, { type: SharedService }], propDecorators: { maxWithSize: [{
|
|
1508
|
+
}] }, { type: ToastService }, { type: i2.HttpClient }, { type: SharedService }, { type: DialogService }], propDecorators: { maxWithSize: [{
|
|
1509
|
+
type: Input
|
|
1510
|
+
}], cropper: [{
|
|
1511
|
+
type: Input
|
|
1512
|
+
}], aspectRatio: [{
|
|
1428
1513
|
type: Input
|
|
1429
1514
|
}], avatar: [{
|
|
1430
1515
|
type: Input
|
|
@@ -1515,77 +1600,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1515
1600
|
type: Output
|
|
1516
1601
|
}] } });
|
|
1517
1602
|
|
|
1518
|
-
class AuthGuard {
|
|
1519
|
-
constructor(_router) {
|
|
1520
|
-
this._router = _router;
|
|
1521
|
-
}
|
|
1522
|
-
canActivate(route, state) {
|
|
1523
|
-
if (localStorage.getItem('userInfo')) {
|
|
1524
|
-
return true;
|
|
1525
|
-
}
|
|
1526
|
-
this._router.navigate(['/auth']);
|
|
1527
|
-
return false;
|
|
1528
|
-
}
|
|
1529
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, deps: [{ token: i1$6.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1530
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
|
|
1531
|
-
}
|
|
1532
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, decorators: [{
|
|
1533
|
-
type: Injectable,
|
|
1534
|
-
args: [{
|
|
1535
|
-
providedIn: 'root'
|
|
1536
|
-
}]
|
|
1537
|
-
}], ctorParameters: () => [{ type: i1$6.Router }] });
|
|
1538
|
-
|
|
1539
|
-
class MasterLayout {
|
|
1540
|
-
constructor(_service, _confirm, componentFactoryResolver) {
|
|
1541
|
-
this._service = _service;
|
|
1542
|
-
this._confirm = _confirm;
|
|
1543
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
|
1544
|
-
this.isCollapsed = false;
|
|
1545
|
-
this.menuItems = [];
|
|
1546
|
-
}
|
|
1547
|
-
logout() {
|
|
1548
|
-
this._confirm.confirm(() => {
|
|
1549
|
-
localStorage.clear();
|
|
1550
|
-
location.reload();
|
|
1551
|
-
return Promise.resolve();
|
|
1552
|
-
});
|
|
1553
|
-
}
|
|
1554
|
-
loadComponent(component) {
|
|
1555
|
-
this.container.clear();
|
|
1556
|
-
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
|
|
1557
|
-
this.container.createComponent(componentFactory);
|
|
1558
|
-
}
|
|
1559
|
-
ngAfterViewInit() {
|
|
1560
|
-
setTimeout(() => {
|
|
1561
|
-
// this.loadComponent(this._ac.);
|
|
1562
|
-
}, 500);
|
|
1563
|
-
}
|
|
1564
|
-
ngOnInit() {
|
|
1565
|
-
this.menuItems = this._service.menuItems;
|
|
1566
|
-
}
|
|
1567
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MasterLayout, deps: [{ token: SharedService }, { token: ConfirmService }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1568
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MasterLayout, selector: "ng-component", viewQueries: [{ propertyName: "container", first: true, predicate: ["dynamicComponentContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<nz-layout class=\"app-layout\">\n <nz-sider class=\"menu-sidebar bg-white\" nzCollapsible nzWidth=\"256px\" nzBreakpoint=\"md\"\n [(nzCollapsed)]=\"isCollapsed\" [nzTrigger]=\"null\">\n <div class=\"p-4\">\n <div class=\"flex justify-center items-center border-b !border-b-slate-200 pb-4\">\n <img width=\"100\" src=\"assets/images/logo.svg\" alt=\"\">\n </div>\n </div>\n <ul nz-menu nzMode=\"inline\" [nzInlineCollapsed]=\"isCollapsed\">\n @for (item of menuItems; track item.title) {\n @if(item.children){\n <li nz-submenu [nzTitle]=\"item.title\" [nzIcon]=\"item.icon\">\n <ul nz-menu-group>\n @for (subitem of item.children; track subitem.title) {\n <li nz-menu-item [routerLink]=\"subitem.path\">{{subitem.title}}</li>\n }\n </ul>\n </li>\n } @else{\n <li nz-menu-item [routerLink]=\"item.path\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n <span>{{item.title}}</span>\n </li>\n }\n }\n </ul>\n </nz-sider>\n <nz-layout>\n <nz-header>\n <div class=\"app-header p-4 flex justify-between items-center\">\n <div>\n <button nz-button nzType=\"text\" (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"text-2xl\" nz-icon nzType=\"menu\"></span>\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"global\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"user\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"bell\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\" (click)=\"logout()\"><span nz-icon\n nzType=\"poweroff\"></span></button>\n </div>\n </div>\n </nz-header>\n <nz-content>\n <!-- <nz-tabset nzType=\"editable-card\">\n <nz-tab nzClosable nzTitle=\"\u062F\u0631\u062E\u062A \u0633\u0631\u0648\u06CC\u0633\">\n <div class=\"inner-content rounded-md overflow-auto\">\n <div #dynamicComponentContainer></div>\n </div>\n </nz-tab>\n </nz-tabset> -->\n <div class=\"inner-content rounded-md\">\n <router-outlet></router-outlet>\n </div>\n </nz-content>\n </nz-layout>\n</nz-layout>", styles: [":host{display:flex;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-layout{height:100vh}.menu-sidebar{position:relative;z-index:10;min-height:100vh;box-shadow:2px 0 6px #00152959}.header-trigger{height:64px;padding:20px 24px;font-size:20px;cursor:pointer;transition:all .3s,padding 0s}.trigger:hover{color:#1890ff}.sidebar-logo{position:relative;height:64px;padding-left:24px;overflow:hidden;line-height:64px;background:#001529;transition:all .3s}.sidebar-logo img{display:inline-block;height:32px;width:32px;vertical-align:middle}.sidebar-logo h1{display:inline-block;margin:0 0 0 20px;color:#fff;font-weight:600;font-size:14px;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;vertical-align:middle}nz-header{padding:0;width:100%;z-index:2}.app-header{position:relative;height:64px;padding:0;background:#fff;box-shadow:0 1px 4px #00152914}nz-content{margin:24px}.inner-content{padding:24px;background:#fff;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$6.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1$6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4$1.NzLayoutComponent, selector: "nz-layout", exportAs: ["nzLayout"] }, { kind: "component", type: i4$1.NzHeaderComponent, selector: "nz-header", exportAs: ["nzHeader"] }, { kind: "component", type: i4$1.NzContentComponent, selector: "nz-content", exportAs: ["nzContent"] }, { kind: "component", type: i4$1.NzSiderComponent, selector: "nz-sider", inputs: ["nzWidth", "nzTheme", "nzCollapsedWidth", "nzBreakpoint", "nzZeroTrigger", "nzTrigger", "nzReverseArrow", "nzCollapsible", "nzCollapsed"], outputs: ["nzCollapsedChange"], exportAs: ["nzSider"] }, { kind: "directive", type: i5$1.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i5$1.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "component", type: i5$1.NzSubMenuComponent, selector: "[nz-submenu]", inputs: ["nzMenuClassName", "nzPaddingLeft", "nzTitle", "nzIcon", "nzOpen", "nzDisabled", "nzPlacement"], outputs: ["nzOpenChange"], exportAs: ["nzSubmenu"] }, { kind: "component", type: i5$1.NzMenuGroupComponent, selector: "[nz-menu-group]", inputs: ["nzTitle"], exportAs: ["nzMenuGroup"] }, { kind: "directive", type: i4.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i1$2.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i2$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }] }); }
|
|
1569
|
-
}
|
|
1570
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MasterLayout, decorators: [{
|
|
1571
|
-
type: Component,
|
|
1572
|
-
args: [{ template: "<nz-layout class=\"app-layout\">\n <nz-sider class=\"menu-sidebar bg-white\" nzCollapsible nzWidth=\"256px\" nzBreakpoint=\"md\"\n [(nzCollapsed)]=\"isCollapsed\" [nzTrigger]=\"null\">\n <div class=\"p-4\">\n <div class=\"flex justify-center items-center border-b !border-b-slate-200 pb-4\">\n <img width=\"100\" src=\"assets/images/logo.svg\" alt=\"\">\n </div>\n </div>\n <ul nz-menu nzMode=\"inline\" [nzInlineCollapsed]=\"isCollapsed\">\n @for (item of menuItems; track item.title) {\n @if(item.children){\n <li nz-submenu [nzTitle]=\"item.title\" [nzIcon]=\"item.icon\">\n <ul nz-menu-group>\n @for (subitem of item.children; track subitem.title) {\n <li nz-menu-item [routerLink]=\"subitem.path\">{{subitem.title}}</li>\n }\n </ul>\n </li>\n } @else{\n <li nz-menu-item [routerLink]=\"item.path\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n <span>{{item.title}}</span>\n </li>\n }\n }\n </ul>\n </nz-sider>\n <nz-layout>\n <nz-header>\n <div class=\"app-header p-4 flex justify-between items-center\">\n <div>\n <button nz-button nzType=\"text\" (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"text-2xl\" nz-icon nzType=\"menu\"></span>\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"global\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"user\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"bell\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\" (click)=\"logout()\"><span nz-icon\n nzType=\"poweroff\"></span></button>\n </div>\n </div>\n </nz-header>\n <nz-content>\n <!-- <nz-tabset nzType=\"editable-card\">\n <nz-tab nzClosable nzTitle=\"\u062F\u0631\u062E\u062A \u0633\u0631\u0648\u06CC\u0633\">\n <div class=\"inner-content rounded-md overflow-auto\">\n <div #dynamicComponentContainer></div>\n </div>\n </nz-tab>\n </nz-tabset> -->\n <div class=\"inner-content rounded-md\">\n <router-outlet></router-outlet>\n </div>\n </nz-content>\n </nz-layout>\n</nz-layout>", styles: [":host{display:flex;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-layout{height:100vh}.menu-sidebar{position:relative;z-index:10;min-height:100vh;box-shadow:2px 0 6px #00152959}.header-trigger{height:64px;padding:20px 24px;font-size:20px;cursor:pointer;transition:all .3s,padding 0s}.trigger:hover{color:#1890ff}.sidebar-logo{position:relative;height:64px;padding-left:24px;overflow:hidden;line-height:64px;background:#001529;transition:all .3s}.sidebar-logo img{display:inline-block;height:32px;width:32px;vertical-align:middle}.sidebar-logo h1{display:inline-block;margin:0 0 0 20px;color:#fff;font-weight:600;font-size:14px;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;vertical-align:middle}nz-header{padding:0;width:100%;z-index:2}.app-header{position:relative;height:64px;padding:0;background:#fff;box-shadow:0 1px 4px #00152914}nz-content{margin:24px}.inner-content{padding:24px;background:#fff;height:100%}\n"] }]
|
|
1573
|
-
}], ctorParameters: () => [{ type: SharedService }, { type: ConfirmService }, { type: i0.ComponentFactoryResolver }], propDecorators: { container: [{
|
|
1574
|
-
type: ViewChild,
|
|
1575
|
-
args: ['dynamicComponentContainer', { read: ViewContainerRef }]
|
|
1576
|
-
}] } });
|
|
1577
|
-
|
|
1578
|
-
class BlankLayout {
|
|
1579
|
-
constructor() { }
|
|
1580
|
-
ngOnInit() { }
|
|
1581
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1582
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BlankLayout, selector: "ng-component", ngImport: i0, template: "<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>", dependencies: [{ kind: "directive", type: i1$6.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
|
|
1583
|
-
}
|
|
1584
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, decorators: [{
|
|
1585
|
-
type: Component,
|
|
1586
|
-
args: [{ template: "<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>" }]
|
|
1587
|
-
}], ctorParameters: () => [] });
|
|
1588
|
-
|
|
1589
1603
|
class CharInputDirective {
|
|
1590
1604
|
constructor(el, control, renderer) {
|
|
1591
1605
|
this.el = el;
|
|
@@ -1708,6 +1722,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1708
1722
|
type: Input
|
|
1709
1723
|
}] } });
|
|
1710
1724
|
|
|
1725
|
+
class AuthGuard {
|
|
1726
|
+
constructor(_router) {
|
|
1727
|
+
this._router = _router;
|
|
1728
|
+
}
|
|
1729
|
+
canActivate(route, state) {
|
|
1730
|
+
if (localStorage.getItem('userInfo')) {
|
|
1731
|
+
return true;
|
|
1732
|
+
}
|
|
1733
|
+
this._router.navigate(['/auth']);
|
|
1734
|
+
return false;
|
|
1735
|
+
}
|
|
1736
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, deps: [{ token: i1$6.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1737
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
|
|
1738
|
+
}
|
|
1739
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, decorators: [{
|
|
1740
|
+
type: Injectable,
|
|
1741
|
+
args: [{
|
|
1742
|
+
providedIn: 'root'
|
|
1743
|
+
}]
|
|
1744
|
+
}], ctorParameters: () => [{ type: i1$6.Router }] });
|
|
1745
|
+
|
|
1746
|
+
class MasterLayout {
|
|
1747
|
+
constructor(_service, _confirm, componentFactoryResolver) {
|
|
1748
|
+
this._service = _service;
|
|
1749
|
+
this._confirm = _confirm;
|
|
1750
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
1751
|
+
this.isCollapsed = false;
|
|
1752
|
+
this.menuItems = [];
|
|
1753
|
+
}
|
|
1754
|
+
logout() {
|
|
1755
|
+
this._confirm.confirm(() => {
|
|
1756
|
+
localStorage.clear();
|
|
1757
|
+
location.reload();
|
|
1758
|
+
return Promise.resolve();
|
|
1759
|
+
});
|
|
1760
|
+
}
|
|
1761
|
+
loadComponent(component) {
|
|
1762
|
+
this.container.clear();
|
|
1763
|
+
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
|
|
1764
|
+
this.container.createComponent(componentFactory);
|
|
1765
|
+
}
|
|
1766
|
+
ngAfterViewInit() {
|
|
1767
|
+
setTimeout(() => {
|
|
1768
|
+
// this.loadComponent(this._ac.);
|
|
1769
|
+
}, 500);
|
|
1770
|
+
}
|
|
1771
|
+
ngOnInit() {
|
|
1772
|
+
this.menuItems = this._service.menuItems;
|
|
1773
|
+
}
|
|
1774
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MasterLayout, deps: [{ token: SharedService }, { token: ConfirmService }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1775
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MasterLayout, selector: "ng-component", viewQueries: [{ propertyName: "container", first: true, predicate: ["dynamicComponentContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<nz-layout class=\"app-layout\">\n <nz-sider class=\"menu-sidebar bg-white\" nzCollapsible nzWidth=\"256px\" nzBreakpoint=\"md\"\n [(nzCollapsed)]=\"isCollapsed\" [nzTrigger]=\"null\">\n <div class=\"p-4\">\n <div class=\"flex justify-center items-center border-b !border-b-slate-200 pb-4\">\n <img width=\"100\" src=\"assets/images/logo.svg\" alt=\"\">\n </div>\n </div>\n <ul nz-menu nzMode=\"inline\" [nzInlineCollapsed]=\"isCollapsed\">\n @for (item of menuItems; track item.title) {\n @if(item.children){\n <li nz-submenu [nzTitle]=\"item.title\" [nzIcon]=\"item.icon\">\n <ul nz-menu-group>\n @for (subitem of item.children; track subitem.title) {\n <li nz-menu-item [routerLink]=\"subitem.path\">{{subitem.title}}</li>\n }\n </ul>\n </li>\n } @else{\n <li nz-menu-item [routerLink]=\"item.path\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n <span>{{item.title}}</span>\n </li>\n }\n }\n </ul>\n </nz-sider>\n <nz-layout>\n <nz-header>\n <div class=\"app-header p-4 flex justify-between items-center\">\n <div>\n <button nz-button nzType=\"text\" (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"text-2xl\" nz-icon nzType=\"menu\"></span>\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"global\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"user\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"bell\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\" (click)=\"logout()\"><span nz-icon\n nzType=\"poweroff\"></span></button>\n </div>\n </div>\n </nz-header>\n <nz-content>\n <!-- <nz-tabset nzType=\"editable-card\">\n <nz-tab nzClosable nzTitle=\"\u062F\u0631\u062E\u062A \u0633\u0631\u0648\u06CC\u0633\">\n <div class=\"inner-content rounded-md overflow-auto\">\n <div #dynamicComponentContainer></div>\n </div>\n </nz-tab>\n </nz-tabset> -->\n <div class=\"inner-content rounded-md\">\n <router-outlet></router-outlet>\n </div>\n </nz-content>\n </nz-layout>\n</nz-layout>", styles: [":host{display:flex;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-layout{height:100vh}.menu-sidebar{position:relative;z-index:10;min-height:100vh;box-shadow:2px 0 6px #00152959}.header-trigger{height:64px;padding:20px 24px;font-size:20px;cursor:pointer;transition:all .3s,padding 0s}.trigger:hover{color:#1890ff}.sidebar-logo{position:relative;height:64px;padding-left:24px;overflow:hidden;line-height:64px;background:#001529;transition:all .3s}.sidebar-logo img{display:inline-block;height:32px;width:32px;vertical-align:middle}.sidebar-logo h1{display:inline-block;margin:0 0 0 20px;color:#fff;font-weight:600;font-size:14px;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;vertical-align:middle}nz-header{padding:0;width:100%;z-index:2}.app-header{position:relative;height:64px;padding:0;background:#fff;box-shadow:0 1px 4px #00152914}nz-content{margin:24px}.inner-content{padding:24px;background:#fff;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$6.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1$6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4$1.NzLayoutComponent, selector: "nz-layout", exportAs: ["nzLayout"] }, { kind: "component", type: i4$1.NzHeaderComponent, selector: "nz-header", exportAs: ["nzHeader"] }, { kind: "component", type: i4$1.NzContentComponent, selector: "nz-content", exportAs: ["nzContent"] }, { kind: "component", type: i4$1.NzSiderComponent, selector: "nz-sider", inputs: ["nzWidth", "nzTheme", "nzCollapsedWidth", "nzBreakpoint", "nzZeroTrigger", "nzTrigger", "nzReverseArrow", "nzCollapsible", "nzCollapsed"], outputs: ["nzCollapsedChange"], exportAs: ["nzSider"] }, { kind: "directive", type: i5$1.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i5$1.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "component", type: i5$1.NzSubMenuComponent, selector: "[nz-submenu]", inputs: ["nzMenuClassName", "nzPaddingLeft", "nzTitle", "nzIcon", "nzOpen", "nzDisabled", "nzPlacement"], outputs: ["nzOpenChange"], exportAs: ["nzSubmenu"] }, { kind: "component", type: i5$1.NzMenuGroupComponent, selector: "[nz-menu-group]", inputs: ["nzTitle"], exportAs: ["nzMenuGroup"] }, { kind: "directive", type: i4.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i1$2.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i2$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }] }); }
|
|
1776
|
+
}
|
|
1777
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MasterLayout, decorators: [{
|
|
1778
|
+
type: Component,
|
|
1779
|
+
args: [{ template: "<nz-layout class=\"app-layout\">\n <nz-sider class=\"menu-sidebar bg-white\" nzCollapsible nzWidth=\"256px\" nzBreakpoint=\"md\"\n [(nzCollapsed)]=\"isCollapsed\" [nzTrigger]=\"null\">\n <div class=\"p-4\">\n <div class=\"flex justify-center items-center border-b !border-b-slate-200 pb-4\">\n <img width=\"100\" src=\"assets/images/logo.svg\" alt=\"\">\n </div>\n </div>\n <ul nz-menu nzMode=\"inline\" [nzInlineCollapsed]=\"isCollapsed\">\n @for (item of menuItems; track item.title) {\n @if(item.children){\n <li nz-submenu [nzTitle]=\"item.title\" [nzIcon]=\"item.icon\">\n <ul nz-menu-group>\n @for (subitem of item.children; track subitem.title) {\n <li nz-menu-item [routerLink]=\"subitem.path\">{{subitem.title}}</li>\n }\n </ul>\n </li>\n } @else{\n <li nz-menu-item [routerLink]=\"item.path\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n <span>{{item.title}}</span>\n </li>\n }\n }\n </ul>\n </nz-sider>\n <nz-layout>\n <nz-header>\n <div class=\"app-header p-4 flex justify-between items-center\">\n <div>\n <button nz-button nzType=\"text\" (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"text-2xl\" nz-icon nzType=\"menu\"></span>\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"global\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"user\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"bell\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\" (click)=\"logout()\"><span nz-icon\n nzType=\"poweroff\"></span></button>\n </div>\n </div>\n </nz-header>\n <nz-content>\n <!-- <nz-tabset nzType=\"editable-card\">\n <nz-tab nzClosable nzTitle=\"\u062F\u0631\u062E\u062A \u0633\u0631\u0648\u06CC\u0633\">\n <div class=\"inner-content rounded-md overflow-auto\">\n <div #dynamicComponentContainer></div>\n </div>\n </nz-tab>\n </nz-tabset> -->\n <div class=\"inner-content rounded-md\">\n <router-outlet></router-outlet>\n </div>\n </nz-content>\n </nz-layout>\n</nz-layout>", styles: [":host{display:flex;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-layout{height:100vh}.menu-sidebar{position:relative;z-index:10;min-height:100vh;box-shadow:2px 0 6px #00152959}.header-trigger{height:64px;padding:20px 24px;font-size:20px;cursor:pointer;transition:all .3s,padding 0s}.trigger:hover{color:#1890ff}.sidebar-logo{position:relative;height:64px;padding-left:24px;overflow:hidden;line-height:64px;background:#001529;transition:all .3s}.sidebar-logo img{display:inline-block;height:32px;width:32px;vertical-align:middle}.sidebar-logo h1{display:inline-block;margin:0 0 0 20px;color:#fff;font-weight:600;font-size:14px;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;vertical-align:middle}nz-header{padding:0;width:100%;z-index:2}.app-header{position:relative;height:64px;padding:0;background:#fff;box-shadow:0 1px 4px #00152914}nz-content{margin:24px}.inner-content{padding:24px;background:#fff;height:100%}\n"] }]
|
|
1780
|
+
}], ctorParameters: () => [{ type: SharedService }, { type: ConfirmService }, { type: i0.ComponentFactoryResolver }], propDecorators: { container: [{
|
|
1781
|
+
type: ViewChild,
|
|
1782
|
+
args: ['dynamicComponentContainer', { read: ViewContainerRef }]
|
|
1783
|
+
}] } });
|
|
1784
|
+
|
|
1785
|
+
class BlankLayout {
|
|
1786
|
+
constructor() { }
|
|
1787
|
+
ngOnInit() { }
|
|
1788
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1789
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BlankLayout, selector: "ng-component", ngImport: i0, template: "<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>", dependencies: [{ kind: "directive", type: i1$6.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
|
|
1790
|
+
}
|
|
1791
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, decorators: [{
|
|
1792
|
+
type: Component,
|
|
1793
|
+
args: [{ template: "<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>" }]
|
|
1794
|
+
}], ctorParameters: () => [] });
|
|
1795
|
+
|
|
1711
1796
|
function HttpLoaderFactory(http) {
|
|
1712
1797
|
return new TranslateHttpLoader(http, './assets/i18n/', '.json?v=' + Date.now());
|
|
1713
1798
|
}
|
|
@@ -1749,7 +1834,9 @@ const Components = [
|
|
|
1749
1834
|
UploadFileComponent,
|
|
1750
1835
|
DateFilter
|
|
1751
1836
|
];
|
|
1752
|
-
const Popover = [
|
|
1837
|
+
const Popover = [
|
|
1838
|
+
ImageCropperPopover
|
|
1839
|
+
];
|
|
1753
1840
|
const Directive = [
|
|
1754
1841
|
EnglishNumberInputDirective,
|
|
1755
1842
|
CharInputDirective,
|
|
@@ -1785,6 +1872,7 @@ const Modules = [
|
|
|
1785
1872
|
NzInputModule,
|
|
1786
1873
|
NzFormModule,
|
|
1787
1874
|
NzUploadModule,
|
|
1875
|
+
ImageCropperComponent,
|
|
1788
1876
|
TranslateModule.forRoot({
|
|
1789
1877
|
defaultLanguage: 'fa',
|
|
1790
1878
|
useDefaultLang: true,
|
|
@@ -1805,7 +1893,7 @@ class SharedModule {
|
|
|
1805
1893
|
SpinnerComponent,
|
|
1806
1894
|
UploaderComponent,
|
|
1807
1895
|
UploadFileComponent,
|
|
1808
|
-
DateFilter, EnglishNumberInputDirective,
|
|
1896
|
+
DateFilter, ImageCropperPopover, EnglishNumberInputDirective,
|
|
1809
1897
|
CharInputDirective,
|
|
1810
1898
|
MaskDirective,
|
|
1811
1899
|
ImageLoaderDirective, JDatePipe], imports: [RouterModule, HttpClientModule,
|
|
@@ -1826,7 +1914,8 @@ class SharedModule {
|
|
|
1826
1914
|
FormsModule,
|
|
1827
1915
|
NzInputModule,
|
|
1828
1916
|
NzFormModule,
|
|
1829
|
-
NzUploadModule,
|
|
1917
|
+
NzUploadModule,
|
|
1918
|
+
ImageCropperComponent, i1$4.TranslateModule], exports: [MasterLayout,
|
|
1830
1919
|
BlankLayout, GridComponent,
|
|
1831
1920
|
ActionsCellRenderer,
|
|
1832
1921
|
CaptchaComponent,
|
|
@@ -1834,7 +1923,7 @@ class SharedModule {
|
|
|
1834
1923
|
SpinnerComponent,
|
|
1835
1924
|
UploaderComponent,
|
|
1836
1925
|
UploadFileComponent,
|
|
1837
|
-
DateFilter, EnglishNumberInputDirective,
|
|
1926
|
+
DateFilter, ImageCropperPopover, EnglishNumberInputDirective,
|
|
1838
1927
|
CharInputDirective,
|
|
1839
1928
|
MaskDirective,
|
|
1840
1929
|
ImageLoaderDirective, JDatePipe] }); }
|
|
@@ -1876,33 +1965,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1876
1965
|
}]
|
|
1877
1966
|
}] });
|
|
1878
1967
|
|
|
1879
|
-
class PopoverComponent {
|
|
1880
|
-
constructor() {
|
|
1881
|
-
this.data = inject(NZ_MODAL_DATA, { optional: true });
|
|
1882
|
-
this.dialogRef = inject(NzModalRef, { optional: true });
|
|
1883
|
-
this.viewContainerRef = inject(ViewContainerRef);
|
|
1884
|
-
this.injector = inject(Injector);
|
|
1885
|
-
this.spinnerRef = null;
|
|
1886
|
-
}
|
|
1887
|
-
get loadingDialog() {
|
|
1888
|
-
return this.loadingDialog;
|
|
1889
|
-
}
|
|
1890
|
-
set loadingDialog(value) {
|
|
1891
|
-
if (value) {
|
|
1892
|
-
this.spinnerRef = this.viewContainerRef.createComponent(SpinnerComponent, {
|
|
1893
|
-
injector: this.injector,
|
|
1894
|
-
});
|
|
1895
|
-
}
|
|
1896
|
-
else {
|
|
1897
|
-
this.spinnerRef.destroy();
|
|
1898
|
-
this.spinnerRef = null;
|
|
1899
|
-
}
|
|
1900
|
-
}
|
|
1901
|
-
onClose(data) {
|
|
1902
|
-
this.dialogRef.close(data);
|
|
1903
|
-
}
|
|
1904
|
-
}
|
|
1905
|
-
|
|
1906
1968
|
class TimerPipe {
|
|
1907
1969
|
transform(value) {
|
|
1908
1970
|
const hours = Math.floor(value / 3600);
|
|
@@ -1939,5 +2001,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1939
2001
|
* Generated bundle index. Do not edit.
|
|
1940
2002
|
*/
|
|
1941
2003
|
|
|
1942
|
-
export { ActionsCellRenderer, AuthGuard, BlankLayout, CaptchaComponent, CharInputDirective, ConfirmService, DateFilter, DialogService, EnglishNumberInputDirective, FilterOperator, FormService, GridComponent, HttpLoaderFactory, ImageLoaderDirective, JDatePipe, MapComponent, MaskDirective, MasterLayout, PopoverComponent, SelectModel, SharedModule, SharedService, SpinnerComponent, TimerPipe, ToastService, UploadFileComponent, UploaderComponent, initializeApp };
|
|
2004
|
+
export { ActionsCellRenderer, AuthGuard, BlankLayout, CaptchaComponent, CharInputDirective, ConfirmService, DateFilter, DialogService, EnglishNumberInputDirective, FilterOperator, FormService, GridComponent, HttpLoaderFactory, ImageCropperPopover, ImageLoaderDirective, JDatePipe, MapComponent, MaskDirective, MasterLayout, PopoverComponent, SelectModel, SharedModule, SharedService, SpinnerComponent, TimerPipe, ToastService, UploadFileComponent, UploaderComponent, initializeApp };
|
|
1943
2005
|
//# sourceMappingURL=fixa-admin.mjs.map
|