fixa-admin 0.0.33 → 0.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,43 +1314,124 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1312
1314
  args: [{ selector: 'app-spinner', template: "<div class=\"w-full h-full absolute top-0 left-0 flex justify-center items-center bg-white z-10\">\n <nz-spin nzSimple nzSize=\"large\" nzSimple></nz-spin>\n</div>" }]
1313
1315
  }], ctorParameters: () => [] });
1314
1316
 
1317
+ class PopoverComponent {
1318
+ constructor() {
1319
+ this.data = inject(NZ_MODAL_DATA, { optional: true });
1320
+ this.dialogRef = inject(NzModalRef, { optional: true });
1321
+ this.viewContainerRef = inject(ViewContainerRef);
1322
+ this.injector = inject(Injector);
1323
+ this.spinnerRef = null;
1324
+ }
1325
+ get loadingDialog() {
1326
+ return this.loadingDialog;
1327
+ }
1328
+ set loadingDialog(value) {
1329
+ if (value) {
1330
+ this.spinnerRef = this.viewContainerRef.createComponent(SpinnerComponent, {
1331
+ injector: this.injector,
1332
+ });
1333
+ }
1334
+ else {
1335
+ this.spinnerRef.destroy();
1336
+ this.spinnerRef = null;
1337
+ }
1338
+ }
1339
+ onClose(data) {
1340
+ this.dialogRef.close(data);
1341
+ }
1342
+ }
1343
+
1344
+ class ImageCropperPopover extends PopoverComponent {
1345
+ constructor(_toast) {
1346
+ super();
1347
+ this._toast = _toast;
1348
+ this.croppedImage = null;
1349
+ }
1350
+ imageCropped(event) {
1351
+ this.croppedImage = new File([event.blob], this.data.file.name, { type: event.blob.type });
1352
+ }
1353
+ loadImageFailed() {
1354
+ this._toast.show('خطا در لود تصویر', 'error');
1355
+ }
1356
+ onOk() {
1357
+ return Promise.resolve({
1358
+ file: this.croppedImage
1359
+ });
1360
+ }
1361
+ onCancel() {
1362
+ return Promise.resolve();
1363
+ }
1364
+ ngOnInit() {
1365
+ }
1366
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageCropperPopover, deps: [{ token: ToastService }], target: i0.ɵɵFactoryTarget.Component }); }
1367
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImageCropperPopover, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<image-cropper\n [imageFile]=\"data.file\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"data.aspectRatio\"\n format=\"png\"\n (imageCropped)=\"imageCropped($event)\"\n (loadImageFailed)=\"loadImageFailed()\"\n class=\"max-h-[400px]\"\n></image-cropper>", dependencies: [{ kind: "component", type: i2$4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "options", "cropperFrameAriaLabel", "output", "format", "autoCrop", "cropper", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "checkImageType", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange", "cropperChange"] }] }); }
1368
+ }
1369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageCropperPopover, decorators: [{
1370
+ type: Component,
1371
+ args: [{ template: "<image-cropper\n [imageFile]=\"data.file\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"data.aspectRatio\"\n format=\"png\"\n (imageCropped)=\"imageCropped($event)\"\n (loadImageFailed)=\"loadImageFailed()\"\n class=\"max-h-[400px]\"\n></image-cropper>" }]
1372
+ }], ctorParameters: () => [{ type: ToastService }] });
1373
+
1315
1374
  class UploaderComponent {
1316
- constructor(environment, _toast, _http, _sharedService) {
1375
+ constructor(environment, _toast, _http, _sharedService, _dialog) {
1317
1376
  this._toast = _toast;
1318
1377
  this._http = _http;
1319
1378
  this._sharedService = _sharedService;
1379
+ this._dialog = _dialog;
1320
1380
  this.loading = false;
1321
1381
  this.env = null;
1322
1382
  this._avatarUid = null;
1383
+ this.maxWithSize = 1024;
1384
+ this.cropper = false;
1385
+ this.aspectRatio = 1 / 1;
1323
1386
  this.onUploaded = new EventEmitter();
1324
1387
  this.customRequest = (item) => {
1325
1388
  // return Subscription
1326
1389
  const subscription = new Subscription();
1327
- this.loading = true;
1328
- this.resizeImage(item.file).then((res) => {
1329
- const isLt1M = res.size / 1024 / 1024 < 1;
1330
- if (!isLt1M) {
1331
- this._toast.show('Image must smaller than 1MB!', 'error');
1332
- 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(() => {
1333
1414
  this.loading = false;
1334
- return;
1335
- }
1336
- const formData = new FormData();
1337
- formData.append('file', res);
1338
- const req = new HttpRequest('POST', `${this.env.apiUrl}/file`, formData, {
1339
- reportProgress: true,
1340
- responseType: 'text',
1341
1415
  });
1342
- subscription.add(this._http.request(req).subscribe((event) => {
1343
- if (event instanceof HttpResponse) {
1344
- 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
1345
1424
  }
1346
- }, (err) => {
1347
- item.onError(err, item.file);
1348
- }));
1349
- }).catch(() => {
1350
- this.loading = false;
1351
- });
1425
+ }).afterClose.subscribe((res) => {
1426
+ debugger;
1427
+ if (res.file) {
1428
+ uploadFile(res.file);
1429
+ }
1430
+ });
1431
+ }
1432
+ else {
1433
+ uploadFile(item.file);
1434
+ }
1352
1435
  return subscription;
1353
1436
  };
1354
1437
  this.beforeUpload = (file, _fileList) => new Observable((observer) => {
@@ -1403,7 +1486,7 @@ class UploaderComponent {
1403
1486
  return new Promise((resolve, reject) => {
1404
1487
  new Compressor(base64Str, {
1405
1488
  quality: 0.8,
1406
- maxWidth: 1024,
1489
+ maxWidth: this.maxWithSize,
1407
1490
  success(result) {
1408
1491
  resolve(result);
1409
1492
  },
@@ -1414,8 +1497,8 @@ class UploaderComponent {
1414
1497
  });
1415
1498
  }
1416
1499
  ngOnInit() { }
1417
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UploaderComponent, deps: [{ token: 'environment' }, { token: ToastService }, { token: i2.HttpClient }, { token: SharedService }], target: i0.ɵɵFactoryTarget.Component }); }
1418
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: UploaderComponent, selector: "app-uploader", inputs: { avatar: "avatar" }, outputs: { onUploaded: "onUploaded" }, ngImport: i0, template: "<nz-upload class=\"w-[128px] h-[128px] overflow-hidden\" nzAction=\"{{env.apiUrl}}/file\" nzName=\"file\"\n nzListType=\"picture-card\" [nzShowUploadList]=\"false\" [nzBeforeUpload]=\"beforeUpload\"\n (nzChange)=\"handleChange($event)\" [nzCustomRequest]=\"customRequest\">\n @if (!avatarUrl) {\n <span class=\"upload-icon\" nz-icon [nzType]=\"loading ? 'loading' : 'plus'\"></span>\n <div class=\"ant-upload-text\">Upload</div>\n } @else {\n <img [src]=\"avatarUrl\" class=\"max-w-full max-h-full\" />\n }\n</nz-upload>", dependencies: [{ kind: "directive", type: i4.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i2$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "component", type: i6$1.NzUploadComponent, selector: "nz-upload", inputs: ["nzType", "nzLimit", "nzSize", "nzFileType", "nzAccept", "nzAction", "nzDirectory", "nzOpenFileDialogOnClick", "nzBeforeUpload", "nzCustomRequest", "nzData", "nzFilter", "nzFileList", "nzDisabled", "nzHeaders", "nzListType", "nzMultiple", "nzName", "nzShowUploadList", "nzShowButton", "nzWithCredentials", "nzRemove", "nzPreview", "nzPreviewFile", "nzPreviewIsImage", "nzTransformFile", "nzDownload", "nzIconRender", "nzFileListRender"], outputs: ["nzChange", "nzFileListChange"], exportAs: ["nzUpload"] }] }); }
1500
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UploaderComponent, deps: [{ token: 'environment' }, { token: ToastService }, { token: i2.HttpClient }, { token: SharedService }, { token: DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
1501
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: UploaderComponent, selector: "app-uploader", inputs: { maxWithSize: "maxWithSize", cropper: "cropper", aspectRatio: "aspectRatio", avatar: "avatar" }, outputs: { onUploaded: "onUploaded" }, ngImport: i0, template: "<nz-upload class=\"w-[128px] h-[128px] overflow-hidden\" nzAction=\"{{env.apiUrl}}/file\" nzName=\"file\"\n nzListType=\"picture-card\" [nzShowUploadList]=\"false\" [nzBeforeUpload]=\"beforeUpload\"\n (nzChange)=\"handleChange($event)\" [nzCustomRequest]=\"customRequest\">\n @if (!avatarUrl) {\n <span class=\"upload-icon\" nz-icon [nzType]=\"loading ? 'loading' : 'plus'\"></span>\n <div class=\"ant-upload-text\">Upload</div>\n } @else {\n <img [src]=\"avatarUrl\" class=\"max-w-full max-h-full\" />\n }\n</nz-upload>", dependencies: [{ kind: "directive", type: i4.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i2$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "component", type: i6$1.NzUploadComponent, selector: "nz-upload", inputs: ["nzType", "nzLimit", "nzSize", "nzFileType", "nzAccept", "nzAction", "nzDirectory", "nzOpenFileDialogOnClick", "nzBeforeUpload", "nzCustomRequest", "nzData", "nzFilter", "nzFileList", "nzDisabled", "nzHeaders", "nzListType", "nzMultiple", "nzName", "nzShowUploadList", "nzShowButton", "nzWithCredentials", "nzRemove", "nzPreview", "nzPreviewFile", "nzPreviewIsImage", "nzTransformFile", "nzDownload", "nzIconRender", "nzFileListRender"], outputs: ["nzChange", "nzFileListChange"], exportAs: ["nzUpload"] }] }); }
1419
1502
  }
