fixa-admin 0.0.33 → 0.0.35
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 +59 -28
- 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/shared.module.mjs +17 -11
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/fixa-admin.mjs +259 -193
- package/fesm2022/fixa-admin.mjs.map +1 -1
- package/lib/components/uploader/uploader.component.d.ts +7 -3
- package/lib/models/shared.model.d.ts +4 -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) {
|
|
@@ -228,59 +230,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
228
230
|
}]
|
|
229
231
|
}], ctorParameters: () => [{ type: i1.NzModalService }] });
|
|
230
232
|
|
|
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
233
|
const _formatToRegExp = {
|
|
285
234
|
'0': /[0-9]/, 'a': /[a-z]/, 'A': /[A-Z]/, 'B': /[a-zA-Z]/,
|
|
286
235
|
};
|
|
@@ -521,6 +470,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
521
470
|
args: ['eFilterText']
|
|
522
471
|
}] } });
|
|
523
472
|
|
|
473
|
+
var FilterOperator;
|
|
474
|
+
(function (FilterOperator) {
|
|
475
|
+
FilterOperator["equals"] = "EQ";
|
|
476
|
+
FilterOperator["notEqual"] = "NEQ";
|
|
477
|
+
FilterOperator["lessThan"] = "LT";
|
|
478
|
+
FilterOperator["lessThanOrEqual"] = "LTE";
|
|
479
|
+
FilterOperator["greaterThan"] = "GT";
|
|
480
|
+
FilterOperator["greaterThanOrEqual"] = "GTE";
|
|
481
|
+
FilterOperator["startsWith"] = "STARTSWITH";
|
|
482
|
+
FilterOperator["endsWith"] = "ENDSWITH";
|
|
483
|
+
FilterOperator["inRange"] = "IN";
|
|
484
|
+
FilterOperator["contains"] = "LIKE";
|
|
485
|
+
FilterOperator["notContains"] = "NOTLIKE";
|
|
486
|
+
FilterOperator["truncEqual"] = "TRUNC_EQ";
|
|
487
|
+
FilterOperator["truncNotEqual"] = "TRUNC_NEQ";
|
|
488
|
+
FilterOperator["truncGreaterThanEqual"] = "TRUNC_GTE";
|
|
489
|
+
FilterOperator["truncGreaterThan"] = "TRUNC_GT";
|
|
490
|
+
FilterOperator["truncLessThanOr"] = "TRUNC_LT";
|
|
491
|
+
FilterOperator["truncLessThanOrEqual"] = "TRUNC_LTE";
|
|
492
|
+
FilterOperator["between"] = "BETWEEN";
|
|
493
|
+
})(FilterOperator || (FilterOperator = {}));
|
|
494
|
+
class SelectModel {
|
|
495
|
+
constructor() {
|
|
496
|
+
this.items = [];
|
|
497
|
+
this.loading = false;
|
|
498
|
+
this.page = null;
|
|
499
|
+
this.pageSize = null;
|
|
500
|
+
this.totalCount = null;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
class JDatePipe {
|
|
505
|
+
transform(value, time = false, format = 'YYYY/MM/DD') {
|
|
506
|
+
if (value != null) {
|
|
507
|
+
if (!time) {
|
|
508
|
+
return moment.from(value, 'YYYY/MM/DD').locale('fa').format(format);
|
|
509
|
+
}
|
|
510
|
+
else {
|
|
511
|
+
return moment.from(value, 'YYYY/MM/DD').locale('fa').format('YYYY/MM/DD-HH:mm');
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
else {
|
|
515
|
+
return value;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
519
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: JDatePipe, name: "jdate" }); }
|
|
520
|
+
}
|
|
521
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JDatePipe, decorators: [{
|
|
522
|
+
type: Pipe,
|
|
523
|
+
args: [{ name: 'jdate' }]
|
|
524
|
+
}] });
|
|
525
|
+
|
|
524
526
|
class GridComponent {
|
|
525
527
|
constructor(_translate) {
|
|
526
528
|
this._translate = _translate;
|
|
@@ -1312,43 +1314,124 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1312
1314
|
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
1315
|
}], ctorParameters: () => [] });
|
|
1314
1316
|
|
|
1317
|
+
class PopoverComponent {
|
|
1318
|
+
constructor() {
|
|
1319
|
+
this.data = inject(NZ_MODAL_DATA, { optional: true });
|
|
1320
|
+
this.dialogRef = inject(NzModalRef, { optional: true });
|
|
1321
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
1322
|
+
this.injector = inject(Injector);
|
|
1323
|
+
this.spinnerRef = null;
|
|
1324
|
+
}
|
|
1325
|
+
get loadingDialog() {
|
|
1326
|
+
return this.loadingDialog;
|
|
1327
|
+
}
|
|
1328
|
+
set loadingDialog(value) {
|
|
1329
|
+
if (value) {
|
|
1330
|
+
this.spinnerRef = this.viewContainerRef.createComponent(SpinnerComponent, {
|
|
1331
|
+
injector: this.injector,
|
|
1332
|
+
});
|
|
1333
|
+
}
|
|
1334
|
+
else {
|
|
1335
|
+
this.spinnerRef.destroy();
|
|
1336
|
+
this.spinnerRef = null;
|
|
1337
|
+
}
|
|
1338
|
+
}
|
|
1339
|
+
onClose(data) {
|
|
1340
|
+
this.dialogRef.close(data);
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1344
|
+
class ImageCropperPopover extends PopoverComponent {
|
|
1345
|
+
constructor(_toast) {
|
|
1346
|
+
super();
|
|
1347
|
+
this._toast = _toast;
|
|
1348
|
+
this.croppedImage = null;
|
|
1349
|
+
}
|
|
1350
|
+
imageCropped(event) {
|
|
1351
|
+
this.croppedImage = new File([event.blob], this.data.file.name, { type: event.blob.type });
|
|
1352
|
+
}
|
|
1353
|
+
loadImageFailed() {
|
|
1354
|
+
this._toast.show('خطا در لود تصویر', 'error');
|
|
1355
|
+
}
|
|
1356
|
+
onOk() {
|
|
1357
|
+
return Promise.resolve({
|
|
1358
|
+
file: this.croppedImage
|
|
1359
|
+
});
|
|
1360
|
+
}
|
|
1361
|
+
onCancel() {
|
|
1362
|
+
return Promise.resolve();
|
|
1363
|
+
}
|
|
1364
|
+
ngOnInit() {
|
|
1365
|
+
}
|
|
1366
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageCropperPopover, deps: [{ token: ToastService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1367
|
+
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"] }] }); }
|
|
1368
|
+
}
|
|
1369
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageCropperPopover, decorators: [{
|
|
1370
|
+
type: Component,
|
|
1371
|
+
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>" }]
|
|
1372
|
+
}], ctorParameters: () => [{ type: ToastService }] });
|
|
1373
|
+
|
|
1315
1374
|
class UploaderComponent {
|
|
1316
|
-
constructor(environment, _toast, _http, _sharedService) {
|
|
1375
|
+
constructor(environment, _toast, _http, _sharedService, _dialog) {
|
|
1317
1376
|
this._toast = _toast;
|
|
1318
1377
|
this._http = _http;
|
|
1319
1378
|
this._sharedService = _sharedService;
|
|
1379
|
+
this._dialog = _dialog;
|
|
1320
1380
|
this.loading = false;
|
|
1321
1381
|
this.env = null;
|
|
1322
1382
|
this._avatarUid = null;
|
|
1383
|
+
this.maxWithSize = 1024;
|
|
1384
|
+
this.cropper = false;
|
|
1385
|
+
this.aspectRatio = 1 / 1;
|
|
1323
1386
|
this.onUploaded = new EventEmitter();
|
|
1324
1387
|
this.customRequest = (item) => {
|
|
1325
1388
|
// return Subscription
|
|
1326
1389
|
const subscription = new Subscription();
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1390
|
+
const uploadFile = (file) => {
|
|
1391
|
+
this.loading = true;
|
|
1392
|
+
this.resizeImage(file).then((res) => {
|
|
1393
|
+
const isLt1M = res.size / 1024 / 1024 < 1;
|
|
1394
|
+
if (!isLt1M) {
|
|
1395
|
+
this._toast.show('Image must smaller than 1MB!', 'error');
|
|
1396
|
+
subscription.unsubscribe();
|
|
1397
|
+
this.loading = false;
|
|
1398
|
+
return;
|
|
1399
|
+
}
|
|
1400
|
+
const formData = new FormData();
|
|
1401
|
+
formData.append('file', res);
|
|
1402
|
+
const req = new HttpRequest('POST', `${this.env.apiUrl}/file`, formData, {
|
|
1403
|
+
reportProgress: true,
|
|
1404
|
+
responseType: 'text',
|
|
1405
|
+
});
|
|
1406
|
+
subscription.add(this._http.request(req).subscribe((event) => {
|
|
1407
|
+
if (event instanceof HttpResponse) {
|
|
1408
|
+
item.onSuccess(event.body, file, event);
|
|
1409
|
+
}
|
|
1410
|
+
}, (err) => {
|
|
1411
|
+
item.onError(err, file);
|
|
1412
|
+
}));
|
|
1413
|
+
}).catch(() => {
|
|
1333
1414
|
this.loading = false;
|
|
1334
|
-
return;
|
|
1335
|
-
}
|
|
1336
|
-
const formData = new FormData();
|
|
1337
|
-
formData.append('file', res);
|
|
1338
|
-
const req = new HttpRequest('POST', `${this.env.apiUrl}/file`, formData, {
|
|
1339
|
-
reportProgress: true,
|
|
1340
|
-
responseType: 'text',
|
|
1341
1415
|
});
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1416
|
+
};
|
|
1417
|
+
if (this.cropper) {
|
|
1418
|
+
debugger;
|
|
1419
|
+
this._dialog.open(ImageCropperPopover, {
|
|
1420
|
+
title: 'برش تصویر',
|
|
1421
|
+
data: {
|
|
1422
|
+
file: item.file,
|
|
1423
|
+
aspectRatio: this.aspectRatio
|
|
1345
1424
|
}
|
|
1346
|
-
}
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1425
|
+
}).afterClose.subscribe((res) => {
|
|
1426
|
+
debugger;
|
|
1427
|
+
if (res.file) {
|
|
1428
|
+
uploadFile(res.file);
|
|
1429
|
+
}
|
|
1430
|
+
});
|
|
1431
|
+
}
|
|
1432
|
+
else {
|
|
1433
|
+
uploadFile(item.file);
|
|
1434
|
+
}
|
|
1352
1435
|
return subscription;
|
|
1353
1436
|
};
|
|
1354
1437
|
this.beforeUpload = (file, _fileList) => new Observable((observer) => {
|
|
@@ -1403,7 +1486,7 @@ class UploaderComponent {
|
|
|
1403
1486
|
return new Promise((resolve, reject) => {
|
|
1404
1487
|
new Compressor(base64Str, {
|
|
1405
1488
|
quality: 0.8,
|
|
1406
|
-
maxWidth:
|
|
1489
|
+
maxWidth: this.maxWithSize,
|
|
1407
1490
|
success(result) {
|
|
1408
1491
|
resolve(result);
|
|
1409
1492
|
},
|
|
@@ -1414,8 +1497,8 @@ class UploaderComponent {
|
|
|
1414
1497
|
});
|
|
1415
1498
|
}
|
|
1416
1499
|
ngOnInit() { }
|
|
1417
|
-
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 }); }
|
|
1418
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: UploaderComponent, selector: "app-uploader", inputs: { 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"] }] }); }
|
|
1500
|
+
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 }); }
|
|
1501
|
+
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"] }] }); }
|
|
1419
1502
|
}
|
|
1420
1503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UploaderComponent, decorators: [{
|
|
1421
1504
|
type: Component,
|
|
@@ -1423,7 +1506,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1423
1506
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
1424
1507
|
type: Inject,
|
|
1425
1508
|
args: ['environment']
|
|
1426
|
-
}] }, { type: ToastService }, { type: i2.HttpClient }, { type: SharedService }], propDecorators: {
|
|
1509
|
+
}] }, { type: ToastService }, { type: i2.HttpClient }, { type: SharedService }, { type: DialogService }], propDecorators: { maxWithSize: [{
|
|
1510
|
+
type: Input
|
|
1511
|
+
}], cropper: [{
|
|
1512
|
+
type: Input
|
|
1513
|
+
}], aspectRatio: [{
|
|
1514
|
+
type: Input
|
|
1515
|
+
}], avatar: [{
|
|
1427
1516
|
type: Input
|
|
1428
1517
|
}], onUploaded: [{
|
|
1429
1518
|
type: Output
|
|
@@ -1512,77 +1601,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1512
1601
|
type: Output
|
|
1513
1602
|
}] } });
|
|
1514
1603
|
|
|
1515
|
-
class AuthGuard {
|
|
1516
|
-
constructor(_router) {
|
|
1517
|
-
this._router = _router;
|
|
1518
|
-
}
|
|
1519
|
-
canActivate(route, state) {
|
|
1520
|
-
if (localStorage.getItem('userInfo')) {
|
|
1521
|
-
return true;
|
|
1522
|
-
}
|
|
1523
|
-
this._router.navigate(['/auth']);
|
|
1524
|
-
return false;
|
|
1525
|
-
}
|
|
1526
|
-
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 }); }
|
|
1527
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
|
|
1528
|
-
}
|
|
1529
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, decorators: [{
|
|
1530
|
-
type: Injectable,
|
|
1531
|
-
args: [{
|
|
1532
|
-
providedIn: 'root'
|
|
1533
|
-
}]
|
|
1534
|
-
}], ctorParameters: () => [{ type: i1$6.Router }] });
|
|
1535
|
-
|
|
1536
|
-
class MasterLayout {
|
|
1537
|
-
constructor(_service, _confirm, componentFactoryResolver) {
|
|
1538
|
-
this._service = _service;
|
|
1539
|
-
this._confirm = _confirm;
|
|
1540
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
|
1541
|
-
this.isCollapsed = false;
|
|
1542
|
-
this.menuItems = [];
|
|
1543
|
-
}
|
|
1544
|
-
logout() {
|
|
1545
|
-
this._confirm.confirm(() => {
|
|
1546
|
-
localStorage.clear();
|
|
1547
|
-
location.reload();
|
|
1548
|
-
return Promise.resolve();
|
|
1549
|
-
});
|
|
1550
|
-
}
|
|
1551
|
-
loadComponent(component) {
|
|
1552
|
-
this.container.clear();
|
|
1553
|
-
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
|
|
1554
|
-
this.container.createComponent(componentFactory);
|
|
1555
|
-
}
|
|
1556
|
-
ngAfterViewInit() {
|
|
1557
|
-
setTimeout(() => {
|
|
1558
|
-
// this.loadComponent(this._ac.);
|
|
1559
|
-
}, 500);
|
|
1560
|
-
}
|
|
1561
|
-
ngOnInit() {
|
|
1562
|
-
this.menuItems = this._service.menuItems;
|
|
1563
|
-
}
|
|
1564
|
-
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 }); }
|
|
1565
|
-
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"] }] }); }
|
|
1566
|
-
}
|
|
1567
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MasterLayout, decorators: [{
|
|
1568
|
-
type: Component,
|
|
1569
|
-
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"] }]
|
|
1570
|
-
}], ctorParameters: () => [{ type: SharedService }, { type: ConfirmService }, { type: i0.ComponentFactoryResolver }], propDecorators: { container: [{
|
|
1571
|
-
type: ViewChild,
|
|
1572
|
-
args: ['dynamicComponentContainer', { read: ViewContainerRef }]
|
|
1573
|
-
}] } });
|
|
1574
|
-
|
|
1575
|
-
class BlankLayout {
|
|
1576
|
-
constructor() { }
|
|
1577
|
-
ngOnInit() { }
|
|
1578
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1579
|
-
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"] }] }); }
|
|
1580
|
-
}
|
|
1581
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, decorators: [{
|
|
1582
|
-
type: Component,
|
|
1583
|
-
args: [{ template: "<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>" }]
|
|
1584
|
-
}], ctorParameters: () => [] });
|
|
1585
|
-
|
|
1586
1604
|
class CharInputDirective {
|
|
1587
1605
|
constructor(el, control, renderer) {
|
|
1588
1606
|
this.el = el;
|
|
@@ -1705,6 +1723,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1705
1723
|
type: Input
|
|
1706
1724
|
}] } });
|
|
1707
1725
|
|
|
1726
|
+
class AuthGuard {
|
|
1727
|
+
constructor(_router) {
|
|
1728
|
+
this._router = _router;
|
|
1729
|
+
}
|
|
1730
|
+
canActivate(route, state) {
|
|
1731
|
+
if (localStorage.getItem('userInfo')) {
|
|
1732
|
+
return true;
|
|
1733
|
+
}
|
|
1734
|
+
this._router.navigate(['/auth']);
|
|
1735
|
+
return false;
|
|
1736
|
+
}
|
|
1737
|
+
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 }); }
|
|
1738
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
|
|
1739
|
+
}
|
|
1740
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, decorators: [{
|
|
1741
|
+
type: Injectable,
|
|
1742
|
+
args: [{
|
|
1743
|
+
providedIn: 'root'
|
|
1744
|
+
}]
|
|
1745
|
+
}], ctorParameters: () => [{ type: i1$6.Router }] });
|
|
1746
|
+
|
|
1747
|
+
class MasterLayout {
|
|
1748
|
+
constructor(_service, _confirm, componentFactoryResolver) {
|
|
1749
|
+
this._service = _service;
|
|
1750
|
+
this._confirm = _confirm;
|
|
1751
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
1752
|
+
this.isCollapsed = false;
|
|
1753
|
+
this.menuItems = [];
|
|
1754
|
+
}
|
|
1755
|
+
logout() {
|
|
1756
|
+
this._confirm.confirm(() => {
|
|
1757
|
+
localStorage.clear();
|
|
1758
|
+
location.reload();
|
|
1759
|
+
return Promise.resolve();
|
|
1760
|
+
});
|
|
1761
|
+
}
|
|
1762
|
+
loadComponent(component) {
|
|
1763
|
+
this.container.clear();
|
|
1764
|
+
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
|
|
1765
|
+
this.container.createComponent(componentFactory);
|
|
1766
|
+
}
|
|
1767
|
+
ngAfterViewInit() {
|
|
1768
|
+
setTimeout(() => {
|
|
1769
|
+
// this.loadComponent(this._ac.);
|
|
1770
|
+
}, 500);
|
|
1771
|
+
}
|
|
1772
|
+
ngOnInit() {
|
|
1773
|
+
this.menuItems = this._service.menuItems;
|
|
1774
|
+
}
|
|
1775
|
+
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 }); }
|
|
1776
|
+
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"] }] }); }
|
|
1777
|
+
}
|
|
1778
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MasterLayout, decorators: [{
|
|
1779
|
+
type: Component,
|
|
1780
|
+
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"] }]
|
|
1781
|
+
}], ctorParameters: () => [{ type: SharedService }, { type: ConfirmService }, { type: i0.ComponentFactoryResolver }], propDecorators: { container: [{
|
|
1782
|
+
type: ViewChild,
|
|
1783
|
+
args: ['dynamicComponentContainer', { read: ViewContainerRef }]
|
|
1784
|
+
}] } });
|
|
1785
|
+
|
|
1786
|
+
class BlankLayout {
|
|
1787
|
+
constructor() { }
|
|
1788
|
+
ngOnInit() { }
|
|
1789
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1790
|
+
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"] }] }); }
|
|
1791
|
+
}
|
|
1792
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, decorators: [{
|
|
1793
|
+
type: Component,
|
|
1794
|
+
args: [{ template: "<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>" }]
|
|
1795
|
+
}], ctorParameters: () => [] });
|
|
1796
|
+
|
|
1708
1797
|
function HttpLoaderFactory(http) {
|
|
1709
1798
|
return new TranslateHttpLoader(http, './assets/i18n/', '.json?v=' + Date.now());
|
|
1710
1799
|
}
|
|
@@ -1746,7 +1835,9 @@ const Components = [
|
|
|
1746
1835
|
UploadFileComponent,
|
|
1747
1836
|
DateFilter
|
|
1748
1837
|
];
|
|
1749
|
-
const Popover = [
|
|
1838
|
+
const Popover = [
|
|
1839
|
+
ImageCropperPopover
|
|
1840
|
+
];
|
|
1750
1841
|
const Directive = [
|
|
1751
1842
|
EnglishNumberInputDirective,
|
|
1752
1843
|
CharInputDirective,
|
|
@@ -1782,6 +1873,7 @@ const Modules = [
|
|
|
1782
1873
|
NzInputModule,
|
|
1783
1874
|
NzFormModule,
|
|
1784
1875
|
NzUploadModule,
|
|
1876
|
+
ImageCropperComponent,
|
|
1785
1877
|
TranslateModule.forRoot({
|
|
1786
1878
|
defaultLanguage: 'fa',
|
|
1787
1879
|
useDefaultLang: true,
|
|
@@ -1802,7 +1894,7 @@ class SharedModule {
|
|
|
1802
1894
|
SpinnerComponent,
|
|
1803
1895
|
UploaderComponent,
|
|
1804
1896
|
UploadFileComponent,
|
|
1805
|
-
DateFilter, EnglishNumberInputDirective,
|
|
1897
|
+
DateFilter, ImageCropperPopover, EnglishNumberInputDirective,
|
|
1806
1898
|
CharInputDirective,
|
|
1807
1899
|
MaskDirective,
|
|
1808
1900
|
ImageLoaderDirective, JDatePipe], imports: [RouterModule, HttpClientModule,
|
|
@@ -1823,7 +1915,8 @@ class SharedModule {
|
|
|
1823
1915
|
FormsModule,
|
|
1824
1916
|
NzInputModule,
|
|
1825
1917
|
NzFormModule,
|
|
1826
|
-
NzUploadModule,
|
|
1918
|
+
NzUploadModule,
|
|
1919
|
+
ImageCropperComponent, i1$4.TranslateModule], exports: [MasterLayout,
|
|
1827
1920
|
BlankLayout, GridComponent,
|
|
1828
1921
|
ActionsCellRenderer,
|
|
1829
1922
|
CaptchaComponent,
|
|
@@ -1831,7 +1924,7 @@ class SharedModule {
|
|
|
1831
1924
|
SpinnerComponent,
|
|
1832
1925
|
UploaderComponent,
|
|
1833
1926
|
UploadFileComponent,
|
|
1834
|
-
DateFilter, EnglishNumberInputDirective,
|
|
1927
|
+
DateFilter, ImageCropperPopover, EnglishNumberInputDirective,
|
|
1835
1928
|
CharInputDirective,
|
|
1836
1929
|
MaskDirective,
|
|
1837
1930
|
ImageLoaderDirective, JDatePipe] }); }
|
|
@@ -1873,33 +1966,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1873
1966
|
}]
|
|
1874
1967
|
}] });
|
|
1875
1968
|
|
|
1876
|
-
class PopoverComponent {
|
|
1877
|
-
constructor() {
|
|
1878
|
-
this.data = inject(NZ_MODAL_DATA, { optional: true });
|
|
1879
|
-
this.dialogRef = inject(NzModalRef, { optional: true });
|
|
1880
|
-
this.viewContainerRef = inject(ViewContainerRef);
|
|
1881
|
-
this.injector = inject(Injector);
|
|
1882
|
-
this.spinnerRef = null;
|
|
1883
|
-
}
|
|
1884
|
-
get loadingDialog() {
|
|
1885
|
-
return this.loadingDialog;
|
|
1886
|
-
}
|
|
1887
|
-
set loadingDialog(value) {
|
|
1888
|
-
if (value) {
|
|
1889
|
-
this.spinnerRef = this.viewContainerRef.createComponent(SpinnerComponent, {
|
|
1890
|
-
injector: this.injector,
|
|
1891
|
-
});
|
|
1892
|
-
}
|
|
1893
|
-
else {
|
|
1894
|
-
this.spinnerRef.destroy();
|
|
1895
|
-
this.spinnerRef = null;
|
|
1896
|
-
}
|
|
1897
|
-
}
|
|
1898
|
-
onClose(data) {
|
|
1899
|
-
this.dialogRef.close(data);
|
|
1900
|
-
}
|
|
1901
|
-
}
|
|
1902
|
-
|
|
1903
1969
|
class TimerPipe {
|
|
1904
1970
|
transform(value) {
|
|
1905
1971
|
const hours = Math.floor(value / 3600);
|
|
@@ -1936,5 +2002,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1936
2002
|
* Generated bundle index. Do not edit.
|
|
1937
2003
|
*/
|
|
1938
2004
|
|
|
1939
|
-
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 };
|
|
2005
|
+
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 };
|
|
1940
2006
|
//# sourceMappingURL=fixa-admin.mjs.map
|