tnx-shared 5.2.22 → 5.2.23
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/classes/public-function.d.ts +4 -70
- package/classes/public-function.d.ts.map +1 -1
- package/esm2020/classes/public-function.mjs +1 -1
- package/esm2020/components/add-news/add-news.component.mjs +3 -3
- package/esm2020/components/autocomplete-datasource/autocomplete-datasource.component.mjs +1 -1
- package/esm2020/components/autocomplete-picker/autocomplete-picker.component.mjs +1 -1
- package/esm2020/components/avatar-uploader/avatar-uploader.component.mjs +1 -1
- package/esm2020/components/chat/chat-box/chat-box.component.mjs +1 -1
- package/esm2020/components/chat/chat-send-message-box/chat-send-message-box.component.mjs +1 -1
- package/esm2020/components/check-box-list/check-box-list.component.mjs +1 -1
- package/esm2020/components/cocautochuc/cocautochuc-picker/cocautochuc-picker.component.mjs +1 -1
- package/esm2020/components/common-app-component/app-topbar-v1/app-topbar-v1.component.mjs +1 -1
- package/esm2020/components/common-app-component/app-topbar-v2/app-topbar-v2.component.mjs +1 -1
- package/esm2020/components/common-app-component/app.menu.component.mjs +2 -2
- package/esm2020/components/common-app-component/app.topbar.component.mjs +1 -1
- package/esm2020/components/common-app-component/common-app-component.mjs +1 -1
- package/esm2020/components/common-app-component/default-setting-form/default-data-settings.component.mjs +1 -1
- package/esm2020/components/crud/advance-search/advance-search.component.mjs +1 -1
- package/esm2020/components/crud/crud-form/crud-form.component.mjs +1 -1
- package/esm2020/components/crud/crud-list/crud-list.component.mjs +1 -1
- package/esm2020/components/crud/table-detail-form/table-detail-form.component.mjs +1 -1
- package/esm2020/components/crud/tree-table/tree-table.component.mjs +1 -1
- package/esm2020/components/datetime-picker/datetime-picker.component.mjs +1 -1
- package/esm2020/components/dropdown/dropdown-setting-form/dropdown-setting-form.component.mjs +1 -1
- package/esm2020/components/dropdown/dropdown.component.mjs +4 -4
- package/esm2020/components/dropdown/quick-add-form/quick-add-form.component.mjs +1 -1
- package/esm2020/components/entity-permission/entity-permission.component.mjs +1 -1
- package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-data/entity-picker-data.component.mjs +1 -1
- package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component.mjs +1 -1
- package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-tree-data/entity-picker-tree-data.component.mjs +1 -1
- package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-tree-selected/entity-picker-tree-selected.component.mjs +1 -1
- package/esm2020/components/entity-picker/entity-picker-dialog/entity-picker-dialog.component.mjs +1 -1
- package/esm2020/components/entity-picker/entity-picker.component.mjs +1 -1
- package/esm2020/components/file-explorer/file-explorer.component.mjs +1 -1
- package/esm2020/components/file-explorer/file-form/file-form.component.mjs +1 -1
- package/esm2020/components/file-explorer/file-ky-so-sim/file-ky-so-sim.component.mjs +1 -1
- package/esm2020/components/file-explorer/file-manager/file-manager.component.mjs +1 -1
- package/esm2020/components/file-explorer/file-picker-dialog/file-picker-dialog.component.mjs +1 -1
- package/esm2020/components/file-explorer/file-tai-lieu/file-tai-lieu.component.mjs +1 -1
- package/esm2020/components/file-explorer/file-version-list/file-version-list.component.mjs +1 -1
- package/esm2020/components/file-explorer/file-viewer/file-viewer.component.mjs +1 -1
- package/esm2020/components/file-explorer/folder-form/folder-form.component.mjs +1 -1
- package/esm2020/components/file-explorer/ky-so-sim-danh-sach-chu-ky/ky-so-sim-danh-sach-chu-ky.component.mjs +1 -1
- package/esm2020/components/file-explorer/signature-detail/signature-detail.component.mjs +1 -1
- package/esm2020/components/file-upload/file-upload.component.mjs +1 -1
- package/esm2020/components/image-uploader/image-uploader.component.mjs +1 -1
- package/esm2020/components/paging-next-back-only/paging-next-back-only.component.mjs +1 -1
- package/esm2020/components/permission-utils/permission-utils.component.mjs +1 -1
- package/esm2020/components/qr-code-generator/qr-code-generator.component.mjs +1 -1
- package/esm2020/components/query-builders/query-builder/query-builder.component.mjs +1 -1
- package/esm2020/components/query-builders/query-builder-group/query-builder-group.component.mjs +2 -2
- package/esm2020/components/query-builders/query-builder-rule/query-builder-rule.component.mjs +3 -3
- package/esm2020/components/radio-button-list/radio-button-list.component.mjs +1 -1
- package/esm2020/components/report-queue/report-queue.component.mjs +1 -1
- package/esm2020/components/service-file-upload/service-file-upload.component.mjs +1 -1
- package/esm2020/components/settings/settings-row/settings-row.component.mjs +1 -1
- package/esm2020/components/settings/settings-workflow/settings-workflow.component.mjs +1 -1
- package/esm2020/components/settings/settings.component.mjs +1 -1
- package/esm2020/components/share-link-by-permission/share-link-by-permission.component.mjs +1 -1
- package/esm2020/components/statemachines/state/state.component.mjs +1 -1
- package/esm2020/components/statemachines/state-metadata/state-metadata.component.mjs +1 -1
- package/esm2020/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.mjs +1 -1
- package/esm2020/components/statemachines/statemachines-designer/statemachines-designer.component.mjs +1 -1
- package/esm2020/components/tn-app-help/helper-current-page/helper-current-page.component.mjs +1 -1
- package/esm2020/components/tn-app-help/tn-app-help.component.mjs +1 -1
- package/esm2020/components/tn-app-notification/tn-app-notification.component.mjs +1 -1
- package/esm2020/components/tn-checkbox/tn-checkbox.component.mjs +1 -1
- package/esm2020/components/tn-color-picker/tn-color-picker.component.mjs +1 -1
- package/esm2020/components/tn-dialog/tn-dialog.component.mjs +1 -1
- package/esm2020/components/tn-tabview/tn-tabview.component.mjs +1 -1
- package/esm2020/components/tn-template/tn-template.component.mjs +1 -1
- package/esm2020/components/tn-tinymce/tn-tinymce.component.mjs +1 -1
- package/esm2020/components/tn-tree/tn-tree.component.mjs +1 -1
- package/esm2020/components/user-picker/user-picker-box/user-picker-box.component.mjs +1 -1
- package/esm2020/components/user-picker/user-picker.component.mjs +1 -1
- package/esm2020/components/usmart/chuoi-phan-tiet/chuoi-phan-tiet.component.mjs +1 -1
- package/esm2020/components/vanban-picker/vanban-den-picker/vanban-den-picker.component.mjs +2 -2
- package/esm2020/components/vanban-picker/vanban-di-picker/vanban-di-picker.component.mjs +2 -2
- package/esm2020/components/vanban-picker/vanban-picker-dialog/vanban-picker-dialog.component.mjs +1 -1
- package/esm2020/components/vanban-picker/vanban-picker.component.mjs +1 -1
- package/esm2020/components/workflow/cho-y-kien-form/cho-y-kien-form.component.mjs +1 -1
- package/esm2020/components/workflow/permission-sharing/permission-sharing.component.mjs +1 -1
- package/esm2020/components/workflow/process-workflow-form/process-workflow-form.component.mjs +1 -1
- package/esm2020/components/workflow/start-workflow/start-workflow.component.mjs +1 -1
- package/esm2020/components/workflow/workflow-history-new/workflow-history-new.component.mjs +1 -1
- package/esm2020/components/workflow/workflow-permission-form/workflow-permission-form.component.mjs +1 -1
- package/esm2020/components/workflow/workflow-picker/workflow-picker.component.mjs +1 -1
- package/esm2020/components/workflow/workflow-setting-new/workflow-setting-new.component.mjs +1 -1
- package/esm2020/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.mjs +1 -1
- package/esm2020/congviec/congviec/congviec-form/congviec-form.component.mjs +1 -1
- package/esm2020/congviec/congviec/congviec.component.mjs +2 -2
- package/esm2020/congviec/dm-linhvuc-congviec/dm-linhvuc-congviec-form/dm-linhvuc-congviec-form.component.mjs +1 -1
- package/esm2020/congviec/dm-loai-congviec/dm-loai-congviec-form/dm-loai-congviec-form.component.mjs +1 -1
- package/esm2020/congviec/dm-priority/dm-priority-form/dm-priority-form.component.mjs +1 -1
- package/fesm2015/tnx-shared.mjs +101 -101
- package/fesm2015/tnx-shared.mjs.map +1 -1
- package/fesm2020/tnx-shared.mjs +101 -101
- package/fesm2020/tnx-shared.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -787,7 +787,7 @@ export class CommonAppComponentComponent {
|
|
|
787
787
|
}
|
|
788
788
|
}
|
|
789
789
|
CommonAppComponentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: CommonAppComponentComponent, deps: [{ token: i0.Renderer2 }, { token: i1.GlobalService }, { token: i2.CommonService }, { token: i3.ComponentService }, { token: i4.TranslateService }, { token: i5.OAuthService }, { token: i6.AuthenService }, { token: i7.UserService }, { token: i8.Router }, { token: i9.Title }, { token: i10.SignalRService }, { token: i11.StorageUpdatedService }, { token: i12.ApplicationContextService }, { token: i13.ComponentContextService }, { token: i8.ActivatedRoute }, { token: i14.DeviceDetectorService }, { token: i0.ChangeDetectorRef }, { token: i15.TnClientService }, { token: i16.NotifierService }, { token: i17.EntityMetadataService }, { token: i18.EnvironmentService }, { token: i19.MenuService }, { token: i20.PrimeNGConfig }, { token: i21.StorageService }, { token: i22.PermissionService }, { token: i23.CustomizeUiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
790
|
-
CommonAppComponentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: CommonAppComponentComponent, selector: "common-app-component", inputs: { showQuickNote: "showQuickNote", allowAnonymous: "allowAnonymous", autoRenderMenu: "autoRenderMenu" }, host: { listeners: { "document:keypress": "handleShowPopupPermissionUtils($event)" } }, providers: [ComponentContextService, EntityMetadataService], viewQueries: [{ propertyName: "okButton", first: true, predicate: ["okButton"], descendants: true }, { propertyName: "cancelButton", first: true, predicate: ["cancelButton"], descendants: true }, { propertyName: "quickNoteBt", first: true, predicate: ["quickNoteBt"], descendants: true }, { propertyName: "quickNoteBt1", first: true, predicate: ["quickNoteBt1"], descendants: true }, { propertyName: "quickNoteBt2", first: true, predicate: ["quickNoteBt2"], descendants: true }, { propertyName: "pinnedNotes", first: true, predicate: ["pinnedNotes"], descendants: true }, { propertyName: "reportQueue", first: true, predicate: ReportQueueComponent, descendants: true }, { propertyName: "scrollBarMenu", first: true, predicate: ["scrollbar"], descendants: true }, { propertyName: "children", predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<div *ngIf=\"pageLoaded\" [style.display]=\"pageLoaded ? '' : 'none'\" class=\"layout-wrapper\"\r\n (click)=\"_commonService.onLayoutClick()\" [ngClass]=\"{'menu-layout-static': !_commonService.isOverlay(),\r\n 'menu-layout-overlay': _commonService.isOverlay(),\r\n 'layout-menu-overlay-active': _commonService.overlayMenuActive,\r\n 'menu-layout-horizontal': _commonService.isHorizontal(),\r\n 'menu-layout-slim': _commonService.isSlim(),\r\n 'layout-menu-static-desktop-inactive': _commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-desktop-active': !_commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-mobile-inactive': !_commonService.staticMenuMobileActive,\r\n 'layout-menu-static-mobile-active': _commonService.staticMenuMobileActive,\r\n 'layout-menu-static-inactive': _commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-active': _commonService.staticMenuMobileActive}\">\r\n\r\n <app-topbar *ngIf=\"_globalService.getHeaderState()\"></app-topbar>\r\n\r\n <div *ngIf=\"_globalService.getMenuState()\" class=\"layout-menu-container\"\r\n [ngClass]=\"{'layout-menu-dark':_commonService.darkMenu}\" (click)=\"_commonService.onMenuClick($event)\">\r\n <app-root-menu></app-root-menu>\r\n <div class=\"layout-menu-block\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'padding-top': '16px'}\">\r\n <app-inline-profile *ngIf=\"_commonService.profileMode == 'inline' &&!_commonService.isHorizontal()\">\r\n </app-inline-profile>\r\n <app-menu [autoRenderMenu]=\"autoRenderMenu\" [reset]=\"_commonService.resetMenu\"\r\n (onMenuActive)=\"handleMenuActive($event)\"></app-menu>\r\n </tn-custom-scrollbar>\r\n </div>\r\n <div class=\"search-area layout-menu-search-area\">\r\n <p-autoComplete [(ngModel)]=\"searchMenuInput\" [style]=\"{'width':'100%'}\" [suggestions]=\"searchMenuResult\"\r\n (completeMethod)=\"onSearchMenu($event)\" [autoHighlight]=\"true\"\r\n [placeholder]=\"'T\u00ECm ki\u1EBFm ch\u1EE9c n\u0103ng' | translate\" [delay]=\"200\" [scrollHeight]=\"'400px'\"\r\n class=\"search-input\" [readonly]=\"!(menuModel && menuModel.length)\"\r\n (onSelect)=\"onSelectMenuSuggestion($event)\" field=\"label\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div innerHTML=\"{{ item.label | highlight : searchMenuInput}}\"></div>\r\n </ng-template>\r\n </p-autoComplete>\r\n <span class=\"icon-search\"><i class=\"pi pi-search\"></i></span>\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"'layout-main'\" [ngClass]=\"{'no-header': _globalService.getHeaderState() ? false : true}\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n\r\n <div class=\"layout-mask\"></div>\r\n <div #quickNoteBt *ngIf=\"!onlyShowMainContent && showQuickNote\" class=\"quick-note-button-holder\" cdkDrag\r\n cdkDragBoundary=\".layout-wrapper\" oncontextmenu=\"return false\" (cdkDragEnded)=\"quickNoteDropped($event)\"\r\n (cdkDragStarted)=\"quickNoteStarted($event)\">\r\n <a #quickNoteBt1 href=\"javascript:;\" class=\"all-note-button\" tabindex=\"0\" (click)=\"quickNoteShowAllNotes()\">\r\n <i class=\"fas fa-sticky-note\"></i></a>\r\n <a #quickNoteBt2 href=\"javascript:;\" class=\"setting-note-button\" tabindex=\"0\" (click)=\"quickNoteShowSettings()\">\r\n <i class=\"fas fa-cog\"></i></a>\r\n <a href=\"javascript:;\" (press)=\"quickNotePress($event)\" (pressup)=\"quickNotePressUp($event)\"\r\n class=\"quick-note-button\" tabindex=\"0\" (click)=\"quickNoteAddNote()\">\r\n <i class=\"fas fa-plus\"></i></a>\r\n </div>\r\n <div #pinnedNotes *ngIf=\"!onlyShowMainContent\" class=\"pinned-notes-holder\" cdkDrag cdkDragBoundary=\".layout-wrapper\"\r\n oncontextmenu=\"return false\" (cdkDragEnded)=\"pinnedNotesDropped($event)\"\r\n (cdkDragStarted)=\"pinnedNotesStarted($event)\">\r\n <div class=\"pinned-notes ui-g\" tabindex=\"0\">\r\n <div *ngIf=\"pinnedNotesMinimizeStatus\" class=\"pinned-notes-minimize-button\"\r\n (click)=\"pinnedNotesMinimize(pinnedNotesMinimizeStatus)\">\r\n <i class=\"pi pi-window-maximize\"></i>\r\n </div>\r\n <div *ngIf=\"pinnedNotesMaximizeStatus\" class=\" pinned-notes-minimize-button\"\r\n (click)=\"pinnedNotesMinimize(pinnedNotesMinimizeStatus)\">\r\n <i class=\"pi pi-window-minimize\"></i>\r\n </div>\r\n <div *ngFor=\"let note of pinnedNoteData\" class=\"pinned-note ui-g-12\">\r\n <div class=\"pinned-note-header-line\" [style.background-color]=\"note.colorCode\">\r\n </div>\r\n <div class=\"pinned-note-body\">\r\n <span class=\"pinned-note-line-title\" [style.paddingBottom]=\"note.titlePaddingBottom\">\r\n <div class=\"pinned-note-header-right\">\r\n <span class=\"pinned-note-header-time\">{{note.created | date: 'dd/MM'}}</span>\r\n <img src=\"../assets/layout/images/ico/unpin-1.ico\" class=\"pinned-note-header-button-unpin\"\r\n (click)=\"unPinNote(note)\">\r\n <i *ngIf=\"!note.isCompleted\" class=\"far fa-flag pinned-note-header-button-complete\"\r\n (click)=\"completeNote(note)\"></i>\r\n <i *ngIf=\"note.isCompleted\" class=\"fas fa-flag-checkered pinned-note-header-button-complete\"\r\n (click)=\"inCompleteNote(note)\"></i>\r\n </div>\r\n <div>{{note.name}}</div>\r\n </span>\r\n <div class=\"pinned-note-contents\" [style.display]=\"note.contentDisplay\">\r\n <span *ngFor=\"let content of note.contents\" class=\"pinned-note-line\">\r\n {{content}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <report-queue [header]=\"'Xu\u1EA5t d\u1EEF li\u1EC7u'\">\r\n </report-queue>\r\n</div>\r\n<div class=\"waiting-box\" [class.show]=\"waiting\">\r\n <div class=\"overlay\"></div>\r\n <div class=\"content-loading\">\r\n <div class=\"lds-ellipsis\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n <div class=\"message-loading\">\r\n <span *ngFor=\"let x of messageWaiting\">{{x}}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast [position]=\"'top-right'\" [autoZIndex]=\"true\"></p-toast>\r\n<p-confirmDialog #cd [closable]=\"false\">\r\n <p-footer>\r\n <button #okButton type=\"button\" pButton icon=\"pi pi-check\" class=\"p-button-rounded p-button-text\" label=\"\u0110\u1ED3ng \u00FD\"\r\n (keydown.shift.tab)=\"focusTrap($event, false)\" (click)=\"cd.accept()\"></button>\r\n <button *ngIf=\"showRejectConfirm\" #cancelButton type=\"button\" pButton\r\n class=\"p-button-rounded p-button-text p-button-secondary\" icon=\"pi pi-times\" label=\"B\u1ECF qua\"\r\n (keydown.tab)=\"focusTrap($event, true)\" (click)=\"cd.reject()\"></button>\r\n </p-footer>\r\n</p-confirmDialog>\r\n<!-- <user-action-manager></user-action-manager> -->\r\n<permission-utils *ngIf=\"rootData.showPermissionUtils\"></permission-utils>\r\n<ng-template #queryBuilderUserPicker let-control let-disabled=\"disabled\" let-query=\"query\" let-multiple=\"multiple\">\r\n <user-picker [control]=\"control\" [disabled]=\"disabled\" [multiple]=\"control.multiple\" [(ngModel)]=\"query.value\">\r\n </user-picker>\r\n</ng-template>\r\n<ng-template #queryBuilderCoCauPicker let-control let-disabled=\"disabled\" let-query=\"query\" let-multiple=\"multiple\">\r\n <cocautochuc-picker-list [control]=\"control\" [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </cocautochuc-picker-list>\r\n</ng-template>\r\n<ng-template #queryBuilderAutocompletePicker let-control let-disabled=\"disabled\" let-query=\"query\">\r\n <autocomplete-picker *ngSwitchCase=\"'groupuser'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n</ng-template>\r\n\r\n<ng-template #listCongViecCon let-formState=\"formState\" let-loaiDanhSach=\"loaiDanhSach\" let-idCongViec=\"idCongViec\">\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"formState\"\r\n [loaiDanhSach]=\"loaiDanhSach\" [idCongViec]=\"idCongViec\">\r\n </base-congviec>\r\n</ng-template>\r\n\r\n<ng-template #crudListSettingRow let-entityMetadataService=\"entityMetadataService\" let-parentContext=\"parentContext\"\r\n let-parentSetting=\"parentSetting\" let-parentModel=\"parentModel\" let-onSave=\"onSave\" let-onCancel=\"onCancel\">\r\n <settings-row [entityMetadataService]=\"entityMetadataService\" [parentContext]=\"parentContext\"\r\n [parentSetting]=\"parentSetting\" [parentModel]=\"parentModel\" (onSave)=\"onSave($event)\" (onCancel)=\"onCancel\">\r\n </settings-row>\r\n</ng-template>\r\n<ng-template #crudListSetting let-entityMetadataService=\"entityMetadataService\" let-parentContext=\"parentContext\"\r\n let-parentSetting=\"parentSetting\" let-parentModel=\"parentModel\" let-onSave=\"onSave\" let-onCancel=\"onCancel\">\r\n <settings [entityMetadataService]=\"entityMetadataService\" [parentContext]=\"parentContext\"\r\n [parentSetting]=\"parentSetting\" [parentModel]=\"parentModel\" (onSave)=\"onSave($event)\" (onCancel)=\"onCancel\">\r\n </settings>\r\n</ng-template>\r\n<ng-template #crudListAdvanceSearch let-parentSetting=\"parentSetting\" let-searchInfo=\"searchInfo\" let-loading=\"loading\"\r\n let-onSearch=\"onSearch\" let-onInit=\"onInit\">\r\n <advance-search [parentSetting]=\"parentSetting\" [searchInfo]=\"searchInfo\" [loading]=\"loading\"\r\n (onSearch)=\"onSearch($event)\" (onInit)=\"onInit($event)\">\r\n </advance-search>\r\n</ng-template>\r\n<ng-template #crudListWorkflowSetting let-dialogModel=\"dialogModel\" let-parentSetting=\"parentSetting\"\r\n let-onSaved=\"onSaved\">\r\n <workflow-setting-new #formBase [parentSetting]=\"parentSetting\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </workflow-setting-new>\r\n</ng-template>\r\n<ng-template #crudListWorkflowHistory let-item let-dialogModel=\"dialogModel\">\r\n <workflow-history-new #formBase [businessSetting]=\"dialogModel.data.setting\"\r\n [tableName]=\"dialogModel.data.tableName\" [item]=\"item\" [workflowSetting]=\"dialogModel.data.workflowSetting\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </workflow-history-new>\r\n</ng-template>\r\n<ng-template #crudListStartWorkflow let-dialogModel=\"dialogModel\" let-onSaved=\"onSaved\">\r\n <start-workflow #formBase [workflows]=\"dialogModel.data.workflows\"\r\n [defaultWorkflow]=\"dialogModel.data.defaultWorkflow\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onCancel)=\"dialogModel.showEditForm = false\"\r\n (onSaved)=\"onSaved\">\r\n </start-workflow>\r\n</ng-template>\r\n<ng-template #crudListChoYKien let-dialogModel=\"dialogModel\">\r\n <cho-y-kien-form #formBase [bussinessSetting]=\"dialogModel.data.setting\" [rowItem]=\"dialogModel.data.rowData\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"dialogModel.showEditForm = false\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </cho-y-kien-form>\r\n</ng-template>\r\n<ng-template #crudListProcessWorkflow let-item let-dialogModel=\"dialogModel\" let-onSaved=\"onSaved\">\r\n <process-workflow-form #formBase [businessSetting]=\"dialogModel.data.setting\" [item]=\"item\"\r\n [workflow]=\"dialogModel.data.workflow\" [action]=\"dialogModel.data.action\" (onSaved)=\"onSaved\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </process-workflow-form>\r\n</ng-template>\r\n<ng-template #crudListCongViec let-baseService=\"baseService\" let-itemIdAttach=\"itemIdAttach\">\r\n <base-congviec [serviceCode]=\"baseService.serviceCode\" [entity]=\"baseService.entityName\"\r\n [itemIdAttach]=\"itemIdAttach\"></base-congviec>\r\n</ng-template>\r\n<ng-template #crudListFormCongViec let-dialogModel=\"dialogModel\" let-isFormView=\"isFormView\" let-getData=\"getData\">\r\n <base-congviec-form #formBase [parentSetting]=\"dialogModel.data.congViecSetting\"\r\n [model]=\"dialogModel.data.formModel\" [forceOnlyView]=\"isFormView\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\"\r\n (onSaved)=\"dialogModel.showEditForm = false; getData()\" (onCancel)=\"dialogModel.showEditForm = false\">\r\n </base-congviec-form>\r\n</ng-template>\r\n<ng-template #crudListPermissionSharing let-item let-baseService=\"baseService\" let-dialogModel=\"dialogModel\">\r\n <permission-sharing #formBase [item]=\"item\" [baseService]=\"baseService\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </permission-sharing>\r\n</ng-template>\r\n<ng-template #crudListWorkflowPermission let-item let-businessSetting=\"businessSetting\" let-dialogModel=\"dialogModel\">\r\n <workflow-permission #formBase [item]=\"item\" [businessSetting]=\"businessSetting\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </workflow-permission>\r\n</ng-template>\r\n<ng-template #crudListShareLinkByPermission let-setting=\"setting\" let-dialogModel=\"dialogModel\">\r\n <share-link-by-permission #formBase [setting]=\"setting\" [lstItem]=\"dialogModel.data.lstItem\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </share-link-by-permission>\r\n</ng-template>\r\n<ng-template #crudListFileUploadColumn let-rowData let-parentContext=\"parentContext\" let-field=\"field\"\r\n let-fileSetting=\"fileSetting\">\r\n <file-upload *ngIf=\"fileSetting.mode == fileUploadMode.usingFileInstanceId\"\r\n [sharedFolderType]=\"fileSetting.control.sharedFolderType\" [readonly]=\"fileSetting.control.readonly\"\r\n [accept]=\"fileSetting.control.accept\" [(ngModel)]=\"rowData[field]\">\r\n </file-upload>\r\n <service-file-upload *ngIf=\"fileSetting.control.mode == fileUploadMode.usingServiceFile\"\r\n [serviceCode]=\"fileSetting.control.serviceCode\" [parentContext]=\"parentContext\"\r\n [entity]=\"fileSetting.control.entity\" [entityKey]=\"rowData[fileSetting.control.entityKeyField]\"\r\n [control]=\"fileSetting.control\" [fileDataService]=\"fileSetting.control.fileDataService\"\r\n [(ngModel)]=\"rowData.field\">\r\n </service-file-upload>\r\n</ng-template>\r\n<ng-template #crudListFileManagerColumn let-rowData let-fileSetting=\"fileSetting\" let-field=\"field\">\r\n <file-manager [control]=\"fileSetting.control\" [serviceCode]=\"fileSetting.control.serviceCode\"\r\n [entity]=\"fileSetting.control.entity\" [entityKey]=\"rowData[fileSetting.control.entityKeyField]\"\r\n [readonly]=\"fileSetting.control.readonly\" [layout]=\"fileSetting.control.layout\"\r\n [maxFileSize]=\"fileSetting.control.maxFileSize\" [inTaiLieu]=\"fileSetting.control.inTaiLieu\"\r\n [(value)]=\"rowData[field]\">\r\n </file-manager>\r\n</ng-template>\r\n\r\n<ng-template #crudFormTableDetailForm let-schema let-parentSetting=\"parentSetting\" let-dialogModel=\"dialogModel\"\r\n let-onInit=\"onInit\" let-onSaved=\"onSaved\" let-onCancel=\"onCancel\">\r\n <table-detail-form #formBase [parentSetting]=\"parentSetting\" [schema]=\"schema\" [data]=\"dialogModel.data\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\" (onCancel)=\"onCancel\">\r\n </table-detail-form>\r\n</ng-template>\r\n<ng-template #crudFormCongViecForm let-control=\"control\">\r\n <base-congviec-form [control]=\"control\" [parentSetting]=\"congViecSetting\" [tenCongViec]=\"control.data.tenCongViec\">\r\n </base-congviec-form>\r\n</ng-template>\r\n<ng-template #crudFormAddressComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <address-picker [control]=\"control\" [showSubLabel]=\"control.showSubLabel\" [disabled]=\"checkDisabled(data, control)\"\r\n [(data)]=\"data[control.field]\" (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onSelect)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </address-picker>\r\n</ng-template>\r\n<ng-template #crudFormFileManagerComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <file-manager [control]=\"control\" [serviceCode]=\"control.serviceCode\" [entity]=\"control.entity\"\r\n [entityKey]=\"control.entityKey ? control.entityKey : data[control.entityKeyField]\" [readonly]=\"control.disabled\"\r\n [layout]=\"control.layout\" [maxFileSize]=\"control.maxFileSize\" [inTaiLieu]=\"control.inTaiLieu\"\r\n [inTaiLieuChung]=\"control.inTaiLieuChung\" [copyToFolderId]=\"control.copyToFolderId\"\r\n [invalidFileSizeMessageSummary]=\"control.invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"control.invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"control.invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"control.invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"control.invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"control.invalidFileLimitMessageDetail\" [(value)]=\"data[control.field]\"\r\n (onSelected)=\"control.onSelected($event)\" (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </file-manager>\r\n</ng-template>\r\n<ng-template #crudFormServiceFileUploadComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-parentContext=\"parentContext\" let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <service-file-upload [parentContext]=\"parentContext\" [serviceCode]=\"control.serviceCode\" [entity]=\"control.entity\"\r\n [entityKey]=\"data[control.entityKeyField]\" [control]=\"control\" [(ngModel)]=\"data[control.field]\"\r\n (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\">\r\n </service-file-upload>\r\n</ng-template>\r\n<ng-template #crudFormCongViecPickerComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <congviec-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\" [required]=\"control.required\"\r\n [(ngModel)]=\"data[control.field]\" (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\">\r\n </congviec-picker>\r\n</ng-template>\r\n<ng-template #crudFormVanBanPickerComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <vanban-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\" [required]=\"control.required\"\r\n [readOnly]=\"control.readOnly\" [loaiVanBan]=\"control.loaiVanBan\" [(ngModel)]=\"data[control.field]\"\r\n (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\">\r\n </vanban-picker>\r\n</ng-template>\r\n\r\n<ng-template #tinyMceFilePickerDialog let-parentModel=\"parentModel\" let-parentContext=\"parentContext\"\r\n let-closeForm=\"closeForm\" let-onCancel=\"onCancel\" let-onChanged=\"onChanged\">\r\n <file-picker-dialog #formBase [parentModel]=\"parentModel\" [parentContext]=\"parentContext\" (closeForm)=\"closeForm\"\r\n (onCancel)=\"onCancel\" (onChanged)=\"onChanged\">\r\n </file-picker-dialog>\r\n</ng-template>\r\n<ng-template #tinyMceAddNews let-languageCode=\"languageCode\" let-showChange=\"showChange\">\r\n <add-news #listBase [languageCode]=\"languageCode\" (showChange)=\"showChange($event)\"></add-news>\r\n</ng-template>\r\n\r\n<ng-template #dropdownQuickAddForm let-dialogModel let-parentModel=\"parentModel\" let-parentContext=\"parentContext\"\r\n let-control=\"control\" let-onSaved=\"onSaved\" let-onCancel=\"onCancel\">\r\n <quick-add-form #formBase [parentModel]=\"parentModel\" [parentContext]=\"parentContext\"\r\n [model]=\"dialogModel.data.formModel\" [control]=\"control\" [baseService]=\"control.baseService\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\" (onCancel)=\"onCancel\">\r\n </quick-add-form>\r\n</ng-template>\r\n<ng-template #dropdownSettingForm let-dialogModel let-onSaved=\"onSaved\">\r\n <dropdown-setting-form #formBase [model]=\"dialogModel.data.formModel\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </dropdown-setting-form>\r\n</ng-template>", styles: [".layout-menu-search-area{position:relative}.icon-search{background-color:transparent;box-shadow:none;position:absolute;right:0;top:0;color:#888;width:30px;font-size:14px;height:100%;display:flex;align-items:center;justify-content:center}.layout-menu-static-inactive .search-area{margin-left:-303px}.layout-menu-container{overflow:hidden;display:flex;flex-direction:column;top:60px;bottom:0;height:auto}.layout-menu-block{display:flex;overflow:hidden;flex:1}.layout-menu-block>tn-custom-scrollbar{width:100%}::ng-deep .layout-menu-search-area .ui-inputtext{width:calc(100% + 1px);border-radius:0;border-color:#dadada;padding-right:40px}::ng-deep .layout-menu-search-area .ui-inputtext:not(:focus){box-shadow:none}::ng-deep .layout-menu-search-area input{width:100%;border-radius:0;border-left:0;border-right:0}::ng-deep .layout-menu-search-area .p-autocomplete-panel{max-width:100%}::ng-deep .layout-menu-search-area .p-autocomplete-item{white-space:normal}::ng-deep .layout-menu-search-area .p-autocomplete-item mark{background-color:var(--tn-primary-color);padding:0;color:#fff;border-radius:0}.waiting-box{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;display:none}.waiting-box .overlay{background-color:red;background-color:#6d6d6d80;width:100%;height:100%}.waiting-box .content-loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center}.waiting-box .content-loading .lds-ellipsis{display:inline-block;position:relative;width:80px;height:60px}.waiting-box .content-loading .lds-ellipsis div{position:absolute;top:33px;width:13px;height:13px;border-radius:50%;background:#fff;animation-timing-function:cubic-bezier(0,1,1,0)}.waiting-box .content-loading .lds-ellipsis div:nth-child(1){left:8px;animation:lds-ellipsis1 .6s infinite}.waiting-box .content-loading .lds-ellipsis div:nth-child(2){left:8px;animation:lds-ellipsis2 .6s infinite}.waiting-box .content-loading .lds-ellipsis div:nth-child(3){left:32px;animation:lds-ellipsis2 .6s infinite}.waiting-box .content-loading .lds-ellipsis div:nth-child(4){left:56px;animation:lds-ellipsis3 .6s infinite}.waiting-box .message-loading{font-size:1.75em}.waiting-box .message-loading span{color:#fff;animation:message-opacity 1s infinite;margin-right:1px}.waiting-box .message-loading span:last-child{margin-right:0}.waiting-box .message-loading span:nth-child(16n+1){animation-delay:0}.waiting-box .message-loading span:nth-child(16n+1){animation-delay:0s}.waiting-box .message-loading span:nth-child(16n+2){animation-delay:.1s}.waiting-box .message-loading span:nth-child(16n+3){animation-delay:.2s}.waiting-box .message-loading span:nth-child(16n+4){animation-delay:.3s}.waiting-box .message-loading span:nth-child(16n+5){animation-delay:.4s}.waiting-box .message-loading span:nth-child(16n+6){animation-delay:.5s}.waiting-box .message-loading span:nth-child(16n+7){animation-delay:.6s}.waiting-box .message-loading span:nth-child(16n+8){animation-delay:.7s}.waiting-box .message-loading span:nth-child(16n+9){animation-delay:.8s}.waiting-box .message-loading span:nth-child(16n+10){animation-delay:.9s}.waiting-box .message-loading span:nth-child(16n+11){animation-delay:1s}.waiting-box .message-loading span:nth-child(16n+12){animation-delay:1.1s}.waiting-box .message-loading span:nth-child(16n+13){animation-delay:1.2s}.waiting-box .message-loading span:nth-child(16n+14){animation-delay:1.3s}.waiting-box .message-loading span:nth-child(16n+15){animation-delay:1.4s}.waiting-box .message-loading span:nth-child(16n+16){animation-delay:1.5s}.waiting-box.show{display:block}@keyframes lds-ellipsis1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes lds-ellipsis3{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes lds-ellipsis2{0%{transform:translate(0)}to{transform:translate(24px)}}@keyframes message-opacity{0%{opacity:1}50%{opacity:.5}to{opacity:1}}\n"], dependencies: [{ kind: "component", type: i20.Footer, selector: "p-footer" }, { kind: "directive", type: i20.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i24.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i24.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i24.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i24.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i25.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i8.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i26.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i27.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "directive", type: i28.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i28.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i28.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i29.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "itemSize", "suggestions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i30.AddressComponent, selector: "address-picker", inputs: ["control", "disabled", "viewMode", "data", "showSubLabel"], outputs: ["onInit", "onSelect", "dataChange", "onReady"] }, { kind: "component", type: i31.AdvanceSearchComponent, selector: "advance-search", inputs: ["parentSetting", "searchInfo", "allowLoadDataWhenParentNull", "loading"], outputs: ["onSearch", "onFormEvent", "onInit"] }, { kind: "component", type: i32.AppRootMenuComponent, selector: "app-root-menu" }, { kind: "component", type: i33.AppTopBarComponent, selector: "app-topbar" }, { kind: "component", type: i34.AppProfileComponent, selector: "app-inline-profile" }, { kind: "component", type: i35.AppMenuComponent, selector: "app-menu", inputs: ["reset", "autoRenderMenu"] }, { kind: "component", type: i36.AutoCompletePickerComponent, selector: "autocomplete-picker", inputs: ["control", "currentNode", "groupKey", "valueInGroup", "disabled", "popupSize", "readOnlyValues"], outputs: ["onInit", "onSelect", "onUnSelect", "onChanged", "onFocus", "onBlur", "onReady"] }, { kind: "component", type: i37.CoCauToChucPickerListComponent, selector: "cocautochuc-picker-list", inputs: ["control", "disabled", "readOnlyValues"], outputs: ["onInit", "onChanged", "onSelect", "onUnSelect", "onClear", "onFocus", "onBlur", "onReady"] }, { kind: "component", type: i38.BaseCongViecComponent, selector: "base-congviec", inputs: ["itemId", "serviceCode", "entity", "itemIdAttach", "stateCode", "isPicker", "loaiDanhSach", "idCongViec", "ids", "isFromDashboard", "formState", "isChildView"], outputs: ["idsChange"] }, { kind: "component", type: i39.BaseCongViecFormComponent, selector: "base-congviec-form", inputs: ["itemId", "crudList", "control", "tenCongViec"], outputs: ["onInit", "onAfterInserted"] }, { kind: "component", type: i40.DropdownSettingFormComponent, selector: "dropdown-setting-form", inputs: ["control", "baseService"], outputs: ["onInit"] }, { kind: "component", type: i41.FileUploadComponent, selector: "file-upload", inputs: ["chooseLabel", "readonly", "accept", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageSummary", "invalidFileLimitMessageDetail", "sharedFolderType"], outputs: ["onInit", "onSelect", "onRemove", "onChanged"] }, { kind: "component", type: i42.ServiceFileUploadComponent, selector: "service-file-upload", inputs: ["fileDataService", "control", "serviceCode", "entity", "entityKey", "chooseLabel"], outputs: ["onInit", "onSelect", "onRemove", "onChanged"] }, { kind: "component", type: i43.VanBanPickerComponent, selector: "vanban-picker", inputs: ["loaiVanBan", "readOnly", "control"], outputs: ["onInit", "onChanged", "onReady"] }, { kind: "component", type: i44.CongViecPickerComponent, selector: "congviec-picker", inputs: ["control"], outputs: ["onInit", "onChanged"] }, { kind: "component", type: i45.ReportQueueComponent, selector: "report-queue", inputs: ["parentDataModel", "name", "header", "autoDownload"] }, { kind: "component", type: i46.SettingsComponent, selector: "settings", inputs: ["parentModel", "parentSetting", "entityMetadataService"], outputs: ["onCancel", "onSave", "onDelete"] }, { kind: "component", type: i47.SettingsRowComponent, selector: "settings-row", inputs: ["parentModel", "parentSetting", "entityMetadataService"], outputs: ["onSave", "onCancel"] }, { kind: "component", type: i48.ProcessWorkflowFormComponent, selector: "process-workflow-form", inputs: ["businessSetting", "item", "workflow", "action"], outputs: ["onInvalidWorkflow"] }, { kind: "component", type: i49.ChoYKienFormComponent, selector: "cho-y-kien-form", inputs: ["bussinessSetting", "rowItem"] }, { kind: "component", type: i50.StartWorkflowComponent, selector: "start-workflow", inputs: ["workflows", "defaultWorkflow"], outputs: ["onInit", "onSaved", "onCancel"] }, { kind: "component", type: i51.ShareLinkByPermissionComponent, selector: "share-link-by-permission", inputs: ["setting", "lstItem"] }, { kind: "component", type: i52.WorkflowSettingNewComponent, selector: "workflow-setting-new", inputs: ["parentSetting"], outputs: ["onInit", "onSaved", "onCancel", "onSaveSetting"] }, { kind: "component", type: i53.PermissionSharingComponent, selector: "permission-sharing", inputs: ["baseService", "item"] }, { kind: "component", type: i54.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { kind: "component", type: i55.TableDetailFormComponent, selector: "table-detail-form", inputs: ["schema", "data"], outputs: ["onInit", "onSaved"] }, { kind: "component", type: i56.QuickAddFormComponent, selector: "quick-add-form", inputs: ["control", "baseService"], outputs: ["onInit"] }, { kind: "component", type: i57.UserPickerComponent, selector: "user-picker", inputs: ["control", "popupSize", "multiple", "disabled", "readOnlyValues"], outputs: ["onInit", "onSelect", "onUnSelect", "onChanged", "onFocus", "onBlur", "onReady"] }, { kind: "component", type: i58.FileManagerComponent, selector: "file-manager", inputs: ["control", "fileDataService", "layout", "hiddenCreateFolder", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageSummary", "invalidFileLimitMessageDetail", "dataType", "rootFolderName", "serviceCode", "entity", "entityKey", "readonly", "inTaiLieu", "inTaiLieuChung", "copyToFolderId", "value", "multipleCheckWhenClickRow"], outputs: ["onInit", "onReady", "entityKeyChange", "closePopup", "valueChange", "onChanged", "onSelected"] }, { kind: "component", type: i59.WorkflowHistoryNewComponent, selector: "workflow-history-new", inputs: ["businessSetting", "isRelativeForm", "tableName", "item", "workflowSetting"] }, { kind: "component", type: i60.WorkflowPermissionComponent, selector: "workflow-permission", inputs: ["businessSetting", "item"] }, { kind: "component", type: i61.PermissionUtilsComponent, selector: "permission-utils" }, { kind: "component", type: i62.FilePickerDialogComponent, selector: "file-picker-dialog", inputs: ["isFilePicker", "multipleCheckWhenClickRow", "dataType"], outputs: ["onChanged"] }, { kind: "component", type: i63.AddNewsComponent, selector: "add-news", inputs: ["isShow", "languageCode"], outputs: ["showChange"] }, { kind: "pipe", type: i24.DatePipe, name: "date" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i64.HighlightPipe, name: "highlight" }] });
|
|
790
|
+
CommonAppComponentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: CommonAppComponentComponent, selector: "common-app-component", inputs: { showQuickNote: "showQuickNote", allowAnonymous: "allowAnonymous", autoRenderMenu: "autoRenderMenu" }, host: { listeners: { "document:keypress": "handleShowPopupPermissionUtils($event)" } }, providers: [ComponentContextService, EntityMetadataService], viewQueries: [{ propertyName: "okButton", first: true, predicate: ["okButton"], descendants: true }, { propertyName: "cancelButton", first: true, predicate: ["cancelButton"], descendants: true }, { propertyName: "quickNoteBt", first: true, predicate: ["quickNoteBt"], descendants: true }, { propertyName: "quickNoteBt1", first: true, predicate: ["quickNoteBt1"], descendants: true }, { propertyName: "quickNoteBt2", first: true, predicate: ["quickNoteBt2"], descendants: true }, { propertyName: "pinnedNotes", first: true, predicate: ["pinnedNotes"], descendants: true }, { propertyName: "reportQueue", first: true, predicate: ReportQueueComponent, descendants: true }, { propertyName: "scrollBarMenu", first: true, predicate: ["scrollbar"], descendants: true }, { propertyName: "children", predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<div *ngIf=\"pageLoaded\" [style.display]=\"pageLoaded ? '' : 'none'\" class=\"layout-wrapper\"\r\n (click)=\"_commonService.onLayoutClick()\" [ngClass]=\"{'menu-layout-static': !_commonService.isOverlay(),\r\n 'menu-layout-overlay': _commonService.isOverlay(),\r\n 'layout-menu-overlay-active': _commonService.overlayMenuActive,\r\n 'menu-layout-horizontal': _commonService.isHorizontal(),\r\n 'menu-layout-slim': _commonService.isSlim(),\r\n 'layout-menu-static-desktop-inactive': _commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-desktop-active': !_commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-mobile-inactive': !_commonService.staticMenuMobileActive,\r\n 'layout-menu-static-mobile-active': _commonService.staticMenuMobileActive,\r\n 'layout-menu-static-inactive': _commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-active': _commonService.staticMenuMobileActive}\">\r\n\r\n <app-topbar *ngIf=\"_globalService.getHeaderState()\"></app-topbar>\r\n\r\n <div *ngIf=\"_globalService.getMenuState()\" class=\"layout-menu-container\"\r\n [ngClass]=\"{'layout-menu-dark':_commonService.darkMenu}\" (click)=\"_commonService.onMenuClick($event)\">\r\n <app-root-menu></app-root-menu>\r\n <div class=\"layout-menu-block\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'padding-top': '16px'}\">\r\n <app-inline-profile *ngIf=\"_commonService.profileMode == 'inline' &&!_commonService.isHorizontal()\">\r\n </app-inline-profile>\r\n <app-menu [autoRenderMenu]=\"autoRenderMenu\" [reset]=\"_commonService.resetMenu\"\r\n (onMenuActive)=\"handleMenuActive($event)\"></app-menu>\r\n </tn-custom-scrollbar>\r\n </div>\r\n <div class=\"search-area layout-menu-search-area\">\r\n <p-autoComplete [(ngModel)]=\"searchMenuInput\" [style]=\"{'width':'100%'}\" [suggestions]=\"searchMenuResult\"\r\n (completeMethod)=\"onSearchMenu($event)\" [autoHighlight]=\"true\"\r\n [placeholder]=\"'T\u00ECm ki\u1EBFm ch\u1EE9c n\u0103ng' | translate\" [delay]=\"200\" [scrollHeight]=\"'400px'\"\r\n class=\"search-input\" [readonly]=\"!(menuModel && menuModel.length)\"\r\n (onSelect)=\"onSelectMenuSuggestion($event)\" field=\"label\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div innerHTML=\"{{ item.label | highlight : searchMenuInput}}\"></div>\r\n </ng-template>\r\n </p-autoComplete>\r\n <span class=\"icon-search\"><i class=\"pi pi-search\"></i></span>\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"'layout-main'\" [ngClass]=\"{'no-header': _globalService.getHeaderState() ? false : true}\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n\r\n <div class=\"layout-mask\"></div>\r\n <div #quickNoteBt *ngIf=\"!onlyShowMainContent && showQuickNote\" class=\"quick-note-button-holder\" cdkDrag\r\n cdkDragBoundary=\".layout-wrapper\" oncontextmenu=\"return false\" (cdkDragEnded)=\"quickNoteDropped($event)\"\r\n (cdkDragStarted)=\"quickNoteStarted($event)\">\r\n <a #quickNoteBt1 href=\"javascript:;\" class=\"all-note-button\" tabindex=\"0\" (click)=\"quickNoteShowAllNotes()\">\r\n <i class=\"fas fa-sticky-note\"></i></a>\r\n <a #quickNoteBt2 href=\"javascript:;\" class=\"setting-note-button\" tabindex=\"0\" (click)=\"quickNoteShowSettings()\">\r\n <i class=\"fas fa-cog\"></i></a>\r\n <a href=\"javascript:;\" (press)=\"quickNotePress($event)\" (pressup)=\"quickNotePressUp($event)\"\r\n class=\"quick-note-button\" tabindex=\"0\" (click)=\"quickNoteAddNote()\">\r\n <i class=\"fas fa-plus\"></i></a>\r\n </div>\r\n <div #pinnedNotes *ngIf=\"!onlyShowMainContent\" class=\"pinned-notes-holder\" cdkDrag cdkDragBoundary=\".layout-wrapper\"\r\n oncontextmenu=\"return false\" (cdkDragEnded)=\"pinnedNotesDropped($event)\"\r\n (cdkDragStarted)=\"pinnedNotesStarted($event)\">\r\n <div class=\"pinned-notes ui-g\" tabindex=\"0\">\r\n <div *ngIf=\"pinnedNotesMinimizeStatus\" class=\"pinned-notes-minimize-button\"\r\n (click)=\"pinnedNotesMinimize(pinnedNotesMinimizeStatus)\">\r\n <i class=\"pi pi-window-maximize\"></i>\r\n </div>\r\n <div *ngIf=\"pinnedNotesMaximizeStatus\" class=\" pinned-notes-minimize-button\"\r\n (click)=\"pinnedNotesMinimize(pinnedNotesMinimizeStatus)\">\r\n <i class=\"pi pi-window-minimize\"></i>\r\n </div>\r\n <div *ngFor=\"let note of pinnedNoteData\" class=\"pinned-note ui-g-12\">\r\n <div class=\"pinned-note-header-line\" [style.background-color]=\"note.colorCode\">\r\n </div>\r\n <div class=\"pinned-note-body\">\r\n <span class=\"pinned-note-line-title\" [style.paddingBottom]=\"note.titlePaddingBottom\">\r\n <div class=\"pinned-note-header-right\">\r\n <span class=\"pinned-note-header-time\">{{note.created | date: 'dd/MM'}}</span>\r\n <img src=\"../assets/layout/images/ico/unpin-1.ico\" class=\"pinned-note-header-button-unpin\"\r\n (click)=\"unPinNote(note)\">\r\n <i *ngIf=\"!note.isCompleted\" class=\"far fa-flag pinned-note-header-button-complete\"\r\n (click)=\"completeNote(note)\"></i>\r\n <i *ngIf=\"note.isCompleted\" class=\"fas fa-flag-checkered pinned-note-header-button-complete\"\r\n (click)=\"inCompleteNote(note)\"></i>\r\n </div>\r\n <div>{{note.name}}</div>\r\n </span>\r\n <div class=\"pinned-note-contents\" [style.display]=\"note.contentDisplay\">\r\n <span *ngFor=\"let content of note.contents\" class=\"pinned-note-line\">\r\n {{content}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <report-queue [header]=\"'Xu\u1EA5t d\u1EEF li\u1EC7u'\">\r\n </report-queue>\r\n</div>\r\n<div class=\"waiting-box\" [class.show]=\"waiting\">\r\n <div class=\"overlay\"></div>\r\n <div class=\"content-loading\">\r\n <div class=\"lds-ellipsis\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n <div class=\"message-loading\">\r\n <span *ngFor=\"let x of messageWaiting\">{{x}}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast [position]=\"'top-right'\" [autoZIndex]=\"true\"></p-toast>\r\n<p-confirmDialog #cd [closable]=\"false\">\r\n <p-footer>\r\n <button #okButton type=\"button\" pButton icon=\"pi pi-check\" class=\"p-button-rounded p-button-text\" label=\"\u0110\u1ED3ng \u00FD\"\r\n (keydown.shift.tab)=\"focusTrap($event, false)\" (click)=\"cd.accept()\"></button>\r\n <button *ngIf=\"showRejectConfirm\" #cancelButton type=\"button\" pButton\r\n class=\"p-button-rounded p-button-text p-button-secondary\" icon=\"pi pi-times\" label=\"B\u1ECF qua\"\r\n (keydown.tab)=\"focusTrap($event, true)\" (click)=\"cd.reject()\"></button>\r\n </p-footer>\r\n</p-confirmDialog>\r\n<!-- <user-action-manager></user-action-manager> -->\r\n<permission-utils *ngIf=\"rootData.showPermissionUtils\"></permission-utils>\r\n<ng-template #queryBuilderUserPicker let-control let-disabled=\"disabled\" let-query=\"query\" let-multiple=\"multiple\">\r\n <user-picker [control]=\"control\" [disabled]=\"disabled\" [multiple]=\"control.multiple\" [(ngModel)]=\"query.value\">\r\n </user-picker>\r\n</ng-template>\r\n<ng-template #queryBuilderCoCauPicker let-control let-disabled=\"disabled\" let-query=\"query\" let-multiple=\"multiple\">\r\n <cocautochuc-picker-list [control]=\"control\" [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </cocautochuc-picker-list>\r\n</ng-template>\r\n<ng-template #queryBuilderAutocompletePicker let-control let-disabled=\"disabled\" let-query=\"query\">\r\n <autocomplete-picker *ngSwitchCase=\"'groupuser'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n</ng-template>\r\n\r\n<ng-template #listCongViecCon let-formState=\"formState\" let-loaiDanhSach=\"loaiDanhSach\" let-idCongViec=\"idCongViec\">\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"formState\"\r\n [loaiDanhSach]=\"loaiDanhSach\" [idCongViec]=\"idCongViec\">\r\n </base-congviec>\r\n</ng-template>\r\n\r\n<ng-template #crudListSettingRow let-entityMetadataService=\"entityMetadataService\" let-parentContext=\"parentContext\"\r\n let-parentSetting=\"parentSetting\" let-parentModel=\"parentModel\" let-onSave=\"onSave\" let-onCancel=\"onCancel\">\r\n <settings-row [entityMetadataService]=\"entityMetadataService\" [parentContext]=\"parentContext\"\r\n [parentSetting]=\"parentSetting\" [parentModel]=\"parentModel\" (onSave)=\"onSave($event)\" (onCancel)=\"onCancel\">\r\n </settings-row>\r\n</ng-template>\r\n<ng-template #crudListSetting let-entityMetadataService=\"entityMetadataService\" let-parentContext=\"parentContext\"\r\n let-parentSetting=\"parentSetting\" let-parentModel=\"parentModel\" let-onSave=\"onSave\" let-onCancel=\"onCancel\">\r\n <settings [entityMetadataService]=\"entityMetadataService\" [parentContext]=\"parentContext\"\r\n [parentSetting]=\"parentSetting\" [parentModel]=\"parentModel\" (onSave)=\"onSave($event)\" (onCancel)=\"onCancel\">\r\n </settings>\r\n</ng-template>\r\n<ng-template #crudListAdvanceSearch let-parentSetting=\"parentSetting\" let-searchInfo=\"searchInfo\" let-loading=\"loading\"\r\n let-onSearch=\"onSearch\" let-onInit=\"onInit\">\r\n <advance-search [parentSetting]=\"parentSetting\" [searchInfo]=\"searchInfo\" [loading]=\"loading\"\r\n (onSearch)=\"onSearch($event)\" (onInit)=\"onInit($event)\">\r\n </advance-search>\r\n</ng-template>\r\n<ng-template #crudListWorkflowSetting let-dialogModel=\"dialogModel\" let-parentSetting=\"parentSetting\"\r\n let-onSaved=\"onSaved\">\r\n <workflow-setting-new #formBase [parentSetting]=\"parentSetting\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </workflow-setting-new>\r\n</ng-template>\r\n<ng-template #crudListWorkflowHistory let-item let-dialogModel=\"dialogModel\">\r\n <workflow-history-new #formBase [businessSetting]=\"dialogModel.data.setting\"\r\n [tableName]=\"dialogModel.data.tableName\" [item]=\"item\" [workflowSetting]=\"dialogModel.data.workflowSetting\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </workflow-history-new>\r\n</ng-template>\r\n<ng-template #crudListStartWorkflow let-dialogModel=\"dialogModel\" let-onSaved=\"onSaved\">\r\n <start-workflow #formBase [workflows]=\"dialogModel.data.workflows\"\r\n [defaultWorkflow]=\"dialogModel.data.defaultWorkflow\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onCancel)=\"dialogModel.showEditForm = false\"\r\n (onSaved)=\"onSaved\">\r\n </start-workflow>\r\n</ng-template>\r\n<ng-template #crudListChoYKien let-dialogModel=\"dialogModel\">\r\n <cho-y-kien-form #formBase [bussinessSetting]=\"dialogModel.data.setting\" [rowItem]=\"dialogModel.data.rowData\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"dialogModel.showEditForm = false\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </cho-y-kien-form>\r\n</ng-template>\r\n<ng-template #crudListProcessWorkflow let-item let-dialogModel=\"dialogModel\" let-onSaved=\"onSaved\">\r\n <process-workflow-form #formBase [businessSetting]=\"dialogModel.data.setting\" [item]=\"item\"\r\n [workflow]=\"dialogModel.data.workflow\" [action]=\"dialogModel.data.action\" (onSaved)=\"onSaved\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </process-workflow-form>\r\n</ng-template>\r\n<ng-template #crudListCongViec let-baseService=\"baseService\" let-itemIdAttach=\"itemIdAttach\">\r\n <base-congviec [serviceCode]=\"baseService.serviceCode\" [entity]=\"baseService.entityName\"\r\n [itemIdAttach]=\"itemIdAttach\"></base-congviec>\r\n</ng-template>\r\n<ng-template #crudListFormCongViec let-dialogModel=\"dialogModel\" let-isFormView=\"isFormView\" let-getData=\"getData\">\r\n <base-congviec-form #formBase [parentSetting]=\"dialogModel.data.congViecSetting\"\r\n [model]=\"dialogModel.data.formModel\" [forceOnlyView]=\"isFormView\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\"\r\n (onSaved)=\"dialogModel.showEditForm = false; getData()\" (onCancel)=\"dialogModel.showEditForm = false\">\r\n </base-congviec-form>\r\n</ng-template>\r\n<ng-template #crudListPermissionSharing let-item let-baseService=\"baseService\" let-dialogModel=\"dialogModel\">\r\n <permission-sharing #formBase [item]=\"item\" [baseService]=\"baseService\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </permission-sharing>\r\n</ng-template>\r\n<ng-template #crudListWorkflowPermission let-item let-businessSetting=\"businessSetting\" let-dialogModel=\"dialogModel\">\r\n <workflow-permission #formBase [item]=\"item\" [businessSetting]=\"businessSetting\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </workflow-permission>\r\n</ng-template>\r\n<ng-template #crudListShareLinkByPermission let-setting=\"setting\" let-dialogModel=\"dialogModel\">\r\n <share-link-by-permission #formBase [setting]=\"setting\" [lstItem]=\"dialogModel.data.lstItem\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </share-link-by-permission>\r\n</ng-template>\r\n<ng-template #crudListFileUploadColumn let-rowData let-parentContext=\"parentContext\" let-field=\"field\"\r\n let-fileSetting=\"fileSetting\">\r\n <file-upload *ngIf=\"fileSetting.mode == fileUploadMode.usingFileInstanceId\"\r\n [sharedFolderType]=\"fileSetting.control.sharedFolderType\" [readonly]=\"fileSetting.control.readonly\"\r\n [accept]=\"fileSetting.control.accept\" [(ngModel)]=\"rowData[field]\">\r\n </file-upload>\r\n <service-file-upload *ngIf=\"fileSetting.control.mode == fileUploadMode.usingServiceFile\"\r\n [serviceCode]=\"fileSetting.control.serviceCode\" [parentContext]=\"parentContext\"\r\n [entity]=\"fileSetting.control.entity\" [entityKey]=\"rowData[fileSetting.control.entityKeyField]\"\r\n [control]=\"fileSetting.control\" [fileDataService]=\"fileSetting.control.fileDataService\"\r\n [(ngModel)]=\"rowData.field\">\r\n </service-file-upload>\r\n</ng-template>\r\n<ng-template #crudListFileManagerColumn let-rowData let-fileSetting=\"fileSetting\" let-field=\"field\">\r\n <file-manager [control]=\"fileSetting.control\" [serviceCode]=\"fileSetting.control.serviceCode\"\r\n [entity]=\"fileSetting.control.entity\" [entityKey]=\"rowData[fileSetting.control.entityKeyField]\"\r\n [readonly]=\"fileSetting.control.readonly\" [layout]=\"fileSetting.control.layout\"\r\n [maxFileSize]=\"fileSetting.control.maxFileSize\" [inTaiLieu]=\"fileSetting.control.inTaiLieu\"\r\n [(value)]=\"rowData[field]\">\r\n </file-manager>\r\n</ng-template>\r\n\r\n<ng-template #crudFormTableDetailForm let-schema let-parentSetting=\"parentSetting\" let-dialogModel=\"dialogModel\"\r\n let-onInit=\"onInit\" let-onSaved=\"onSaved\" let-onCancel=\"onCancel\">\r\n <table-detail-form #formBase [parentSetting]=\"parentSetting\" [schema]=\"schema\" [data]=\"dialogModel.data\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\" (onCancel)=\"onCancel\">\r\n </table-detail-form>\r\n</ng-template>\r\n<ng-template #crudFormCongViecForm let-control=\"control\">\r\n <base-congviec-form [control]=\"control\" [parentSetting]=\"congViecSetting\" [tenCongViec]=\"control.data.tenCongViec\">\r\n </base-congviec-form>\r\n</ng-template>\r\n<ng-template #crudFormAddressComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <address-picker [control]=\"control\" [showSubLabel]=\"control.showSubLabel\" [disabled]=\"checkDisabled(data, control)\"\r\n [(data)]=\"data[control.field]\" (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onSelect)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </address-picker>\r\n</ng-template>\r\n<ng-template #crudFormFileManagerComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <file-manager [control]=\"control\" [serviceCode]=\"control.serviceCode\" [entity]=\"control.entity\"\r\n [entityKey]=\"control.entityKey ? control.entityKey : data[control.entityKeyField]\" [readonly]=\"control.disabled\"\r\n [layout]=\"control.layout\" [maxFileSize]=\"control.maxFileSize\" [inTaiLieu]=\"control.inTaiLieu\"\r\n [inTaiLieuChung]=\"control.inTaiLieuChung\" [copyToFolderId]=\"control.copyToFolderId\"\r\n [invalidFileSizeMessageSummary]=\"control.invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"control.invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"control.invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"control.invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"control.invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"control.invalidFileLimitMessageDetail\" [(value)]=\"data[control.field]\"\r\n (onSelected)=\"control.onSelected($event)\" (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </file-manager>\r\n</ng-template>\r\n<ng-template #crudFormServiceFileUploadComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-parentContext=\"parentContext\" let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <service-file-upload [parentContext]=\"parentContext\" [serviceCode]=\"control.serviceCode\" [entity]=\"control.entity\"\r\n [entityKey]=\"data[control.entityKeyField]\" [control]=\"control\" [(ngModel)]=\"data[control.field]\"\r\n (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\">\r\n </service-file-upload>\r\n</ng-template>\r\n<ng-template #crudFormCongViecPickerComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <congviec-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\" [required]=\"control.required\"\r\n [(ngModel)]=\"data[control.field]\" (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\">\r\n </congviec-picker>\r\n</ng-template>\r\n<ng-template #crudFormVanBanPickerComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <vanban-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\" [required]=\"control.required\"\r\n [readOnly]=\"control.readOnly\" [loaiVanBan]=\"control.loaiVanBan\" [(ngModel)]=\"data[control.field]\"\r\n (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\">\r\n </vanban-picker>\r\n</ng-template>\r\n\r\n<ng-template #tinyMceFilePickerDialog let-parentModel=\"parentModel\" let-parentContext=\"parentContext\"\r\n let-closeForm=\"closeForm\" let-onCancel=\"onCancel\" let-onChanged=\"onChanged\">\r\n <file-picker-dialog #formBase [parentModel]=\"parentModel\" [parentContext]=\"parentContext\" (closeForm)=\"closeForm\"\r\n (onCancel)=\"onCancel\" (onChanged)=\"onChanged\">\r\n </file-picker-dialog>\r\n</ng-template>\r\n<ng-template #tinyMceAddNews let-languageCode=\"languageCode\" let-showChange=\"showChange\">\r\n <add-news #listBase [languageCode]=\"languageCode\" (showChange)=\"showChange($event)\"></add-news>\r\n</ng-template>\r\n\r\n<ng-template #dropdownQuickAddForm let-dialogModel let-parentModel=\"parentModel\" let-parentContext=\"parentContext\"\r\n let-control=\"control\" let-onSaved=\"onSaved\" let-onCancel=\"onCancel\">\r\n <quick-add-form #formBase [parentModel]=\"parentModel\" [parentContext]=\"parentContext\"\r\n [model]=\"dialogModel.data.formModel\" [control]=\"control\" [baseService]=\"control.baseService\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\" (onCancel)=\"onCancel\">\r\n </quick-add-form>\r\n</ng-template>\r\n<ng-template #dropdownSettingForm let-dialogModel let-onSaved=\"onSaved\">\r\n <dropdown-setting-form #formBase [model]=\"dialogModel.data.formModel\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </dropdown-setting-form>\r\n</ng-template>", styles: [".layout-menu-search-area{position:relative}.icon-search{background-color:transparent;box-shadow:none;position:absolute;right:0;top:0;color:#888;width:30px;font-size:14px;height:100%;display:flex;align-items:center;justify-content:center}.layout-menu-static-inactive .search-area{margin-left:-303px}.layout-menu-container{overflow:hidden;display:flex;flex-direction:column;top:60px;bottom:0;height:auto}.layout-menu-block{display:flex;overflow:hidden;flex:1}.layout-menu-block>tn-custom-scrollbar{width:100%}::ng-deep .layout-menu-search-area .ui-inputtext{width:calc(100% + 1px);border-radius:0;border-color:#dadada;padding-right:40px}::ng-deep .layout-menu-search-area .ui-inputtext:not(:focus){box-shadow:none}::ng-deep .layout-menu-search-area input{width:100%;border-radius:0;border-left:0;border-right:0}::ng-deep .layout-menu-search-area .p-autocomplete-panel{max-width:100%}::ng-deep .layout-menu-search-area .p-autocomplete-item{white-space:normal}::ng-deep .layout-menu-search-area .p-autocomplete-item mark{background-color:var(--tn-primary-color);padding:0;color:#fff;border-radius:0}.waiting-box{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;display:none}.waiting-box .overlay{background-color:red;background-color:#6d6d6d80;width:100%;height:100%}.waiting-box .content-loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center}.waiting-box .content-loading .lds-ellipsis{display:inline-block;position:relative;width:80px;height:60px}.waiting-box .content-loading .lds-ellipsis div{position:absolute;top:33px;width:13px;height:13px;border-radius:50%;background:#fff;animation-timing-function:cubic-bezier(0,1,1,0)}.waiting-box .content-loading .lds-ellipsis div:nth-child(1){left:8px;animation:lds-ellipsis1 .6s infinite}.waiting-box .content-loading .lds-ellipsis div:nth-child(2){left:8px;animation:lds-ellipsis2 .6s infinite}.waiting-box .content-loading .lds-ellipsis div:nth-child(3){left:32px;animation:lds-ellipsis2 .6s infinite}.waiting-box .content-loading .lds-ellipsis div:nth-child(4){left:56px;animation:lds-ellipsis3 .6s infinite}.waiting-box .message-loading{font-size:1.75em}.waiting-box .message-loading span{color:#fff;animation:message-opacity 1s infinite;margin-right:1px}.waiting-box .message-loading span:last-child{margin-right:0}.waiting-box .message-loading span:nth-child(16n+1){animation-delay:0}.waiting-box .message-loading span:nth-child(16n+1){animation-delay:0s}.waiting-box .message-loading span:nth-child(16n+2){animation-delay:.1s}.waiting-box .message-loading span:nth-child(16n+3){animation-delay:.2s}.waiting-box .message-loading span:nth-child(16n+4){animation-delay:.3s}.waiting-box .message-loading span:nth-child(16n+5){animation-delay:.4s}.waiting-box .message-loading span:nth-child(16n+6){animation-delay:.5s}.waiting-box .message-loading span:nth-child(16n+7){animation-delay:.6s}.waiting-box .message-loading span:nth-child(16n+8){animation-delay:.7s}.waiting-box .message-loading span:nth-child(16n+9){animation-delay:.8s}.waiting-box .message-loading span:nth-child(16n+10){animation-delay:.9s}.waiting-box .message-loading span:nth-child(16n+11){animation-delay:1s}.waiting-box .message-loading span:nth-child(16n+12){animation-delay:1.1s}.waiting-box .message-loading span:nth-child(16n+13){animation-delay:1.2s}.waiting-box .message-loading span:nth-child(16n+14){animation-delay:1.3s}.waiting-box .message-loading span:nth-child(16n+15){animation-delay:1.4s}.waiting-box .message-loading span:nth-child(16n+16){animation-delay:1.5s}.waiting-box.show{display:block}@keyframes lds-ellipsis1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes lds-ellipsis3{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes lds-ellipsis2{0%{transform:translate(0)}to{transform:translate(24px)}}@keyframes message-opacity{0%{opacity:1}50%{opacity:.5}to{opacity:1}}\n"], dependencies: [{ kind: "component", type: i20.Footer, selector: "p-footer" }, { kind: "directive", type: i20.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i24.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i24.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i24.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i24.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i25.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "directive", type: i8.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i26.Toast, selector: "p-toast", inputs: ["autoZIndex", "baseZIndex", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "key", "style", "styleClass"], outputs: ["onClose"] }, { kind: "component", type: i27.ConfirmDialog, selector: "p-confirmDialog", inputs: ["acceptIcon", "acceptVisible", "rejectIcon", "rejectVisible", "closeOnEscape", "blockScroll", "closable", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "visible", "position", "header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptLabel", "acceptAriaLabel", "rejectLabel", "rejectAriaLabel", "acceptButtonStyleClass", "rejectButtonStyleClass", "dismissableMask", "rtl", "appendTo", "key"] }, { kind: "directive", type: i28.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i28.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i28.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i29.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "type", "autoZIndex", "baseZIndex", "dropdownIcon", "unique", "completeOnFocus", "scrollHeight", "dropdownMode", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "suggestions", "disabled", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "ariaLabel", "ariaLabelledBy", "field", "dropdown", "multiple", "tabindex", "dataKey", "emptyMessage", "autofocus"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide"] }, { kind: "component", type: i30.AddressComponent, selector: "address-picker", inputs: ["control", "disabled", "viewMode", "data", "showSubLabel"], outputs: ["onInit", "onSelect", "dataChange", "onReady"] }, { kind: "component", type: i31.AdvanceSearchComponent, selector: "advance-search", inputs: ["parentSetting", "searchInfo", "allowLoadDataWhenParentNull", "loading"], outputs: ["onSearch", "onFormEvent", "onInit"] }, { kind: "component", type: i32.AppRootMenuComponent, selector: "app-root-menu" }, { kind: "component", type: i33.AppTopBarComponent, selector: "app-topbar" }, { kind: "component", type: i34.AppProfileComponent, selector: "app-inline-profile" }, { kind: "component", type: i35.AppMenuComponent, selector: "app-menu", inputs: ["reset", "autoRenderMenu"] }, { kind: "component", type: i36.AutoCompletePickerComponent, selector: "autocomplete-picker", inputs: ["control", "currentNode", "groupKey", "valueInGroup", "disabled", "popupSize", "readOnlyValues"], outputs: ["onInit", "onSelect", "onUnSelect", "onChanged", "onFocus", "onBlur", "onReady"] }, { kind: "component", type: i37.CoCauToChucPickerListComponent, selector: "cocautochuc-picker-list", inputs: ["control", "disabled", "readOnlyValues"], outputs: ["onInit", "onChanged", "onSelect", "onUnSelect", "onClear", "onFocus", "onBlur", "onReady"] }, { kind: "component", type: i38.BaseCongViecComponent, selector: "base-congviec", inputs: ["itemId", "serviceCode", "entity", "itemIdAttach", "stateCode", "isPicker", "loaiDanhSach", "idCongViec", "ids", "isFromDashboard", "formState", "isChildView"], outputs: ["idsChange"] }, { kind: "component", type: i39.BaseCongViecFormComponent, selector: "base-congviec-form", inputs: ["itemId", "crudList", "control", "tenCongViec"], outputs: ["onInit", "onAfterInserted"] }, { kind: "component", type: i40.DropdownSettingFormComponent, selector: "dropdown-setting-form", inputs: ["control", "baseService"], outputs: ["onInit"] }, { kind: "component", type: i41.FileUploadComponent, selector: "file-upload", inputs: ["chooseLabel", "readonly", "accept", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageSummary", "invalidFileLimitMessageDetail", "sharedFolderType"], outputs: ["onInit", "onSelect", "onRemove", "onChanged"] }, { kind: "component", type: i42.ServiceFileUploadComponent, selector: "service-file-upload", inputs: ["fileDataService", "control", "serviceCode", "entity", "entityKey", "chooseLabel"], outputs: ["onInit", "onSelect", "onRemove", "onChanged"] }, { kind: "component", type: i43.VanBanPickerComponent, selector: "vanban-picker", inputs: ["loaiVanBan", "readOnly", "control"], outputs: ["onInit", "onChanged", "onReady"] }, { kind: "component", type: i44.CongViecPickerComponent, selector: "congviec-picker", inputs: ["control"], outputs: ["onInit", "onChanged"] }, { kind: "component", type: i45.ReportQueueComponent, selector: "report-queue", inputs: ["parentDataModel", "name", "header", "autoDownload"] }, { kind: "component", type: i46.SettingsComponent, selector: "settings", inputs: ["parentModel", "parentSetting", "entityMetadataService"], outputs: ["onCancel", "onSave", "onDelete"] }, { kind: "component", type: i47.SettingsRowComponent, selector: "settings-row", inputs: ["parentModel", "parentSetting", "entityMetadataService"], outputs: ["onSave", "onCancel"] }, { kind: "component", type: i48.ProcessWorkflowFormComponent, selector: "process-workflow-form", inputs: ["businessSetting", "item", "workflow", "action"], outputs: ["onInvalidWorkflow"] }, { kind: "component", type: i49.ChoYKienFormComponent, selector: "cho-y-kien-form", inputs: ["bussinessSetting", "rowItem"] }, { kind: "component", type: i50.StartWorkflowComponent, selector: "start-workflow", inputs: ["workflows", "defaultWorkflow"], outputs: ["onInit", "onSaved", "onCancel"] }, { kind: "component", type: i51.ShareLinkByPermissionComponent, selector: "share-link-by-permission", inputs: ["setting", "lstItem"] }, { kind: "component", type: i52.WorkflowSettingNewComponent, selector: "workflow-setting-new", inputs: ["parentSetting"], outputs: ["onInit", "onSaved", "onCancel", "onSaveSetting"] }, { kind: "component", type: i53.PermissionSharingComponent, selector: "permission-sharing", inputs: ["baseService", "item"] }, { kind: "component", type: i54.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { kind: "component", type: i55.TableDetailFormComponent, selector: "table-detail-form", inputs: ["schema", "data"], outputs: ["onInit", "onSaved"] }, { kind: "component", type: i56.QuickAddFormComponent, selector: "quick-add-form", inputs: ["control", "baseService"], outputs: ["onInit"] }, { kind: "component", type: i57.UserPickerComponent, selector: "user-picker", inputs: ["control", "popupSize", "multiple", "disabled", "readOnlyValues"], outputs: ["onInit", "onSelect", "onUnSelect", "onChanged", "onFocus", "onBlur", "onReady"] }, { kind: "component", type: i58.FileManagerComponent, selector: "file-manager", inputs: ["control", "fileDataService", "layout", "hiddenCreateFolder", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageSummary", "invalidFileLimitMessageDetail", "dataType", "rootFolderName", "serviceCode", "entity", "entityKey", "readonly", "inTaiLieu", "inTaiLieuChung", "copyToFolderId", "value", "multipleCheckWhenClickRow"], outputs: ["onInit", "onReady", "entityKeyChange", "closePopup", "valueChange", "onChanged", "onSelected"] }, { kind: "component", type: i59.WorkflowHistoryNewComponent, selector: "workflow-history-new", inputs: ["businessSetting", "isRelativeForm", "tableName", "item", "workflowSetting"] }, { kind: "component", type: i60.WorkflowPermissionComponent, selector: "workflow-permission", inputs: ["businessSetting", "item"] }, { kind: "component", type: i61.PermissionUtilsComponent, selector: "permission-utils" }, { kind: "component", type: i62.FilePickerDialogComponent, selector: "file-picker-dialog", inputs: ["isFilePicker", "multipleCheckWhenClickRow", "dataType"], outputs: ["onChanged"] }, { kind: "component", type: i63.AddNewsComponent, selector: "add-news", inputs: ["isShow", "languageCode"], outputs: ["showChange"] }, { kind: "pipe", type: i24.DatePipe, name: "date" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i64.HighlightPipe, name: "highlight" }] });
|
|
791
791
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: CommonAppComponentComponent, decorators: [{
|
|
792
792
|
type: Component,
|
|
793
793
|
args: [{ selector: 'common-app-component', providers: [ComponentContextService, EntityMetadataService], template: "<div *ngIf=\"pageLoaded\" [style.display]=\"pageLoaded ? '' : 'none'\" class=\"layout-wrapper\"\r\n (click)=\"_commonService.onLayoutClick()\" [ngClass]=\"{'menu-layout-static': !_commonService.isOverlay(),\r\n 'menu-layout-overlay': _commonService.isOverlay(),\r\n 'layout-menu-overlay-active': _commonService.overlayMenuActive,\r\n 'menu-layout-horizontal': _commonService.isHorizontal(),\r\n 'menu-layout-slim': _commonService.isSlim(),\r\n 'layout-menu-static-desktop-inactive': _commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-desktop-active': !_commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-mobile-inactive': !_commonService.staticMenuMobileActive,\r\n 'layout-menu-static-mobile-active': _commonService.staticMenuMobileActive,\r\n 'layout-menu-static-inactive': _commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-active': _commonService.staticMenuMobileActive}\">\r\n\r\n <app-topbar *ngIf=\"_globalService.getHeaderState()\"></app-topbar>\r\n\r\n <div *ngIf=\"_globalService.getMenuState()\" class=\"layout-menu-container\"\r\n [ngClass]=\"{'layout-menu-dark':_commonService.darkMenu}\" (click)=\"_commonService.onMenuClick($event)\">\r\n <app-root-menu></app-root-menu>\r\n <div class=\"layout-menu-block\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'padding-top': '16px'}\">\r\n <app-inline-profile *ngIf=\"_commonService.profileMode == 'inline' &&!_commonService.isHorizontal()\">\r\n </app-inline-profile>\r\n <app-menu [autoRenderMenu]=\"autoRenderMenu\" [reset]=\"_commonService.resetMenu\"\r\n (onMenuActive)=\"handleMenuActive($event)\"></app-menu>\r\n </tn-custom-scrollbar>\r\n </div>\r\n <div class=\"search-area layout-menu-search-area\">\r\n <p-autoComplete [(ngModel)]=\"searchMenuInput\" [style]=\"{'width':'100%'}\" [suggestions]=\"searchMenuResult\"\r\n (completeMethod)=\"onSearchMenu($event)\" [autoHighlight]=\"true\"\r\n [placeholder]=\"'T\u00ECm ki\u1EBFm ch\u1EE9c n\u0103ng' | translate\" [delay]=\"200\" [scrollHeight]=\"'400px'\"\r\n class=\"search-input\" [readonly]=\"!(menuModel && menuModel.length)\"\r\n (onSelect)=\"onSelectMenuSuggestion($event)\" field=\"label\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div innerHTML=\"{{ item.label | highlight : searchMenuInput}}\"></div>\r\n </ng-template>\r\n </p-autoComplete>\r\n <span class=\"icon-search\"><i class=\"pi pi-search\"></i></span>\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"'layout-main'\" [ngClass]=\"{'no-header': _globalService.getHeaderState() ? false : true}\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n\r\n <div class=\"layout-mask\"></div>\r\n <div #quickNoteBt *ngIf=\"!onlyShowMainContent && showQuickNote\" class=\"quick-note-button-holder\" cdkDrag\r\n cdkDragBoundary=\".layout-wrapper\" oncontextmenu=\"return false\" (cdkDragEnded)=\"quickNoteDropped($event)\"\r\n (cdkDragStarted)=\"quickNoteStarted($event)\">\r\n <a #quickNoteBt1 href=\"javascript:;\" class=\"all-note-button\" tabindex=\"0\" (click)=\"quickNoteShowAllNotes()\">\r\n <i class=\"fas fa-sticky-note\"></i></a>\r\n <a #quickNoteBt2 href=\"javascript:;\" class=\"setting-note-button\" tabindex=\"0\" (click)=\"quickNoteShowSettings()\">\r\n <i class=\"fas fa-cog\"></i></a>\r\n <a href=\"javascript:;\" (press)=\"quickNotePress($event)\" (pressup)=\"quickNotePressUp($event)\"\r\n class=\"quick-note-button\" tabindex=\"0\" (click)=\"quickNoteAddNote()\">\r\n <i class=\"fas fa-plus\"></i></a>\r\n </div>\r\n <div #pinnedNotes *ngIf=\"!onlyShowMainContent\" class=\"pinned-notes-holder\" cdkDrag cdkDragBoundary=\".layout-wrapper\"\r\n oncontextmenu=\"return false\" (cdkDragEnded)=\"pinnedNotesDropped($event)\"\r\n (cdkDragStarted)=\"pinnedNotesStarted($event)\">\r\n <div class=\"pinned-notes ui-g\" tabindex=\"0\">\r\n <div *ngIf=\"pinnedNotesMinimizeStatus\" class=\"pinned-notes-minimize-button\"\r\n (click)=\"pinnedNotesMinimize(pinnedNotesMinimizeStatus)\">\r\n <i class=\"pi pi-window-maximize\"></i>\r\n </div>\r\n <div *ngIf=\"pinnedNotesMaximizeStatus\" class=\" pinned-notes-minimize-button\"\r\n (click)=\"pinnedNotesMinimize(pinnedNotesMinimizeStatus)\">\r\n <i class=\"pi pi-window-minimize\"></i>\r\n </div>\r\n <div *ngFor=\"let note of pinnedNoteData\" class=\"pinned-note ui-g-12\">\r\n <div class=\"pinned-note-header-line\" [style.background-color]=\"note.colorCode\">\r\n </div>\r\n <div class=\"pinned-note-body\">\r\n <span class=\"pinned-note-line-title\" [style.paddingBottom]=\"note.titlePaddingBottom\">\r\n <div class=\"pinned-note-header-right\">\r\n <span class=\"pinned-note-header-time\">{{note.created | date: 'dd/MM'}}</span>\r\n <img src=\"../assets/layout/images/ico/unpin-1.ico\" class=\"pinned-note-header-button-unpin\"\r\n (click)=\"unPinNote(note)\">\r\n <i *ngIf=\"!note.isCompleted\" class=\"far fa-flag pinned-note-header-button-complete\"\r\n (click)=\"completeNote(note)\"></i>\r\n <i *ngIf=\"note.isCompleted\" class=\"fas fa-flag-checkered pinned-note-header-button-complete\"\r\n (click)=\"inCompleteNote(note)\"></i>\r\n </div>\r\n <div>{{note.name}}</div>\r\n </span>\r\n <div class=\"pinned-note-contents\" [style.display]=\"note.contentDisplay\">\r\n <span *ngFor=\"let content of note.contents\" class=\"pinned-note-line\">\r\n {{content}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <report-queue [header]=\"'Xu\u1EA5t d\u1EEF li\u1EC7u'\">\r\n </report-queue>\r\n</div>\r\n<div class=\"waiting-box\" [class.show]=\"waiting\">\r\n <div class=\"overlay\"></div>\r\n <div class=\"content-loading\">\r\n <div class=\"lds-ellipsis\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n <div class=\"message-loading\">\r\n <span *ngFor=\"let x of messageWaiting\">{{x}}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast [position]=\"'top-right'\" [autoZIndex]=\"true\"></p-toast>\r\n<p-confirmDialog #cd [closable]=\"false\">\r\n <p-footer>\r\n <button #okButton type=\"button\" pButton icon=\"pi pi-check\" class=\"p-button-rounded p-button-text\" label=\"\u0110\u1ED3ng \u00FD\"\r\n (keydown.shift.tab)=\"focusTrap($event, false)\" (click)=\"cd.accept()\"></button>\r\n <button *ngIf=\"showRejectConfirm\" #cancelButton type=\"button\" pButton\r\n class=\"p-button-rounded p-button-text p-button-secondary\" icon=\"pi pi-times\" label=\"B\u1ECF qua\"\r\n (keydown.tab)=\"focusTrap($event, true)\" (click)=\"cd.reject()\"></button>\r\n </p-footer>\r\n</p-confirmDialog>\r\n<!-- <user-action-manager></user-action-manager> -->\r\n<permission-utils *ngIf=\"rootData.showPermissionUtils\"></permission-utils>\r\n<ng-template #queryBuilderUserPicker let-control let-disabled=\"disabled\" let-query=\"query\" let-multiple=\"multiple\">\r\n <user-picker [control]=\"control\" [disabled]=\"disabled\" [multiple]=\"control.multiple\" [(ngModel)]=\"query.value\">\r\n </user-picker>\r\n</ng-template>\r\n<ng-template #queryBuilderCoCauPicker let-control let-disabled=\"disabled\" let-query=\"query\" let-multiple=\"multiple\">\r\n <cocautochuc-picker-list [control]=\"control\" [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </cocautochuc-picker-list>\r\n</ng-template>\r\n<ng-template #queryBuilderAutocompletePicker let-control let-disabled=\"disabled\" let-query=\"query\">\r\n <autocomplete-picker *ngSwitchCase=\"'groupuser'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n</ng-template>\r\n\r\n<ng-template #listCongViecCon let-formState=\"formState\" let-loaiDanhSach=\"loaiDanhSach\" let-idCongViec=\"idCongViec\">\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"formState\"\r\n [loaiDanhSach]=\"loaiDanhSach\" [idCongViec]=\"idCongViec\">\r\n </base-congviec>\r\n</ng-template>\r\n\r\n<ng-template #crudListSettingRow let-entityMetadataService=\"entityMetadataService\" let-parentContext=\"parentContext\"\r\n let-parentSetting=\"parentSetting\" let-parentModel=\"parentModel\" let-onSave=\"onSave\" let-onCancel=\"onCancel\">\r\n <settings-row [entityMetadataService]=\"entityMetadataService\" [parentContext]=\"parentContext\"\r\n [parentSetting]=\"parentSetting\" [parentModel]=\"parentModel\" (onSave)=\"onSave($event)\" (onCancel)=\"onCancel\">\r\n </settings-row>\r\n</ng-template>\r\n<ng-template #crudListSetting let-entityMetadataService=\"entityMetadataService\" let-parentContext=\"parentContext\"\r\n let-parentSetting=\"parentSetting\" let-parentModel=\"parentModel\" let-onSave=\"onSave\" let-onCancel=\"onCancel\">\r\n <settings [entityMetadataService]=\"entityMetadataService\" [parentContext]=\"parentContext\"\r\n [parentSetting]=\"parentSetting\" [parentModel]=\"parentModel\" (onSave)=\"onSave($event)\" (onCancel)=\"onCancel\">\r\n </settings>\r\n</ng-template>\r\n<ng-template #crudListAdvanceSearch let-parentSetting=\"parentSetting\" let-searchInfo=\"searchInfo\" let-loading=\"loading\"\r\n let-onSearch=\"onSearch\" let-onInit=\"onInit\">\r\n <advance-search [parentSetting]=\"parentSetting\" [searchInfo]=\"searchInfo\" [loading]=\"loading\"\r\n (onSearch)=\"onSearch($event)\" (onInit)=\"onInit($event)\">\r\n </advance-search>\r\n</ng-template>\r\n<ng-template #crudListWorkflowSetting let-dialogModel=\"dialogModel\" let-parentSetting=\"parentSetting\"\r\n let-onSaved=\"onSaved\">\r\n <workflow-setting-new #formBase [parentSetting]=\"parentSetting\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </workflow-setting-new>\r\n</ng-template>\r\n<ng-template #crudListWorkflowHistory let-item let-dialogModel=\"dialogModel\">\r\n <workflow-history-new #formBase [businessSetting]=\"dialogModel.data.setting\"\r\n [tableName]=\"dialogModel.data.tableName\" [item]=\"item\" [workflowSetting]=\"dialogModel.data.workflowSetting\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </workflow-history-new>\r\n</ng-template>\r\n<ng-template #crudListStartWorkflow let-dialogModel=\"dialogModel\" let-onSaved=\"onSaved\">\r\n <start-workflow #formBase [workflows]=\"dialogModel.data.workflows\"\r\n [defaultWorkflow]=\"dialogModel.data.defaultWorkflow\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onCancel)=\"dialogModel.showEditForm = false\"\r\n (onSaved)=\"onSaved\">\r\n </start-workflow>\r\n</ng-template>\r\n<ng-template #crudListChoYKien let-dialogModel=\"dialogModel\">\r\n <cho-y-kien-form #formBase [bussinessSetting]=\"dialogModel.data.setting\" [rowItem]=\"dialogModel.data.rowData\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"dialogModel.showEditForm = false\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </cho-y-kien-form>\r\n</ng-template>\r\n<ng-template #crudListProcessWorkflow let-item let-dialogModel=\"dialogModel\" let-onSaved=\"onSaved\">\r\n <process-workflow-form #formBase [businessSetting]=\"dialogModel.data.setting\" [item]=\"item\"\r\n [workflow]=\"dialogModel.data.workflow\" [action]=\"dialogModel.data.action\" (onSaved)=\"onSaved\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </process-workflow-form>\r\n</ng-template>\r\n<ng-template #crudListCongViec let-baseService=\"baseService\" let-itemIdAttach=\"itemIdAttach\">\r\n <base-congviec [serviceCode]=\"baseService.serviceCode\" [entity]=\"baseService.entityName\"\r\n [itemIdAttach]=\"itemIdAttach\"></base-congviec>\r\n</ng-template>\r\n<ng-template #crudListFormCongViec let-dialogModel=\"dialogModel\" let-isFormView=\"isFormView\" let-getData=\"getData\">\r\n <base-congviec-form #formBase [parentSetting]=\"dialogModel.data.congViecSetting\"\r\n [model]=\"dialogModel.data.formModel\" [forceOnlyView]=\"isFormView\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\"\r\n (onSaved)=\"dialogModel.showEditForm = false; getData()\" (onCancel)=\"dialogModel.showEditForm = false\">\r\n </base-congviec-form>\r\n</ng-template>\r\n<ng-template #crudListPermissionSharing let-item let-baseService=\"baseService\" let-dialogModel=\"dialogModel\">\r\n <permission-sharing #formBase [item]=\"item\" [baseService]=\"baseService\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </permission-sharing>\r\n</ng-template>\r\n<ng-template #crudListWorkflowPermission let-item let-businessSetting=\"businessSetting\" let-dialogModel=\"dialogModel\">\r\n <workflow-permission #formBase [item]=\"item\" [businessSetting]=\"businessSetting\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </workflow-permission>\r\n</ng-template>\r\n<ng-template #crudListShareLinkByPermission let-setting=\"setting\" let-dialogModel=\"dialogModel\">\r\n <share-link-by-permission #formBase [setting]=\"setting\" [lstItem]=\"dialogModel.data.lstItem\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </share-link-by-permission>\r\n</ng-template>\r\n<ng-template #crudListFileUploadColumn let-rowData let-parentContext=\"parentContext\" let-field=\"field\"\r\n let-fileSetting=\"fileSetting\">\r\n <file-upload *ngIf=\"fileSetting.mode == fileUploadMode.usingFileInstanceId\"\r\n [sharedFolderType]=\"fileSetting.control.sharedFolderType\" [readonly]=\"fileSetting.control.readonly\"\r\n [accept]=\"fileSetting.control.accept\" [(ngModel)]=\"rowData[field]\">\r\n </file-upload>\r\n <service-file-upload *ngIf=\"fileSetting.control.mode == fileUploadMode.usingServiceFile\"\r\n [serviceCode]=\"fileSetting.control.serviceCode\" [parentContext]=\"parentContext\"\r\n [entity]=\"fileSetting.control.entity\" [entityKey]=\"rowData[fileSetting.control.entityKeyField]\"\r\n [control]=\"fileSetting.control\" [fileDataService]=\"fileSetting.control.fileDataService\"\r\n [(ngModel)]=\"rowData.field\">\r\n </service-file-upload>\r\n</ng-template>\r\n<ng-template #crudListFileManagerColumn let-rowData let-fileSetting=\"fileSetting\" let-field=\"field\">\r\n <file-manager [control]=\"fileSetting.control\" [serviceCode]=\"fileSetting.control.serviceCode\"\r\n [entity]=\"fileSetting.control.entity\" [entityKey]=\"rowData[fileSetting.control.entityKeyField]\"\r\n [readonly]=\"fileSetting.control.readonly\" [layout]=\"fileSetting.control.layout\"\r\n [maxFileSize]=\"fileSetting.control.maxFileSize\" [inTaiLieu]=\"fileSetting.control.inTaiLieu\"\r\n [(value)]=\"rowData[field]\">\r\n </file-manager>\r\n</ng-template>\r\n\r\n<ng-template #crudFormTableDetailForm let-schema let-parentSetting=\"parentSetting\" let-dialogModel=\"dialogModel\"\r\n let-onInit=\"onInit\" let-onSaved=\"onSaved\" let-onCancel=\"onCancel\">\r\n <table-detail-form #formBase [parentSetting]=\"parentSetting\" [schema]=\"schema\" [data]=\"dialogModel.data\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\" (onCancel)=\"onCancel\">\r\n </table-detail-form>\r\n</ng-template>\r\n<ng-template #crudFormCongViecForm let-control=\"control\">\r\n <base-congviec-form [control]=\"control\" [parentSetting]=\"congViecSetting\" [tenCongViec]=\"control.data.tenCongViec\">\r\n </base-congviec-form>\r\n</ng-template>\r\n<ng-template #crudFormAddressComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <address-picker [control]=\"control\" [showSubLabel]=\"control.showSubLabel\" [disabled]=\"checkDisabled(data, control)\"\r\n [(data)]=\"data[control.field]\" (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onSelect)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </address-picker>\r\n</ng-template>\r\n<ng-template #crudFormFileManagerComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <file-manager [control]=\"control\" [serviceCode]=\"control.serviceCode\" [entity]=\"control.entity\"\r\n [entityKey]=\"control.entityKey ? control.entityKey : data[control.entityKeyField]\" [readonly]=\"control.disabled\"\r\n [layout]=\"control.layout\" [maxFileSize]=\"control.maxFileSize\" [inTaiLieu]=\"control.inTaiLieu\"\r\n [inTaiLieuChung]=\"control.inTaiLieuChung\" [copyToFolderId]=\"control.copyToFolderId\"\r\n [invalidFileSizeMessageSummary]=\"control.invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"control.invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"control.invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"control.invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"control.invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"control.invalidFileLimitMessageDetail\" [(value)]=\"data[control.field]\"\r\n (onSelected)=\"control.onSelected($event)\" (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </file-manager>\r\n</ng-template>\r\n<ng-template #crudFormServiceFileUploadComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-parentContext=\"parentContext\" let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <service-file-upload [parentContext]=\"parentContext\" [serviceCode]=\"control.serviceCode\" [entity]=\"control.entity\"\r\n [entityKey]=\"data[control.entityKeyField]\" [control]=\"control\" [(ngModel)]=\"data[control.field]\"\r\n (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\">\r\n </service-file-upload>\r\n</ng-template>\r\n<ng-template #crudFormCongViecPickerComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <congviec-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\" [required]=\"control.required\"\r\n [(ngModel)]=\"data[control.field]\" (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\">\r\n </congviec-picker>\r\n</ng-template>\r\n<ng-template #crudFormVanBanPickerComponent let-data let-control=\"control\" let-parentPath=\"parentPath\"\r\n let-checkDisabled=\"checkDisabled\" let-handleLoadedControl=\"handleLoadedControl\"\r\n let-handleFieldValueChange=\"handleFieldValueChange\" let-handleControlReadyEvent=\"handleControlReadyEvent\">\r\n <vanban-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\" [required]=\"control.required\"\r\n [readOnly]=\"control.readOnly\" [loaiVanBan]=\"control.loaiVanBan\" [(ngModel)]=\"data[control.field]\"\r\n (onInit)=\"handleLoadedControl($event, control, parentPath)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, eventType.CHANGE, data, parentPath)\">\r\n </vanban-picker>\r\n</ng-template>\r\n\r\n<ng-template #tinyMceFilePickerDialog let-parentModel=\"parentModel\" let-parentContext=\"parentContext\"\r\n let-closeForm=\"closeForm\" let-onCancel=\"onCancel\" let-onChanged=\"onChanged\">\r\n <file-picker-dialog #formBase [parentModel]=\"parentModel\" [parentContext]=\"parentContext\" (closeForm)=\"closeForm\"\r\n (onCancel)=\"onCancel\" (onChanged)=\"onChanged\">\r\n </file-picker-dialog>\r\n</ng-template>\r\n<ng-template #tinyMceAddNews let-languageCode=\"languageCode\" let-showChange=\"showChange\">\r\n <add-news #listBase [languageCode]=\"languageCode\" (showChange)=\"showChange($event)\"></add-news>\r\n</ng-template>\r\n\r\n<ng-template #dropdownQuickAddForm let-dialogModel let-parentModel=\"parentModel\" let-parentContext=\"parentContext\"\r\n let-control=\"control\" let-onSaved=\"onSaved\" let-onCancel=\"onCancel\">\r\n <quick-add-form #formBase [parentModel]=\"parentModel\" [parentContext]=\"parentContext\"\r\n [model]=\"dialogModel.data.formModel\" [control]=\"control\" [baseService]=\"control.baseService\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\" (onCancel)=\"onCancel\">\r\n </quick-add-form>\r\n</ng-template>\r\n<ng-template #dropdownSettingForm let-dialogModel let-onSaved=\"onSaved\">\r\n <dropdown-setting-form #formBase [model]=\"dialogModel.data.formModel\"\r\n (onInit)=\"dialogModel.buttonTemplate = $event.buttonTemplate\" (onSaved)=\"onSaved\"\r\n (onCancel)=\"dialogModel.showEditForm = false\">\r\n </dropdown-setting-form>\r\n</ng-template>", styles: [".layout-menu-search-area{position:relative}.icon-search{background-color:transparent;box-shadow:none;position:absolute;right:0;top:0;color:#888;width:30px;font-size:14px;height:100%;display:flex;align-items:center;justify-content:center}.layout-menu-static-inactive .search-area{margin-left:-303px}.layout-menu-container{overflow:hidden;display:flex;flex-direction:column;top:60px;bottom:0;height:auto}.layout-menu-block{display:flex;overflow:hidden;flex:1}.layout-menu-block>tn-custom-scrollbar{width:100%}::ng-deep .layout-menu-search-area .ui-inputtext{width:calc(100% + 1px);border-radius:0;border-color:#dadada;padding-right:40px}::ng-deep .layout-menu-search-area .ui-inputtext:not(:focus){box-shadow:none}::ng-deep .layout-menu-search-area input{width:100%;border-radius:0;border-left:0;border-right:0}::ng-deep .layout-menu-search-area .p-autocomplete-panel{max-width:100%}::ng-deep .layout-menu-search-area .p-autocomplete-item{white-space:normal}::ng-deep .layout-menu-search-area .p-autocomplete-item mark{background-color:var(--tn-primary-color);padding:0;color:#fff;border-radius:0}.waiting-box{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;display:none}.waiting-box .overlay{background-color:red;background-color:#6d6d6d80;width:100%;height:100%}.waiting-box .content-loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center}.waiting-box .content-loading .lds-ellipsis{display:inline-block;position:relative;width:80px;height:60px}.waiting-box .content-loading .lds-ellipsis div{position:absolute;top:33px;width:13px;height:13px;border-radius:50%;background:#fff;animation-timing-function:cubic-bezier(0,1,1,0)}.waiting-box .content-loading .lds-ellipsis div:nth-child(1){left:8px;animation:lds-ellipsis1 .6s infinite}.waiting-box .content-loading .lds-ellipsis div:nth-child(2){left:8px;animation:lds-ellipsis2 .6s infinite}.waiting-box .content-loading .lds-ellipsis div:nth-child(3){left:32px;animation:lds-ellipsis2 .6s infinite}.waiting-box .content-loading .lds-ellipsis div:nth-child(4){left:56px;animation:lds-ellipsis3 .6s infinite}.waiting-box .message-loading{font-size:1.75em}.waiting-box .message-loading span{color:#fff;animation:message-opacity 1s infinite;margin-right:1px}.waiting-box .message-loading span:last-child{margin-right:0}.waiting-box .message-loading span:nth-child(16n+1){animation-delay:0}.waiting-box .message-loading span:nth-child(16n+1){animation-delay:0s}.waiting-box .message-loading span:nth-child(16n+2){animation-delay:.1s}.waiting-box .message-loading span:nth-child(16n+3){animation-delay:.2s}.waiting-box .message-loading span:nth-child(16n+4){animation-delay:.3s}.waiting-box .message-loading span:nth-child(16n+5){animation-delay:.4s}.waiting-box .message-loading span:nth-child(16n+6){animation-delay:.5s}.waiting-box .message-loading span:nth-child(16n+7){animation-delay:.6s}.waiting-box .message-loading span:nth-child(16n+8){animation-delay:.7s}.waiting-box .message-loading span:nth-child(16n+9){animation-delay:.8s}.waiting-box .message-loading span:nth-child(16n+10){animation-delay:.9s}.waiting-box .message-loading span:nth-child(16n+11){animation-delay:1s}.waiting-box .message-loading span:nth-child(16n+12){animation-delay:1.1s}.waiting-box .message-loading span:nth-child(16n+13){animation-delay:1.2s}.waiting-box .message-loading span:nth-child(16n+14){animation-delay:1.3s}.waiting-box .message-loading span:nth-child(16n+15){animation-delay:1.4s}.waiting-box .message-loading span:nth-child(16n+16){animation-delay:1.5s}.waiting-box.show{display:block}@keyframes lds-ellipsis1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes lds-ellipsis3{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes lds-ellipsis2{0%{transform:translate(0)}to{transform:translate(24px)}}@keyframes message-opacity{0%{opacity:1}50%{opacity:.5}to{opacity:1}}\n"] }]
|
|
@@ -161,7 +161,7 @@ export class DefaultDataSettingsComponent extends DataFormBase {
|
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
DefaultDataSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: DefaultDataSettingsComponent, deps: [{ token: i0.Injector }, { token: i1.EnvironmentService }, { token: i2.tbl_DM_NguoiHoc_HeDaoTaoService }, { token: i3.tbl_HeThong_HocKyService }, { token: i4.tbl_HeThong_NamHocService }], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
-
DefaultDataSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: DefaultDataSettingsComponent, selector: "default-data-settings", inputs: { settingKey: "settingKey" }, outputs: { onShow: "onShow", onHide: "onHide" }, providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<crud-form #crudForm [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\" [(data)]=\"model.data\"\r\n (onFormReady)=\"_handleFormReady($event)\">\r\n</crud-form>\r\n<ng-template #buttonTemplate>\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" pButton type=\"button\" icon=\"pi pi-save\"\r\n class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\" (click)=\"saveCommonSetting()\"></button>\r\n <button pButton preventTab type=\"button\" icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"cancel($event)\"></button>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "
|
|
164
|
+
DefaultDataSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: DefaultDataSettingsComponent, selector: "default-data-settings", inputs: { settingKey: "settingKey" }, outputs: { onShow: "onShow", onHide: "onHide" }, providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<crud-form #crudForm [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\" [(data)]=\"model.data\"\r\n (onFormReady)=\"_handleFormReady($event)\">\r\n</crud-form>\r\n<ng-template #buttonTemplate>\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" pButton type=\"button\" icon=\"pi pi-save\"\r\n class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\" (click)=\"saveCommonSetting()\"></button>\r\n <button pButton preventTab type=\"button\" icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"cancel($event)\"></button>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "component", type: i7.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "useGridTemplate", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
165
165
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: DefaultDataSettingsComponent, decorators: [{
|
|
166
166
|
type: Component,
|
|
167
167
|
args: [{ selector: 'default-data-settings', changeDetection: ChangeDetectionStrategy.Default, providers: [ComponentContextService], template: "<crud-form #crudForm [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\" [(data)]=\"model.data\"\r\n (onFormReady)=\"_handleFormReady($event)\">\r\n</crud-form>\r\n<ng-template #buttonTemplate>\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" pButton type=\"button\" icon=\"pi pi-save\"\r\n class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\" (click)=\"saveCommonSetting()\"></button>\r\n <button pButton preventTab type=\"button\" icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"cancel($event)\"></button>\r\n</ng-template>" }]
|
|
@@ -458,7 +458,7 @@ export class AdvanceSearchComponent extends ComponentBase {
|
|
|
458
458
|
}
|
|
459
459
|
}
|
|
460
460
|
AdvanceSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AdvanceSearchComponent, deps: [{ token: i1.CustomRouterService }, { token: i0.Injector }, { token: i2.NotifierService }, { token: i3.TranslateService }, { token: i4.DeviceDetectorService }, { token: i5.LocalCacheService }, { token: i0.Renderer2 }, { token: i6.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
461
|
-
AdvanceSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: AdvanceSearchComponent, selector: "advance-search", inputs: { parentSetting: "parentSetting", searchInfo: "searchInfo", allowLoadDataWhenParentNull: "allowLoadDataWhenParentNull", loading: "loading" }, outputs: { onSearch: "onSearch", onFormEvent: "onFormEvent", onInit: "onInit" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "el", first: true, predicate: ["el"], descendants: true }, { propertyName: "crudForm", first: true, predicate: ["crudForm"], descendants: true }, { propertyName: "overlayPanel", first: true, predicate: ["overlayPanel"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #el class=\"box-advance-search-inline p-inputgroup\">\r\n <input type=\"text\" pInputText placeholder=\"Nh\u1EADp t\u1EEB kh\u00F3a t\u00ECm ki\u1EBFm\" [pTooltip]=\"searchBoxTooltip\"\r\n tooltipStyleClass=\"wrap max-width-300\" tooltipPosition=\"top\"\r\n [disabled]=\"!parentSetting.fieldSearchText || !parentSetting.fieldSearchText.length\" [(ngModel)]=\"keyword\"\r\n (change)=\"onChanged($event)\" (keyup.esc)=\"onEsc($event)\" />\r\n <span class=\"p-inputgroup-addon action\" [class.disabled]=\"loading\" [class.dirty]=\"!!keyword\"\r\n [pTooltip]=\"'X\u00F3a t\u00ECm ki\u1EBFm'\" tooltipPosition=\"top\" (click)=\"clearKeyword()\">\r\n <i class=\"pi pi-filter-slash\"></i>\r\n </span>\r\n <span class=\"p-inputgroup-addon action\" [class.disabled]=\"loading\" [pTooltip]=\"'T\u00ECm ki\u1EBFm'\" tooltipPosition=\"top\"\r\n (click)=\"onDoSearching()\">\r\n <i class=\"pi pi-search\"></i>\r\n </span>\r\n <span class=\"container-search-dialog p-inputgroup-addon action action-trigger\" tabindex=\"0\" [class.show]=\"showForm\"\r\n [pTooltip]=\"'T\u00ECm ki\u1EBFm n\u00E2ng cao'\" tooltipPosition=\"top\">\r\n <span (click)=\"showFormSearch()\">\r\n <i class=\"pi pi-caret-down\"></i>\r\n </span>\r\n </span>\r\n <ng-container *ngIf=\"showForm\">\r\n <div #overlayPanel\r\n class=\"advance-search-overlay-panel filter-content p-overlaypanel p-widget-content fadeInDown advance-search-box\"\r\n [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: overlayShowTransitionOptions, hideTransitionParams: overlayHideTransitionOptions}}\"\r\n (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (keyup.enter)=\"onDoSearching()\"\r\n (keyup.esc)=\"hideFormSearch()\" (mousedown)=\"onClick($event)\">\r\n <!-- <a class=\"advance-filter-close ng-star-inserted\" href=\"javascript:void(0);\" (click)=\"hideFormSearch()\"><i\r\n class=\"pi pi-times\"></i></a> -->\r\n <ng-container *ngIf=\"parentSetting.filterTemplateAdvs\">\r\n <tn-custom-scrollbar #scrollbar\r\n [style]=\"{ maxHeight: _searchBoxMaxHeight, minHeight: '300px', height: 'auto', parentClass: 'box-advance-search-inline' }\">\r\n <crud-form *ngIf=\"ready\" #crudForm [data]=\"modelCrudForm\" [setting]=\"setting\" [context]=\"context\"\r\n [disableKeypressControl]=\"true\" [disableCaching]=\"true\" (onFormShow)=\"onFormShow($event)\"\r\n (onFormHide)=\"onFormHide($event)\">\r\n </crud-form>\r\n </tn-custom-scrollbar>\r\n <div class=\"footer-search\">\r\n <button type=\"button\" pButton icon=\"pi pi-search\" class=\"p-button-text p-button-info\"\r\n [label]=\"'T\u00ECm ki\u1EBFm' | translate\" (click)=\"onDoSearching()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'X\u00F3a t\u00ECm ki\u1EBFm' | translate\" (click)=\"clearSearch($event)\" preventTab></button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!parentSetting.filterTemplateAdvs\">\r\n <query-builder [searchSchema]=\"setting.schema\" [filters]=\"filter_query\"\r\n [style]=\"{ maxHeight: _searchBoxMaxHeight, minHeight: '300px', height: 'auto', parentClass: 'box-advance-search-inline'}\"\r\n (onSave)=\"handleSaveSetting($event)\" (onDeleteSave)=\"handleDeleteSaveSetting()\"\r\n (onSearch)=\"handleSearchBuilder($event)\"></query-builder>\r\n </ng-container>\r\n <after-view-checked style=\"display: none;\" (loaded)=\"handleAdvanceSearchPanelRendered()\">\r\n </after-view-checked>\r\n </div>\r\n </ng-container>\r\n</div>", styles: [".advance-search-box{border:1px solid #eee;border-radius:0;overflow:hidden}.advance-filter-close{position:absolute;z-index:1;right:3px;top:3px;font-size:.9em;color:#666;background:#fff}.action-trigger{padding:0;outline:none}.action-trigger>span:first-child{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.footer-search{background:#f7f7f7;border-top:1px solid #dee2e6;padding:10px;padding-right:1rem;position:sticky;bottom:0}.box-advance-search-inline{justify-content:flex-end}.box-advance-search-inline input{padding:5px 12px}.box-advance-search-inline .action{cursor:pointer}.box-advance-search-inline .action.dirty{color:#008eff;pointer-events:unset}.box-advance-search-inline .action.disabled{background:#e9ecef;color:#d6d6d6;pointer-events:none;cursor:unset}.box-advance-search-inline .action:hover{background:#f5f6f8}::ng-deep .advance-search-mask-overlay{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0,0,0,.1450980392);z-index:999}::ng-deep .advance-search-overlay-panel{width:800px;position:fixed;max-width:calc(100vw - 2rem);padding:0;z-index:1000;margin-top:0;animation-duration:.5s;border:0px;box-shadow:0 6px 12px #00000042}::ng-deep .advance-search-overlay-panel perfect-scrollbar{display:flex;flex-direction:column}::ng-deep .advance-search-overlay-panel:not(.hide){display:block!important}@media (min-width: 768px){.box-advance-search-inline input{max-width:300px}}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "
|
|
461
|
+
AdvanceSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: AdvanceSearchComponent, selector: "advance-search", inputs: { parentSetting: "parentSetting", searchInfo: "searchInfo", allowLoadDataWhenParentNull: "allowLoadDataWhenParentNull", loading: "loading" }, outputs: { onSearch: "onSearch", onFormEvent: "onFormEvent", onInit: "onInit" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "el", first: true, predicate: ["el"], descendants: true }, { propertyName: "crudForm", first: true, predicate: ["crudForm"], descendants: true }, { propertyName: "overlayPanel", first: true, predicate: ["overlayPanel"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #el class=\"box-advance-search-inline p-inputgroup\">\r\n <input type=\"text\" pInputText placeholder=\"Nh\u1EADp t\u1EEB kh\u00F3a t\u00ECm ki\u1EBFm\" [pTooltip]=\"searchBoxTooltip\"\r\n tooltipStyleClass=\"wrap max-width-300\" tooltipPosition=\"top\"\r\n [disabled]=\"!parentSetting.fieldSearchText || !parentSetting.fieldSearchText.length\" [(ngModel)]=\"keyword\"\r\n (change)=\"onChanged($event)\" (keyup.esc)=\"onEsc($event)\" />\r\n <span class=\"p-inputgroup-addon action\" [class.disabled]=\"loading\" [class.dirty]=\"!!keyword\"\r\n [pTooltip]=\"'X\u00F3a t\u00ECm ki\u1EBFm'\" tooltipPosition=\"top\" (click)=\"clearKeyword()\">\r\n <i class=\"pi pi-filter-slash\"></i>\r\n </span>\r\n <span class=\"p-inputgroup-addon action\" [class.disabled]=\"loading\" [pTooltip]=\"'T\u00ECm ki\u1EBFm'\" tooltipPosition=\"top\"\r\n (click)=\"onDoSearching()\">\r\n <i class=\"pi pi-search\"></i>\r\n </span>\r\n <span class=\"container-search-dialog p-inputgroup-addon action action-trigger\" tabindex=\"0\" [class.show]=\"showForm\"\r\n [pTooltip]=\"'T\u00ECm ki\u1EBFm n\u00E2ng cao'\" tooltipPosition=\"top\">\r\n <span (click)=\"showFormSearch()\">\r\n <i class=\"pi pi-caret-down\"></i>\r\n </span>\r\n </span>\r\n <ng-container *ngIf=\"showForm\">\r\n <div #overlayPanel\r\n class=\"advance-search-overlay-panel filter-content p-overlaypanel p-widget-content fadeInDown advance-search-box\"\r\n [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: overlayShowTransitionOptions, hideTransitionParams: overlayHideTransitionOptions}}\"\r\n (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (keyup.enter)=\"onDoSearching()\"\r\n (keyup.esc)=\"hideFormSearch()\" (mousedown)=\"onClick($event)\">\r\n <!-- <a class=\"advance-filter-close ng-star-inserted\" href=\"javascript:void(0);\" (click)=\"hideFormSearch()\"><i\r\n class=\"pi pi-times\"></i></a> -->\r\n <ng-container *ngIf=\"parentSetting.filterTemplateAdvs\">\r\n <tn-custom-scrollbar #scrollbar\r\n [style]=\"{ maxHeight: _searchBoxMaxHeight, minHeight: '300px', height: 'auto', parentClass: 'box-advance-search-inline' }\">\r\n <crud-form *ngIf=\"ready\" #crudForm [data]=\"modelCrudForm\" [setting]=\"setting\" [context]=\"context\"\r\n [disableKeypressControl]=\"true\" [disableCaching]=\"true\" (onFormShow)=\"onFormShow($event)\"\r\n (onFormHide)=\"onFormHide($event)\">\r\n </crud-form>\r\n </tn-custom-scrollbar>\r\n <div class=\"footer-search\">\r\n <button type=\"button\" pButton icon=\"pi pi-search\" class=\"p-button-text p-button-info\"\r\n [label]=\"'T\u00ECm ki\u1EBFm' | translate\" (click)=\"onDoSearching()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'X\u00F3a t\u00ECm ki\u1EBFm' | translate\" (click)=\"clearSearch($event)\" preventTab></button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!parentSetting.filterTemplateAdvs\">\r\n <query-builder [searchSchema]=\"setting.schema\" [filters]=\"filter_query\"\r\n [style]=\"{ maxHeight: _searchBoxMaxHeight, minHeight: '300px', height: 'auto', parentClass: 'box-advance-search-inline'}\"\r\n (onSave)=\"handleSaveSetting($event)\" (onDeleteSave)=\"handleDeleteSaveSetting()\"\r\n (onSearch)=\"handleSearchBuilder($event)\"></query-builder>\r\n </ng-container>\r\n <after-view-checked style=\"display: none;\" (loaded)=\"handleAdvanceSearchPanelRendered()\">\r\n </after-view-checked>\r\n </div>\r\n </ng-container>\r\n</div>", styles: [".advance-search-box{border:1px solid #eee;border-radius:0;overflow:hidden}.advance-filter-close{position:absolute;z-index:1;right:3px;top:3px;font-size:.9em;color:#666;background:#fff}.action-trigger{padding:0;outline:none}.action-trigger>span:first-child{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.footer-search{background:#f7f7f7;border-top:1px solid #dee2e6;padding:10px;padding-right:1rem;position:sticky;bottom:0}.box-advance-search-inline{justify-content:flex-end}.box-advance-search-inline input{padding:5px 12px}.box-advance-search-inline .action{cursor:pointer}.box-advance-search-inline .action.dirty{color:#008eff;pointer-events:unset}.box-advance-search-inline .action.disabled{background:#e9ecef;color:#d6d6d6;pointer-events:none;cursor:unset}.box-advance-search-inline .action:hover{background:#f5f6f8}::ng-deep .advance-search-mask-overlay{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0,0,0,.1450980392);z-index:999}::ng-deep .advance-search-overlay-panel{width:800px;position:fixed;max-width:calc(100vw - 2rem);padding:0;z-index:1000;margin-top:0;animation-duration:.5s;border:0px;box-shadow:0 6px 12px #00000042}::ng-deep .advance-search-overlay-panel perfect-scrollbar{display:flex;flex-direction:column}::ng-deep .advance-search-overlay-panel:not(.hide){display:block!important}@media (min-width: 768px){.box-advance-search-inline input{max-width:300px}}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "directive", type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "tooltipZIndex", "escape", "tooltipDisabled", "pTooltip", "positionStyle", "tooltipStyleClass", "showDelay", "hideDelay", "life"] }, { kind: "directive", type: i10.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: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i11.InputText, selector: "[pInputText]" }, { kind: "component", type: i12.AfterViewCheckedComponent, selector: "after-view-checked", inputs: ["renderKey"], outputs: ["loaded", "loading", "unloading", "reRender"] }, { kind: "component", type: i13.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "useGridTemplate", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }, { kind: "component", type: i14.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { kind: "component", type: i15.QueryBuilderComponent, selector: "query-builder", inputs: ["searchSchema", "filters", "style", "styleClass", "useScrollBar", "hiddenButtons"], outputs: ["onSearch", "onSave", "onDeleteSave"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
462
462
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AdvanceSearchComponent, decorators: [{
|
|
463
463
|
type: Component,
|
|
464
464
|
args: [{ selector: 'advance-search', providers: [ComponentContextService], template: "<div #el class=\"box-advance-search-inline p-inputgroup\">\r\n <input type=\"text\" pInputText placeholder=\"Nh\u1EADp t\u1EEB kh\u00F3a t\u00ECm ki\u1EBFm\" [pTooltip]=\"searchBoxTooltip\"\r\n tooltipStyleClass=\"wrap max-width-300\" tooltipPosition=\"top\"\r\n [disabled]=\"!parentSetting.fieldSearchText || !parentSetting.fieldSearchText.length\" [(ngModel)]=\"keyword\"\r\n (change)=\"onChanged($event)\" (keyup.esc)=\"onEsc($event)\" />\r\n <span class=\"p-inputgroup-addon action\" [class.disabled]=\"loading\" [class.dirty]=\"!!keyword\"\r\n [pTooltip]=\"'X\u00F3a t\u00ECm ki\u1EBFm'\" tooltipPosition=\"top\" (click)=\"clearKeyword()\">\r\n <i class=\"pi pi-filter-slash\"></i>\r\n </span>\r\n <span class=\"p-inputgroup-addon action\" [class.disabled]=\"loading\" [pTooltip]=\"'T\u00ECm ki\u1EBFm'\" tooltipPosition=\"top\"\r\n (click)=\"onDoSearching()\">\r\n <i class=\"pi pi-search\"></i>\r\n </span>\r\n <span class=\"container-search-dialog p-inputgroup-addon action action-trigger\" tabindex=\"0\" [class.show]=\"showForm\"\r\n [pTooltip]=\"'T\u00ECm ki\u1EBFm n\u00E2ng cao'\" tooltipPosition=\"top\">\r\n <span (click)=\"showFormSearch()\">\r\n <i class=\"pi pi-caret-down\"></i>\r\n </span>\r\n </span>\r\n <ng-container *ngIf=\"showForm\">\r\n <div #overlayPanel\r\n class=\"advance-search-overlay-panel filter-content p-overlaypanel p-widget-content fadeInDown advance-search-box\"\r\n [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: overlayShowTransitionOptions, hideTransitionParams: overlayHideTransitionOptions}}\"\r\n (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (keyup.enter)=\"onDoSearching()\"\r\n (keyup.esc)=\"hideFormSearch()\" (mousedown)=\"onClick($event)\">\r\n <!-- <a class=\"advance-filter-close ng-star-inserted\" href=\"javascript:void(0);\" (click)=\"hideFormSearch()\"><i\r\n class=\"pi pi-times\"></i></a> -->\r\n <ng-container *ngIf=\"parentSetting.filterTemplateAdvs\">\r\n <tn-custom-scrollbar #scrollbar\r\n [style]=\"{ maxHeight: _searchBoxMaxHeight, minHeight: '300px', height: 'auto', parentClass: 'box-advance-search-inline' }\">\r\n <crud-form *ngIf=\"ready\" #crudForm [data]=\"modelCrudForm\" [setting]=\"setting\" [context]=\"context\"\r\n [disableKeypressControl]=\"true\" [disableCaching]=\"true\" (onFormShow)=\"onFormShow($event)\"\r\n (onFormHide)=\"onFormHide($event)\">\r\n </crud-form>\r\n </tn-custom-scrollbar>\r\n <div class=\"footer-search\">\r\n <button type=\"button\" pButton icon=\"pi pi-search\" class=\"p-button-text p-button-info\"\r\n [label]=\"'T\u00ECm ki\u1EBFm' | translate\" (click)=\"onDoSearching()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'X\u00F3a t\u00ECm ki\u1EBFm' | translate\" (click)=\"clearSearch($event)\" preventTab></button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!parentSetting.filterTemplateAdvs\">\r\n <query-builder [searchSchema]=\"setting.schema\" [filters]=\"filter_query\"\r\n [style]=\"{ maxHeight: _searchBoxMaxHeight, minHeight: '300px', height: 'auto', parentClass: 'box-advance-search-inline'}\"\r\n (onSave)=\"handleSaveSetting($event)\" (onDeleteSave)=\"handleDeleteSaveSetting()\"\r\n (onSearch)=\"handleSearchBuilder($event)\"></query-builder>\r\n </ng-container>\r\n <after-view-checked style=\"display: none;\" (loaded)=\"handleAdvanceSearchPanelRendered()\">\r\n </after-view-checked>\r\n </div>\r\n </ng-container>\r\n</div>", styles: [".advance-search-box{border:1px solid #eee;border-radius:0;overflow:hidden}.advance-filter-close{position:absolute;z-index:1;right:3px;top:3px;font-size:.9em;color:#666;background:#fff}.action-trigger{padding:0;outline:none}.action-trigger>span:first-child{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.footer-search{background:#f7f7f7;border-top:1px solid #dee2e6;padding:10px;padding-right:1rem;position:sticky;bottom:0}.box-advance-search-inline{justify-content:flex-end}.box-advance-search-inline input{padding:5px 12px}.box-advance-search-inline .action{cursor:pointer}.box-advance-search-inline .action.dirty{color:#008eff;pointer-events:unset}.box-advance-search-inline .action.disabled{background:#e9ecef;color:#d6d6d6;pointer-events:none;cursor:unset}.box-advance-search-inline .action:hover{background:#f5f6f8}::ng-deep .advance-search-mask-overlay{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0,0,0,.1450980392);z-index:999}::ng-deep .advance-search-overlay-panel{width:800px;position:fixed;max-width:calc(100vw - 2rem);padding:0;z-index:1000;margin-top:0;animation-duration:.5s;border:0px;box-shadow:0 6px 12px #00000042}::ng-deep .advance-search-overlay-panel perfect-scrollbar{display:flex;flex-direction:column}::ng-deep .advance-search-overlay-panel:not(.hide){display:block!important}@media (min-width: 768px){.box-advance-search-inline input{max-width:300px}}\n"] }]
|