1420
1503
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UploaderComponent, decorators: [{
1421
1504
  type: Component,
@@ -1423,7 +1506,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1423
1506
  }], ctorParameters: () => [{ type: undefined, decorators: [{
1424
1507
  type: Inject,
1425
1508
  args: ['environment']
1426
- }] }, { type: ToastService }, { type: i2.HttpClient }, { type: SharedService }], propDecorators: { avatar: [{
1509
+ }] }, { type: ToastService }, { type: i2.HttpClient }, { type: SharedService }, { type: DialogService }], propDecorators: { maxWithSize: [{
1510
+ type: Input
1511
+ }], cropper: [{
1512
+ type: Input
1513
+ }], aspectRatio: [{
1514
+ type: Input
1515
+ }], avatar: [{
1427
1516
  type: Input
1428
1517
  }], onUploaded: [{
1429
1518
  type: Output
@@ -1512,77 +1601,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1512
1601
  type: Output
1513
1602
  }] } });
1514
1603
 
1515
- class AuthGuard {
1516
- constructor(_router) {
1517
- this._router = _router;
1518
- }
1519
- canActivate(route, state) {
1520
- if (localStorage.getItem('userInfo')) {
1521
- return true;
1522
- }
1523
- this._router.navigate(['/auth']);
1524
- return false;
1525
- }
1526
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, deps: [{ token: i1$6.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
1527
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
1528
- }
1529
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, decorators: [{
1530
- type: Injectable,
1531
- args: [{
1532
- providedIn: 'root'
1533
- }]
1534
- }], ctorParameters: () => [{ type: i1$6.Router }] });
1535
-
1536
- class MasterLayout {
1537
- constructor(_service, _confirm, componentFactoryResolver) {
1538
- this._service = _service;
1539
- this._confirm = _confirm;
1540
- this.componentFactoryResolver = componentFactoryResolver;
1541
- this.isCollapsed = false;
1542
- this.menuItems = [];
1543
- }
1544
- logout() {
1545
- this._confirm.confirm(() => {
1546
- localStorage.clear();
1547
- location.reload();
1548
- return Promise.resolve();
1549
- });
1550
- }
1551
- loadComponent(component) {
1552
- this.container.clear();
1553
- const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
1554
- this.container.createComponent(componentFactory);
1555
- }
1556
- ngAfterViewInit() {
1557
- setTimeout(() => {
1558
- // this.loadComponent(this._ac.);
1559
- }, 500);
1560
- }
1561
- ngOnInit() {
1562
- this.menuItems = this._service.menuItems;
1563
- }
1564
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MasterLayout, deps: [{ token: SharedService }, { token: ConfirmService }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); }
1565
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MasterLayout, selector: "ng-component", viewQueries: [{ propertyName: "container", first: true, predicate: ["dynamicComponentContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<nz-layout class=\"app-layout\">\n <nz-sider class=\"menu-sidebar bg-white\" nzCollapsible nzWidth=\"256px\" nzBreakpoint=\"md\"\n [(nzCollapsed)]=\"isCollapsed\" [nzTrigger]=\"null\">\n <div class=\"p-4\">\n <div class=\"flex justify-center items-center border-b !border-b-slate-200 pb-4\">\n <img width=\"100\" src=\"assets/images/logo.svg\" alt=\"\">\n </div>\n </div>\n <ul nz-menu nzMode=\"inline\" [nzInlineCollapsed]=\"isCollapsed\">\n @for (item of menuItems; track item.title) {\n @if(item.children){\n <li nz-submenu [nzTitle]=\"item.title\" [nzIcon]=\"item.icon\">\n <ul nz-menu-group>\n @for (subitem of item.children; track subitem.title) {\n <li nz-menu-item [routerLink]=\"subitem.path\">{{subitem.title}}</li>\n }\n </ul>\n </li>\n } @else{\n <li nz-menu-item [routerLink]=\"item.path\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n <span>{{item.title}}</span>\n </li>\n }\n }\n </ul>\n </nz-sider>\n <nz-layout>\n <nz-header>\n <div class=\"app-header p-4 flex justify-between items-center\">\n <div>\n <button nz-button nzType=\"text\" (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"text-2xl\" nz-icon nzType=\"menu\"></span>\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"global\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"user\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"bell\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\" (click)=\"logout()\"><span nz-icon\n nzType=\"poweroff\"></span></button>\n </div>\n </div>\n </nz-header>\n <nz-content>\n <!-- <nz-tabset nzType=\"editable-card\">\n <nz-tab nzClosable nzTitle=\"\u062F\u0631\u062E\u062A \u0633\u0631\u0648\u06CC\u0633\">\n <div class=\"inner-content rounded-md overflow-auto\">\n <div #dynamicComponentContainer></div>\n </div>\n </nz-tab>\n </nz-tabset> -->\n <div class=\"inner-content rounded-md\">\n <router-outlet></router-outlet>\n </div>\n </nz-content>\n </nz-layout>\n</nz-layout>", styles: [":host{display:flex;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-layout{height:100vh}.menu-sidebar{position:relative;z-index:10;min-height:100vh;box-shadow:2px 0 6px #00152959}.header-trigger{height:64px;padding:20px 24px;font-size:20px;cursor:pointer;transition:all .3s,padding 0s}.trigger:hover{color:#1890ff}.sidebar-logo{position:relative;height:64px;padding-left:24px;overflow:hidden;line-height:64px;background:#001529;transition:all .3s}.sidebar-logo img{display:inline-block;height:32px;width:32px;vertical-align:middle}.sidebar-logo h1{display:inline-block;margin:0 0 0 20px;color:#fff;font-weight:600;font-size:14px;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;vertical-align:middle}nz-header{padding:0;width:100%;z-index:2}.app-header{position:relative;height:64px;padding:0;background:#fff;box-shadow:0 1px 4px #00152914}nz-content{margin:24px}.inner-content{padding:24px;background:#fff;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$6.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1$6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4$1.NzLayoutComponent, selector: "nz-layout", exportAs: ["nzLayout"] }, { kind: "component", type: i4$1.NzHeaderComponent, selector: "nz-header", exportAs: ["nzHeader"] }, { kind: "component", type: i4$1.NzContentComponent, selector: "nz-content", exportAs: ["nzContent"] }, { kind: "component", type: i4$1.NzSiderComponent, selector: "nz-sider", inputs: ["nzWidth", "nzTheme", "nzCollapsedWidth", "nzBreakpoint", "nzZeroTrigger", "nzTrigger", "nzReverseArrow", "nzCollapsible", "nzCollapsed"], outputs: ["nzCollapsedChange"], exportAs: ["nzSider"] }, { kind: "directive", type: i5$1.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i5$1.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "component", type: i5$1.NzSubMenuComponent, selector: "[nz-submenu]", inputs: ["nzMenuClassName", "nzPaddingLeft", "nzTitle", "nzIcon", "nzOpen", "nzDisabled", "nzPlacement"], outputs: ["nzOpenChange"], exportAs: ["nzSubmenu"] }, { kind: "component", type: i5$1.NzMenuGroupComponent, selector: "[nz-menu-group]", inputs: ["nzTitle"], exportAs: ["nzMenuGroup"] }, { kind: "directive", type: i4.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i1$2.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i2$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }] }); }
1566
- }
1567
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MasterLayout, decorators: [{
1568
- type: Component,
1569
- args: [{ template: "<nz-layout class=\"app-layout\">\n <nz-sider class=\"menu-sidebar bg-white\" nzCollapsible nzWidth=\"256px\" nzBreakpoint=\"md\"\n [(nzCollapsed)]=\"isCollapsed\" [nzTrigger]=\"null\">\n <div class=\"p-4\">\n <div class=\"flex justify-center items-center border-b !border-b-slate-200 pb-4\">\n <img width=\"100\" src=\"assets/images/logo.svg\" alt=\"\">\n </div>\n </div>\n <ul nz-menu nzMode=\"inline\" [nzInlineCollapsed]=\"isCollapsed\">\n @for (item of menuItems; track item.title) {\n @if(item.children){\n <li nz-submenu [nzTitle]=\"item.title\" [nzIcon]=\"item.icon\">\n <ul nz-menu-group>\n @for (subitem of item.children; track subitem.title) {\n <li nz-menu-item [routerLink]=\"subitem.path\">{{subitem.title}}</li>\n }\n </ul>\n </li>\n } @else{\n <li nz-menu-item [routerLink]=\"item.path\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n <span>{{item.title}}</span>\n </li>\n }\n }\n </ul>\n </nz-sider>\n <nz-layout>\n <nz-header>\n <div class=\"app-header p-4 flex justify-between items-center\">\n <div>\n <button nz-button nzType=\"text\" (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"text-2xl\" nz-icon nzType=\"menu\"></span>\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"global\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"user\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"bell\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\" (click)=\"logout()\"><span nz-icon\n nzType=\"poweroff\"></span></button>\n </div>\n </div>\n </nz-header>\n <nz-content>\n <!-- <nz-tabset nzType=\"editable-card\">\n <nz-tab nzClosable nzTitle=\"\u062F\u0631\u062E\u062A \u0633\u0631\u0648\u06CC\u0633\">\n <div class=\"inner-content rounded-md overflow-auto\">\n <div #dynamicComponentContainer></div>\n </div>\n </nz-tab>\n </nz-tabset> -->\n <div class=\"inner-content rounded-md\">\n <router-outlet></router-outlet>\n </div>\n </nz-content>\n </nz-layout>\n</nz-layout>", styles: [":host{display:flex;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-layout{height:100vh}.menu-sidebar{position:relative;z-index:10;min-height:100vh;box-shadow:2px 0 6px #00152959}.header-trigger{height:64px;padding:20px 24px;font-size:20px;cursor:pointer;transition:all .3s,padding 0s}.trigger:hover{color:#1890ff}.sidebar-logo{position:relative;height:64px;padding-left:24px;overflow:hidden;line-height:64px;background:#001529;transition:all .3s}.sidebar-logo img{display:inline-block;height:32px;width:32px;vertical-align:middle}.sidebar-logo h1{display:inline-block;margin:0 0 0 20px;color:#fff;font-weight:600;font-size:14px;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;vertical-align:middle}nz-header{padding:0;width:100%;z-index:2}.app-header{position:relative;height:64px;padding:0;background:#fff;box-shadow:0 1px 4px #00152914}nz-content{margin:24px}.inner-content{padding:24px;background:#fff;height:100%}\n"] }]
1570
- }], ctorParameters: () => [{ type: SharedService }, { type: ConfirmService }, { type: i0.ComponentFactoryResolver }], propDecorators: { container: [{
1571
- type: ViewChild,
1572
- args: ['dynamicComponentContainer', { read: ViewContainerRef }]
1573
- }] } });
1574
-
1575
- class BlankLayout {
1576
- constructor() { }
1577
- ngOnInit() { }
1578
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1579
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BlankLayout, selector: "ng-component", ngImport: i0, template: "<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>", dependencies: [{ kind: "directive", type: i1$6.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
1580
- }
1581
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, decorators: [{
1582
- type: Component,
1583
- args: [{ template: "<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>" }]
1584
- }], ctorParameters: () => [] });
1585
-
1586
1604
  class CharInputDirective {
1587
1605
  constructor(el, control, renderer) {
1588
1606
  this.el = el;
@@ -1705,6 +1723,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1705
1723
  type: Input
1706
1724
  }] } });
