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.
@@ -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) {
@@ -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
- 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();
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
- subscription.add(this._http.request(req).subscribe((event) => {
1344
- if (event instanceof HttpResponse) {
1345
- item.onSuccess(event.body, item.file, event);
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
- }, (err) => {
1348
- item.onError(err, item.file);
1349
- }));
1350
- }).catch(() => {
1351
- this.loading = false;
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, i1$4.TranslateModule], exports: [MasterLayout,
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