@brggroup/share-lib 0.1.76 → 0.1.77
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/brggroup-share-lib.mjs +198 -13
- package/fesm2022/brggroup-share-lib.mjs.map +1 -1
- package/lib/admin/component/app-data/app-data.d.ts +32 -0
- package/lib/admin/component/app-data/app-data.d.ts.map +1 -0
- package/lib/admin/component/app-data/service.d.ts +14 -0
- package/lib/admin/component/app-data/service.d.ts.map +1 -0
- package/lib/admin/component/index.d.ts +1 -0
- package/lib/admin/component/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Injectable, InjectionToken, NgZone, DestroyRef, Component, HostListener, ViewContainerRef, EventEmitter, Input, Output, ViewChild, Directive, Optional, Self, HostBinding, Pipe, ChangeDetectorRef, forwardRef, ChangeDetectionStrategy } from '@angular/core';
|
|
3
|
-
import * as i1$
|
|
3
|
+
import * as i1$8 from '@angular/router';
|
|
4
4
|
import { Router, ActivatedRoute, NavigationEnd, RouterModule, RouterOutlet } from '@angular/router';
|
|
5
5
|
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
|
6
6
|
import * as i3 from '@ngx-translate/core';
|
|
@@ -83,7 +83,7 @@ import * as i1$6 from 'ng-zorro-antd/tabs';
|
|
|
83
83
|
import { NzTabsModule } from 'ng-zorro-antd/tabs';
|
|
84
84
|
import * as i12 from '@angular/cdk/clipboard';
|
|
85
85
|
import { ClipboardModule } from '@angular/cdk/clipboard';
|
|
86
|
-
import * as
|
|
86
|
+
import * as i1$7 from 'ng-zorro-antd/tree';
|
|
87
87
|
import { NzTreeModule, NzTreeNode } from 'ng-zorro-antd/tree';
|
|
88
88
|
import * as signalR from '@microsoft/signalr';
|
|
89
89
|
import { HubConnectionState } from '@microsoft/signalr';
|
|
@@ -100,7 +100,7 @@ import * as i11 from 'ng-zorro-antd/switch';
|
|
|
100
100
|
import { NzSwitchModule } from 'ng-zorro-antd/switch';
|
|
101
101
|
import * as i3$7 from '@angular/cdk/drag-drop';
|
|
102
102
|
import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
|
|
103
|
-
import * as i10
|
|
103
|
+
import * as i10 from 'ng-zorro-antd/slider';
|
|
104
104
|
import { NzSliderModule } from 'ng-zorro-antd/slider';
|
|
105
105
|
import * as i2$5 from 'ng-zorro-antd/layout';
|
|
106
106
|
import { NzLayoutModule } from 'ng-zorro-antd/layout';
|
|
@@ -7610,7 +7610,7 @@ class RoleDetailComponent extends BaseComponent {
|
|
|
7610
7610
|
// this.notiService.success('Đã xóa User khỏi danh sách');
|
|
7611
7611
|
}
|
|
7612
7612
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: RoleDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
7613
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.7", type: RoleDetailComponent, isStandalone: true, selector: "app-menu-detail", viewQueries: [{ propertyName: "nzTreeComponent", first: true, predicate: ["nzTree"], descendants: true }, { propertyName: "parentSelect", first: true, predicate: ["parentSelect"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<form nz-form [formGroup]=\"formData\">\n <div nz-flex nzJustify=\"end\">\n <div nz-flex [nzGap]=\"'small'\">\n <button-save (click)=\"save()\"></button-save>\n <button-delete *ngIf=\"item.App_Role_Id\" (click)=\"delete()\"></button-delete>\n <button-back (click)=\"goto('/admin/role')\"></button-back>\n </div>\n </div>\n\n <nz-divider></nz-divider>\n\n <div nz-row [nzGutter]=\"[32, 0]\">\n <div nz-col [nzMd]=\"12\" [nzSm]=\"24\">\n <nz-form-item>\n <nz-form-label [nzSpan]=\"8\" nzFor=\"Code\" nzLabelAlign=\"left\" nzNoColon=\"true\" nzRequired> M\u00E3 </nz-form-label>\n <nz-form-control [nzSpan]=\"16\" [nzErrorTip]=\"'REQUIRED_FIELD' | translate\">\n <input nz-input formControlName=\"Code\" id=\"Code\" />\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSpan]=\"8\" nzFor=\"Name\" nzLabelAlign=\"left\" nzNoColon=\"true\" nzRequired> T\u00EAn </nz-form-label>\n <nz-form-control [nzSpan]=\"16\" [nzErrorTip]=\"'REQUIRED_FIELD' | translate\">\n <input nz-input formControlName=\"Name\" id=\"Name\" />\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSpan]=\"8\" nzFor=\"Description\" nzLabelAlign=\"left\" nzNoColon=\"true\"> M\u00F4 t\u1EA3 </nz-form-label>\n <nz-form-control [nzSpan]=\"16\">\n <textarea nz-input formControlName=\"Description\" id=\"Description\"></textarea>\n </nz-form-control>\n </nz-form-item>\n <div nz-row>\n <div nz-col [nzSpan]=\"8\"></div>\n <div nz-col [nzSpan]=\"16\">\n <label nz-checkbox formControlName=\"IsActive\">Active</label>\n </div>\n </div>\n </div>\n\n <div nz-col [nzSpan]=\"12\">\n <nz-tabset nzType=\"card\" nzSize=\"small\">\n <nz-tab nzTitle=\"Menu\">\n <h3>Ph\u00E2n quy\u1EC1n Menu</h3>\n\n <nz-tree\n #nzTree\n [nzData]=\"nodes\"\n nzCheckable\n nzMultiple\n nzBlockNode\n [nzTreeTemplate]=\"nzTreeTemplate\"\n [(nzCheckedKeys)]=\"checkedKeys\"\n (nzCheckBoxChange)=\"onTreeCheckBoxChange($event)\"\n ></nz-tree>\n\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div style=\"display: flex; justify-content: space-between; align-items: center; width: 100%\">\n <span class=\"custom-node-name\">{{ node.title }}</span>\n\n <div style=\"display: flex; gap: 4px\" (click)=\"$event.stopPropagation()\">\n <label\n nz-checkbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"origin.canCreate\"\n [nzIndeterminate]=\"origin.isCreateIndeterminate\"\n (ngModelChange)=\"onPermissionChange(node, 'create')\"\n >\n C\n </label>\n <label\n nz-checkbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"origin.canUpdate\"\n [nzIndeterminate]=\"origin.isUpdateIndeterminate\"\n (ngModelChange)=\"onPermissionChange(node, 'update')\"\n >\n U\n </label>\n <label\n nz-checkbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"origin.canDelete\"\n [nzIndeterminate]=\"origin.isDeleteIndeterminate\"\n (ngModelChange)=\"onPermissionChange(node, 'delete')\"\n >\n D\n </label>\n </div>\n </div>\n </ng-template>\n </nz-tab>\n <nz-tab nzTitle=\"User\">\n <div style=\"padding: 8px\">\n <h3 style=\"margin-bottom: 16px\">Danh s\u00E1ch User trong Role</h3>\n\n <div nz-flex [nzJustify]=\"'space-between'\" [nzAlign]=\"'center'\" style=\"margin-bottom: 12px\">\n <span style=\"font-weight: 500\">Users ({{ lstUserInRole.length }})</span>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"openAddUserModal()\">\n <span nz-icon nzType=\"plus\"></span>\n Th\u00EAm User\n </button>\n </div>\n\n <div style=\"max-height: 450px; overflow-y: auto\">\n <nz-table\n #userTable\n [nzData]=\"lstUserInRole\"\n [nzSize]=\"'small'\"\n [nzShowPagination]=\"lstUserInRole.length > 20\"\n [nzPageSize]=\"20\"\n >\n <thead>\n <tr>\n <th nzWidth=\"40px\">STT</th>\n <th>User</th>\n <th nzWidth=\"50px\" nzAlign=\"center\"></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of userTable.data; let i = index\">\n <td>{{ i + 1 }}</td>\n <td>\n <div style=\"font-weight: 500\">{{ item.UserName }}</div>\n <div style=\"font-size: 12px; color: #888\">{{ item.FullName }}</div>\n <div *ngIf=\"item.Email\" style=\"font-size: 11px; color: #aaa\">{{ item.Email }}</div>\n </td>\n <td nzAlign=\"center\">\n <button\n nz-button\n nzType=\"link\"\n nzDanger\n nzSize=\"small\"\n nz-popconfirm\n nzPopconfirmTitle=\"X\u00F3a User n\u00E0y?\"\n (nzOnConfirm)=\"deleteUserFromRole(item)\"\n >\n <span nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\n </button>\n </td>\n </tr>\n </tbody>\n </nz-table>\n </div>\n </div>\n </nz-tab>\n </nz-tabset>\n </div>\n </div>\n</form>\n\n<!-- Modal ch\u1ECDn User -->\n<nz-modal\n [(nzVisible)]=\"isAddUserModalVisible\"\n nzTitle=\"Th\u00EAm User v\u00E0o Role\"\n [nzWidth]=\"700\"\n (nzOnCancel)=\"closeAddUserModal()\"\n (nzOnOk)=\"addUsersToRole()\"\n nzOkText=\"Th\u00EAm\"\n nzCancelText=\"H\u1EE7y\"\n>\n <ng-container *nzModalContent>\n <!-- Search box -->\n <nz-input-group [nzPrefix]=\"prefixIconSearch\" style=\"margin-bottom: 16px\">\n <input\n type=\"text\"\n nz-input\n placeholder=\"T\u00ECm ki\u1EBFm User...\"\n [(ngModel)]=\"searchUserText\"\n (ngModelChange)=\"filterAvailableUsers()\"\n />\n </nz-input-group>\n <ng-template #prefixIconSearch>\n <span nz-icon nzType=\"search\"></span>\n </ng-template>\n\n <nz-table\n #addUserTable\n [nzData]=\"lstFilteredUser\"\n [nzSize]=\"'small'\"\n [nzShowPagination]=\"true\"\n [nzPageSize]=\"10\"\n [nzLoading]=\"isLoadingAvailableUsers\"\n >\n <thead>\n <tr>\n <th\n nzWidth=\"60px\"\n nzShowCheckbox\n [(nzChecked)]=\"isAllUserChecked\"\n (nzCheckedChange)=\"onAllUserChecked($event)\"\n [nzIndeterminate]=\"isUserIndeterminate\"\n ></th>\n <th nzWidth=\"150px\">Username</th>\n <th>T\u00EAn \u0111\u1EA7y \u0111\u1EE7</th>\n <th>Email</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of addUserTable.data\">\n <td>\n <label nz-checkbox [(ngModel)]=\"item.checked\" (ngModelChange)=\"onUserChecked(item, $event)\"></label>\n </td>\n <td>{{ item.UserName }}</td>\n <td>{{ item.FullName }}</td>\n <td>{{ item.Email }}</td>\n </tr>\n </tbody>\n </nz-table>\n </ng-container>\n</nz-modal>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzFormModule }, { kind: "directive", type: i2$1.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i2$1.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: i5.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzForm"] }, { kind: "component", type: i5.NzFormItemComponent, selector: "nz-form-item", exportAs: ["nzFormItem"] }, { kind: "component", type: i5.NzFormLabelComponent, selector: "nz-form-label", inputs: ["nzFor", "nzRequired", "nzNoColon", "nzTooltipTitle", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzFormLabel"] }, { kind: "component", type: i5.NzFormControlComponent, selector: "nz-form-control", inputs: ["nzSuccessTip", "nzWarningTip", "nzErrorTip", "nzValidatingTip", "nzExtra", "nzAutoTips", "nzDisableAutoTips", "nzHasFeedback", "nzValidateStatus"], exportAs: ["nzFormControl"] }, { kind: "ngmodule", type: NzTreeModule }, { kind: "component", type: i10.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzExpandedIcon", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzTreeTemplate", "nzBeforeDrop", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckboxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }, { kind: "ngmodule", type: NzFlexModule }, { kind: "directive", type: i3$3.NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }, { kind: "ngmodule", type: NzTabsModule }, { kind: "component", type: i1$6.NzTabSetComponent, selector: "nz-tabset", inputs: ["nzSelectedIndex", "nzTabPosition", "nzTabBarExtraContent", "nzCanDeactivate", "nzAddIcon", "nzTabBarStyle", "nzType", "nzSize", "nzAnimated", "nzTabBarGutter", "nzHideAdd", "nzCentered", "nzHideAll", "nzLinkRouter", "nzLinkExact", "nzDestroyInactiveTabPane"], outputs: ["nzSelectChange", "nzSelectedIndexChange", "nzTabListScroll", "nzClose", "nzAdd"], exportAs: ["nzTabset"] }, { kind: "component", type: i1$6.NzTabComponent, selector: "nz-tab", inputs: ["nzTitle", "nzClosable", "nzCloseIcon", "nzDisabled", "nzForceRender"], outputs: ["nzSelect", "nzDeselect", "nzClick", "nzContextmenu"], exportAs: ["nzTab"] }, { kind: "ngmodule", type: NzGridModule }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i6.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i6.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i6.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i2$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: i3$2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "ngmodule", type: NzCheckboxModule }, { kind: "component", type: i3$1.NzCheckboxComponent, selector: "[nz-checkbox]", inputs: ["nzValue", "nzAutoFocus", "nzDisabled", "nzIndeterminate", "nzChecked", "nzId", "nzName"], outputs: ["nzCheckedChange"], exportAs: ["nzCheckbox"] }, { kind: "ngmodule", type: NzTableModule }, { kind: "component", type: i4.NzTableComponent, selector: "nz-table", inputs: ["nzTableLayout", "nzShowTotal", "nzItemRender", "nzTitle", "nzFooter", "nzNoResult", "nzPageSizeOptions", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualForTrackBy", "nzLoadingDelay", "nzPageIndex", "nzPageSize", "nzTotal", "nzWidthConfig", "nzData", "nzCustomColumn", "nzPaginationPosition", "nzScroll", "noDataVirtualHeight", "nzPaginationType", "nzFrontPagination", "nzTemplateMode", "nzShowPagination", "nzLoading", "nzOuterBordered", "nzLoadingIndicator", "nzBordered", "nzSize", "nzShowSizeChanger", "nzHideOnSinglePage", "nzShowQuickJumper", "nzSimple"], outputs: ["nzPageSizeChange", "nzPageIndexChange", "nzQueryParams", "nzCurrentPageDataChange", "nzCustomColumnChange"], exportAs: ["nzTable"] }, { kind: "directive", type: i4.NzTableCellDirective, selector: "th:not(.nz-disable-th):not([mat-cell]), td:not(.nz-disable-td):not([mat-cell])" }, { kind: "directive", type: i4.NzThMeasureDirective, selector: "th", inputs: ["nzWidth", "colspan", "colSpan", "rowspan", "rowSpan"] }, { kind: "component", type: i4.NzTheadComponent, selector: "thead:not(.ant-table-thead)", outputs: ["nzSortOrderChange"] }, { kind: "component", type: i4.NzTbodyComponent, selector: "tbody" }, { kind: "directive", type: i4.NzTrDirective, selector: "tr:not([mat-row]):not([mat-header-row]):not([nz-table-measure-row]):not([nzExpand]):not([nz-table-fixed-row])" }, { kind: "directive", type: i4.NzCellAlignDirective, selector: "th[nzAlign],td[nzAlign]", inputs: ["nzAlign"] }, { kind: "component", type: i4.NzThSelectionComponent, selector: "th[nzSelections],th[nzChecked],th[nzShowCheckbox],th[nzShowRowSelection]", inputs: ["nzSelections", "nzChecked", "nzDisabled", "nzIndeterminate", "nzLabel", "nzShowCheckbox", "nzShowRowSelection"], outputs: ["nzCheckedChange"] }, { kind: "ngmodule", type: NzModalModule }, { kind: "component", type: i15.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i15.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzPopconfirmModule }, { kind: "directive", type: i9.NzPopconfirmDirective, selector: "[nz-popconfirm]", inputs: ["nzPopconfirmArrowPointAtCenter", "nzPopconfirmTitle", "nzPopconfirmTitleContext", "nz-popconfirm", "nzPopconfirmTrigger", "nzPopconfirmPlacement", "nzPopconfirmOrigin", "nzPopconfirmMouseEnterDelay", "nzPopconfirmMouseLeaveDelay", "nzPopconfirmOverlayClassName", "nzPopconfirmOverlayStyle", "nzPopconfirmVisible", "nzOkText", "nzOkType", "nzOkDisabled", "nzOkDanger", "nzCancelText", "nzBeforeConfirm", "nzIcon", "nzCondition", "nzPopconfirmShowArrow", "nzPopconfirmBackdrop", "nzAutofocus"], outputs: ["nzPopconfirmVisibleChange", "nzOnCancel", "nzOnConfirm"], exportAs: ["nzPopconfirm"] }, { kind: "ngmodule", type: NzEmptyModule }, { kind: "ngmodule", type: NzAlertModule }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzDividerModule }, { kind: "component", type: i17.NzDividerComponent, selector: "nz-divider", inputs: ["nzText", "nzType", "nzOrientation", "nzVariant", "nzDashed", "nzPlain"], exportAs: ["nzDivider"] }, { kind: "component", type: ButtonBack, selector: "button-back", inputs: ["size"] }, { kind: "component", type: ButtonSave, selector: "button-save", inputs: ["size"] }, { kind: "component", type: ButtonDelete, selector: "button-delete", inputs: ["size"] }] });
|
|
7613
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.7", type: RoleDetailComponent, isStandalone: true, selector: "app-menu-detail", viewQueries: [{ propertyName: "nzTreeComponent", first: true, predicate: ["nzTree"], descendants: true }, { propertyName: "parentSelect", first: true, predicate: ["parentSelect"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<form nz-form [formGroup]=\"formData\">\n <div nz-flex nzJustify=\"end\">\n <div nz-flex [nzGap]=\"'small'\">\n <button-save (click)=\"save()\"></button-save>\n <button-delete *ngIf=\"item.App_Role_Id\" (click)=\"delete()\"></button-delete>\n <button-back (click)=\"goto('/admin/role')\"></button-back>\n </div>\n </div>\n\n <nz-divider></nz-divider>\n\n <div nz-row [nzGutter]=\"[32, 0]\">\n <div nz-col [nzMd]=\"12\" [nzSm]=\"24\">\n <nz-form-item>\n <nz-form-label [nzSpan]=\"8\" nzFor=\"Code\" nzLabelAlign=\"left\" nzNoColon=\"true\" nzRequired> M\u00E3 </nz-form-label>\n <nz-form-control [nzSpan]=\"16\" [nzErrorTip]=\"'REQUIRED_FIELD' | translate\">\n <input nz-input formControlName=\"Code\" id=\"Code\" />\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSpan]=\"8\" nzFor=\"Name\" nzLabelAlign=\"left\" nzNoColon=\"true\" nzRequired> T\u00EAn </nz-form-label>\n <nz-form-control [nzSpan]=\"16\" [nzErrorTip]=\"'REQUIRED_FIELD' | translate\">\n <input nz-input formControlName=\"Name\" id=\"Name\" />\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSpan]=\"8\" nzFor=\"Description\" nzLabelAlign=\"left\" nzNoColon=\"true\"> M\u00F4 t\u1EA3 </nz-form-label>\n <nz-form-control [nzSpan]=\"16\">\n <textarea nz-input formControlName=\"Description\" id=\"Description\"></textarea>\n </nz-form-control>\n </nz-form-item>\n <div nz-row>\n <div nz-col [nzSpan]=\"8\"></div>\n <div nz-col [nzSpan]=\"16\">\n <label nz-checkbox formControlName=\"IsActive\">Active</label>\n </div>\n </div>\n </div>\n\n <div nz-col [nzSpan]=\"12\">\n <nz-tabset nzType=\"card\" nzSize=\"small\">\n <nz-tab nzTitle=\"Menu\">\n <h3>Ph\u00E2n quy\u1EC1n Menu</h3>\n\n <nz-tree\n #nzTree\n [nzData]=\"nodes\"\n nzCheckable\n nzMultiple\n nzBlockNode\n [nzTreeTemplate]=\"nzTreeTemplate\"\n [(nzCheckedKeys)]=\"checkedKeys\"\n (nzCheckBoxChange)=\"onTreeCheckBoxChange($event)\"\n ></nz-tree>\n\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div style=\"display: flex; justify-content: space-between; align-items: center; width: 100%\">\n <span class=\"custom-node-name\">{{ node.title }}</span>\n\n <div style=\"display: flex; gap: 4px\" (click)=\"$event.stopPropagation()\">\n <label\n nz-checkbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"origin.canCreate\"\n [nzIndeterminate]=\"origin.isCreateIndeterminate\"\n (ngModelChange)=\"onPermissionChange(node, 'create')\"\n >\n C\n </label>\n <label\n nz-checkbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"origin.canUpdate\"\n [nzIndeterminate]=\"origin.isUpdateIndeterminate\"\n (ngModelChange)=\"onPermissionChange(node, 'update')\"\n >\n U\n </label>\n <label\n nz-checkbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"origin.canDelete\"\n [nzIndeterminate]=\"origin.isDeleteIndeterminate\"\n (ngModelChange)=\"onPermissionChange(node, 'delete')\"\n >\n D\n </label>\n </div>\n </div>\n </ng-template>\n </nz-tab>\n <nz-tab nzTitle=\"User\">\n <div style=\"padding: 8px\">\n <h3 style=\"margin-bottom: 16px\">Danh s\u00E1ch User trong Role</h3>\n\n <div nz-flex [nzJustify]=\"'space-between'\" [nzAlign]=\"'center'\" style=\"margin-bottom: 12px\">\n <span style=\"font-weight: 500\">Users ({{ lstUserInRole.length }})</span>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"openAddUserModal()\">\n <span nz-icon nzType=\"plus\"></span>\n Th\u00EAm User\n </button>\n </div>\n\n <div style=\"max-height: 450px; overflow-y: auto\">\n <nz-table\n #userTable\n [nzData]=\"lstUserInRole\"\n [nzSize]=\"'small'\"\n [nzShowPagination]=\"lstUserInRole.length > 20\"\n [nzPageSize]=\"20\"\n >\n <thead>\n <tr>\n <th nzWidth=\"40px\">STT</th>\n <th>User</th>\n <th nzWidth=\"50px\" nzAlign=\"center\"></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of userTable.data; let i = index\">\n <td>{{ i + 1 }}</td>\n <td>\n <div style=\"font-weight: 500\">{{ item.UserName }}</div>\n <div style=\"font-size: 12px; color: #888\">{{ item.FullName }}</div>\n <div *ngIf=\"item.Email\" style=\"font-size: 11px; color: #aaa\">{{ item.Email }}</div>\n </td>\n <td nzAlign=\"center\">\n <button\n nz-button\n nzType=\"link\"\n nzDanger\n nzSize=\"small\"\n nz-popconfirm\n nzPopconfirmTitle=\"X\u00F3a User n\u00E0y?\"\n (nzOnConfirm)=\"deleteUserFromRole(item)\"\n >\n <span nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\n </button>\n </td>\n </tr>\n </tbody>\n </nz-table>\n </div>\n </div>\n </nz-tab>\n </nz-tabset>\n </div>\n </div>\n</form>\n\n<!-- Modal ch\u1ECDn User -->\n<nz-modal\n [(nzVisible)]=\"isAddUserModalVisible\"\n nzTitle=\"Th\u00EAm User v\u00E0o Role\"\n [nzWidth]=\"700\"\n (nzOnCancel)=\"closeAddUserModal()\"\n (nzOnOk)=\"addUsersToRole()\"\n nzOkText=\"Th\u00EAm\"\n nzCancelText=\"H\u1EE7y\"\n>\n <ng-container *nzModalContent>\n <!-- Search box -->\n <nz-input-group [nzPrefix]=\"prefixIconSearch\" style=\"margin-bottom: 16px\">\n <input\n type=\"text\"\n nz-input\n placeholder=\"T\u00ECm ki\u1EBFm User...\"\n [(ngModel)]=\"searchUserText\"\n (ngModelChange)=\"filterAvailableUsers()\"\n />\n </nz-input-group>\n <ng-template #prefixIconSearch>\n <span nz-icon nzType=\"search\"></span>\n </ng-template>\n\n <nz-table\n #addUserTable\n [nzData]=\"lstFilteredUser\"\n [nzSize]=\"'small'\"\n [nzShowPagination]=\"true\"\n [nzPageSize]=\"10\"\n [nzLoading]=\"isLoadingAvailableUsers\"\n >\n <thead>\n <tr>\n <th\n nzWidth=\"60px\"\n nzShowCheckbox\n [(nzChecked)]=\"isAllUserChecked\"\n (nzCheckedChange)=\"onAllUserChecked($event)\"\n [nzIndeterminate]=\"isUserIndeterminate\"\n ></th>\n <th nzWidth=\"150px\">Username</th>\n <th>T\u00EAn \u0111\u1EA7y \u0111\u1EE7</th>\n <th>Email</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of addUserTable.data\">\n <td>\n <label nz-checkbox [(ngModel)]=\"item.checked\" (ngModelChange)=\"onUserChecked(item, $event)\"></label>\n </td>\n <td>{{ item.UserName }}</td>\n <td>{{ item.FullName }}</td>\n <td>{{ item.Email }}</td>\n </tr>\n </tbody>\n </nz-table>\n </ng-container>\n</nz-modal>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzFormModule }, { kind: "directive", type: i2$1.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i2$1.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: i5.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzForm"] }, { kind: "component", type: i5.NzFormItemComponent, selector: "nz-form-item", exportAs: ["nzFormItem"] }, { kind: "component", type: i5.NzFormLabelComponent, selector: "nz-form-label", inputs: ["nzFor", "nzRequired", "nzNoColon", "nzTooltipTitle", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzFormLabel"] }, { kind: "component", type: i5.NzFormControlComponent, selector: "nz-form-control", inputs: ["nzSuccessTip", "nzWarningTip", "nzErrorTip", "nzValidatingTip", "nzExtra", "nzAutoTips", "nzDisableAutoTips", "nzHasFeedback", "nzValidateStatus"], exportAs: ["nzFormControl"] }, { kind: "ngmodule", type: NzTreeModule }, { kind: "component", type: i1$7.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzExpandedIcon", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzTreeTemplate", "nzBeforeDrop", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckboxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }, { kind: "ngmodule", type: NzFlexModule }, { kind: "directive", type: i3$3.NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }, { kind: "ngmodule", type: NzTabsModule }, { kind: "component", type: i1$6.NzTabSetComponent, selector: "nz-tabset", inputs: ["nzSelectedIndex", "nzTabPosition", "nzTabBarExtraContent", "nzCanDeactivate", "nzAddIcon", "nzTabBarStyle", "nzType", "nzSize", "nzAnimated", "nzTabBarGutter", "nzHideAdd", "nzCentered", "nzHideAll", "nzLinkRouter", "nzLinkExact", "nzDestroyInactiveTabPane"], outputs: ["nzSelectChange", "nzSelectedIndexChange", "nzTabListScroll", "nzClose", "nzAdd"], exportAs: ["nzTabset"] }, { kind: "component", type: i1$6.NzTabComponent, selector: "nz-tab", inputs: ["nzTitle", "nzClosable", "nzCloseIcon", "nzDisabled", "nzForceRender"], outputs: ["nzSelect", "nzDeselect", "nzClick", "nzContextmenu"], exportAs: ["nzTab"] }, { kind: "ngmodule", type: NzGridModule }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i6.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i6.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i6.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i2$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: i3$2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "ngmodule", type: NzCheckboxModule }, { kind: "component", type: i3$1.NzCheckboxComponent, selector: "[nz-checkbox]", inputs: ["nzValue", "nzAutoFocus", "nzDisabled", "nzIndeterminate", "nzChecked", "nzId", "nzName"], outputs: ["nzCheckedChange"], exportAs: ["nzCheckbox"] }, { kind: "ngmodule", type: NzTableModule }, { kind: "component", type: i4.NzTableComponent, selector: "nz-table", inputs: ["nzTableLayout", "nzShowTotal", "nzItemRender", "nzTitle", "nzFooter", "nzNoResult", "nzPageSizeOptions", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualForTrackBy", "nzLoadingDelay", "nzPageIndex", "nzPageSize", "nzTotal", "nzWidthConfig", "nzData", "nzCustomColumn", "nzPaginationPosition", "nzScroll", "noDataVirtualHeight", "nzPaginationType", "nzFrontPagination", "nzTemplateMode", "nzShowPagination", "nzLoading", "nzOuterBordered", "nzLoadingIndicator", "nzBordered", "nzSize", "nzShowSizeChanger", "nzHideOnSinglePage", "nzShowQuickJumper", "nzSimple"], outputs: ["nzPageSizeChange", "nzPageIndexChange", "nzQueryParams", "nzCurrentPageDataChange", "nzCustomColumnChange"], exportAs: ["nzTable"] }, { kind: "directive", type: i4.NzTableCellDirective, selector: "th:not(.nz-disable-th):not([mat-cell]), td:not(.nz-disable-td):not([mat-cell])" }, { kind: "directive", type: i4.NzThMeasureDirective, selector: "th", inputs: ["nzWidth", "colspan", "colSpan", "rowspan", "rowSpan"] }, { kind: "component", type: i4.NzTheadComponent, selector: "thead:not(.ant-table-thead)", outputs: ["nzSortOrderChange"] }, { kind: "component", type: i4.NzTbodyComponent, selector: "tbody" }, { kind: "directive", type: i4.NzTrDirective, selector: "tr:not([mat-row]):not([mat-header-row]):not([nz-table-measure-row]):not([nzExpand]):not([nz-table-fixed-row])" }, { kind: "directive", type: i4.NzCellAlignDirective, selector: "th[nzAlign],td[nzAlign]", inputs: ["nzAlign"] }, { kind: "component", type: i4.NzThSelectionComponent, selector: "th[nzSelections],th[nzChecked],th[nzShowCheckbox],th[nzShowRowSelection]", inputs: ["nzSelections", "nzChecked", "nzDisabled", "nzIndeterminate", "nzLabel", "nzShowCheckbox", "nzShowRowSelection"], outputs: ["nzCheckedChange"] }, { kind: "ngmodule", type: NzModalModule }, { kind: "component", type: i15.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i15.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzPopconfirmModule }, { kind: "directive", type: i9.NzPopconfirmDirective, selector: "[nz-popconfirm]", inputs: ["nzPopconfirmArrowPointAtCenter", "nzPopconfirmTitle", "nzPopconfirmTitleContext", "nz-popconfirm", "nzPopconfirmTrigger", "nzPopconfirmPlacement", "nzPopconfirmOrigin", "nzPopconfirmMouseEnterDelay", "nzPopconfirmMouseLeaveDelay", "nzPopconfirmOverlayClassName", "nzPopconfirmOverlayStyle", "nzPopconfirmVisible", "nzOkText", "nzOkType", "nzOkDisabled", "nzOkDanger", "nzCancelText", "nzBeforeConfirm", "nzIcon", "nzCondition", "nzPopconfirmShowArrow", "nzPopconfirmBackdrop", "nzAutofocus"], outputs: ["nzPopconfirmVisibleChange", "nzOnCancel", "nzOnConfirm"], exportAs: ["nzPopconfirm"] }, { kind: "ngmodule", type: NzEmptyModule }, { kind: "ngmodule", type: NzAlertModule }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzDividerModule }, { kind: "component", type: i17.NzDividerComponent, selector: "nz-divider", inputs: ["nzText", "nzType", "nzOrientation", "nzVariant", "nzDashed", "nzPlain"], exportAs: ["nzDivider"] }, { kind: "component", type: ButtonBack, selector: "button-back", inputs: ["size"] }, { kind: "component", type: ButtonSave, selector: "button-save", inputs: ["size"] }, { kind: "component", type: ButtonDelete, selector: "button-delete", inputs: ["size"] }] });
|
|
7614
7614
|
}
|
|
7615
7615
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: RoleDetailComponent, decorators: [{
|
|
7616
7616
|
type: Component,
|
|
@@ -9885,7 +9885,7 @@ class DocTemplate extends BaseComponent {
|
|
|
9885
9885
|
return path.substring(0, path.lastIndexOf('\\'));
|
|
9886
9886
|
}
|
|
9887
9887
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DocTemplate, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
9888
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: DocTemplate, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "myTree", first: true, predicate: ["myTree"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"action-bar\" style=\"margin-bottom: 16px; display: flex; gap: 8px\">\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"getdata()\"><nz-icon nzType=\"reload\" /> Reload</button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"modalVisible = true\">\n <nz-icon nzType=\"folder-add\" /> New folder\n </button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"triggerUpload()\">\n <nz-icon nzType=\"upload\" /> Upload\n </button>\n</div>\n\n<input type=\"file\" id=\"fileUpload\" style=\"display: none\" (change)=\"onFileSelected($event)\" />\n\n<nz-tree\n #myTree\n nzBlockNode\n [nzData]=\"nodes\"\n (nzClick)=\"activeNode($event)\"\n (nzContextMenu)=\"contextMenu($event, menu)\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n></nz-tree>\n\n<ng-template #nzTreeTemplate let-node>\n <span class=\"custom-node\" (contextmenu)=\"selectedNode = node\">\n <nz-icon [nzType]=\"node.isLeaf ? 'file' : node.isExpanded ? 'folder-open' : 'folder'\" />\n <span class=\"node-title\">{{ node.title }}</span>\n </span>\n</ng-template>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu>\n @if (!selectedNode?.isLeaf) {\n <li nz-menu-item (click)=\"triggerUpload()\"><nz-icon nzType=\"upload\" /> Upload</li>\n <li nz-menu-item (click)=\"modalVisible = true\"><nz-icon nzType=\"folder-add\" /> New folder</li>\n }\n\n @if (selectedNode?.isLeaf) {\n <li nz-menu-item (click)=\"download()\"><nz-icon nzType=\"download\" /> Download</li>\n }\n\n <li nz-menu-divider></li>\n <li nz-menu-item nzDanger (click)=\"delete()\">\n <nz-icon nzType=\"delete\" /> X\u00F3a {{ selectedNode?.isLeaf ? \"File\" : \"Folder\" }}\n </li>\n </ul>\n</nz-dropdown-menu>\n\n<nz-modal\n nzTitle=\"New folder\"\n [nzMaskClosable]=\"false\"\n [(nzVisible)]=\"modalVisible\"\n (nzOnCancel)=\"modalVisible = false\"\n (nzOnOk)=\"addFolder()\"\n>\n <ng-container *nzModalContent>\n <extend-input [label]=\"'Name'\" [(_ngModel)]=\"newFolderName\"></extend-input>\n </ng-container>\n</nz-modal>\n", styles: ["@charset \"UTF-8\";.custom-node{cursor:pointer;display:flex;align-items:center}.custom-node nz-icon{margin-right:8px;font-size:16px;color:#1890ff}.custom-node .file-name,.custom-node .folder-name{font-weight:500;margin-right:12px}.custom-node .file-desc,.custom-node .folder-desc{font-size:12px;color:#999}.custom-node .anticon-file{color:#595959}\n"], dependencies: [{ kind: "ngmodule", type: NzTreeModule }, { kind: "component", type:
|
|
9888
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: DocTemplate, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "myTree", first: true, predicate: ["myTree"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"action-bar\" style=\"margin-bottom: 16px; display: flex; gap: 8px\">\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"getdata()\"><nz-icon nzType=\"reload\" /> Reload</button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"modalVisible = true\">\n <nz-icon nzType=\"folder-add\" /> New folder\n </button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"triggerUpload()\">\n <nz-icon nzType=\"upload\" /> Upload\n </button>\n</div>\n\n<input type=\"file\" id=\"fileUpload\" style=\"display: none\" (change)=\"onFileSelected($event)\" />\n\n<nz-tree\n #myTree\n nzBlockNode\n [nzData]=\"nodes\"\n (nzClick)=\"activeNode($event)\"\n (nzContextMenu)=\"contextMenu($event, menu)\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n></nz-tree>\n\n<ng-template #nzTreeTemplate let-node>\n <span class=\"custom-node\" (contextmenu)=\"selectedNode = node\">\n <nz-icon [nzType]=\"node.isLeaf ? 'file' : node.isExpanded ? 'folder-open' : 'folder'\" />\n <span class=\"node-title\">{{ node.title }}</span>\n </span>\n</ng-template>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu>\n @if (!selectedNode?.isLeaf) {\n <li nz-menu-item (click)=\"triggerUpload()\"><nz-icon nzType=\"upload\" /> Upload</li>\n <li nz-menu-item (click)=\"modalVisible = true\"><nz-icon nzType=\"folder-add\" /> New folder</li>\n }\n\n @if (selectedNode?.isLeaf) {\n <li nz-menu-item (click)=\"download()\"><nz-icon nzType=\"download\" /> Download</li>\n }\n\n <li nz-menu-divider></li>\n <li nz-menu-item nzDanger (click)=\"delete()\">\n <nz-icon nzType=\"delete\" /> X\u00F3a {{ selectedNode?.isLeaf ? \"File\" : \"Folder\" }}\n </li>\n </ul>\n</nz-dropdown-menu>\n\n<nz-modal\n nzTitle=\"New folder\"\n [nzMaskClosable]=\"false\"\n [(nzVisible)]=\"modalVisible\"\n (nzOnCancel)=\"modalVisible = false\"\n (nzOnOk)=\"addFolder()\"\n>\n <ng-container *nzModalContent>\n <extend-input [label]=\"'Name'\" [(_ngModel)]=\"newFolderName\"></extend-input>\n </ng-container>\n</nz-modal>\n", styles: ["@charset \"UTF-8\";.custom-node{cursor:pointer;display:flex;align-items:center}.custom-node nz-icon{margin-right:8px;font-size:16px;color:#1890ff}.custom-node .file-name,.custom-node .folder-name{font-weight:500;margin-right:12px}.custom-node .file-desc,.custom-node .folder-desc{font-size:12px;color:#999}.custom-node .anticon-file{color:#595959}\n"], dependencies: [{ kind: "ngmodule", type: NzTreeModule }, { kind: "component", type: i1$7.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzExpandedIcon", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzTreeTemplate", "nzBeforeDrop", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckboxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }, { kind: "ngmodule", type: NzModalModule }, { kind: "component", type: i15.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i15.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i4$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i4$2.NzMenuDividerDirective, selector: "[nz-menu-divider]", exportAs: ["nzMenuDivider"] }, { kind: "component", type: i5$3.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "component", type: ExtendInput, selector: "extend-input", inputs: ["label", "floatingLabel", "placeHolder", "labelAlign", "inputClass", "labelSpan", "labelFlex", "inputFlex", "showClear", "disabled", "readOnly", "required", "noBottom", "selectModeType", "autocomplete", "autofocus", "inputWidth", "inputHeight", "borderBottomOnly", "displayInline", "size", "displayField", "valueField", "formData", "controlName", "_ngModel", "isSubmited"], outputs: ["_ngModelChange", "onclickClearIcon", "onenter"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i2$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: i3$2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }] });
|
|
9889
9889
|
}
|
|
9890
9890
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DocTemplate, decorators: [{
|
|
9891
9891
|
type: Component,
|
|
@@ -10029,7 +10029,7 @@ class LogServerComponent extends BaseComponent {
|
|
|
10029
10029
|
}, (err) => this.handleError(err));
|
|
10030
10030
|
}
|
|
10031
10031
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: LogServerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
10032
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: LogServerComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"btn-wrapper\" nz-flex [nzGap]=\"'small'\" [nzWrap]=\"'wrap'\">\n @for (file of lstLogFile; track $index) {\n <div style=\"width: 250px\">\n <button nz-button nzType=\"default\" nz-tooltip=\"{{ file }}\">\n <nz-icon nzType=\"download\" (click)=\"dowloadLog(file.fileName)\" />\n </button>\n <a class=\"link-detail\" [routerLink]=\"[file.fileName]\">{{ file.fileName }} ({{ file.fileSize }})</a>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: NzGridModule }, { kind: "ngmodule", type: NzFlexModule }, { kind: "directive", type: i3$3.NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i8.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$
|
|
10032
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: LogServerComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"btn-wrapper\" nz-flex [nzGap]=\"'small'\" [nzWrap]=\"'wrap'\">\n @for (file of lstLogFile; track $index) {\n <div style=\"width: 250px\">\n <button nz-button nzType=\"default\" nz-tooltip=\"{{ file }}\">\n <nz-icon nzType=\"download\" (click)=\"dowloadLog(file.fileName)\" />\n </button>\n <a class=\"link-detail\" [routerLink]=\"[file.fileName]\">{{ file.fileName }} ({{ file.fileSize }})</a>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: NzGridModule }, { kind: "ngmodule", type: NzFlexModule }, { kind: "directive", type: i3$3.NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i8.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i2$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: i3$2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }] });
|
|
10033
10033
|
}
|
|
10034
10034
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: LogServerComponent, decorators: [{
|
|
10035
10035
|
type: Component,
|
|
@@ -10948,7 +10948,7 @@ class SynologyComponent extends BaseComponent {
|
|
|
10948
10948
|
});
|
|
10949
10949
|
}
|
|
10950
10950
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: SynologyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
10951
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.7", type: SynologyComponent, isStandalone: true, selector: "ng-component", providers: [DatePipe], usesInheritance: true, ngImport: i0, template: "<div nz-row nzGutter=\"32\" class=\"mb-3\">\n <div nz-col nzSpan=\"16\" style=\"display: flex; align-items: center; gap: 8px\">\n <strong>Target: </strong>\n <span class=\"text-primary\">{{ currentPath }}</span>\n\n <icon-copy [textToCopy]=\"currentPath\" [tooltip]=\"'Copy \u0111\u01B0\u1EDDng d\u1EABn'\"></icon-copy>\n </div>\n\n <div nz-col nzSpan=\"8\" style=\"display: flex; justify-content: flex-end; gap: 8px\">\n <input type=\"file\" #fileInput style=\"display: none\" (change)=\"onFileSelected($event)\" />\n <button nz-button nzType=\"primary\" (click)=\"refreshTree()\" nz-tooltip=\"Reload All\" nzTooltipPlacement=\"bottom\">\n <i nz-icon nzType=\"reload\"></i>\n </button>\n <button\n nz-button\n nzType=\"primary\"\n (click)=\"fileInput.click()\"\n nz-tooltip=\"Upload to Target\"\n nzTooltipPlacement=\"bottom\"\n >\n <i nz-icon nzType=\"upload\"></i>\n </button>\n <button\n nz-button\n nzType=\"primary\"\n (click)=\"createFolder()\"\n nz-tooltip=\"New Folder in Target\"\n nzTooltipPlacement=\"bottomRight\"\n >\n <i nz-icon nzType=\"folder-add\"></i>\n </button>\n </div>\n</div>\n\n<div\n style=\"\n border: 1px solid #f0f0f0;\n border-radius: 4px;\n padding: 12px;\n background: #fff;\n min-height: 400px;\n position: relative;\n \"\n>\n <!-- Thanh ti\u00EAu \u0111\u1EC1 (Gi\u1EA3 l\u1EADp Header c\u1EE7a b\u1EA3ng) -->\n <div\n style=\"\n display: flex;\n justify-content: space-between;\n border-bottom: 2px solid #f0f0f0;\n padding-bottom: 8px;\n margin-bottom: 8px;\n font-weight: bold;\n color: #5c5c5c;\n \"\n >\n <div>Name</div>\n <div style=\"display: flex; gap: 16px\">\n <div style=\"width: 100px; text-align: right\">Size</div>\n <div style=\"width: 150px; text-align: right\">Modified Date</div>\n <div style=\"width: 130px; text-align: right; padding-right: 8px\">Action</div>\n </div>\n </div>\n\n <nz-spin [nzSpinning]=\"isLoading\">\n <!-- nzBlockNode gi\u00FAp d\u00F2ng c\u1EE7a c\u00E2y tr\u1EA3i d\u00E0i 100% width -->\n <!-- nzAsyncData k\u00EDch ho\u1EA1t c\u01A1 ch\u1EBF t\u1EA3i b\u1EA5t \u0111\u1ED3ng b\u1ED9 khi b\u1EA5m d\u1EA5u c\u1ED9ng -->\n <nz-tree\n [nzData]=\"treeNodes\"\n nzAsyncData\n nzBlockNode\n (nzExpandChange)=\"onExpandChange($event)\"\n (nzClick)=\"onNodeClick($event)\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n ></nz-tree>\n </nz-spin>\n</div>\n\n<ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div\n class=\"tree-node-row\"\n style=\"display: flex; justify-content: space-between; align-items: center; width: 100%; padding: 4px 0\"\n (dblclick)=\"onNodeDblClick(node, $event)\"\n >\n <div\n style=\"\n display: flex;\n align-items: center;\n gap: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n \"\n >\n <i\n nz-icon\n [nzType]=\"origin.originData.isdir ? (node.isExpanded ? 'folder-open' : 'folder') : 'file'\"\n [nzTheme]=\"origin.originData.isdir ? 'fill' : 'outline'\"\n [style.color]=\"origin.originData.isdir ? '#faad14' : '#1890ff'\"\n style=\"font-size: 16px\"\n ></i>\n <span [class.text-primary]=\"selectedNode?.key === node.key\" style=\"font-weight: 500\">\n {{ node.title }}\n </span>\n </div>\n\n <div style=\"display: flex; gap: 16px; align-items: center\">\n <!-- Size -->\n <div style=\"width: 100px; text-align: right; color: #8c8c8c\">\n {{ origin.originData.isdir ? \"-\" : formatBytes(origin.originData.additional?.size) }}\n </div>\n\n <!-- Date -->\n <div style=\"width: 150px; text-align: right; color: #8c8c8c\">\n {{ formatDate(origin.originData.additional?.time?.mtime) }}\n </div>\n\n <!-- N\u00FAt ch\u1EE9c n\u0103ng (Action) -->\n <div style=\"width: 130px; display: flex; justify-content: flex-end; gap: 2px\">\n <button\n *ngIf=\"!origin.originData.isdir\"\n nz-button\n nzType=\"link\"\n nzSize=\"small\"\n (click)=\"downloadFile(origin.originData); $event.stopPropagation()\"\n nz-tooltip=\"Download\"\n >\n <nz-icon nzType=\"download\" nzTheme=\"outline\"></nz-icon>\n </button>\n\n <button\n nz-button\n nzType=\"link\"\n nzSize=\"small\"\n (click)=\"getShareLink(origin.originData); $event.stopPropagation()\"\n nz-tooltip=\"Get Share Link\"\n >\n <nz-icon nzType=\"link\" nzTheme=\"outline\"></nz-icon>\n </button>\n\n <button\n nz-button\n nzType=\"link\"\n nzSize=\"small\"\n (click)=\"openPermissionModal(origin.originData); $event.stopPropagation()\"\n nz-tooltip=\"Permission\"\n >\n <nz-icon nzType=\"safety-certificate\" nzTheme=\"outline\" />\n </button>\n\n <button\n nz-button\n nzType=\"link\"\n nzSize=\"small\"\n (click)=\"renameItem(origin.originData, node); $event.stopPropagation()\"\n nz-tooltip=\"Rename\"\n >\n <nz-icon nzType=\"retweet\" nzTheme=\"outline\" />\n </button>\n\n <button\n nz-button\n nzType=\"link\"\n nzDanger\n nzSize=\"small\"\n (click)=\"deleteItem(origin.originData, node); $event.stopPropagation()\"\n nz-tooltip=\"Delete\"\n >\n <nz-icon nzType=\"delete\" nzTheme=\"outline\"></nz-icon>\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n\n<nz-modal\n [(nzVisible)]=\"isPermissionModalVisible\"\n [nzTitle]=\"'Properties - Permission : ' + (selectedItemForPerm?.name || '')\"\n (nzOnCancel)=\"isPermissionModalVisible = false\"\n [nzWidth]=\"800\"\n [nzFooter]=\"modalFooter\"\n>\n <ng-container *nzModalContent>\n <nz-table\n #permTable\n [nzData]=\"currentPermissions\"\n [nzLoading]=\"isPermLoading\"\n nzSize=\"small\"\n nzBordered\n [nzFrontPagination]=\"false\"\n >\n <thead>\n <tr>\n <th nzWidth=\"40%\">User or group</th>\n <th nzWidth=\"20%\">Type</th>\n <th nzWidth=\"30%\">Permission</th>\n <th nzWidth=\"10%\" nzAlign=\"center\">Action</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rule of permTable.data; let i = index\">\n <td>\n <nz-icon nzType=\"user\" nzTheme=\"outline\" class=\"mr-2\"></nz-icon>\n {{ rule.owner_name }}\n </td>\n <td>\n {{ rule.permission_type === \"allow\" ? \"Allow\" : \"Deny\" }}\n </td>\n <td>\n {{ getPermissionText(rule) }}\n </td>\n <td nzAlign=\"center\">\n <button nz-button nzType=\"text\" nzSize=\"small\" nzDanger (click)=\"removeRule(i)\">\n <nz-icon nzType=\"close\" />\n </button>\n </td>\n </tr>\n </tbody>\n </nz-table>\n\n <div class=\"mt-3\">\n <label nz-checkbox [(ngModel)]=\"applyToSubfolders\">Apply to this folder, sub-folders and files</label>\n </div>\n </ng-container>\n\n <ng-template #modalFooter>\n <button nz-button nzType=\"default\" (click)=\"isPermissionModalVisible = false\">Cancel</button>\n <button nz-button nzType=\"primary\" (click)=\"savePermissions()\" [nzLoading]=\"isPermSaving\">Save</button>\n </ng-template>\n</nz-modal>\n\n<nz-modal\n [(nzVisible)]=\"isPreviewModalVisible\"\n [nzTitle]=\"previewTitle\"\n (nzOnCancel)=\"closePreviewModal()\"\n [nzWidth]=\"'80vw'\"\n [nzBodyStyle]=\"{ 'min-height': '70vh' }\"\n [nzFooter]=\"null\"\n>\n <ng-container *nzModalContent>\n <nz-spin [nzSpinning]=\"isPreviewLoading\">\n <extend-view-file-content\n [previewType]=\"previewType\"\n [previewContent]=\"previewContent\"\n ></extend-view-file-content>\n </nz-spin>\n </ng-container>\n</nz-modal>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzGridModule }, { kind: "directive", type: i2$1.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i2$1.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i2$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: i3$2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzFlexModule }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i8.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "ngmodule", type: NzModalModule }, { kind: "component", type: i15.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i15.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzTreeModule }, { kind: "component", type: i10.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzExpandedIcon", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzTreeTemplate", "nzBeforeDrop", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckboxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }, { kind: "ngmodule", type: NzSpinModule }, { kind: "component", type: i2$3.NzSpinComponent, selector: "nz-spin", inputs: ["nzIndicator", "nzSize", "nzTip", "nzDelay", "nzSimple", "nzSpinning"], exportAs: ["nzSpin"] }, { kind: "ngmodule", type: NzTableModule }, { kind: "component", type: i4.NzTableComponent, selector: "nz-table", inputs: ["nzTableLayout", "nzShowTotal", "nzItemRender", "nzTitle", "nzFooter", "nzNoResult", "nzPageSizeOptions", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualForTrackBy", "nzLoadingDelay", "nzPageIndex", "nzPageSize", "nzTotal", "nzWidthConfig", "nzData", "nzCustomColumn", "nzPaginationPosition", "nzScroll", "noDataVirtualHeight", "nzPaginationType", "nzFrontPagination", "nzTemplateMode", "nzShowPagination", "nzLoading", "nzOuterBordered", "nzLoadingIndicator", "nzBordered", "nzSize", "nzShowSizeChanger", "nzHideOnSinglePage", "nzShowQuickJumper", "nzSimple"], outputs: ["nzPageSizeChange", "nzPageIndexChange", "nzQueryParams", "nzCurrentPageDataChange", "nzCustomColumnChange"], exportAs: ["nzTable"] }, { kind: "directive", type: i4.NzTableCellDirective, selector: "th:not(.nz-disable-th):not([mat-cell]), td:not(.nz-disable-td):not([mat-cell])" }, { kind: "directive", type: i4.NzThMeasureDirective, selector: "th", inputs: ["nzWidth", "colspan", "colSpan", "rowspan", "rowSpan"] }, { kind: "component", type: i4.NzTheadComponent, selector: "thead:not(.ant-table-thead)", outputs: ["nzSortOrderChange"] }, { kind: "component", type: i4.NzTbodyComponent, selector: "tbody" }, { kind: "directive", type: i4.NzTrDirective, selector: "tr:not([mat-row]):not([mat-header-row]):not([nz-table-measure-row]):not([nzExpand]):not([nz-table-fixed-row])" }, { kind: "directive", type: i4.NzCellAlignDirective, selector: "th[nzAlign],td[nzAlign]", inputs: ["nzAlign"] }, { kind: "component", type: IconCopy, selector: "icon-copy", inputs: ["textToCopy", "tooltip", "size"] }, { kind: "component", type: ExtendViewFileContentComponent, selector: "extend-view-file-content", inputs: ["previewType", "previewContent"] }] });
|
|
10951
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.7", type: SynologyComponent, isStandalone: true, selector: "ng-component", providers: [DatePipe], usesInheritance: true, ngImport: i0, template: "<div nz-row nzGutter=\"32\" class=\"mb-3\">\n <div nz-col nzSpan=\"16\" style=\"display: flex; align-items: center; gap: 8px\">\n <strong>Target: </strong>\n <span class=\"text-primary\">{{ currentPath }}</span>\n\n <icon-copy [textToCopy]=\"currentPath\" [tooltip]=\"'Copy \u0111\u01B0\u1EDDng d\u1EABn'\"></icon-copy>\n </div>\n\n <div nz-col nzSpan=\"8\" style=\"display: flex; justify-content: flex-end; gap: 8px\">\n <input type=\"file\" #fileInput style=\"display: none\" (change)=\"onFileSelected($event)\" />\n <button nz-button nzType=\"primary\" (click)=\"refreshTree()\" nz-tooltip=\"Reload All\" nzTooltipPlacement=\"bottom\">\n <i nz-icon nzType=\"reload\"></i>\n </button>\n <button\n nz-button\n nzType=\"primary\"\n (click)=\"fileInput.click()\"\n nz-tooltip=\"Upload to Target\"\n nzTooltipPlacement=\"bottom\"\n >\n <i nz-icon nzType=\"upload\"></i>\n </button>\n <button\n nz-button\n nzType=\"primary\"\n (click)=\"createFolder()\"\n nz-tooltip=\"New Folder in Target\"\n nzTooltipPlacement=\"bottomRight\"\n >\n <i nz-icon nzType=\"folder-add\"></i>\n </button>\n </div>\n</div>\n\n<div\n style=\"\n border: 1px solid #f0f0f0;\n border-radius: 4px;\n padding: 12px;\n background: #fff;\n min-height: 400px;\n position: relative;\n \"\n>\n <!-- Thanh ti\u00EAu \u0111\u1EC1 (Gi\u1EA3 l\u1EADp Header c\u1EE7a b\u1EA3ng) -->\n <div\n style=\"\n display: flex;\n justify-content: space-between;\n border-bottom: 2px solid #f0f0f0;\n padding-bottom: 8px;\n margin-bottom: 8px;\n font-weight: bold;\n color: #5c5c5c;\n \"\n >\n <div>Name</div>\n <div style=\"display: flex; gap: 16px\">\n <div style=\"width: 100px; text-align: right\">Size</div>\n <div style=\"width: 150px; text-align: right\">Modified Date</div>\n <div style=\"width: 130px; text-align: right; padding-right: 8px\">Action</div>\n </div>\n </div>\n\n <nz-spin [nzSpinning]=\"isLoading\">\n <!-- nzBlockNode gi\u00FAp d\u00F2ng c\u1EE7a c\u00E2y tr\u1EA3i d\u00E0i 100% width -->\n <!-- nzAsyncData k\u00EDch ho\u1EA1t c\u01A1 ch\u1EBF t\u1EA3i b\u1EA5t \u0111\u1ED3ng b\u1ED9 khi b\u1EA5m d\u1EA5u c\u1ED9ng -->\n <nz-tree\n [nzData]=\"treeNodes\"\n nzAsyncData\n nzBlockNode\n (nzExpandChange)=\"onExpandChange($event)\"\n (nzClick)=\"onNodeClick($event)\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n ></nz-tree>\n </nz-spin>\n</div>\n\n<ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div\n class=\"tree-node-row\"\n style=\"display: flex; justify-content: space-between; align-items: center; width: 100%; padding: 4px 0\"\n (dblclick)=\"onNodeDblClick(node, $event)\"\n >\n <div\n style=\"\n display: flex;\n align-items: center;\n gap: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n \"\n >\n <i\n nz-icon\n [nzType]=\"origin.originData.isdir ? (node.isExpanded ? 'folder-open' : 'folder') : 'file'\"\n [nzTheme]=\"origin.originData.isdir ? 'fill' : 'outline'\"\n [style.color]=\"origin.originData.isdir ? '#faad14' : '#1890ff'\"\n style=\"font-size: 16px\"\n ></i>\n <span [class.text-primary]=\"selectedNode?.key === node.key\" style=\"font-weight: 500\">\n {{ node.title }}\n </span>\n </div>\n\n <div style=\"display: flex; gap: 16px; align-items: center\">\n <!-- Size -->\n <div style=\"width: 100px; text-align: right; color: #8c8c8c\">\n {{ origin.originData.isdir ? \"-\" : formatBytes(origin.originData.additional?.size) }}\n </div>\n\n <!-- Date -->\n <div style=\"width: 150px; text-align: right; color: #8c8c8c\">\n {{ formatDate(origin.originData.additional?.time?.mtime) }}\n </div>\n\n <!-- N\u00FAt ch\u1EE9c n\u0103ng (Action) -->\n <div style=\"width: 130px; display: flex; justify-content: flex-end; gap: 2px\">\n <button\n *ngIf=\"!origin.originData.isdir\"\n nz-button\n nzType=\"link\"\n nzSize=\"small\"\n (click)=\"downloadFile(origin.originData); $event.stopPropagation()\"\n nz-tooltip=\"Download\"\n >\n <nz-icon nzType=\"download\" nzTheme=\"outline\"></nz-icon>\n </button>\n\n <button\n nz-button\n nzType=\"link\"\n nzSize=\"small\"\n (click)=\"getShareLink(origin.originData); $event.stopPropagation()\"\n nz-tooltip=\"Get Share Link\"\n >\n <nz-icon nzType=\"link\" nzTheme=\"outline\"></nz-icon>\n </button>\n\n <button\n nz-button\n nzType=\"link\"\n nzSize=\"small\"\n (click)=\"openPermissionModal(origin.originData); $event.stopPropagation()\"\n nz-tooltip=\"Permission\"\n >\n <nz-icon nzType=\"safety-certificate\" nzTheme=\"outline\" />\n </button>\n\n <button\n nz-button\n nzType=\"link\"\n nzSize=\"small\"\n (click)=\"renameItem(origin.originData, node); $event.stopPropagation()\"\n nz-tooltip=\"Rename\"\n >\n <nz-icon nzType=\"retweet\" nzTheme=\"outline\" />\n </button>\n\n <button\n nz-button\n nzType=\"link\"\n nzDanger\n nzSize=\"small\"\n (click)=\"deleteItem(origin.originData, node); $event.stopPropagation()\"\n nz-tooltip=\"Delete\"\n >\n <nz-icon nzType=\"delete\" nzTheme=\"outline\"></nz-icon>\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n\n<nz-modal\n [(nzVisible)]=\"isPermissionModalVisible\"\n [nzTitle]=\"'Properties - Permission : ' + (selectedItemForPerm?.name || '')\"\n (nzOnCancel)=\"isPermissionModalVisible = false\"\n [nzWidth]=\"800\"\n [nzFooter]=\"modalFooter\"\n>\n <ng-container *nzModalContent>\n <nz-table\n #permTable\n [nzData]=\"currentPermissions\"\n [nzLoading]=\"isPermLoading\"\n nzSize=\"small\"\n nzBordered\n [nzFrontPagination]=\"false\"\n >\n <thead>\n <tr>\n <th nzWidth=\"40%\">User or group</th>\n <th nzWidth=\"20%\">Type</th>\n <th nzWidth=\"30%\">Permission</th>\n <th nzWidth=\"10%\" nzAlign=\"center\">Action</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rule of permTable.data; let i = index\">\n <td>\n <nz-icon nzType=\"user\" nzTheme=\"outline\" class=\"mr-2\"></nz-icon>\n {{ rule.owner_name }}\n </td>\n <td>\n {{ rule.permission_type === \"allow\" ? \"Allow\" : \"Deny\" }}\n </td>\n <td>\n {{ getPermissionText(rule) }}\n </td>\n <td nzAlign=\"center\">\n <button nz-button nzType=\"text\" nzSize=\"small\" nzDanger (click)=\"removeRule(i)\">\n <nz-icon nzType=\"close\" />\n </button>\n </td>\n </tr>\n </tbody>\n </nz-table>\n\n <div class=\"mt-3\">\n <label nz-checkbox [(ngModel)]=\"applyToSubfolders\">Apply to this folder, sub-folders and files</label>\n </div>\n </ng-container>\n\n <ng-template #modalFooter>\n <button nz-button nzType=\"default\" (click)=\"isPermissionModalVisible = false\">Cancel</button>\n <button nz-button nzType=\"primary\" (click)=\"savePermissions()\" [nzLoading]=\"isPermSaving\">Save</button>\n </ng-template>\n</nz-modal>\n\n<nz-modal\n [(nzVisible)]=\"isPreviewModalVisible\"\n [nzTitle]=\"previewTitle\"\n (nzOnCancel)=\"closePreviewModal()\"\n [nzWidth]=\"'80vw'\"\n [nzBodyStyle]=\"{ 'min-height': '70vh' }\"\n [nzFooter]=\"null\"\n>\n <ng-container *nzModalContent>\n <nz-spin [nzSpinning]=\"isPreviewLoading\">\n <extend-view-file-content\n [previewType]=\"previewType\"\n [previewContent]=\"previewContent\"\n ></extend-view-file-content>\n </nz-spin>\n </ng-container>\n</nz-modal>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzGridModule }, { kind: "directive", type: i2$1.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i2$1.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i2$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: i3$2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzFlexModule }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i8.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "ngmodule", type: NzModalModule }, { kind: "component", type: i15.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i15.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzTreeModule }, { kind: "component", type: i1$7.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzExpandedIcon", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzTreeTemplate", "nzBeforeDrop", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckboxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }, { kind: "ngmodule", type: NzSpinModule }, { kind: "component", type: i2$3.NzSpinComponent, selector: "nz-spin", inputs: ["nzIndicator", "nzSize", "nzTip", "nzDelay", "nzSimple", "nzSpinning"], exportAs: ["nzSpin"] }, { kind: "ngmodule", type: NzTableModule }, { kind: "component", type: i4.NzTableComponent, selector: "nz-table", inputs: ["nzTableLayout", "nzShowTotal", "nzItemRender", "nzTitle", "nzFooter", "nzNoResult", "nzPageSizeOptions", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualForTrackBy", "nzLoadingDelay", "nzPageIndex", "nzPageSize", "nzTotal", "nzWidthConfig", "nzData", "nzCustomColumn", "nzPaginationPosition", "nzScroll", "noDataVirtualHeight", "nzPaginationType", "nzFrontPagination", "nzTemplateMode", "nzShowPagination", "nzLoading", "nzOuterBordered", "nzLoadingIndicator", "nzBordered", "nzSize", "nzShowSizeChanger", "nzHideOnSinglePage", "nzShowQuickJumper", "nzSimple"], outputs: ["nzPageSizeChange", "nzPageIndexChange", "nzQueryParams", "nzCurrentPageDataChange", "nzCustomColumnChange"], exportAs: ["nzTable"] }, { kind: "directive", type: i4.NzTableCellDirective, selector: "th:not(.nz-disable-th):not([mat-cell]), td:not(.nz-disable-td):not([mat-cell])" }, { kind: "directive", type: i4.NzThMeasureDirective, selector: "th", inputs: ["nzWidth", "colspan", "colSpan", "rowspan", "rowSpan"] }, { kind: "component", type: i4.NzTheadComponent, selector: "thead:not(.ant-table-thead)", outputs: ["nzSortOrderChange"] }, { kind: "component", type: i4.NzTbodyComponent, selector: "tbody" }, { kind: "directive", type: i4.NzTrDirective, selector: "tr:not([mat-row]):not([mat-header-row]):not([nz-table-measure-row]):not([nzExpand]):not([nz-table-fixed-row])" }, { kind: "directive", type: i4.NzCellAlignDirective, selector: "th[nzAlign],td[nzAlign]", inputs: ["nzAlign"] }, { kind: "component", type: IconCopy, selector: "icon-copy", inputs: ["textToCopy", "tooltip", "size"] }, { kind: "component", type: ExtendViewFileContentComponent, selector: "extend-view-file-content", inputs: ["previewType", "previewContent"] }] });
|
|
10952
10952
|
}
|
|
10953
10953
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: SynologyComponent, decorators: [{
|
|
10954
10954
|
type: Component,
|
|
@@ -11029,6 +11029,191 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImpor
|
|
|
11029
11029
|
], template: "<div nz-row nzJustify=\"center\">\n <div class=\"form-container\">\n <form nz-flex nzVertical=\"true\" nz-form [formGroup]=\"formData\" class=\"login-form\" (ngSubmit)=\"doregister()\">\n <nz-form-item>\n <nz-form-control nzErrorTip=\"{{ 'REQUIRED' | translate }}\">\n <nz-input-group nzPrefixIcon=\"user\">\n <input type=\"text\" nz-input formControlName=\"FullName\" placeholder=\"H\u1ECD t\u00EAn\" />\n </nz-input-group>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-control nzErrorTip=\"{{ 'REQUIRED' | translate }}\">\n <nz-input-group nzPrefixIcon=\"user\">\n <input type=\"text\" nz-input formControlName=\"UserName\" placeholder=\"T\u00EAn \u0111\u0103ng nh\u1EADp\" />\n </nz-input-group>\n </nz-form-control>\n </nz-form-item>\n\n <nz-form-item>\n <nz-form-control [nzErrorTip]=\"PasswordErrorTpl\">\n <nz-input-group\n nzPrefixIcon=\"lock\"\n [nzSuffix]=\"!PasswordVisible ? suffixTemplateShowPassword : suffixTemplateHiddenPassword\"\n >\n <input nz-input type=\"{{ PasswordType }}\" formControlName=\"Password\" id=\"Password\" placeholder=\"M\u1EADt kh\u1EA9u\" />\n </nz-input-group>\n <ng-template #suffixTemplateShowPassword>\n <nz-icon\n nzType=\"eye\"\n nzTheme=\"outline\"\n nz-tooltip\n nzTooltipTitle=\"{{ 'SHOW' | translate }}\"\n nzTooltipPlacement=\"right\"\n (click)=\"PasswordVisible = !PasswordVisible; PasswordType = 'text'\"\n />\n </ng-template>\n <ng-template #suffixTemplateHiddenPassword>\n <nz-icon\n nzType=\"eye-invisible\"\n nzTheme=\"outline\"\n nz-tooltip\n nzTooltipTitle=\"{{ 'HIDDEN' | translate }}\"\n nzTooltipPlacement=\"right\"\n (click)=\"PasswordVisible = !PasswordVisible; PasswordType = 'password'\"\n />\n </ng-template>\n <ng-template #PasswordErrorTpl let-control>\n @if (control.errors?.[\"required\"]) {\n {{ \"REQUIRED_FIELD\" | translate }}\n }\n @if (control.errors?.[\"minlength\"]) {\n M\u1EADt kh\u1EA9u d\u00E0i t\u1ED1i thi\u1EC3u 6 k\u00FD t\u1EF1\n }\n </ng-template>\n </nz-form-control>\n </nz-form-item>\n\n <nz-form-item>\n <nz-form-control [nzErrorTip]=\"ConfirmPasswordErrorTpl\">\n <nz-input-group\n nzPrefixIcon=\"lock\"\n [nzSuffix]=\"\n !ConfirmPasswordVisible ? suffixTemplateShowConfirmPassword : suffixTemplateHiddenConfirmPassword\n \"\n >\n <input\n nz-input\n type=\"{{ ConfirmPasswordType }}\"\n placeholder=\"X\u00E1c nh\u1EADn m\u1EADt kh\u1EA9u\"\n formControlName=\"ConfirmPassword\"\n id=\"ConfirmPassword\"\n />\n </nz-input-group>\n <ng-template #suffixTemplateShowConfirmPassword>\n <nz-icon\n nzType=\"eye\"\n nzTheme=\"outline\"\n nz-tooltip\n nzTooltipTitle=\"{{ 'SHOW' | translate }}\"\n nzTooltipPlacement=\"right\"\n (click)=\"ConfirmPasswordVisible = !ConfirmPasswordVisible; ConfirmPasswordType = 'text'\"\n />\n </ng-template>\n <ng-template #suffixTemplateHiddenConfirmPassword>\n <nz-icon\n nzType=\"eye-invisible\"\n nzTheme=\"outline\"\n nz-tooltip\n nzTooltipTitle=\"{{ 'HIDDEN' | translate }}\"\n nzTooltipPlacement=\"right\"\n (click)=\"ConfirmPasswordVisible = !ConfirmPasswordVisible; ConfirmPasswordType = 'password'\"\n />\n </ng-template>\n <ng-template #ConfirmPasswordErrorTpl let-control>\n @if (control.errors?.[\"required\"]) {\n {{ \"REQUIRED_FIELD\" | translate }}\n }\n @if (control.errors?.[\"passwordMismatch\"]) {\n M\u1EADt kh\u1EA9u kh\u00F4ng kh\u1EDBp\n }\n </ng-template>\n </nz-form-control>\n </nz-form-item>\n\n <div nz-flex nzVertical=\"true\" nzGap=\"4px\">\n <button nz-button [nzType]=\"'primary'\" nzBlock [nzLoading]=\"loadingService.isLoading\">\u0110\u0103ng k\u00FD</button>\n <!-- <nz-form-item nzJustify=\"end\">\n <nz-switch formControlName=\"langSwitch\" class=\"nz-switch-both-active-color\" nzCheckedChildren=\"VN\"\n nzUnCheckedChildren=\"EN\" (ngModelChange)=\"changeLanguage($event)\"></nz-switch>\n </nz-form-item> -->\n </div>\n </form>\n </div>\n</div>\n", styles: [":host{display:flex;justify-content:center;align-items:center;height:80vh}.form-container{width:300px}\n"] }]
|
|
11030
11030
|
}] });
|
|
11031
11031
|
|
|
11032
|
+
class AppDataService extends HTTPService {
|
|
11033
|
+
getLstAppData(path = '') {
|
|
11034
|
+
let params = new HttpParams();
|
|
11035
|
+
if (path) {
|
|
11036
|
+
params = params.set('path', path);
|
|
11037
|
+
}
|
|
11038
|
+
// Sử dụng this.http.get thay vì this.get để truyền được query params dễ dàng
|
|
11039
|
+
return this.http.get(AppGlobals.apiEndpoint + '/api/AppData/getTreePath', { params }).toPromise();
|
|
11040
|
+
}
|
|
11041
|
+
upload(file) {
|
|
11042
|
+
const formData = new FormData();
|
|
11043
|
+
formData.append('file', file);
|
|
11044
|
+
return this.postData(AppGlobals.apiEndpoint + '/api/AppData/upload', formData);
|
|
11045
|
+
}
|
|
11046
|
+
downloadFile(filePath) {
|
|
11047
|
+
const params = new HttpParams().set('filePath', filePath);
|
|
11048
|
+
// Gọi API với responseType là blob
|
|
11049
|
+
return this.http.get(AppGlobals.apiEndpoint + '/api/AppData/download', {
|
|
11050
|
+
params,
|
|
11051
|
+
responseType: 'blob',
|
|
11052
|
+
});
|
|
11053
|
+
}
|
|
11054
|
+
deleteFile(filePath) {
|
|
11055
|
+
const params = new HttpParams().set('path', filePath);
|
|
11056
|
+
return this.postParams(AppGlobals.apiEndpoint + '/api/AppData/delete', params);
|
|
11057
|
+
}
|
|
11058
|
+
createFolder(parentPath, folderName) {
|
|
11059
|
+
let params = new HttpParams().append('parentPath', parentPath).append('folderName', folderName);
|
|
11060
|
+
return this.postParams(AppGlobals.apiEndpoint + '/api/AppData/createFolder', params);
|
|
11061
|
+
}
|
|
11062
|
+
uploadFile(folderPath, file) {
|
|
11063
|
+
const formData = new FormData();
|
|
11064
|
+
formData.append('file', file);
|
|
11065
|
+
return this.http.post(AppGlobals.apiEndpoint + `/api/AppData/upload?folderPath=${folderPath}`, formData);
|
|
11066
|
+
}
|
|
11067
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: AppDataService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
11068
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: AppDataService, providedIn: 'root' });
|
|
11069
|
+
}
|
|
11070
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: AppDataService, decorators: [{
|
|
11071
|
+
type: Injectable,
|
|
11072
|
+
args: [{
|
|
11073
|
+
providedIn: 'root',
|
|
11074
|
+
}]
|
|
11075
|
+
}] });
|
|
11076
|
+
|
|
11077
|
+
class AppDataComponent extends BaseComponent {
|
|
11078
|
+
service = inject(AppDataService);
|
|
11079
|
+
nzContextMenuService = inject(NzContextMenuService);
|
|
11080
|
+
nodes = [];
|
|
11081
|
+
selectedNode;
|
|
11082
|
+
modalVisible = false;
|
|
11083
|
+
newFolderName = '';
|
|
11084
|
+
myTree;
|
|
11085
|
+
ngOnInit() {
|
|
11086
|
+
this.getdata();
|
|
11087
|
+
}
|
|
11088
|
+
getdata() {
|
|
11089
|
+
this.service.getLstAppData('').then((res) => {
|
|
11090
|
+
this.nodes = this.mapToNzTree(res.Data || []);
|
|
11091
|
+
});
|
|
11092
|
+
}
|
|
11093
|
+
mapToNzTree(data) {
|
|
11094
|
+
return data.map((item) => ({
|
|
11095
|
+
title: item.Title,
|
|
11096
|
+
key: item.Key,
|
|
11097
|
+
isLeaf: item.IsLeaf,
|
|
11098
|
+
author: item.Author,
|
|
11099
|
+
isExpanded: false, // Mặc định đóng
|
|
11100
|
+
children: [], // Rỗng để chờ load
|
|
11101
|
+
}));
|
|
11102
|
+
}
|
|
11103
|
+
onExpandChange(e) {
|
|
11104
|
+
const node = e.node;
|
|
11105
|
+
// Nếu node đang được mở ra VÀ chưa có dữ liệu con bên trong
|
|
11106
|
+
if (node && node.isExpanded && node.getChildren().length === 0) {
|
|
11107
|
+
// Gọi API lấy dữ liệu của chính folder đó
|
|
11108
|
+
this.service.getLstAppData(node.key).then((res) => {
|
|
11109
|
+
const children = this.mapToNzTree(res.Data || []);
|
|
11110
|
+
// Gắn dữ liệu con vào node hiện tại
|
|
11111
|
+
node.addChildren(children);
|
|
11112
|
+
});
|
|
11113
|
+
}
|
|
11114
|
+
}
|
|
11115
|
+
// Sự kiện khi click vào một node
|
|
11116
|
+
activeNode(data) {
|
|
11117
|
+
console.log('Active node:', data.node?.key);
|
|
11118
|
+
}
|
|
11119
|
+
// Sự kiện mở/đóng thư mục (hỗ trợ cả click icon và double click)
|
|
11120
|
+
openFolder(data) {
|
|
11121
|
+
if (data instanceof NzTreeNode) {
|
|
11122
|
+
data.isExpanded = !data.isExpanded;
|
|
11123
|
+
}
|
|
11124
|
+
else {
|
|
11125
|
+
const node = data.node;
|
|
11126
|
+
if (node) {
|
|
11127
|
+
node.isExpanded = !node.isExpanded;
|
|
11128
|
+
}
|
|
11129
|
+
}
|
|
11130
|
+
}
|
|
11131
|
+
contextMenu($event, menu) {
|
|
11132
|
+
// 1. Lấy node đang được click chuột phải từ NzFormatEmitEvent
|
|
11133
|
+
this.selectedNode = $event.node;
|
|
11134
|
+
// 2. Lấy MouseEvent gốc để hiển thị menu tại đúng vị trí chuột
|
|
11135
|
+
if ($event.event) {
|
|
11136
|
+
this.nzContextMenuService.create($event.event, menu);
|
|
11137
|
+
}
|
|
11138
|
+
}
|
|
11139
|
+
// Xử lý khi chọn chức năng trong dropdown
|
|
11140
|
+
selectDropdown() {
|
|
11141
|
+
console.log('Đã chọn hành động trong context menu');
|
|
11142
|
+
}
|
|
11143
|
+
// Logic Tải file
|
|
11144
|
+
download() {
|
|
11145
|
+
if (!this.selectedNode || !this.selectedNode.isLeaf)
|
|
11146
|
+
return;
|
|
11147
|
+
const filePath = this.selectedNode.key;
|
|
11148
|
+
const fileName = this.selectedNode.title;
|
|
11149
|
+
this.service.downloadFile(filePath).subscribe((blob) => {
|
|
11150
|
+
const a = document.createElement('a');
|
|
11151
|
+
const objectUrl = URL.createObjectURL(blob);
|
|
11152
|
+
a.href = objectUrl;
|
|
11153
|
+
a.download = fileName;
|
|
11154
|
+
a.click();
|
|
11155
|
+
URL.revokeObjectURL(objectUrl);
|
|
11156
|
+
});
|
|
11157
|
+
}
|
|
11158
|
+
// Logic Xóa file
|
|
11159
|
+
delete() {
|
|
11160
|
+
if (!this.selectedNode)
|
|
11161
|
+
return;
|
|
11162
|
+
const nodeName = this.selectedNode.title;
|
|
11163
|
+
this.modal.confirm({
|
|
11164
|
+
nzTitle: `Bạn có chắc chắn muốn xóa ${this.selectedNode.isLeaf ? 'file' : 'thư mục'} này không?`,
|
|
11165
|
+
nzContent: `<b style="color: red;">${nodeName}</b>`,
|
|
11166
|
+
nzOkText: 'Xóa',
|
|
11167
|
+
nzOkDanger: true,
|
|
11168
|
+
nzOnOk: () => {
|
|
11169
|
+
this.service.deleteFile(this.selectedNode.key).then(() => {
|
|
11170
|
+
this.notiService.success('Xóa thành công');
|
|
11171
|
+
this.getdata(); // Refresh lại cây
|
|
11172
|
+
});
|
|
11173
|
+
},
|
|
11174
|
+
});
|
|
11175
|
+
}
|
|
11176
|
+
addFolder() {
|
|
11177
|
+
const parentPath = this.selectedNode ? this.selectedNode.key : ''; // Nếu không chọn node nào thì tạo ở root
|
|
11178
|
+
this.service.createFolder(parentPath, this.newFolderName).then(() => {
|
|
11179
|
+
this.getdata();
|
|
11180
|
+
this.modalVisible = false;
|
|
11181
|
+
});
|
|
11182
|
+
}
|
|
11183
|
+
triggerUpload() {
|
|
11184
|
+
document.getElementById('fileUpload')?.click();
|
|
11185
|
+
}
|
|
11186
|
+
onFileSelected(event) {
|
|
11187
|
+
console.log('onFileSelected', event);
|
|
11188
|
+
const file = event.target.files[0];
|
|
11189
|
+
if (file) {
|
|
11190
|
+
// Nếu đang chọn 1 folder thì upload vào đó, nếu chọn file thì lấy folder cha của nó, nếu không chọn gì thì vào root
|
|
11191
|
+
const targetPath = this.selectedNode
|
|
11192
|
+
? this.selectedNode.isLeaf
|
|
11193
|
+
? this.getParentPath(this.selectedNode.key)
|
|
11194
|
+
: this.selectedNode.key
|
|
11195
|
+
: '';
|
|
11196
|
+
this.service.uploadFile(targetPath, file).subscribe(() => {
|
|
11197
|
+
this.notiService.success('Upload thành công');
|
|
11198
|
+
this.getdata();
|
|
11199
|
+
event.target.value = ''; // Reset input
|
|
11200
|
+
});
|
|
11201
|
+
}
|
|
11202
|
+
}
|
|
11203
|
+
getParentPath(path) {
|
|
11204
|
+
return path.substring(0, path.lastIndexOf('\\'));
|
|
11205
|
+
}
|
|
11206
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: AppDataComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
11207
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: AppDataComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "myTree", first: true, predicate: ["myTree"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"action-bar\" style=\"margin-bottom: 16px; display: flex; gap: 8px\">\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"getdata()\"><nz-icon nzType=\"reload\" /> Reload</button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"modalVisible = true\">\n <nz-icon nzType=\"folder-add\" /> New folder\n </button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"triggerUpload()\">\n <nz-icon nzType=\"upload\" /> Upload\n </button>\n</div>\n\n<input type=\"file\" id=\"fileUpload\" style=\"display: none\" (change)=\"onFileSelected($event)\" />\n\n<nz-tree\n #myTree\n nzBlockNode\n [nzAsyncData]=\"true\"\n [nzData]=\"nodes\"\n (nzClick)=\"activeNode($event)\"\n (nzExpandChange)=\"onExpandChange($event)\"\n (nzContextMenu)=\"contextMenu($event, menu)\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n></nz-tree>\n\n<ng-template #nzTreeTemplate let-node>\n <span class=\"custom-node\" (contextmenu)=\"selectedNode = node\">\n <nz-icon [nzType]=\"node.isLeaf ? 'file' : node.isExpanded ? 'folder-open' : 'folder'\" />\n <span class=\"node-title\">{{ node.title }}</span>\n </span>\n</ng-template>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu>\n @if (!selectedNode?.isLeaf) {\n <li nz-menu-item (click)=\"triggerUpload()\"><nz-icon nzType=\"upload\" /> Upload</li>\n <li nz-menu-item (click)=\"modalVisible = true\"><nz-icon nzType=\"folder-add\" /> New folder</li>\n }\n\n @if (selectedNode?.isLeaf) {\n <li nz-menu-item (click)=\"download()\"><nz-icon nzType=\"download\" /> Download</li>\n }\n\n <li nz-menu-divider></li>\n <li nz-menu-item nzDanger (click)=\"delete()\">\n <nz-icon nzType=\"delete\" /> X\u00F3a {{ selectedNode?.isLeaf ? \"File\" : \"Folder\" }}\n </li>\n </ul>\n</nz-dropdown-menu>\n\n<nz-modal\n nzTitle=\"New folder\"\n [nzMaskClosable]=\"false\"\n [(nzVisible)]=\"modalVisible\"\n (nzOnCancel)=\"modalVisible = false\"\n (nzOnOk)=\"addFolder()\"\n>\n <ng-container *nzModalContent>\n <extend-input [label]=\"'Name'\" [(_ngModel)]=\"newFolderName\"></extend-input>\n </ng-container>\n</nz-modal>\n", styles: ["@charset \"UTF-8\";.custom-node{cursor:pointer;display:flex;align-items:center}.custom-node nz-icon{margin-right:8px;font-size:16px;color:#1890ff}.custom-node .file-name,.custom-node .folder-name{font-weight:500;margin-right:12px}.custom-node .file-desc,.custom-node .folder-desc{font-size:12px;color:#999}.custom-node .anticon-file{color:#595959}\n"], dependencies: [{ kind: "ngmodule", type: NzTreeModule }, { kind: "component", type: i1$7.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzExpandedIcon", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzTreeTemplate", "nzBeforeDrop", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckboxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }, { kind: "ngmodule", type: NzModalModule }, { kind: "component", type: i15.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i15.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i4$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i4$2.NzMenuDividerDirective, selector: "[nz-menu-divider]", exportAs: ["nzMenuDivider"] }, { kind: "component", type: i5$3.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "component", type: ExtendInput, selector: "extend-input", inputs: ["label", "floatingLabel", "placeHolder", "labelAlign", "inputClass", "labelSpan", "labelFlex", "inputFlex", "showClear", "disabled", "readOnly", "required", "noBottom", "selectModeType", "autocomplete", "autofocus", "inputWidth", "inputHeight", "borderBottomOnly", "displayInline", "size", "displayField", "valueField", "formData", "controlName", "_ngModel", "isSubmited"], outputs: ["_ngModelChange", "onclickClearIcon", "onenter"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i2$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: i3$2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }] });
|
|
11208
|
+
}
|
|
11209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: AppDataComponent, decorators: [{
|
|
11210
|
+
type: Component,
|
|
11211
|
+
args: [{ imports: [NzTreeModule, NzModalModule, NzIconModule, NzDropDownModule, ExtendInput, NzButtonModule], template: "<div class=\"action-bar\" style=\"margin-bottom: 16px; display: flex; gap: 8px\">\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"getdata()\"><nz-icon nzType=\"reload\" /> Reload</button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"modalVisible = true\">\n <nz-icon nzType=\"folder-add\" /> New folder\n </button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"triggerUpload()\">\n <nz-icon nzType=\"upload\" /> Upload\n </button>\n</div>\n\n<input type=\"file\" id=\"fileUpload\" style=\"display: none\" (change)=\"onFileSelected($event)\" />\n\n<nz-tree\n #myTree\n nzBlockNode\n [nzAsyncData]=\"true\"\n [nzData]=\"nodes\"\n (nzClick)=\"activeNode($event)\"\n (nzExpandChange)=\"onExpandChange($event)\"\n (nzContextMenu)=\"contextMenu($event, menu)\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n></nz-tree>\n\n<ng-template #nzTreeTemplate let-node>\n <span class=\"custom-node\" (contextmenu)=\"selectedNode = node\">\n <nz-icon [nzType]=\"node.isLeaf ? 'file' : node.isExpanded ? 'folder-open' : 'folder'\" />\n <span class=\"node-title\">{{ node.title }}</span>\n </span>\n</ng-template>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu>\n @if (!selectedNode?.isLeaf) {\n <li nz-menu-item (click)=\"triggerUpload()\"><nz-icon nzType=\"upload\" /> Upload</li>\n <li nz-menu-item (click)=\"modalVisible = true\"><nz-icon nzType=\"folder-add\" /> New folder</li>\n }\n\n @if (selectedNode?.isLeaf) {\n <li nz-menu-item (click)=\"download()\"><nz-icon nzType=\"download\" /> Download</li>\n }\n\n <li nz-menu-divider></li>\n <li nz-menu-item nzDanger (click)=\"delete()\">\n <nz-icon nzType=\"delete\" /> X\u00F3a {{ selectedNode?.isLeaf ? \"File\" : \"Folder\" }}\n </li>\n </ul>\n</nz-dropdown-menu>\n\n<nz-modal\n nzTitle=\"New folder\"\n [nzMaskClosable]=\"false\"\n [(nzVisible)]=\"modalVisible\"\n (nzOnCancel)=\"modalVisible = false\"\n (nzOnOk)=\"addFolder()\"\n>\n <ng-container *nzModalContent>\n <extend-input [label]=\"'Name'\" [(_ngModel)]=\"newFolderName\"></extend-input>\n </ng-container>\n</nz-modal>\n", styles: ["@charset \"UTF-8\";.custom-node{cursor:pointer;display:flex;align-items:center}.custom-node nz-icon{margin-right:8px;font-size:16px;color:#1890ff}.custom-node .file-name,.custom-node .folder-name{font-weight:500;margin-right:12px}.custom-node .file-desc,.custom-node .folder-desc{font-size:12px;color:#999}.custom-node .anticon-file{color:#595959}\n"] }]
|
|
11212
|
+
}], propDecorators: { myTree: [{
|
|
11213
|
+
type: ViewChild,
|
|
11214
|
+
args: ['myTree']
|
|
11215
|
+
}] } });
|
|
11216
|
+
|
|
11032
11217
|
class App_Dic_Domain {
|
|
11033
11218
|
// #region properties
|
|
11034
11219
|
App_Dic_Domain_Id;
|
|
@@ -13672,7 +13857,7 @@ class DynamicBuildFormComponent extends BaseComponent {
|
|
|
13672
13857
|
this.dynamicForm.onSubmit();
|
|
13673
13858
|
}
|
|
13674
13859
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DynamicBuildFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
13675
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: DynamicBuildFormComponent, isStandalone: true, selector: "app-form-builder", viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: ["xxx"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div nz-row [nzGutter]=\"16\" class=\"builder-layout\">\n <div nz-col [nzSpan]=\"5\">\n <nz-card nzTitle=\"Components\" nzSize=\"small\">\n <div\n id=\"toolboxList\"\n cdkDropList\n [cdkDropListData]=\"toolboxItems\"\n [cdkDropListConnectedTo]=\"['canvasGrid']\"\n class=\"toolbox-list\"\n >\n <div class=\"toolbox-item\" *ngFor=\"let item of toolboxItems\" cdkDrag>\n <i nz-icon [nzType]=\"item.icon\"></i> {{ item.label }}\n </div>\n </div>\n </nz-card>\n </div>\n\n <div nz-col [nzSpan]=\"14\">\n <nz-card nzTitle=\"Form design\" nzSize=\"small\" [nzExtra]=\"extraTemplate\">\n <div\n nz-row\n [nzGutter]=\"[16, 16]\"\n id=\"canvasGrid\"\n cdkDropList\n cdkDropListOrientation=\"mixed\"\n [cdkDropListData]=\"formFields\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"canvas-grid-container\"\n >\n <div class=\"empty-text\" *ngIf=\"formFields.length === 0\">Drag the elements here to design the layout.</div>\n\n <div\n nz-col\n [nzSpan]=\"field.span\"\n *ngFor=\"let field of formFields; let i = index\"\n cdkDrag\n (click)=\"selectField(field)\"\n [class.is-selected]=\"selectedField === field\"\n class=\"grid-field-wrapper\"\n >\n <div class=\"field-box\">\n <div class=\"field-header\">\n <span>{{ field.label }} <span *ngIf=\"field.isRequired\" style=\"color: red\">*</span></span>\n <span class=\"span-badge\">col-{{ field.span }}</span>\n </div>\n\n <input\n nz-input\n [placeholder]=\"field.placeholder || ''\"\n disabled\n *ngIf=\"field.type === 'text' || field.type === 'number'\"\n />\n <nz-date-picker style=\"width: 100%\" nzDisabled *ngIf=\"field.type === 'date'\"></nz-date-picker>\n <nz-select nzPlaceHolder=\"Ch\u1ECDn d\u1EEF li\u1EC7u...\" nzDisabled *ngIf=\"field.type === 'select'\"></nz-select>\n\n <button class=\"btn-delete\" (click)=\"removeField(i, $event)\">\n <i nz-icon nzType=\"delete\" nzTheme=\"outline\"></i>\n </button>\n </div>\n </div>\n </div>\n </nz-card>\n\n <ng-template #extraTemplate>\n <div nz-flex nzGap=\"small\">\n <button\n nz-button\n nzSize=\"small\"\n nzType=\"primary\"\n [nzLoading]=\"isSaving\"\n [disabled]=\"formFields.length === 0\"\n (click)=\"saveFormDefinition()\"\n >\n <i nz-icon nzType=\"save\" nzTheme=\"outline\" *ngIf=\"!isSaving\"></i>\n Get form\n </button>\n <button\n nz-button\n nzSize=\"small\"\n nzType=\"primary\"\n [nzLoading]=\"isSaving\"\n [disabled]=\"formFields.length === 0\"\n (click)=\"visible = true\"\n >\n Test form\n </button>\n </div>\n </ng-template>\n </div>\n\n <div nz-col [nzSpan]=\"5\">\n <nz-card [nzTitle]=\"selectedField?.type?.toUpperCase() + ' Attributes'\" nzSize=\"small\">\n <div *ngIf=\"selectedField; else noSelect\" class=\"inspector-panel\">\n <extend-input label=\"Name\" [(_ngModel)]=\"selectedField.name\"></extend-input>\n <extend-input label=\"Label\" [(_ngModel)]=\"selectedField.label\"></extend-input>\n <extend-input label=\"Placeholder\" [(_ngModel)]=\"selectedField.placeholder\"></extend-input>\n\n @if (selectedField.type === \"select\") {\n <extend-input label=\"Domain code\" [(_ngModel)]=\"selectedField.domainCode\"></extend-input>\n\n <nz-form-item nz-row style=\"margin-top: 12px; margin-bottom: 0\">\n <nz-form-label nzSpan=\"24\"> Options</nz-form-label>\n <div nz-col nzSpan=\"24\">\n @for (opt of selectedField.options; track $index) {\n <div style=\"display: flex; gap: 8px; margin-bottom: 0px; align-items: center\">\n <extend-input size=\"small\" placeHolder=\"Value\" [(_ngModel)]=\"opt.value\"></extend-input>\n <extend-input size=\"small\" placeHolder=\"Label\" [(_ngModel)]=\"opt.label\"></extend-input>\n\n <button nz-button nzDanger nzType=\"text\" (click)=\"removeOption($index)\">\n <i nz-icon nzType=\"delete\"></i>\n </button>\n </div>\n }\n\n <button\n nz-button\n nzType=\"dashed\"\n nzSize=\"small\"\n style=\"width: 100%; margin-top: 2px\"\n (click)=\"addOption()\"\n >\n <i nz-icon nzType=\"plus\"></i> Th\u00EAm l\u1EF1a ch\u1ECDn\n </button>\n </div>\n </nz-form-item>\n }\n\n <nz-form-item nz-row style=\"margin-top: 10px\">\n <nz-form-label nzSpan=\"24\">Grid Span: 1 - 24</nz-form-label>\n <nz-slider\n nzSpan=\"24\"\n style=\"width: 100%\"\n [nzMin]=\"0\"\n [nzMax]=\"24\"\n [nzStep]=\"2\"\n [(ngModel)]=\"selectedField.span\"\n ></nz-slider>\n <!-- <span style=\"font-size: 12px; color: #666\"> G\u1EE3i \u00FD: 24 = 100% d\u00F2ng, 12 = 50% d\u00F2ng, 8 = 33% d\u00F2ng. </span> -->\n </nz-form-item>\n\n <nz-form-item>\n <label nz-checkbox [(ngModel)]=\"selectedField.isRequired\">Required</label>\n </nz-form-item>\n </div>\n <ng-template #noSelect>\n <p style=\"color: #999; text-align: center; padding-top: 40px\">\n Select a component in the form to configure the layout.\n </p>\n </ng-template>\n </nz-card>\n </div>\n</div>\n\n<nz-modal\n nzWidth=\"60%\"\n [nzContent]=\"content\"\n [nzMaskClosable]=\"false\"\n [nzClosable]=\"false\"\n [nzCancelText]=\"'\u0110\u00F3ng'\"\n [(nzVisible)]=\"visible\"\n (nzOnCancel)=\"visible = false\"\n (nzOnOk)=\"onOk()\"\n>\n <ng-template #content>\n <app-dynamic-form #xxx [formMetadata]=\"{ fields: formFields }\"></app-dynamic-form>\n </ng-template>\n</nz-modal>\n", styles: ["@charset \"UTF-8\";.builder-layout{padding:16px;background:#f5f7fa;min-height:calc(100vh - 64px)}.toolbox-list{display:flex;flex-direction:column;gap:10px;min-height:200px}.toolbox-item{padding:10px;background:#fff;border:1px solid #d9d9d9;border-radius:4px;cursor:grab}.toolbox-item:hover{border-color:#1890ff;color:#1890ff}.canvas-grid-container{min-height:500px;background:#fafafa;border:2px dashed #e2e8f0;border-radius:6px;padding:6px!important;align-content:flex-start;position:relative}.empty-text{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);color:#bfbfbf}.grid-field-wrapper{transition:transform .2s cubic-bezier(0,0,.2,1)}.field-box{background:#fff;border:1px solid #e2e8f0;border-radius:4px;padding:14px;position:relative;cursor:move;box-shadow:0 1px 3px #0000000d}.field-box:hover{border-color:#40a9ff}.field-box:hover .btn-delete{display:block}.is-selected .field-box{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff33;background:#e6f7ff}.field-header{display:flex;justify-content:space-between;margin-bottom:6px;font-weight:500;font-size:13px}.field-header .span-badge{font-size:11px;background:#f0f2f5;padding:0 6px;border-radius:2px;color:#8c8c8c}.btn-delete{position:absolute;top:-10px;right:-10px;display:none;border:none;background:#ff4d4f;color:#fff;width:22px;height:22px;border-radius:50%;font-size:11px;cursor:pointer;box-shadow:0 2px 4px #0000001a;align-items:center;justify-content:center}.cdk-drag-preview{box-shadow:0 5px 15px #00000026;opacity:.9;background:#fff;border:1px solid #1890ff;border-radius:4px;padding:10px}.cdk-drag-placeholder{opacity:.4;background:#f0f2f5;border:2px dashed #bfbfbf!important}.inspector-panel nz-form-item{margin-bottom:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3$7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3$7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: NzGridModule }, { kind: "directive", type: i2$1.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i2$1.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "ngmodule", type: NzCardModule }, { kind: "component", type: i3$5.NzCardComponent, selector: "nz-card", inputs: ["nzBordered", "nzLoading", "nzHoverable", "nzBodyStyle", "nzCover", "nzActions", "nzType", "nzSize", "nzTitle", "nzExtra"], exportAs: ["nzCard"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i2$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: i3$2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "ngmodule", type: NzSliderModule }, { kind: "component", type: i10$1.NzSliderComponent, selector: "nz-slider", inputs: ["nzDisabled", "nzDots", "nzIncluded", "nzRange", "nzVertical", "nzReverse", "nzDefaultValue", "nzMarks", "nzMax", "nzMin", "nzStep", "nzTooltipVisible", "nzTooltipPlacement", "nzTipFormatter"], outputs: ["nzOnAfterChange"], exportAs: ["nzSlider"] }, { kind: "ngmodule", type: NzDatePickerModule }, { kind: "component", type: i5$1.NzDatePickerComponent, selector: "nz-date-picker,nz-week-picker,nz-month-picker,nz-quarter-picker,nz-year-picker,nz-range-picker", inputs: ["nzAllowClear", "nzAutoFocus", "nzDisabled", "nzBorderless", "nzInputReadOnly", "nzInline", "nzOpen", "nzDisabledDate", "nzLocale", "nzPlaceHolder", "nzPopupStyle", "nzDropdownClassName", "nzSize", "nzStatus", "nzFormat", "nzDateRender", "nzDisabledTime", "nzRenderExtraFooter", "nzShowToday", "nzMode", "nzShowNow", "nzRanges", "nzDefaultPickerValue", "nzSeparator", "nzSuffixIcon", "nzBackdrop", "nzId", "nzPlacement", "nzShowWeekNumber", "nzShowTime"], outputs: ["nzOnPanelChange", "nzOnCalendarChange", "nzOnOk", "nzOnOpenChange"], exportAs: ["nzDatePicker"] }, { kind: "ngmodule", type: NzSelectModule }, { kind: "component", type: i13.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzPlacement", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzSelectOnTab", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { kind: "ngmodule", type: NzCheckboxModule }, { kind: "component", type: i3$1.NzCheckboxComponent, selector: "[nz-checkbox]", inputs: ["nzValue", "nzAutoFocus", "nzDisabled", "nzIndeterminate", "nzChecked", "nzId", "nzName"], outputs: ["nzCheckedChange"], exportAs: ["nzCheckbox"] }, { kind: "component", type: ExtendInput, selector: "extend-input", inputs: ["label", "floatingLabel", "placeHolder", "labelAlign", "inputClass", "labelSpan", "labelFlex", "inputFlex", "showClear", "disabled", "readOnly", "required", "noBottom", "selectModeType", "autocomplete", "autofocus", "inputWidth", "inputHeight", "borderBottomOnly", "displayInline", "size", "displayField", "valueField", "formData", "controlName", "_ngModel", "isSubmited"], outputs: ["_ngModelChange", "onclickClearIcon", "onenter"] }, { kind: "ngmodule", type: NzModalModule }, { kind: "component", type: i15.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "component", type: DynamicFormComponent, selector: "app-dynamic-form", inputs: ["formMetadata", "formValuedata"] }, { kind: "directive", type: NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }] });
|
|
13860
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: DynamicBuildFormComponent, isStandalone: true, selector: "app-form-builder", viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: ["xxx"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div nz-row [nzGutter]=\"16\" class=\"builder-layout\">\n <div nz-col [nzSpan]=\"5\">\n <nz-card nzTitle=\"Components\" nzSize=\"small\">\n <div\n id=\"toolboxList\"\n cdkDropList\n [cdkDropListData]=\"toolboxItems\"\n [cdkDropListConnectedTo]=\"['canvasGrid']\"\n class=\"toolbox-list\"\n >\n <div class=\"toolbox-item\" *ngFor=\"let item of toolboxItems\" cdkDrag>\n <i nz-icon [nzType]=\"item.icon\"></i> {{ item.label }}\n </div>\n </div>\n </nz-card>\n </div>\n\n <div nz-col [nzSpan]=\"14\">\n <nz-card nzTitle=\"Form design\" nzSize=\"small\" [nzExtra]=\"extraTemplate\">\n <div\n nz-row\n [nzGutter]=\"[16, 16]\"\n id=\"canvasGrid\"\n cdkDropList\n cdkDropListOrientation=\"mixed\"\n [cdkDropListData]=\"formFields\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"canvas-grid-container\"\n >\n <div class=\"empty-text\" *ngIf=\"formFields.length === 0\">Drag the elements here to design the layout.</div>\n\n <div\n nz-col\n [nzSpan]=\"field.span\"\n *ngFor=\"let field of formFields; let i = index\"\n cdkDrag\n (click)=\"selectField(field)\"\n [class.is-selected]=\"selectedField === field\"\n class=\"grid-field-wrapper\"\n >\n <div class=\"field-box\">\n <div class=\"field-header\">\n <span>{{ field.label }} <span *ngIf=\"field.isRequired\" style=\"color: red\">*</span></span>\n <span class=\"span-badge\">col-{{ field.span }}</span>\n </div>\n\n <input\n nz-input\n [placeholder]=\"field.placeholder || ''\"\n disabled\n *ngIf=\"field.type === 'text' || field.type === 'number'\"\n />\n <nz-date-picker style=\"width: 100%\" nzDisabled *ngIf=\"field.type === 'date'\"></nz-date-picker>\n <nz-select nzPlaceHolder=\"Ch\u1ECDn d\u1EEF li\u1EC7u...\" nzDisabled *ngIf=\"field.type === 'select'\"></nz-select>\n\n <button class=\"btn-delete\" (click)=\"removeField(i, $event)\">\n <i nz-icon nzType=\"delete\" nzTheme=\"outline\"></i>\n </button>\n </div>\n </div>\n </div>\n </nz-card>\n\n <ng-template #extraTemplate>\n <div nz-flex nzGap=\"small\">\n <button\n nz-button\n nzSize=\"small\"\n nzType=\"primary\"\n [nzLoading]=\"isSaving\"\n [disabled]=\"formFields.length === 0\"\n (click)=\"saveFormDefinition()\"\n >\n <i nz-icon nzType=\"save\" nzTheme=\"outline\" *ngIf=\"!isSaving\"></i>\n Get form\n </button>\n <button\n nz-button\n nzSize=\"small\"\n nzType=\"primary\"\n [nzLoading]=\"isSaving\"\n [disabled]=\"formFields.length === 0\"\n (click)=\"visible = true\"\n >\n Test form\n </button>\n </div>\n </ng-template>\n </div>\n\n <div nz-col [nzSpan]=\"5\">\n <nz-card [nzTitle]=\"selectedField?.type?.toUpperCase() + ' Attributes'\" nzSize=\"small\">\n <div *ngIf=\"selectedField; else noSelect\" class=\"inspector-panel\">\n <extend-input label=\"Name\" [(_ngModel)]=\"selectedField.name\"></extend-input>\n <extend-input label=\"Label\" [(_ngModel)]=\"selectedField.label\"></extend-input>\n <extend-input label=\"Placeholder\" [(_ngModel)]=\"selectedField.placeholder\"></extend-input>\n\n @if (selectedField.type === \"select\") {\n <extend-input label=\"Domain code\" [(_ngModel)]=\"selectedField.domainCode\"></extend-input>\n\n <nz-form-item nz-row style=\"margin-top: 12px; margin-bottom: 0\">\n <nz-form-label nzSpan=\"24\"> Options</nz-form-label>\n <div nz-col nzSpan=\"24\">\n @for (opt of selectedField.options; track $index) {\n <div style=\"display: flex; gap: 8px; margin-bottom: 0px; align-items: center\">\n <extend-input size=\"small\" placeHolder=\"Value\" [(_ngModel)]=\"opt.value\"></extend-input>\n <extend-input size=\"small\" placeHolder=\"Label\" [(_ngModel)]=\"opt.label\"></extend-input>\n\n <button nz-button nzDanger nzType=\"text\" (click)=\"removeOption($index)\">\n <i nz-icon nzType=\"delete\"></i>\n </button>\n </div>\n }\n\n <button\n nz-button\n nzType=\"dashed\"\n nzSize=\"small\"\n style=\"width: 100%; margin-top: 2px\"\n (click)=\"addOption()\"\n >\n <i nz-icon nzType=\"plus\"></i> Th\u00EAm l\u1EF1a ch\u1ECDn\n </button>\n </div>\n </nz-form-item>\n }\n\n <nz-form-item nz-row style=\"margin-top: 10px\">\n <nz-form-label nzSpan=\"24\">Grid Span: 1 - 24</nz-form-label>\n <nz-slider\n nzSpan=\"24\"\n style=\"width: 100%\"\n [nzMin]=\"0\"\n [nzMax]=\"24\"\n [nzStep]=\"2\"\n [(ngModel)]=\"selectedField.span\"\n ></nz-slider>\n <!-- <span style=\"font-size: 12px; color: #666\"> G\u1EE3i \u00FD: 24 = 100% d\u00F2ng, 12 = 50% d\u00F2ng, 8 = 33% d\u00F2ng. </span> -->\n </nz-form-item>\n\n <nz-form-item>\n <label nz-checkbox [(ngModel)]=\"selectedField.isRequired\">Required</label>\n </nz-form-item>\n </div>\n <ng-template #noSelect>\n <p style=\"color: #999; text-align: center; padding-top: 40px\">\n Select a component in the form to configure the layout.\n </p>\n </ng-template>\n </nz-card>\n </div>\n</div>\n\n<nz-modal\n nzWidth=\"60%\"\n [nzContent]=\"content\"\n [nzMaskClosable]=\"false\"\n [nzClosable]=\"false\"\n [nzCancelText]=\"'\u0110\u00F3ng'\"\n [(nzVisible)]=\"visible\"\n (nzOnCancel)=\"visible = false\"\n (nzOnOk)=\"onOk()\"\n>\n <ng-template #content>\n <app-dynamic-form #xxx [formMetadata]=\"{ fields: formFields }\"></app-dynamic-form>\n </ng-template>\n</nz-modal>\n", styles: ["@charset \"UTF-8\";.builder-layout{padding:16px;background:#f5f7fa;min-height:calc(100vh - 64px)}.toolbox-list{display:flex;flex-direction:column;gap:10px;min-height:200px}.toolbox-item{padding:10px;background:#fff;border:1px solid #d9d9d9;border-radius:4px;cursor:grab}.toolbox-item:hover{border-color:#1890ff;color:#1890ff}.canvas-grid-container{min-height:500px;background:#fafafa;border:2px dashed #e2e8f0;border-radius:6px;padding:6px!important;align-content:flex-start;position:relative}.empty-text{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);color:#bfbfbf}.grid-field-wrapper{transition:transform .2s cubic-bezier(0,0,.2,1)}.field-box{background:#fff;border:1px solid #e2e8f0;border-radius:4px;padding:14px;position:relative;cursor:move;box-shadow:0 1px 3px #0000000d}.field-box:hover{border-color:#40a9ff}.field-box:hover .btn-delete{display:block}.is-selected .field-box{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff33;background:#e6f7ff}.field-header{display:flex;justify-content:space-between;margin-bottom:6px;font-weight:500;font-size:13px}.field-header .span-badge{font-size:11px;background:#f0f2f5;padding:0 6px;border-radius:2px;color:#8c8c8c}.btn-delete{position:absolute;top:-10px;right:-10px;display:none;border:none;background:#ff4d4f;color:#fff;width:22px;height:22px;border-radius:50%;font-size:11px;cursor:pointer;box-shadow:0 2px 4px #0000001a;align-items:center;justify-content:center}.cdk-drag-preview{box-shadow:0 5px 15px #00000026;opacity:.9;background:#fff;border:1px solid #1890ff;border-radius:4px;padding:10px}.cdk-drag-placeholder{opacity:.4;background:#f0f2f5;border:2px dashed #bfbfbf!important}.inspector-panel nz-form-item{margin-bottom:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3$7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3$7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: NzGridModule }, { kind: "directive", type: i2$1.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i2$1.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "ngmodule", type: NzCardModule }, { kind: "component", type: i3$5.NzCardComponent, selector: "nz-card", inputs: ["nzBordered", "nzLoading", "nzHoverable", "nzBodyStyle", "nzCover", "nzActions", "nzType", "nzSize", "nzTitle", "nzExtra"], exportAs: ["nzCard"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i2$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: i3$2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "ngmodule", type: NzSliderModule }, { kind: "component", type: i10.NzSliderComponent, selector: "nz-slider", inputs: ["nzDisabled", "nzDots", "nzIncluded", "nzRange", "nzVertical", "nzReverse", "nzDefaultValue", "nzMarks", "nzMax", "nzMin", "nzStep", "nzTooltipVisible", "nzTooltipPlacement", "nzTipFormatter"], outputs: ["nzOnAfterChange"], exportAs: ["nzSlider"] }, { kind: "ngmodule", type: NzDatePickerModule }, { kind: "component", type: i5$1.NzDatePickerComponent, selector: "nz-date-picker,nz-week-picker,nz-month-picker,nz-quarter-picker,nz-year-picker,nz-range-picker", inputs: ["nzAllowClear", "nzAutoFocus", "nzDisabled", "nzBorderless", "nzInputReadOnly", "nzInline", "nzOpen", "nzDisabledDate", "nzLocale", "nzPlaceHolder", "nzPopupStyle", "nzDropdownClassName", "nzSize", "nzStatus", "nzFormat", "nzDateRender", "nzDisabledTime", "nzRenderExtraFooter", "nzShowToday", "nzMode", "nzShowNow", "nzRanges", "nzDefaultPickerValue", "nzSeparator", "nzSuffixIcon", "nzBackdrop", "nzId", "nzPlacement", "nzShowWeekNumber", "nzShowTime"], outputs: ["nzOnPanelChange", "nzOnCalendarChange", "nzOnOk", "nzOnOpenChange"], exportAs: ["nzDatePicker"] }, { kind: "ngmodule", type: NzSelectModule }, { kind: "component", type: i13.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzPlacement", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzSelectOnTab", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { kind: "ngmodule", type: NzCheckboxModule }, { kind: "component", type: i3$1.NzCheckboxComponent, selector: "[nz-checkbox]", inputs: ["nzValue", "nzAutoFocus", "nzDisabled", "nzIndeterminate", "nzChecked", "nzId", "nzName"], outputs: ["nzCheckedChange"], exportAs: ["nzCheckbox"] }, { kind: "component", type: ExtendInput, selector: "extend-input", inputs: ["label", "floatingLabel", "placeHolder", "labelAlign", "inputClass", "labelSpan", "labelFlex", "inputFlex", "showClear", "disabled", "readOnly", "required", "noBottom", "selectModeType", "autocomplete", "autofocus", "inputWidth", "inputHeight", "borderBottomOnly", "displayInline", "size", "displayField", "valueField", "formData", "controlName", "_ngModel", "isSubmited"], outputs: ["_ngModelChange", "onclickClearIcon", "onenter"] }, { kind: "ngmodule", type: NzModalModule }, { kind: "component", type: i15.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "component", type: DynamicFormComponent, selector: "app-dynamic-form", inputs: ["formMetadata", "formValuedata"] }, { kind: "directive", type: NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }] });
|
|
13676
13861
|
}
|
|
13677
13862
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: DynamicBuildFormComponent, decorators: [{
|
|
13678
13863
|
type: Component,
|
|
@@ -14302,13 +14487,13 @@ class RouteMonitorService {
|
|
|
14302
14487
|
}
|
|
14303
14488
|
});
|
|
14304
14489
|
}
|
|
14305
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: RouteMonitorService, deps: [{ token: i1$
|
|
14490
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: RouteMonitorService, deps: [{ token: i1$8.Router }, { token: AuthService }, { token: NotiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14306
14491
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: RouteMonitorService, providedIn: 'root' });
|
|
14307
14492
|
}
|
|
14308
14493
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: RouteMonitorService, decorators: [{
|
|
14309
14494
|
type: Injectable,
|
|
14310
14495
|
args: [{ providedIn: 'root' }]
|
|
14311
|
-
}], ctorParameters: () => [{ type: i1$
|
|
14496
|
+
}], ctorParameters: () => [{ type: i1$8.Router }, { type: AuthService }, { type: NotiService }] });
|
|
14312
14497
|
|
|
14313
14498
|
class ThemeService {
|
|
14314
14499
|
setHighContrast(enabled) {
|
|
@@ -14802,7 +14987,7 @@ class SideMenuComponent extends BaseComponent {
|
|
|
14802
14987
|
currentHeaderId = '';
|
|
14803
14988
|
onClickToMenu = new EventEmitter();
|
|
14804
14989
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: SideMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
14805
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: SideMenuComponent, isStandalone: true, selector: "side-menu", inputs: { filteredLstMenu: "filteredLstMenu", currentHeaderId: "currentHeaderId" }, outputs: { onClickToMenu: "onClickToMenu" }, usesInheritance: true, ngImport: i0, template: "<ul class=\"side-menu-wrapper\" nz-menu nzMode=\"inline\" [nzInlineIndent]=\"12\">\n @for (menuLv1 of filteredLstMenu; track menuLv1.App_Menu_Id) {\n @if (menuLv1.SubMenu?.length) {\n <ul nz-submenu [nzOpen]=\"menuLv1.Open\" [nzTitle]=\"menuLv1.Name\" [nzIcon]=\"menuLv1.Icon\">\n @for (menuLv2 of menuLv1.SubMenu; track menuLv2.App_Menu_Id) {\n @if (menuLv2.SubMenu?.length) {\n <ul nz-submenu [nzOpen]=\"menuLv2.Open\" [nzTitle]=\"menuLv2.Name\" [nzIcon]=\"menuLv2.Icon\">\n @for (menuLv3 of menuLv2.SubMenu; track menuLv3.App_Menu_Id) {\n @if (menuLv3.SubMenu?.length) {\n <ul nz-submenu [nzOpen]=\"menuLv3.Open\" [nzTitle]=\"menuLv3.Name\" [nzIcon]=\"menuLv3.Icon\">\n @for (menuLv4 of menuLv3.SubMenu; track menuLv4.App_Menu_Id) {\n @if (menuLv4.SubMenu?.length) {\n <ul nz-submenu [nzOpen]=\"menuLv4.Open\" [nzTitle]=\"menuLv4.Name\" [nzIcon]=\"menuLv4.Icon\">\n @for (menuLv5 of menuLv4.SubMenu; track menuLv5.App_Menu_Id) {}\n </ul>\n } @else {\n <li nz-menu-item nzMatchRouter>\n <nz-icon *ngIf=\"menuLv4.Icon\" [nzType]=\"menuLv4.Icon\"></nz-icon>\n <box [width]=\"2\"></box>\n <a\n [routerLink]=\"(currentHeaderId ? '/headermenuid/' + currentHeaderId : '') + menuLv4.Url\"\n (click)=\"onClickToMenu.emit()\"\n >\n {{ menuLv4.Name }}\n </a>\n </li>\n }\n }\n </ul>\n } @else {\n <li nz-menu-item nzMatchRouter>\n <nz-icon *ngIf=\"menuLv3.Icon\" [nzType]=\"menuLv3.Icon\"></nz-icon><box [width]=\"2\"></box>\n <a\n [routerLink]=\"(currentHeaderId ? '/headermenuid/' + currentHeaderId : '') + menuLv3.Url\"\n (click)=\"onClickToMenu.emit()\"\n >\n {{ menuLv3.Name }}\n </a>\n </li>\n }\n }\n </ul>\n } @else {\n <li nz-menu-item nzMatchRouter>\n <nz-icon *ngIf=\"menuLv2.Icon\" [nzType]=\"menuLv2.Icon\"></nz-icon><box [width]=\"2\"></box>\n <a\n [routerLink]=\"(currentHeaderId ? '/headermenuid/' + currentHeaderId : '') + menuLv2.Url\"\n (click)=\"onClickToMenu.emit()\"\n >\n {{ menuLv2.Name }}\n </a>\n </li>\n }\n }\n </ul>\n } @else {\n <li nz-menu-item nzMatchRouter>\n <nz-icon *ngIf=\"menuLv1.Icon\" [nzType]=\"menuLv1.Icon\"></nz-icon><box [width]=\"2\"></box>\n <a\n [routerLink]=\"(currentHeaderId ? '/headermenuid/' + currentHeaderId : '') + menuLv1.Url\"\n (click)=\"onClickToMenu.emit()\"\n >\n {{ menuLv1.Name }}\n </a>\n </li>\n }\n }\n</ul>\n", styles: ["@charset \"UTF-8\";.side-menu-wrapper .ant-menu-item{margin:0;font-weight:500}.side-menu-wrapper .ant-menu-item a{color:var(--app-text)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NzMenuModule }, { kind: "directive", type: i4$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "component", type: i4$2.NzSubMenuComponent, selector: "[nz-submenu]", inputs: ["nzMenuClassName", "nzPaddingLeft", "nzTitle", "nzIcon", "nzTriggerSubMenuAction", "nzOpen", "nzDisabled", "nzPlacement"], outputs: ["nzOpenChange"], exportAs: ["nzSubmenu"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: Box, selector: "box", inputs: ["display", "width", "height"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$
|
|
14990
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: SideMenuComponent, isStandalone: true, selector: "side-menu", inputs: { filteredLstMenu: "filteredLstMenu", currentHeaderId: "currentHeaderId" }, outputs: { onClickToMenu: "onClickToMenu" }, usesInheritance: true, ngImport: i0, template: "<ul class=\"side-menu-wrapper\" nz-menu nzMode=\"inline\" [nzInlineIndent]=\"12\">\n @for (menuLv1 of filteredLstMenu; track menuLv1.App_Menu_Id) {\n @if (menuLv1.SubMenu?.length) {\n <ul nz-submenu [nzOpen]=\"menuLv1.Open\" [nzTitle]=\"menuLv1.Name\" [nzIcon]=\"menuLv1.Icon\">\n @for (menuLv2 of menuLv1.SubMenu; track menuLv2.App_Menu_Id) {\n @if (menuLv2.SubMenu?.length) {\n <ul nz-submenu [nzOpen]=\"menuLv2.Open\" [nzTitle]=\"menuLv2.Name\" [nzIcon]=\"menuLv2.Icon\">\n @for (menuLv3 of menuLv2.SubMenu; track menuLv3.App_Menu_Id) {\n @if (menuLv3.SubMenu?.length) {\n <ul nz-submenu [nzOpen]=\"menuLv3.Open\" [nzTitle]=\"menuLv3.Name\" [nzIcon]=\"menuLv3.Icon\">\n @for (menuLv4 of menuLv3.SubMenu; track menuLv4.App_Menu_Id) {\n @if (menuLv4.SubMenu?.length) {\n <ul nz-submenu [nzOpen]=\"menuLv4.Open\" [nzTitle]=\"menuLv4.Name\" [nzIcon]=\"menuLv4.Icon\">\n @for (menuLv5 of menuLv4.SubMenu; track menuLv5.App_Menu_Id) {}\n </ul>\n } @else {\n <li nz-menu-item nzMatchRouter>\n <nz-icon *ngIf=\"menuLv4.Icon\" [nzType]=\"menuLv4.Icon\"></nz-icon>\n <box [width]=\"2\"></box>\n <a\n [routerLink]=\"(currentHeaderId ? '/headermenuid/' + currentHeaderId : '') + menuLv4.Url\"\n (click)=\"onClickToMenu.emit()\"\n >\n {{ menuLv4.Name }}\n </a>\n </li>\n }\n }\n </ul>\n } @else {\n <li nz-menu-item nzMatchRouter>\n <nz-icon *ngIf=\"menuLv3.Icon\" [nzType]=\"menuLv3.Icon\"></nz-icon><box [width]=\"2\"></box>\n <a\n [routerLink]=\"(currentHeaderId ? '/headermenuid/' + currentHeaderId : '') + menuLv3.Url\"\n (click)=\"onClickToMenu.emit()\"\n >\n {{ menuLv3.Name }}\n </a>\n </li>\n }\n }\n </ul>\n } @else {\n <li nz-menu-item nzMatchRouter>\n <nz-icon *ngIf=\"menuLv2.Icon\" [nzType]=\"menuLv2.Icon\"></nz-icon><box [width]=\"2\"></box>\n <a\n [routerLink]=\"(currentHeaderId ? '/headermenuid/' + currentHeaderId : '') + menuLv2.Url\"\n (click)=\"onClickToMenu.emit()\"\n >\n {{ menuLv2.Name }}\n </a>\n </li>\n }\n }\n </ul>\n } @else {\n <li nz-menu-item nzMatchRouter>\n <nz-icon *ngIf=\"menuLv1.Icon\" [nzType]=\"menuLv1.Icon\"></nz-icon><box [width]=\"2\"></box>\n <a\n [routerLink]=\"(currentHeaderId ? '/headermenuid/' + currentHeaderId : '') + menuLv1.Url\"\n (click)=\"onClickToMenu.emit()\"\n >\n {{ menuLv1.Name }}\n </a>\n </li>\n }\n }\n</ul>\n", styles: ["@charset \"UTF-8\";.side-menu-wrapper .ant-menu-item{margin:0;font-weight:500}.side-menu-wrapper .ant-menu-item a{color:var(--app-text)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NzMenuModule }, { kind: "directive", type: i4$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "component", type: i4$2.NzSubMenuComponent, selector: "[nz-submenu]", inputs: ["nzMenuClassName", "nzPaddingLeft", "nzTitle", "nzIcon", "nzTriggerSubMenuAction", "nzOpen", "nzDisabled", "nzPlacement"], outputs: ["nzOpenChange"], exportAs: ["nzSubmenu"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: Box, selector: "box", inputs: ["display", "width", "height"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
14806
14991
|
}
|
|
14807
14992
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: SideMenuComponent, decorators: [{
|
|
14808
14993
|
type: Component,
|
|
@@ -15255,7 +15440,7 @@ class LayoutComponent extends BaseComponent {
|
|
|
15255
15440
|
this.cdr.detectChanges();
|
|
15256
15441
|
}
|
|
15257
15442
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: LayoutComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
15258
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: LayoutComponent, isStandalone: true, selector: "layout", viewQueries: [{ propertyName: "menuContainer", first: true, predicate: ["menuContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<nz-layout class=\"app-layout\">\n <nz-header class=\"app-header\">\n <div nz-row nzAlign=\"middle\" class=\"header-content\">\n @if (isCollapsed) {\n <div @fadeInOut>\n \n <button nz-button nzType=\"text\" style=\"color: var(--theme-text-color)\" (click)=\"visibleMenuDrawer = true\">\n <nz-icon nzType=\"menu\" nzTheme=\"outline\" />\n </button>\n </div>\n }\n\n <div\n class=\"header-logo\"\n [style.width]=\"!isCollapsed ? siderWidthStorage : 'auto'\"\n [style.padding-right]=\"!isCollapsed ? '0' : '16px'\"\n >\n <div nz-flex nzJustify=\"center\" nzGap=\"small\" style=\"line-height: var(--app-header-height)\">\n <img\n *ngIf=\"logoUrl$ | async as url\"\n [src]=\"url\"\n style=\"padding: 4px; height: var(--app-header-height)\"\n hideIfError\n />\n @if (SYSTEM_NAME) {\n <h2 style=\"color: whitesmoke; margin-bottom: 0\">{{ SYSTEM_NAME }}</h2>\n } @else {\n -- o0o --\n }\n </div>\n </div>\n\n <!-- header menu -->\n <div nz-col nzFlex=\"auto\" class=\"header-menu\" style=\"min-width: 0\" #menuContainer>\n <ul\n nz-menu\n nzTheme=\"light\"\n nzMode=\"horizontal\"\n style=\"display: flex; flex-wrap: nowrap; border-bottom: none; line-height: var(--app-header-height)\"\n >\n @for (item of visibleMenus; track item) {\n <li\n nz-menu-item\n [nzSelected]=\"this.currentHeaderId === item.App_Menu_Id\"\n (click)=\"handleValueChangeHeaderMenu(item)\"\n >\n <nz-icon *ngIf=\"item.Icon\" [nzType]=\"item.Icon\"></nz-icon><box [width]=\"4\"></box>{{ item.Name }}\n </li>\n }\n\n @if (hiddenMenus.length > 0) {\n <li nz-submenu nzTitle=\". . .\" style=\"padding: 0 16px\">\n <ul>\n @for (item of hiddenMenus; track item) {\n <li\n nz-menu-item\n [nzSelected]=\"this.currentHeaderId === item.App_Menu_Id\"\n (click)=\"handleValueChangeHeaderMenu(item)\"\n >\n <nz-icon *ngIf=\"item.Icon\" [nzType]=\"item.Icon\"></nz-icon><box [width]=\"4\"></box>{{ item.Name }}\n </li>\n }\n </ul>\n </li>\n }\n </ul>\n </div>\n\n <div style=\"display: flex; align-items: center; flex-shrink: 0; gap: 8px; padding-right: 16px\">\n <header-search></header-search>\n <app-notification-center></app-notification-center>\n <header-user></header-user>\n </div>\n </div>\n </nz-header>\n <nz-layout class=\"body-layout\">\n <nz-sider\n [class.hide-side-menu]=\"LayoutComponent.noShowSideMenu\"\n class=\"menu-sidebar\"\n nzCollapsible\n [nzWidth]=\"siderWidth\"\n [nzCollapsedWidth]=\"0\"\n [(nzCollapsed)]=\"isCollapsed\"\n [nzTrigger]=\"null\"\n [nzTheme]=\"'dark'\"\n >\n <div class=\"menu-wapper\">\n @if (MENU_TYPE == 1) {\n <div class=\"nz-tree-wapper\">\n <nz-tree\n [nzData]=\"nodes\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzShowLine]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n [nzExpandedKeys]=\"expandedKeys\"\n (nzClick)=\"nzEvent($event)\"\n ></nz-tree>\n </div>\n } @else {\n <div class=\"nz-tree-wapper\">\n <side-menu [filteredLstMenu]=\"filteredLstMenu\" [currentHeaderId]=\"currentHeaderId\"></side-menu>\n </div>\n }\n\n <nz-input-group [nzSuffix]=\"suffixTemplate\">\n <input nz-input placeholder=\"T\u00ECm menu\" [(ngModel)]=\"searchValue\" />\n </nz-input-group>\n <ng-template #suffixTemplate>\n <span class=\"suffix-wrap\">\n <icon-delete\n class=\"suffix-icon delete\"\n [class.show]=\"searchValue\"\n [size]=\"14\"\n (click)=\"searchValue = ''\"\n ></icon-delete>\n\n <icon-search class=\"suffix-icon search\" [class.show]=\"!searchValue\"></icon-search>\n </span>\n </ng-template>\n </div>\n <div class=\"sider-footer\" style=\"height: var(--app-footer-height)\">\n <div nz-col nzFlex=\"auto\" class=\"content-footer text-italic\" style=\"font-size: 10px; color: lightgray\">\n {{ SYSTEM_SUB_NAME_LEFT || \"-- o0o --\" }}\n\n <span style=\"float: right\" (click)=\"triggerCollapse()\">\n <nz-icon class=\"trigger\" [nzType]=\"isCollapsed ? 'menu-unfold' : 'menu-fold'\" nz-tooltip=\"\u1EA8n menu\" />\n </span>\n </div>\n </div>\n </nz-sider>\n <nz-layout class=\"main-layout\">\n <nz-content class=\"content\">\n <div class=\"inner-content\">\n @if (!LayoutComponent.noShowBreadcrumb) {\n <app-breadcrumb [@fadeInOut] nz-col nzFlex=\"auto\"></app-breadcrumb>\n }\n <router-outlet></router-outlet>\n </div>\n <div nz-row class=\"sider-footer\" style=\"height: var(--app-footer-height)\">\n <div nz-col nzFlex=\"auto\" class=\"content-footer text-italic\" style=\"font-size: 10px; color: lightgray\">\n {{ SYSTEM_SUB_NAME_RIGHT || \"-- o0o --\" }}\n </div>\n </div>\n <!-- <nz-back-top [nzTarget]=\"'.content'\" [nzVisibilityHeight]=\"500\"></nz-back-top> -->\n </nz-content>\n </nz-layout>\n </nz-layout>\n</nz-layout>\n\n<nz-drawer\n [nzWrapClassName]=\"'same-theme-color menu-drawer'\"\n [nzWidth]=\"350\"\n [nzClosable]=\"false\"\n [(nzVisible)]=\"visibleMenuDrawer\"\n [nzMaskClosable]=\"true\"\n nzPlacement=\"left\"\n nzTitle=\"\"\n (nzOnClose)=\"closeMenuDrawer()\"\n>\n <ng-container *nzDrawerContent>\n <div class=\"menu-wapper\">\n @if (MENU_TYPE == 1) {\n <div class=\"nz-tree-wapper in-drawer\">\n <nz-tree\n [nzData]=\"nodes\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzShowLine]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n [nzExpandedKeys]=\"expandedKeys\"\n (nzClick)=\"nzEvent($event)\"\n ></nz-tree>\n </div>\n } @else {\n <div class=\"nz-tree-wapper in-drawer\">\n <side-menu\n [filteredLstMenu]=\"filteredLstMenu\"\n [currentHeaderId]=\"currentHeaderId\"\n (onClickToMenu)=\"visibleMenuDrawer = false\"\n ></side-menu>\n </div>\n }\n\n <nz-input-group [nzSuffix]=\"suffixTemplate\" [nzAddOnAfter]=\"afterTemplate\">\n <input nz-input placeholder=\"T\u00ECm menu\" [(ngModel)]=\"searchValue\" />\n </nz-input-group>\n <ng-template #suffixTemplate>\n <span class=\"suffix-wrap\">\n <icon-delete\n class=\"suffix-icon delete\"\n [class.show]=\"searchValue\"\n [size]=\"14\"\n (click)=\"searchValue = ''\"\n ></icon-delete>\n\n <icon-search class=\"suffix-icon search\" [class.show]=\"!searchValue\"></icon-search>\n </span>\n </ng-template>\n <ng-template #afterTemplate>\n <button nz-button (click)=\"triggerCollapse(); this.visibleMenuDrawer = false\">\n <nz-icon *ngIf=\"isCollapsed\" [nzType]=\"isCollapsed ? 'menu-unfold' : 'menu-fold'\" />\n </button>\n </ng-template>\n </div>\n </ng-container>\n</nz-drawer>\n<app-global-spinner></app-global-spinner>\n", styles: ["@charset \"UTF-8\";:host{display:flex;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-sidebar: #f0f2f5;--bg-content: #fff;--bg-inner: #fff;--border-color: transparent;--text-main: rgba(0, 0, 0, .85)}:host-context(.dark-theme),:host(.dark-theme){--theme-color: #303030 !important;--theme-text-color: #e1e1e1 !important;--bg-sidebar: #262626;--bg-content: #1f1f1f;--bg-inner: #1f1f1f;--border-color: #424242;--text-main: #e1e1e1}html,body,app-root{height:100%;margin:0}.app-layout{display:flex;flex-direction:column;height:100vh}.app-header{position:fixed;top:0;left:0;width:100%;height:var(--app-header-height);background:var(--theme-color);color:var(--theme-text-color);box-shadow:0 1px 4px #00152914;z-index:1000;display:flex;align-items:center;padding:0;border-bottom:1px solid var(--border-color);transition:background-color .3s ease}.header-content{width:100%;flex-wrap:nowrap!important}.header-logo{height:var(--app-header-height);text-align:center;color:var(--theme-text-color);transition:width .3s;flex-shrink:0;overflow:hidden}.body-layout{display:flex;flex:1;margin-top:var(--app-header-height);height:calc(100vh - var(--app-header-height));overflow:hidden}.menu-sidebar{width:256px;background:#f0f2f5;overflow-y:auto;overflow-x:hidden;transition:all .3s cubic-bezier(.25,.8,.25,1)!important;min-height:calc(100vh - var(--app-header-height))}.menu-sidebar.hide-side-menu{flex:0 0 0px!important;max-width:0px!important;min-width:0px!important;width:0px!important}.menu-wapper{min-height:calc(100% - var(--app-footer-height))}.main-layout{display:flex;flex-direction:column;flex:1;overflow:hidden}.content{flex:1;background:var(--bg-content);overflow-x:hidden;overflow-y:auto;height:100%}.inner-content{background:var(--bg-inner);color:var(--text-main);min-height:calc(100% - var(--app-footer-height));padding:8px;box-sizing:border-box}.content-footer{background:var(--theme-color);color:var(--theme-text-color);align-items:center;text-align:center}.sider-footer{background:var(--theme-color);color:var(--theme-text-color);align-items:center;text-align:right}.trigger{margin-right:8px}.menu-sidebar .ant-menu-inline .ant-menu-item{margin-top:0;margin-bottom:0}::ng-deep .menu-wapper .anticon-file{display:none}:host ::ng-deep .ant-back-top{right:30px;bottom:40px}::ng-deep .same-theme-color .ant-drawer-content{background:var(--theme-menu-color)}.nz-tree-wapper{height:calc(100vh - var(--app-header-height) - var(--app-footer-height) - 32px);overflow-y:auto}.nz-tree-wapper.in-drawer{height:calc(100vh - 32px);overflow-y:auto}::ng-deep .menu-drawer .ant-drawer-body{padding:0}::ng-deep .ant-breadcrumb-link{cursor:pointer}::ng-deep .breadcrumb-header .ant-breadcrumb-link{color:var(--theme-text-color);cursor:pointer}::ng-deep .breadcrumb-header .ant-breadcrumb-separator{color:var(--theme-text-color)}::ng-deep .header-menu .ant-segmented-item:not(.ant-segmented-item-selected){color:var(--theme-text-color)}::ng-deep .header-menu .ant-segmented-item{border-left:1px solid}::ng-deep .header-menu .ant-segmented-item:last-child{border-right:1px solid}.suffix-wrap{position:relative;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center}.suffix-icon{position:absolute;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .16s ease,transform .18s cubic-bezier(.4,0,.2,1);transform:scale(.6) translate(4px)}.suffix-icon.show{opacity:1;pointer-events:auto;transform:scale(1) translate(0)}.search{color:#00000073}.delete{color:#bfbfbf}.delete.show{animation:popIn .18s ease}::ng-deep .header-menu .ant-menu-horizontal{background-color:transparent!important;border-bottom:none!important}::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-item,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu{color:var(--theme-text-color)!important;opacity:.85;font-weight:600}::ng-deep .header-menu .ant-menu-submenu-title .anticon{color:var(--theme-text-color)!important}::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-item:hover,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu:hover,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-item-selected,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu-open,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu-selected{color:var(--theme-text-color)!important;opacity:1;background-color:#ffffff1a!important}::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-item:hover:after,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu:hover:after,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-item-selected:after,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu-open:after,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu-selected:after{border-bottom-color:#40a9ff!important}@keyframes popIn{0%{transform:scale(.5)}70%{transform:scale(1.15)}to{transform:scale(1)}}:host-context(.dark-theme) .content-footer,:host-context(.dark-theme) .sider-footer{background-color:var(--bg-sidebar);border-top:1px solid var(--border-color)}:host-context(.dark-theme) ::ng-deep .menu-sidebar .ant-tree,:host-context(.dark-theme) ::ng-deep .menu-drawer .ant-tree{background:transparent;color:var(--text-main)}:host-context(.dark-theme) ::ng-deep .ant-tree-node-content-wrapper:hover{background-color:#ffffff14!important}:host-context(.dark-theme) ::ng-deep .ant-tree-node-selected{background-color:#ffffff1f!important;color:#fff!important}:host-context(.dark-theme) ::ng-deep .menu-wapper .ant-input,:host-context(.dark-theme) ::ng-deep .menu-wapper .ant-input-group-addon{background-color:var(--bg-content);border-color:var(--border-color);color:var(--text-main)}:host-context(.dark-theme) ::ng-deep .menu-wapper .search,:host-context(.dark-theme) ::ng-deep .menu-wapper .delete{color:#8c8c8c}:host-context(.dark-theme) ::ng-deep .breadcrumb-header .ant-breadcrumb-link,:host-context(.dark-theme) ::ng-deep .breadcrumb-header .ant-breadcrumb-separator{color:#8c8c8c!important}:host-context(.dark-theme) ::ng-deep .breadcrumb-header .ant-breadcrumb-link:hover{color:var(--text-main)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: NzLayoutModule }, { kind: "component", type: i2$5.NzLayoutComponent, selector: "nz-layout", exportAs: ["nzLayout"] }, { kind: "component", type: i2$5.NzHeaderComponent, selector: "nz-header", exportAs: ["nzHeader"] }, { kind: "component", type: i2$5.NzContentComponent, selector: "nz-content", exportAs: ["nzContent"] }, { kind: "component", type: i2$5.NzSiderComponent, selector: "nz-sider", inputs: ["nzWidth", "nzTheme", "nzCollapsedWidth", "nzBreakpoint", "nzZeroTrigger", "nzTrigger", "nzReverseArrow", "nzCollapsible", "nzCollapsed"], outputs: ["nzCollapsedChange"], exportAs: ["nzSider"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i4$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "component", type: i4$2.NzSubMenuComponent, selector: "[nz-submenu]", inputs: ["nzMenuClassName", "nzPaddingLeft", "nzTitle", "nzIcon", "nzTriggerSubMenuAction", "nzOpen", "nzDisabled", "nzPlacement"], outputs: ["nzOpenChange"], exportAs: ["nzSubmenu"] }, { kind: "ngmodule", type: NzGridModule }, { kind: "directive", type: i2$1.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i2$1.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "ngmodule", type: NzFlexModule }, { kind: "directive", type: i3$3.NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i2$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: i3$2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "component", type: Breadcrumb, selector: "app-breadcrumb" }, { kind: "ngmodule", type: NzTreeModule }, { kind: "component", type: i10.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzExpandedIcon", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzTreeTemplate", "nzBeforeDrop", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckboxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }, { kind: "ngmodule", type: NzBackTopModule }, { kind: "ngmodule", type: NzDrawerModule }, { kind: "component", type: i3$6.NzDrawerComponent, selector: "nz-drawer", inputs: ["nzContent", "nzCloseIcon", "nzClosable", "nzMaskClosable", "nzMask", "nzCloseOnNavigation", "nzNoAnimation", "nzKeyboard", "nzTitle", "nzExtra", "nzFooter", "nzPlacement", "nzSize", "nzMaskStyle", "nzBodyStyle", "nzWrapClassName", "nzWidth", "nzHeight", "nzZIndex", "nzOffsetX", "nzOffsetY", "nzVisible"], outputs: ["nzOnViewInit", "nzOnClose", "nzVisibleChange"], exportAs: ["nzDrawer"] }, { kind: "directive", type: i3$6.NzDrawerContentDirective, selector: "[nzDrawerContent]", exportAs: ["nzDrawerContent"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i6.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i6.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i6.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "component", type: Box, selector: "box", inputs: ["display", "width", "height"] }, { kind: "ngmodule", type: NzSegmentedModule }, { kind: "component", type: LayoutUser, selector: "header-user" }, { kind: "component", type: IconDelete, selector: "icon-delete", inputs: ["size"], outputs: ["click"] }, { kind: "component", type: IconSearch, selector: "icon-search", inputs: ["size"], outputs: ["click"] }, { kind: "directive", type: HideIfErrorDirective, selector: "img[hideIfError]" }, { kind: "component", type: NotificationCenterComponent, selector: "app-notification-center" }, { kind: "component", type: HeaderSearchComponent, selector: "header-search", inputs: ["searchValue"], outputs: ["searchValueChange", "onSearch"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i8.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "ngmodule", type: NzMenuModule }, { kind: "component", type: SideMenuComponent, selector: "side-menu", inputs: ["filteredLstMenu", "currentHeaderId"], outputs: ["onClickToMenu"] }, { kind: "component", type: GlobalSpinnerComponent, selector: "app-global-spinner" }], animations: [fadeInOut] });
|
|
15443
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: LayoutComponent, isStandalone: true, selector: "layout", viewQueries: [{ propertyName: "menuContainer", first: true, predicate: ["menuContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<nz-layout class=\"app-layout\">\n <nz-header class=\"app-header\">\n <div nz-row nzAlign=\"middle\" class=\"header-content\">\n @if (isCollapsed) {\n <div @fadeInOut>\n \n <button nz-button nzType=\"text\" style=\"color: var(--theme-text-color)\" (click)=\"visibleMenuDrawer = true\">\n <nz-icon nzType=\"menu\" nzTheme=\"outline\" />\n </button>\n </div>\n }\n\n <div\n class=\"header-logo\"\n [style.width]=\"!isCollapsed ? siderWidthStorage : 'auto'\"\n [style.padding-right]=\"!isCollapsed ? '0' : '16px'\"\n >\n <div nz-flex nzJustify=\"center\" nzGap=\"small\" style=\"line-height: var(--app-header-height)\">\n <img\n *ngIf=\"logoUrl$ | async as url\"\n [src]=\"url\"\n style=\"padding: 4px; height: var(--app-header-height)\"\n hideIfError\n />\n @if (SYSTEM_NAME) {\n <h2 style=\"color: whitesmoke; margin-bottom: 0\">{{ SYSTEM_NAME }}</h2>\n } @else {\n -- o0o --\n }\n </div>\n </div>\n\n <!-- header menu -->\n <div nz-col nzFlex=\"auto\" class=\"header-menu\" style=\"min-width: 0\" #menuContainer>\n <ul\n nz-menu\n nzTheme=\"light\"\n nzMode=\"horizontal\"\n style=\"display: flex; flex-wrap: nowrap; border-bottom: none; line-height: var(--app-header-height)\"\n >\n @for (item of visibleMenus; track item) {\n <li\n nz-menu-item\n [nzSelected]=\"this.currentHeaderId === item.App_Menu_Id\"\n (click)=\"handleValueChangeHeaderMenu(item)\"\n >\n <nz-icon *ngIf=\"item.Icon\" [nzType]=\"item.Icon\"></nz-icon><box [width]=\"4\"></box>{{ item.Name }}\n </li>\n }\n\n @if (hiddenMenus.length > 0) {\n <li nz-submenu nzTitle=\". . .\" style=\"padding: 0 16px\">\n <ul>\n @for (item of hiddenMenus; track item) {\n <li\n nz-menu-item\n [nzSelected]=\"this.currentHeaderId === item.App_Menu_Id\"\n (click)=\"handleValueChangeHeaderMenu(item)\"\n >\n <nz-icon *ngIf=\"item.Icon\" [nzType]=\"item.Icon\"></nz-icon><box [width]=\"4\"></box>{{ item.Name }}\n </li>\n }\n </ul>\n </li>\n }\n </ul>\n </div>\n\n <div style=\"display: flex; align-items: center; flex-shrink: 0; gap: 8px; padding-right: 16px\">\n <header-search></header-search>\n <app-notification-center></app-notification-center>\n <header-user></header-user>\n </div>\n </div>\n </nz-header>\n <nz-layout class=\"body-layout\">\n <nz-sider\n [class.hide-side-menu]=\"LayoutComponent.noShowSideMenu\"\n class=\"menu-sidebar\"\n nzCollapsible\n [nzWidth]=\"siderWidth\"\n [nzCollapsedWidth]=\"0\"\n [(nzCollapsed)]=\"isCollapsed\"\n [nzTrigger]=\"null\"\n [nzTheme]=\"'dark'\"\n >\n <div class=\"menu-wapper\">\n @if (MENU_TYPE == 1) {\n <div class=\"nz-tree-wapper\">\n <nz-tree\n [nzData]=\"nodes\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzShowLine]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n [nzExpandedKeys]=\"expandedKeys\"\n (nzClick)=\"nzEvent($event)\"\n ></nz-tree>\n </div>\n } @else {\n <div class=\"nz-tree-wapper\">\n <side-menu [filteredLstMenu]=\"filteredLstMenu\" [currentHeaderId]=\"currentHeaderId\"></side-menu>\n </div>\n }\n\n <nz-input-group [nzSuffix]=\"suffixTemplate\">\n <input nz-input placeholder=\"T\u00ECm menu\" [(ngModel)]=\"searchValue\" />\n </nz-input-group>\n <ng-template #suffixTemplate>\n <span class=\"suffix-wrap\">\n <icon-delete\n class=\"suffix-icon delete\"\n [class.show]=\"searchValue\"\n [size]=\"14\"\n (click)=\"searchValue = ''\"\n ></icon-delete>\n\n <icon-search class=\"suffix-icon search\" [class.show]=\"!searchValue\"></icon-search>\n </span>\n </ng-template>\n </div>\n <div class=\"sider-footer\" style=\"height: var(--app-footer-height)\">\n <div nz-col nzFlex=\"auto\" class=\"content-footer text-italic\" style=\"font-size: 10px; color: lightgray\">\n {{ SYSTEM_SUB_NAME_LEFT || \"-- o0o --\" }}\n\n <span style=\"float: right\" (click)=\"triggerCollapse()\">\n <nz-icon class=\"trigger\" [nzType]=\"isCollapsed ? 'menu-unfold' : 'menu-fold'\" nz-tooltip=\"\u1EA8n menu\" />\n </span>\n </div>\n </div>\n </nz-sider>\n <nz-layout class=\"main-layout\">\n <nz-content class=\"content\">\n <div class=\"inner-content\">\n @if (!LayoutComponent.noShowBreadcrumb) {\n <app-breadcrumb [@fadeInOut] nz-col nzFlex=\"auto\"></app-breadcrumb>\n }\n <router-outlet></router-outlet>\n </div>\n <div nz-row class=\"sider-footer\" style=\"height: var(--app-footer-height)\">\n <div nz-col nzFlex=\"auto\" class=\"content-footer text-italic\" style=\"font-size: 10px; color: lightgray\">\n {{ SYSTEM_SUB_NAME_RIGHT || \"-- o0o --\" }}\n </div>\n </div>\n <!-- <nz-back-top [nzTarget]=\"'.content'\" [nzVisibilityHeight]=\"500\"></nz-back-top> -->\n </nz-content>\n </nz-layout>\n </nz-layout>\n</nz-layout>\n\n<nz-drawer\n [nzWrapClassName]=\"'same-theme-color menu-drawer'\"\n [nzWidth]=\"350\"\n [nzClosable]=\"false\"\n [(nzVisible)]=\"visibleMenuDrawer\"\n [nzMaskClosable]=\"true\"\n nzPlacement=\"left\"\n nzTitle=\"\"\n (nzOnClose)=\"closeMenuDrawer()\"\n>\n <ng-container *nzDrawerContent>\n <div class=\"menu-wapper\">\n @if (MENU_TYPE == 1) {\n <div class=\"nz-tree-wapper in-drawer\">\n <nz-tree\n [nzData]=\"nodes\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzShowLine]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n [nzExpandedKeys]=\"expandedKeys\"\n (nzClick)=\"nzEvent($event)\"\n ></nz-tree>\n </div>\n } @else {\n <div class=\"nz-tree-wapper in-drawer\">\n <side-menu\n [filteredLstMenu]=\"filteredLstMenu\"\n [currentHeaderId]=\"currentHeaderId\"\n (onClickToMenu)=\"visibleMenuDrawer = false\"\n ></side-menu>\n </div>\n }\n\n <nz-input-group [nzSuffix]=\"suffixTemplate\" [nzAddOnAfter]=\"afterTemplate\">\n <input nz-input placeholder=\"T\u00ECm menu\" [(ngModel)]=\"searchValue\" />\n </nz-input-group>\n <ng-template #suffixTemplate>\n <span class=\"suffix-wrap\">\n <icon-delete\n class=\"suffix-icon delete\"\n [class.show]=\"searchValue\"\n [size]=\"14\"\n (click)=\"searchValue = ''\"\n ></icon-delete>\n\n <icon-search class=\"suffix-icon search\" [class.show]=\"!searchValue\"></icon-search>\n </span>\n </ng-template>\n <ng-template #afterTemplate>\n <button nz-button (click)=\"triggerCollapse(); this.visibleMenuDrawer = false\">\n <nz-icon *ngIf=\"isCollapsed\" [nzType]=\"isCollapsed ? 'menu-unfold' : 'menu-fold'\" />\n </button>\n </ng-template>\n </div>\n </ng-container>\n</nz-drawer>\n<app-global-spinner></app-global-spinner>\n", styles: ["@charset \"UTF-8\";:host{display:flex;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-sidebar: #f0f2f5;--bg-content: #fff;--bg-inner: #fff;--border-color: transparent;--text-main: rgba(0, 0, 0, .85)}:host-context(.dark-theme),:host(.dark-theme){--theme-color: #303030 !important;--theme-text-color: #e1e1e1 !important;--bg-sidebar: #262626;--bg-content: #1f1f1f;--bg-inner: #1f1f1f;--border-color: #424242;--text-main: #e1e1e1}html,body,app-root{height:100%;margin:0}.app-layout{display:flex;flex-direction:column;height:100vh}.app-header{position:fixed;top:0;left:0;width:100%;height:var(--app-header-height);background:var(--theme-color);color:var(--theme-text-color);box-shadow:0 1px 4px #00152914;z-index:1000;display:flex;align-items:center;padding:0;border-bottom:1px solid var(--border-color);transition:background-color .3s ease}.header-content{width:100%;flex-wrap:nowrap!important}.header-logo{height:var(--app-header-height);text-align:center;color:var(--theme-text-color);transition:width .3s;flex-shrink:0;overflow:hidden}.body-layout{display:flex;flex:1;margin-top:var(--app-header-height);height:calc(100vh - var(--app-header-height));overflow:hidden}.menu-sidebar{width:256px;background:#f0f2f5;overflow-y:auto;overflow-x:hidden;transition:all .3s cubic-bezier(.25,.8,.25,1)!important;min-height:calc(100vh - var(--app-header-height))}.menu-sidebar.hide-side-menu{flex:0 0 0px!important;max-width:0px!important;min-width:0px!important;width:0px!important}.menu-wapper{min-height:calc(100% - var(--app-footer-height))}.main-layout{display:flex;flex-direction:column;flex:1;overflow:hidden}.content{flex:1;background:var(--bg-content);overflow-x:hidden;overflow-y:auto;height:100%}.inner-content{background:var(--bg-inner);color:var(--text-main);min-height:calc(100% - var(--app-footer-height));padding:8px;box-sizing:border-box}.content-footer{background:var(--theme-color);color:var(--theme-text-color);align-items:center;text-align:center}.sider-footer{background:var(--theme-color);color:var(--theme-text-color);align-items:center;text-align:right}.trigger{margin-right:8px}.menu-sidebar .ant-menu-inline .ant-menu-item{margin-top:0;margin-bottom:0}::ng-deep .menu-wapper .anticon-file{display:none}:host ::ng-deep .ant-back-top{right:30px;bottom:40px}::ng-deep .same-theme-color .ant-drawer-content{background:var(--theme-menu-color)}.nz-tree-wapper{height:calc(100vh - var(--app-header-height) - var(--app-footer-height) - 32px);overflow-y:auto}.nz-tree-wapper.in-drawer{height:calc(100vh - 32px);overflow-y:auto}::ng-deep .menu-drawer .ant-drawer-body{padding:0}::ng-deep .ant-breadcrumb-link{cursor:pointer}::ng-deep .breadcrumb-header .ant-breadcrumb-link{color:var(--theme-text-color);cursor:pointer}::ng-deep .breadcrumb-header .ant-breadcrumb-separator{color:var(--theme-text-color)}::ng-deep .header-menu .ant-segmented-item:not(.ant-segmented-item-selected){color:var(--theme-text-color)}::ng-deep .header-menu .ant-segmented-item{border-left:1px solid}::ng-deep .header-menu .ant-segmented-item:last-child{border-right:1px solid}.suffix-wrap{position:relative;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center}.suffix-icon{position:absolute;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .16s ease,transform .18s cubic-bezier(.4,0,.2,1);transform:scale(.6) translate(4px)}.suffix-icon.show{opacity:1;pointer-events:auto;transform:scale(1) translate(0)}.search{color:#00000073}.delete{color:#bfbfbf}.delete.show{animation:popIn .18s ease}::ng-deep .header-menu .ant-menu-horizontal{background-color:transparent!important;border-bottom:none!important}::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-item,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu{color:var(--theme-text-color)!important;opacity:.85;font-weight:600}::ng-deep .header-menu .ant-menu-submenu-title .anticon{color:var(--theme-text-color)!important}::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-item:hover,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu:hover,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-item-selected,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu-open,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu-selected{color:var(--theme-text-color)!important;opacity:1;background-color:#ffffff1a!important}::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-item:hover:after,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu:hover:after,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-item-selected:after,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu-open:after,::ng-deep .header-menu .ant-menu-horizontal>.ant-menu-submenu-selected:after{border-bottom-color:#40a9ff!important}@keyframes popIn{0%{transform:scale(.5)}70%{transform:scale(1.15)}to{transform:scale(1)}}:host-context(.dark-theme) .content-footer,:host-context(.dark-theme) .sider-footer{background-color:var(--bg-sidebar);border-top:1px solid var(--border-color)}:host-context(.dark-theme) ::ng-deep .menu-sidebar .ant-tree,:host-context(.dark-theme) ::ng-deep .menu-drawer .ant-tree{background:transparent;color:var(--text-main)}:host-context(.dark-theme) ::ng-deep .ant-tree-node-content-wrapper:hover{background-color:#ffffff14!important}:host-context(.dark-theme) ::ng-deep .ant-tree-node-selected{background-color:#ffffff1f!important;color:#fff!important}:host-context(.dark-theme) ::ng-deep .menu-wapper .ant-input,:host-context(.dark-theme) ::ng-deep .menu-wapper .ant-input-group-addon{background-color:var(--bg-content);border-color:var(--border-color);color:var(--text-main)}:host-context(.dark-theme) ::ng-deep .menu-wapper .search,:host-context(.dark-theme) ::ng-deep .menu-wapper .delete{color:#8c8c8c}:host-context(.dark-theme) ::ng-deep .breadcrumb-header .ant-breadcrumb-link,:host-context(.dark-theme) ::ng-deep .breadcrumb-header .ant-breadcrumb-separator{color:#8c8c8c!important}:host-context(.dark-theme) ::ng-deep .breadcrumb-header .ant-breadcrumb-link:hover{color:var(--text-main)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: NzLayoutModule }, { kind: "component", type: i2$5.NzLayoutComponent, selector: "nz-layout", exportAs: ["nzLayout"] }, { kind: "component", type: i2$5.NzHeaderComponent, selector: "nz-header", exportAs: ["nzHeader"] }, { kind: "component", type: i2$5.NzContentComponent, selector: "nz-content", exportAs: ["nzContent"] }, { kind: "component", type: i2$5.NzSiderComponent, selector: "nz-sider", inputs: ["nzWidth", "nzTheme", "nzCollapsedWidth", "nzBreakpoint", "nzZeroTrigger", "nzTrigger", "nzReverseArrow", "nzCollapsible", "nzCollapsed"], outputs: ["nzCollapsedChange"], exportAs: ["nzSider"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i4$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "component", type: i4$2.NzSubMenuComponent, selector: "[nz-submenu]", inputs: ["nzMenuClassName", "nzPaddingLeft", "nzTitle", "nzIcon", "nzTriggerSubMenuAction", "nzOpen", "nzDisabled", "nzPlacement"], outputs: ["nzOpenChange"], exportAs: ["nzSubmenu"] }, { kind: "ngmodule", type: NzGridModule }, { kind: "directive", type: i2$1.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i2$1.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "ngmodule", type: NzFlexModule }, { kind: "directive", type: i3$3.NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i2$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: i3$2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "component", type: Breadcrumb, selector: "app-breadcrumb" }, { kind: "ngmodule", type: NzTreeModule }, { kind: "component", type: i1$7.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzExpandedIcon", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzTreeTemplate", "nzBeforeDrop", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckboxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }, { kind: "ngmodule", type: NzBackTopModule }, { kind: "ngmodule", type: NzDrawerModule }, { kind: "component", type: i3$6.NzDrawerComponent, selector: "nz-drawer", inputs: ["nzContent", "nzCloseIcon", "nzClosable", "nzMaskClosable", "nzMask", "nzCloseOnNavigation", "nzNoAnimation", "nzKeyboard", "nzTitle", "nzExtra", "nzFooter", "nzPlacement", "nzSize", "nzMaskStyle", "nzBodyStyle", "nzWrapClassName", "nzWidth", "nzHeight", "nzZIndex", "nzOffsetX", "nzOffsetY", "nzVisible"], outputs: ["nzOnViewInit", "nzOnClose", "nzVisibleChange"], exportAs: ["nzDrawer"] }, { kind: "directive", type: i3$6.NzDrawerContentDirective, selector: "[nzDrawerContent]", exportAs: ["nzDrawerContent"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i6.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i6.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i6.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "component", type: Box, selector: "box", inputs: ["display", "width", "height"] }, { kind: "ngmodule", type: NzSegmentedModule }, { kind: "component", type: LayoutUser, selector: "header-user" }, { kind: "component", type: IconDelete, selector: "icon-delete", inputs: ["size"], outputs: ["click"] }, { kind: "component", type: IconSearch, selector: "icon-search", inputs: ["size"], outputs: ["click"] }, { kind: "directive", type: HideIfErrorDirective, selector: "img[hideIfError]" }, { kind: "component", type: NotificationCenterComponent, selector: "app-notification-center" }, { kind: "component", type: HeaderSearchComponent, selector: "header-search", inputs: ["searchValue"], outputs: ["searchValueChange", "onSearch"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i8.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "ngmodule", type: NzMenuModule }, { kind: "component", type: SideMenuComponent, selector: "side-menu", inputs: ["filteredLstMenu", "currentHeaderId"], outputs: ["onClickToMenu"] }, { kind: "component", type: GlobalSpinnerComponent, selector: "app-global-spinner" }], animations: [fadeInOut] });
|
|
15259
15444
|
}
|
|
15260
15445
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: LayoutComponent, decorators: [{
|
|
15261
15446
|
type: Component,
|
|
@@ -19640,5 +19825,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImpor
|
|
|
19640
19825
|
* Generated bundle index. Do not edit.
|
|
19641
19826
|
*/
|
|
19642
19827
|
|
|
19643
|
-
export { ABAC_RULES_TOKEN, ActionRule, ActionRuleLine, AnimatedDigitComponent, AppGlobals, AppStorage, App_Dic_Domain, App_Dic_DomainFilter, App_File, App_Menu$1 as App_Menu, App_Org, App_Role, App_Role_Menu_Ref, App_Setting, App_SettingFilter, App_User, AuthGuard, AuthService, AutoFocusDirective, BarGraphComponent, BaseComponent, BaseGuardChangeComponent, BaseOverlayComponent, Box, Breadcrumb, CacheListComponent, CheckModel, CommonService, ConfigComponent, CustomNotiComponent, CustomNotiService, DashcardComponent, DateInputParserDirective, DateTimeHelper, DicDomainListComponent, DicDomainPipe, DicDomainSelectComponent$1 as DicDomainSelectComponent, DicDomainService, DocTemplate, DoughnutGraphComponent, DownloadHelper, DurationFormatPipe, DynamicBuildFormComponent, ENUM_ResponseType, ExpandableSearchComponent, ExtendCheckbox, ExtendCheckbox3Value, ExtendDatePicker, ExtendDateRangePicker, ExtendInput, ExtendInputNumber, ExtendPaginationComponent, ExtendSelectComponent, ExtendTableComponent, ExtendTextArea, FileFilter, FileListComponent, FileService, FormatBytesPipe, GlobalSpinnerComponent, GridFilter, H3Icon, HTTPService, HasPermissionDirective, HasPermissionPipe, HeaderSearchComponent, HideIfErrorDirective, HighlightPipe, IconAdd, IconCheck, IconClose, IconCopy, IconDelete, IconEdit, IconInfo, IconSave, IconSearch, IconView, LayoutComponent, LayoutUser, LimitLettersPipe, LimitWordsPipe, LineGraphComponent, LoadingService, LogAppComponent, LogServerComponent, LogServerDetailComponent, Login1Component, Login2Component, LoginComponent, MailTemplateService, MenuDetailComponent, MenuFilter, MenuListComponent, MenuService, MonitorComponent, NoPermission, Nodata, NotiService, NotificationCenterComponent, NullIfEmptyDirective, NumberOnlyDirective, OrderOption, OrgDetailComponent, OrgFilter, OrgListComponent, OrgService, PagingData, PagingModel, PdfViewerComponent, PermissionComponent, PermissionService$1 as PermissionService, ReadMoreProComponent, RegisterComponent, RoleDetailComponent, RoleFilter, RoleListComponent, RoleService, RouteMonitorService, RptConfigDetail, RptConfigList, SequenceDetailComponent, SequenceListComponent, SessionManagerService, SettingListComponent, SettingService$1 as SettingService, SynologyComponent, TableHeader, ThemeService, TokenStorage, TranslateKey, URLs$j as URLs, UnsavedChangesGuard, UpperCaseFirsLetterEachWordDirective, UppercaseDirective, UppercaseFirstLetterDirective, UserDetailComponent, UserFilter, UserListComponent, UserProfileComponent, UserProfileService, UserService, VersionComponent, VscService, WF_DocDetailComponent, WF_DocListComponent, WF_DocProcessComponent, WF_TemplateActionRef$1 as WF_TemplateActionRef, WF_TemplateDetail$1 as WF_TemplateDetail, WF_TemplateList, WF_Template_CombineDetailComponent, WF_Template_CombineListComponent, WF_TransitionRule, WF_TransitionRuleLine$1 as WF_TransitionRuleLine, Workflow$1 as Workflow, WorkflowAction, WorkflowActionEditorOption, WorkflowActionRef, WorkflowEditorComponent, WorkflowEditorOption$1 as WorkflowEditorOption, WorkflowStage, WorkflowStageEditorOption, XLSXHelper, authInterceptor };
|
|
19828
|
+
export { ABAC_RULES_TOKEN, ActionRule, ActionRuleLine, AnimatedDigitComponent, AppDataComponent, AppGlobals, AppStorage, App_Dic_Domain, App_Dic_DomainFilter, App_File, App_Menu$1 as App_Menu, App_Org, App_Role, App_Role_Menu_Ref, App_Setting, App_SettingFilter, App_User, AuthGuard, AuthService, AutoFocusDirective, BarGraphComponent, BaseComponent, BaseGuardChangeComponent, BaseOverlayComponent, Box, Breadcrumb, CacheListComponent, CheckModel, CommonService, ConfigComponent, CustomNotiComponent, CustomNotiService, DashcardComponent, DateInputParserDirective, DateTimeHelper, DicDomainListComponent, DicDomainPipe, DicDomainSelectComponent$1 as DicDomainSelectComponent, DicDomainService, DocTemplate, DoughnutGraphComponent, DownloadHelper, DurationFormatPipe, DynamicBuildFormComponent, ENUM_ResponseType, ExpandableSearchComponent, ExtendCheckbox, ExtendCheckbox3Value, ExtendDatePicker, ExtendDateRangePicker, ExtendInput, ExtendInputNumber, ExtendPaginationComponent, ExtendSelectComponent, ExtendTableComponent, ExtendTextArea, FileFilter, FileListComponent, FileService, FormatBytesPipe, GlobalSpinnerComponent, GridFilter, H3Icon, HTTPService, HasPermissionDirective, HasPermissionPipe, HeaderSearchComponent, HideIfErrorDirective, HighlightPipe, IconAdd, IconCheck, IconClose, IconCopy, IconDelete, IconEdit, IconInfo, IconSave, IconSearch, IconView, LayoutComponent, LayoutUser, LimitLettersPipe, LimitWordsPipe, LineGraphComponent, LoadingService, LogAppComponent, LogServerComponent, LogServerDetailComponent, Login1Component, Login2Component, LoginComponent, MailTemplateService, MenuDetailComponent, MenuFilter, MenuListComponent, MenuService, MonitorComponent, NoPermission, Nodata, NotiService, NotificationCenterComponent, NullIfEmptyDirective, NumberOnlyDirective, OrderOption, OrgDetailComponent, OrgFilter, OrgListComponent, OrgService, PagingData, PagingModel, PdfViewerComponent, PermissionComponent, PermissionService$1 as PermissionService, ReadMoreProComponent, RegisterComponent, RoleDetailComponent, RoleFilter, RoleListComponent, RoleService, RouteMonitorService, RptConfigDetail, RptConfigList, SequenceDetailComponent, SequenceListComponent, SessionManagerService, SettingListComponent, SettingService$1 as SettingService, SynologyComponent, TableHeader, ThemeService, TokenStorage, TranslateKey, URLs$j as URLs, UnsavedChangesGuard, UpperCaseFirsLetterEachWordDirective, UppercaseDirective, UppercaseFirstLetterDirective, UserDetailComponent, UserFilter, UserListComponent, UserProfileComponent, UserProfileService, UserService, VersionComponent, VscService, WF_DocDetailComponent, WF_DocListComponent, WF_DocProcessComponent, WF_TemplateActionRef$1 as WF_TemplateActionRef, WF_TemplateDetail$1 as WF_TemplateDetail, WF_TemplateList, WF_Template_CombineDetailComponent, WF_Template_CombineListComponent, WF_TransitionRule, WF_TransitionRuleLine$1 as WF_TransitionRuleLine, Workflow$1 as Workflow, WorkflowAction, WorkflowActionEditorOption, WorkflowActionRef, WorkflowEditorComponent, WorkflowEditorOption$1 as WorkflowEditorOption, WorkflowStage, WorkflowStageEditorOption, XLSXHelper, authInterceptor };
|
|
19644
19829
|
//# sourceMappingURL=brggroup-share-lib.mjs.map
|