1707
1725
 
1726
+ class AuthGuard {
1727
+ constructor(_router) {
1728
+ this._router = _router;
1729
+ }
1730
+ canActivate(route, state) {
1731
+ if (localStorage.getItem('userInfo')) {
1732
+ return true;
1733
+ }
1734
+ this._router.navigate(['/auth']);
1735
+ return false;
1736
+ }
1737
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, deps: [{ token: i1$6.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
1738
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
1739
+ }
1740
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, decorators: [{
1741
+ type: Injectable,
1742
+ args: [{
1743
+ providedIn: 'root'
1744
+ }]
1745
+ }], ctorParameters: () => [{ type: i1$6.Router }] });
1746
+
1747
+ class MasterLayout {
1748
+ constructor(_service, _confirm, componentFactoryResolver) {
1749
+ this._service = _service;
1750
+ this._confirm = _confirm;
1751
+ this.componentFactoryResolver = componentFactoryResolver;
1752
+ this.isCollapsed = false;
1753
+ this.menuItems = [];
1754
+ }
1755
+ logout() {
1756
+ this._confirm.confirm(() => {
1757
+ localStorage.clear();
1758
+ location.reload();
1759
+ return Promise.resolve();
1760
+ });
1761
+ }
1762
+ loadComponent(component) {
1763
+ this.container.clear();
1764
+ const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
1765
+ this.container.createComponent(componentFactory);
1766
+ }
1767
+ ngAfterViewInit() {
1768
+ setTimeout(() => {
1769
+ // this.loadComponent(this._ac.);
1770
+ }, 500);
1771
+ }
1772
+ ngOnInit() {
1773
+ this.menuItems = this._service.menuItems;
1774
+ }
1775
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MasterLayout, deps: [{ token: SharedService }, { token: ConfirmService }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); }
1776
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MasterLayout, selector: "ng-component", viewQueries: [{ propertyName: "container", first: true, predicate: ["dynamicComponentContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<nz-layout class=\"app-layout\">\n <nz-sider class=\"menu-sidebar bg-white\" nzCollapsible nzWidth=\"256px\" nzBreakpoint=\"md\"\n [(nzCollapsed)]=\"isCollapsed\" [nzTrigger]=\"null\">\n <div class=\"p-4\">\n <div class=\"flex justify-center items-center border-b !border-b-slate-200 pb-4\">\n <img width=\"100\" src=\"assets/images/logo.svg\" alt=\"\">\n </div>\n </div>\n <ul nz-menu nzMode=\"inline\" [nzInlineCollapsed]=\"isCollapsed\">\n @for (item of menuItems; track item.title) {\n @if(item.children){\n <li nz-submenu [nzTitle]=\"item.title\" [nzIcon]=\"item.icon\">\n <ul nz-menu-group>\n @for (subitem of item.children; track subitem.title) {\n <li nz-menu-item [routerLink]=\"subitem.path\">{{subitem.title}}</li>\n }\n </ul>\n </li>\n } @else{\n <li nz-menu-item [routerLink]=\"item.path\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n <span>{{item.title}}</span>\n </li>\n }\n }\n </ul>\n </nz-sider>\n <nz-layout>\n <nz-header>\n <div class=\"app-header p-4 flex justify-between items-center\">\n <div>\n <button nz-button nzType=\"text\" (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"text-2xl\" nz-icon nzType=\"menu\"></span>\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"global\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"user\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"bell\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\" (click)=\"logout()\"><span nz-icon\n nzType=\"poweroff\"></span></button>\n </div>\n </div>\n </nz-header>\n <nz-content>\n <!-- <nz-tabset nzType=\"editable-card\">\n <nz-tab nzClosable nzTitle=\"\u062F\u0631\u062E\u062A \u0633\u0631\u0648\u06CC\u0633\">\n <div class=\"inner-content rounded-md overflow-auto\">\n <div #dynamicComponentContainer></div>\n </div>\n </nz-tab>\n </nz-tabset> -->\n <div class=\"inner-content rounded-md\">\n <router-outlet></router-outlet>\n </div>\n </nz-content>\n </nz-layout>\n</nz-layout>", styles: [":host{display:flex;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-layout{height:100vh}.menu-sidebar{position:relative;z-index:10;min-height:100vh;box-shadow:2px 0 6px #00152959}.header-trigger{height:64px;padding:20px 24px;font-size:20px;cursor:pointer;transition:all .3s,padding 0s}.trigger:hover{color:#1890ff}.sidebar-logo{position:relative;height:64px;padding-left:24px;overflow:hidden;line-height:64px;background:#001529;transition:all .3s}.sidebar-logo img{display:inline-block;height:32px;width:32px;vertical-align:middle}.sidebar-logo h1{display:inline-block;margin:0 0 0 20px;color:#fff;font-weight:600;font-size:14px;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;vertical-align:middle}nz-header{padding:0;width:100%;z-index:2}.app-header{position:relative;height:64px;padding:0;background:#fff;box-shadow:0 1px 4px #00152914}nz-content{margin:24px}.inner-content{padding:24px;background:#fff;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$6.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1$6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4$1.NzLayoutComponent, selector: "nz-layout", exportAs: ["nzLayout"] }, { kind: "component", type: i4$1.NzHeaderComponent, selector: "nz-header", exportAs: ["nzHeader"] }, { kind: "component", type: i4$1.NzContentComponent, selector: "nz-content", exportAs: ["nzContent"] }, { kind: "component", type: i4$1.NzSiderComponent, selector: "nz-sider", inputs: ["nzWidth", "nzTheme", "nzCollapsedWidth", "nzBreakpoint", "nzZeroTrigger", "nzTrigger", "nzReverseArrow", "nzCollapsible", "nzCollapsed"], outputs: ["nzCollapsedChange"], exportAs: ["nzSider"] }, { kind: "directive", type: i5$1.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i5$1.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "component", type: i5$1.NzSubMenuComponent, selector: "[nz-submenu]", inputs: ["nzMenuClassName", "nzPaddingLeft", "nzTitle", "nzIcon", "nzOpen", "nzDisabled", "nzPlacement"], outputs: ["nzOpenChange"], exportAs: ["nzSubmenu"] }, { kind: "component", type: i5$1.NzMenuGroupComponent, selector: "[nz-menu-group]", inputs: ["nzTitle"], exportAs: ["nzMenuGroup"] }, { kind: "directive", type: i4.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i1$2.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i2$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }] }); }
1777
+ }
1778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MasterLayout, decorators: [{
1779
+ type: Component,
1780
+ args: [{ template: "<nz-layout class=\"app-layout\">\n <nz-sider class=\"menu-sidebar bg-white\" nzCollapsible nzWidth=\"256px\" nzBreakpoint=\"md\"\n [(nzCollapsed)]=\"isCollapsed\" [nzTrigger]=\"null\">\n <div class=\"p-4\">\n <div class=\"flex justify-center items-center border-b !border-b-slate-200 pb-4\">\n <img width=\"100\" src=\"assets/images/logo.svg\" alt=\"\">\n </div>\n </div>\n <ul nz-menu nzMode=\"inline\" [nzInlineCollapsed]=\"isCollapsed\">\n @for (item of menuItems; track item.title) {\n @if(item.children){\n <li nz-submenu [nzTitle]=\"item.title\" [nzIcon]=\"item.icon\">\n <ul nz-menu-group>\n @for (subitem of item.children; track subitem.title) {\n <li nz-menu-item [routerLink]=\"subitem.path\">{{subitem.title}}</li>\n }\n </ul>\n </li>\n } @else{\n <li nz-menu-item [routerLink]=\"item.path\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n <span>{{item.title}}</span>\n </li>\n }\n }\n </ul>\n </nz-sider>\n <nz-layout>\n <nz-header>\n <div class=\"app-header p-4 flex justify-between items-center\">\n <div>\n <button nz-button nzType=\"text\" (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"text-2xl\" nz-icon nzType=\"menu\"></span>\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"global\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"user\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"bell\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\" (click)=\"logout()\"><span nz-icon\n nzType=\"poweroff\"></span></button>\n </div>\n </div>\n </nz-header>\n <nz-content>\n <!-- <nz-tabset nzType=\"editable-card\">\n <nz-tab nzClosable nzTitle=\"\u062F\u0631\u062E\u062A \u0633\u0631\u0648\u06CC\u0633\">\n <div class=\"inner-content rounded-md overflow-auto\">\n <div #dynamicComponentContainer></div>\n </div>\n </nz-tab>\n </nz-tabset> -->\n <div class=\"inner-content rounded-md\">\n <router-outlet></router-outlet>\n </div>\n </nz-content>\n </nz-layout>\n</nz-layout>", styles: [":host{display:flex;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-layout{height:100vh}.menu-sidebar{position:relative;z-index:10;min-height:100vh;box-shadow:2px 0 6px #00152959}.header-trigger{height:64px;padding:20px 24px;font-size:20px;cursor:pointer;transition:all .3s,padding 0s}.trigger:hover{color:#1890ff}.sidebar-logo{position:relative;height:64px;padding-left:24px;overflow:hidden;line-height:64px;background:#001529;transition:all .3s}.sidebar-logo img{display:inline-block;height:32px;width:32px;vertical-align:middle}.sidebar-logo h1{display:inline-block;margin:0 0 0 20px;color:#fff;font-weight:600;font-size:14px;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;vertical-align:middle}nz-header{padding:0;width:100%;z-index:2}.app-header{position:relative;height:64px;padding:0;background:#fff;box-shadow:0 1px 4px #00152914}nz-content{margin:24px}.inner-content{padding:24px;background:#fff;height:100%}\n"] }]
1781
+ }], ctorParameters: () => [{ type: SharedService }, { type: ConfirmService }, { type: i0.ComponentFactoryResolver }], propDecorators: { container: [{
1782
+ type: ViewChild,
1783
+ args: ['dynamicComponentContainer', { read: ViewContainerRef }]
1784
+ }] } });
1785
+
1786
+ class BlankLayout {
1787
+ constructor() { }
1788
+ ngOnInit() { }
1789
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1790
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BlankLayout, selector: "ng-component", ngImport: i0, template: "<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>", dependencies: [{ kind: "directive", type: i1$6.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
1791
+ }
1792
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlankLayout, decorators: [{
1793
+ type: Component,
1794
+ args: [{ template: "<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>" }]
1795
+ }], ctorParameters: () => [] });
1796
+
1708
1797
  function HttpLoaderFactory(http) {
1709
1798
  return new TranslateHttpLoader(http, './assets/i18n/', '.json?v=' + Date.now());
1710
1799
  }
@@ -1746,7 +1835,9 @@ const Components = [
1746
1835
  UploadFileComponent,
1747
1836
  DateFilter
1748
1837
  ];
1749
- const Popover = [];
1838
+ const Popover = [
1839
+ ImageCropperPopover
1840
+ ];
1750
1841
  const Directive = [
1751
1842
  EnglishNumberInputDirective,
1752
1843
  CharInputDirective,
@@ -1782,6 +1873,7 @@ const Modules = [
1782
1873
  NzInputModule,
1783
1874
  NzFormModule,
1784
1875
  NzUploadModule,
1876
+ ImageCropperComponent,
1785
1877
  TranslateModule.forRoot({
1786
1878
  defaultLanguage: 'fa',
1787
1879
  useDefaultLang: true,
@@ -1802,7 +1894,7 @@ class SharedModule {
1802
1894
  SpinnerComponent,
1803
1895
  UploaderComponent,
1804
1896
  UploadFileComponent,
1805
- DateFilter, EnglishNumberInputDirective,
1897
+ DateFilter, ImageCropperPopover, EnglishNumberInputDirective,
1806
1898
  CharInputDirective,
1807
1899
  MaskDirective,
1808
1900
  ImageLoaderDirective, JDatePipe], imports: [RouterModule, HttpClientModule,
@@ -1823,7 +1915,8 @@ class SharedModule {
1823
1915
  FormsModule,
1824
1916
  NzInputModule,
1825
1917
  NzFormModule,
1826
- NzUploadModule, i1$4.TranslateModule], exports: [MasterLayout,
1918
+ NzUploadModule,
1919
+ ImageCropperComponent, i1$4.TranslateModule], exports: [MasterLayout,
1827
1920
  BlankLayout, GridComponent,
1828
1921
  ActionsCellRenderer,
1829
1922
  CaptchaComponent,
@@ -1831,7 +1924,7 @@ class SharedModule {
1831
1924
  SpinnerComponent,
1832
1925
  UploaderComponent,
1833
1926
  UploadFileComponent,
1834
- DateFilter, EnglishNumberInputDirective,
1927
+ DateFilter, ImageCropperPopover, EnglishNumberInputDirective,
1835
1928
  CharInputDirective,
1836
1929
  MaskDirective,
1837
1930
  ImageLoaderDirective, JDatePipe] }); }
@@ -1873,33 +1966,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1873
1966
  }]
1874
1967
  }] });
