fixa-admin 0.0.34 → 0.0.36

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