fixa-admin 0.0.34 → 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 +55 -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/shared.module.mjs +17 -11
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/fixa-admin.mjs +255 -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 +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,44 +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;
|
|
1323
1383
|
this.maxWithSize = 1024;
|
|
1384
|
+
this.cropper = false;
|
|
1385
|
+
this.aspectRatio = 1 / 1;
|
|
1324
1386
|
this.onUploaded = new EventEmitter();
|
|
1325
1387
|
this.customRequest = (item) => {
|
|
1326
1388
|
// return Subscription
|
|
1327
1389
|
const subscription = new Subscription();
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
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(() => {
|
|
1334
1414
|
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
1415
|
});
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1416
|
+
};
|
|
1417
|
+
if (this.cropper) {
|
|
1418
|
+
debugger;
|
|
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
|
+
debugger;
|
|
1427
|
+
if (res.file) {
|
|
1428
|
+
uploadFile(res.file);
|
|
1429
|
+
}
|
|
1430
|
+
});
|
|
1431
|
+
}
|
|
1432
|
+
else {
|
|
1433
|
+
uploadFile(item.file);
|
|
1434
|
+
}
|
|
1353
1435
|
return subscription;
|
|
1354
1436
|
};
|
|
1355
1437
|
this.beforeUpload = (file, _fileList) => new Observable((observer) => {
|
|
@@ -1415,8 +1497,8 @@ class UploaderComponent {
|
|
|
1415
1497
|
});
|
|
1416
1498
|
}
|
|
1417
1499
|
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"] }] }); }
|
|
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"] }] }); }
|
|
1420
1502
|
}
|
|
1421
1503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UploaderComponent, decorators: [{
|
|
1422
1504
|
type: Component,
|
|
@@ -1424,7 +1506,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1424
1506
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
1425
1507
|
type: Inject,
|
|
1426
1508
|
args: ['environment']
|
|
1427
|
-
}] }, { type: ToastService }, { type: i2.HttpClient }, { type: SharedService }], propDecorators: { maxWithSize: [{
|
|
1509
|
+
}] }, { type: ToastService }, { type: i2.HttpClient }, { type: SharedService }, { type: DialogService }], propDecorators: { maxWithSize: [{
|
|
1510
|
+
type: Input
|
|
1511
|
+
}], cropper: [{
|
|
1512
|
+
type: Input
|
|
1513
|
+
}], aspectRatio: [{
|
|
1428
1514
|
type: Input
|
|
1429
1515
|
}], avatar: [{
|
|
1430
1516
|
type: Input
|
|
@@ -1515,77 +1601,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1515
1601
|
type: Output
|
|
1516
1602
|
}] } });
|
|
1517
1603
|
|
|
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
1604
|
class CharInputDirective {
|
|
1590
1605
|
constructor(el, control, renderer) {
|
|
1591
1606
|
this.el = el;
|
|
@@ -1708,6 +1723,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1708
1723
|
type: Input
|
|
1709
1724
|
}] } });
|
|
1710
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
|
+
|
|
1711
1797
|
function HttpLoaderFactory(http) {
|
|
1712
1798
|
return new TranslateHttpLoader(http, './assets/i18n/', '.json?v=' + Date.now());
|
|
1713
1799
|
}
|
|
@@ -1749,7 +1835,9 @@ const Components = [
|
|
|
1749
1835
|
UploadFileComponent,
|
|
1750
1836
|
DateFilter
|
|
1751
1837
|
];
|
|
1752
|
-
const Popover = [
|
|
1838
|
+
const Popover = [
|
|
1839
|
+
ImageCropperPopover
|
|
1840
|
+
];
|
|
1753
1841
|
const Directive = [
|
|
1754
1842
|
EnglishNumberInputDirective,
|
|
1755
1843
|
CharInputDirective,
|
|
@@ -1785,6 +1873,7 @@ const Modules = [
|
|
|
1785
1873
|
NzInputModule,
|
|
1786
1874
|
NzFormModule,
|
|
1787
1875
|
NzUploadModule,
|
|
1876
|
+
ImageCropperComponent,
|
|
1788
1877
|
TranslateModule.forRoot({
|
|
1789
1878
|
defaultLanguage: 'fa',
|
|
1790
1879
|
useDefaultLang: true,
|
|
@@ -1805,7 +1894,7 @@ class SharedModule {
|
|
|
1805
1894
|
SpinnerComponent,
|
|
1806
1895
|
UploaderComponent,
|
|
1807
1896
|
UploadFileComponent,
|
|
1808
|
-
DateFilter, EnglishNumberInputDirective,
|
|
1897
|
+
DateFilter, ImageCropperPopover, EnglishNumberInputDirective,
|
|
1809
1898
|
CharInputDirective,
|
|
1810
1899
|
MaskDirective,
|
|
1811
1900
|
ImageLoaderDirective, JDatePipe], imports: [RouterModule, HttpClientModule,
|
|
@@ -1826,7 +1915,8 @@ class SharedModule {
|
|
|
1826
1915
|
FormsModule,
|
|
1827
1916
|
NzInputModule,
|
|
1828
1917
|
NzFormModule,
|
|
1829
|
-
NzUploadModule,
|
|
1918
|
+
NzUploadModule,
|
|
1919
|
+
ImageCropperComponent, i1$4.TranslateModule], exports: [MasterLayout,
|
|
1830
1920
|
BlankLayout, GridComponent,
|
|
1831
1921
|
ActionsCellRenderer,
|
|
1832
1922
|
CaptchaComponent,
|
|
@@ -1834,7 +1924,7 @@ class SharedModule {
|
|
|
1834
1924
|
SpinnerComponent,
|
|
1835
1925
|
UploaderComponent,
|
|
1836
1926
|
UploadFileComponent,
|
|
1837
|
-
DateFilter, EnglishNumberInputDirective,
|
|
1927
|
+
DateFilter, ImageCropperPopover, EnglishNumberInputDirective,
|
|
1838
1928
|
CharInputDirective,
|
|
1839
1929
|
MaskDirective,
|
|
1840
1930
|
ImageLoaderDirective, JDatePipe] }); }
|
|
@@ -1876,33 +1966,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1876
1966
|
}]
|
|
1877
1967
|
}] });
|
|
1878
1968
|
|
|
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
1969
|
class TimerPipe {
|
|
1907
1970
|
transform(value) {
|
|
1908
1971
|
const hours = Math.floor(value / 3600);
|
|
@@ -1939,5 +2002,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1939
2002
|
* Generated bundle index. Do not edit.
|
|
1940
2003
|
*/
|
|
1941
2004
|
|
|
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 };
|
|
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 };
|
|
1943
2006
|
//# sourceMappingURL=fixa-admin.mjs.map
|