1875
1968
 
1876
- class PopoverComponent {
1877
- constructor() {
1878
- this.data = inject(NZ_MODAL_DATA, { optional: true });
1879
- this.dialogRef = inject(NzModalRef, { optional: true });
1880
- this.viewContainerRef = inject(ViewContainerRef);
1881
- this.injector = inject(Injector);
1882
- this.spinnerRef = null;
1883
- }
1884
- get loadingDialog() {
1885
- return this.loadingDialog;
1886
- }
1887
- set loadingDialog(value) {
1888
- if (value) {
1889
- this.spinnerRef = this.viewContainerRef.createComponent(SpinnerComponent, {
1890
- injector: this.injector,
1891
- });
1892
- }
1893
- else {
1894
- this.spinnerRef.destroy();
1895
- this.spinnerRef = null;
1896
- }
1897
- }
1898
- onClose(data) {
1899
- this.dialogRef.close(data);
1900
- }
1901
- }
1902
-
1903
1969
  class TimerPipe {
1904
1970
  transform(value) {
1905
1971
  const hours = Math.floor(value / 3600);
@@ -1936,5 +2002,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1936
2002
  * Generated bundle index. Do not edit.
1937
2003
  */
1938
2004
 
1939
- export { ActionsCellRenderer, AuthGuard, BlankLayout, CaptchaComponent, CharInputDirective, ConfirmService, DateFilter, DialogService, EnglishNumberInputDirective, FilterOperator, FormService, GridComponent, HttpLoaderFactory, ImageLoaderDirective, JDatePipe, MapComponent, MaskDirective, MasterLayout, PopoverComponent, SelectModel, SharedModule, SharedService, SpinnerComponent, TimerPipe, ToastService, UploadFileComponent, UploaderComponent, initializeApp };
2005
+ export { ActionsCellRenderer, AuthGuard, BlankLayout, CaptchaComponent, CharInputDirective, ConfirmService, DateFilter, DialogService, EnglishNumberInputDirective, FilterOperator, FormService, GridComponent, HttpLoaderFactory, ImageCropperPopover, ImageLoaderDirective, JDatePipe, MapComponent, MaskDirective, MasterLayout, PopoverComponent, SelectModel, SharedModule, SharedService, SpinnerComponent, TimerPipe, ToastService, UploadFileComponent, UploaderComponent, initializeApp };
1940
2006
  //# sourceMappingURL=fixa-admin.mjs.map