raise-common-lib 0.0.20 → 0.0.21
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/bundles/raise-common-lib.umd.js +19 -6
- package/bundles/raise-common-lib.umd.js.map +1 -1
- package/bundles/raise-common-lib.umd.min.js +1 -1
- package/bundles/raise-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/layout/main-container/index.component.js +2 -2
- package/esm2015/lib/layout/multi-tab/index.component.js +16 -4
- package/esm2015/lib/service/keep-alive.service.js +5 -1
- package/esm5/lib/layout/main-container/index.component.js +2 -2
- package/esm5/lib/layout/multi-tab/index.component.js +16 -7
- package/esm5/lib/service/keep-alive.service.js +5 -1
- package/fesm2015/raise-common-lib.js +19 -3
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +19 -6
- package/fesm5/raise-common-lib.js.map +1 -1
- package/lib/layout/multi-tab/index.component.d.ts +3 -2
- package/package.json +1 -1
- package/raise-common-lib.metadata.json +1 -1
- package/src/assets/img/split-button-arrow copy.svg +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://raise-common-lib/lib/common-grid/index.component.ts","ng://raise-common-lib/lib/float-box/index.component.ts","ng://raise-common-lib/lib/layout/page-list/index.component.ts","ng://raise-common-lib/lib/layout/page-tab/index.component.ts","ng://raise-common-lib/lib/layout/grid-box/index.component.ts","ng://raise-common-lib/lib/service/common-function.service.ts","ng://raise-common-lib/lib/service/keep-alive.service.ts","ng://raise-common-lib/lib/layout/multi-tab/index.component.ts","ng://raise-common-lib/lib/layout/main-container/index.component.ts","ng://raise-common-lib/lib/layout/rs-header/index.component.ts","ng://raise-common-lib/lib/layout/rs-footer/index.component.ts","ng://raise-common-lib/lib/layout/rs-aside/index.component.ts","ng://raise-common-lib/lib/form/tag-input/index.component.ts","ng://raise-common-lib/lib/form/radio-group/index.component.ts","ng://raise-common-lib/lib/form/checkbox-group/index.component.ts","ng://raise-common-lib/lib/form/switch-input/index.component.ts","ng://raise-common-lib/lib/service/icon-loader.service.ts","ng://raise-common-lib/lib/dialog/new-action-notification/new-action-notification.component.ts","ng://raise-common-lib/lib/dialog/common-delete-dialog/index.component.ts","ng://raise-common-lib/lib/service/dialog.service.ts","ng://raise-common-lib/lib/dialog/common-dialog/index.component.ts","ng://raise-common-lib/lib/raise-common-lib.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__read","o","m","Symbol","iterator","r","e","ar","next","done","push","value","error","__spread","concat","CommonGridComponent","ref","showCheckBox","loaded","hiddenLoaded","authorized","selectedDiffKey","gridHeight","gridId","resizeSettings","mode","filterSettings","type","fields","dataSource","allowPaging","clipMode","checkBoxWidth","contextMenuItems","selectionSettings","checkboxOnly","alwaysShowCheckbox","disableSystemRow","recordDoubleClick","EventEmitter","actionComplete","rowSelected","rowDeselected","onContextMenu","actionHandler","queryCellInfo","recordClick","actionBegin","rowDataBound","dataBound","exportQueryCellInfo","rowSelecting","selectId","startPaging","indexList","className","translation","JSON","parse","localStorage","getItem","ngOnInit","markForCheck","trackByFn","index","item","ngOnChanges","changes","currentValue","pageSettings","pageSizes","pageSize","_load","grid","localeStrings","EmptyRecord","YOU_DO_NOT_HAVE_THE_DATASET_PERMISSION","_dataBound","args","_this","pagerContainer","document","querySelector","querySelectorAll","forEach","element","removeAttribute","setTimeout","chooseRecords","emit","_exportQueryCellInfo","_recordDoubleClick","$event","_rowSelected","isHeaderCheckboxClicked","Array","isArray","data","isSelected","_data","_rowDeselected","filter","_onContextMenu","_actionBegin","requestType","search","keywords","selectRows","selectRow","getCurrentViewRecords","customiseCell","contextMenuOpen","rowInfo","rowData","enableItems","hideItems","contextMenuModule","contextMenu","refresh","disabled","disableItem","includes","iconCss","text","isHide","hideItem","cancel","_actionHandler","detectChanges","row","_recordClick","_rowSelecting","refreshColumns","refreshHeader","export","excelExportProperties","excelExport","getSelectedRecords","_rowDataBound","IsSystem","classList","add","clearSelection","addItem","addRecord","defaultRecord","isNew","startEdit","saveItem","endEdit","editItem","Number","deleteItem","selectedRecord","deleteRecord","cancelItem","closeEdit","showLoading","hideLoading","Component","selector","template","ChangeDetectorRef","ViewChild","static","Input","Output","FloatBoxComponent","_trigger","_animation","_fixed","openChange","FIXED_CONTAINER_ID","opened","onClickOutside","event","rootElement","nativeElement","contains","fixedContainerEl","window","removeEventListener","onMoveOutside","contentElement","defineProperty","_placement","_position","ngAfterViewInit","getFixedContainer","fixed","append","ngOnDestroy","remove","containerElement","getElementById","createElement","setAttribute","body","setFixedContentPosition","_a","getBoundingClientRect","y","top","x","left","width","height","translateX","translateY","placement","position","style","transform","onClickContainer","trigger","addEventListener","onMouseEnter","close","RsPageListComponent","customPageTitle","isInner","debouncedInput","debounce","onSeach","gridContent","searchValue","onInput","ContentChild","RsPageTabComponent","tabList","tabChange","animation","previous","effect","duration","easing","onTabClick","selectedIndex","GridBoxComponent","TemplateRef","toBeDeleteUrl","CommonFunctionService","testMethod","setMiddleEllipsis","maxWidth","fontSize","context","getContext","font","measureText","Math","floor","firstPart","secondPart","half","getPureUrl","url","decodeURIComponent","split","Injectable","providedIn","storedRoutes","excludeRoutes","KeepAliveService","setExcludeRoutes","routes","shouldDetach","route","getRoutePath","routeConfig","path","store","handle","shouldAttach","retrieve","shouldReuseRoute","future","curr","queryParams","URLSearchParams","toString","_routerState","clearCache","MultiTabComponent","router","cf","activatedRoute","keepAlive","singleReuseUrls","TAB_WIDTH","GAP_NORMAL","GAP_SMALL","selectedTab","maxTabs","screenWidth","innerWidth","onResize","setEllipsisTitle","initTab","events","pipe","NavigationEnd","subscribe","navigation","getCurrentNavigation","state","extras","currentRoute","routerState","root","firstChild","setTab","snapshot","title","textGap","calcTabWidth","allWidth","rightWidth","leftWidth","ele","idx","displayTitle","wrap","ulElement","refreshTabDiv","wrapRect","ulRect","refreshTabRect","TabCache","sessionStorage","closeTab","tab","targetIdx","max","changeTab","setItem","stringify","navigateByUrl","addTab","pureUrl","isExistIdx","findIndex","singleIdx_1","refreshTab","currentUrl","skipLocationChange","then","Router","ActivatedRoute","HostListener","MainContainerComponent","isCollapsed","RSHeaderComponent","toggleMenu","lastLoginTime","Date","langOptions","currentLang","onToggleMenu","selectLanguage","find","RSFooterComponent","today","RSAsideComponent","navList","currentNav","onNavClick","navigate","TagInputComponent","inputMinlength","inputMaxlength","valueChange","inputError","onRemoveTag","tag","tagsList","onAddTag","inputValue","target","verifyInputValue","inputValueLength","RadioGroupComponent","orientation","onChange","CheckboxGroupComponent","console","log","option","result","originalValue","checked","val","SwitchInputComponent","onClick","IconLoaderService","registry","domSanitizer","registerIcons","list","name","addSvgIcon","bypassSecurityTrustResourceUrl","MatIconRegistry","DomSanitizer","NewActionNotificationComponent","collapsed","config","loadingCallback","progress","snackBar","dismiss","closeNotification","expandNotification","status","Inject","MAT_SNACK_BAR_DATA","CommonDeleteComponent","dialogRef","saveBtnLabel","cancelBtnLabel","description","size","DELETE","CANCEL","IF_YOU_DELETE_THIS_RECORD_WARNING","onSave","MAT_DIALOG_DATA","MatDialogRef","MessageType","Create","Read","Update","Delete","DialogService","dialog","showLoadingNotification","openFromComponent","message","DOWNLOAD_IS_IN_PROGRESS","verticalPosition","horizontalPosition","panelClass","showNotification","deleteElement","open","showCommonDilaog","showUnsavedChanges","defaultData","UNSAVED_CHANGES","YOU_HAVE_UNSAVED_CHANGED_ARE_YOU_SURE_YOU_WANT_TO_DISCARD_THEM","DISCARD_CHANGES","CONTINUE_EDITING","showSucMsg","res","showMessage","showUpdateMsg","showDelMsg","_saveMessage","SAVESUCCESS","UPDATESUCCESS","DELETESUCCESS","messages","MatSnackBar","MatDialog","CommonDialogComponent","hideHeader","hideCloseIcon","hideCloseBtn","hideSaveBtn","showErrorIcon","loading","saveEmit","closeEmit","customFooter","ngAfterContentInit","footerContent","getInfo","onClose","SAVE","RaiseCommonLibModule","NgModule","declarations","imports","CommonModule","HttpClientModule","ReactiveFormsModule","FormsModule","MatSnackBarModule","MatDialogModule","MatIconModule","GridModule","PagerModule","GridAllModule","SwitchModule","CheckBoxModule","RadioButtonModule","ButtonModule","DiagramModule","TooltipModule","DialogModule","DatePickerModule","DateRangePickerModule","DateTimePickerModule","TextBoxModule","ColorPickerModule","UploaderModule","NumericTextBoxModule","DropDownListModule","DropDownTreeModule","MultiSelectAllModule","AutoCompleteModule","ListBoxModule","PivotViewAllModule","PivotFieldListAllModule","ChartAllModule","AccumulationChartAllModule","RangeNavigatorAllModule","AccumulationChartModule","DashboardLayoutModule","CarouselAllModule","ToolbarModule","TabModule","PdfViewerModule","DropDownButtonModule","SplitButtonModule","RichTextEditorAllModule","providers","PageService","SortService","FilterService","ExcelExportService","EditService","ResizeService","ToolbarService","ColumnChooserService","AggregateService","ColumnMenuService","DetailRowService","SelectionService","GroupService","PieSeriesService","AccumulationLegendService","AccumulationTooltipService","AccumulationAnnotationService","AccumulationDataLabelService","LinkAnnotationService","BookmarkViewService","MagnificationService","ThumbnailViewService","PbfToolbarService","NavigationService","TextSearchService","TextSelectionService","PrintService","HtmlEditorService","RichEditorToolbarService","exports","entryComponents"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n OnChanges,\r\n ViewChild,\r\n SimpleChanges,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { GridComponent } from '@syncfusion/ej2-angular-grids';\r\n\r\nimport { BeforeOpenCloseEventArgs } from '@syncfusion/ej2-angular-inputs';\r\nimport { IActionMenuItem, IColumnField } from '../constant';\r\n\r\n@Component({\r\n selector: 'rs-common-grid',\r\n templateUrl: './index.component.html',\r\n styleUrls: ['./index.component.scss'],\r\n})\r\nexport class CommonGridComponent implements OnInit, OnChanges {\r\n @ViewChild('grid', { static: false })\r\n public grid: GridComponent;\r\n @Input() showCheckBox = true;\r\n @Input() loaded = true;\r\n @Input() hiddenLoaded = false;\r\n @Input() authorized = true; // Dataset是否授权,未授权则显示权限错误提示\r\n // only use for local data pagination\r\n @Input() selectedDiffKey = '';\r\n @Input() gridHeight = '';\r\n // 这玩意必填,不然filter columnChooser都会报错\r\n @Input() gridId = 'grid';\r\n @Input() resizeSettings = { mode: 'Auto' };\r\n @Input() filterSettings = { type: 'Menu' };\r\n @Input() template: any;\r\n @Input() fields: IColumnField[] = [];\r\n @Input() dataSource = [];\r\n @Input() editSettings;\r\n @Input() columnTemplate: TemplateRef<any>;\r\n @Input() pageSettings;\r\n @Input() allowPaging = true;\r\n @Input() clipMode = 'EllipsisWithTooltip';\r\n @Input() checkBoxWidth = 32; // col 数量过少的时候,check宽度会拉伸,这时候设置null\r\n @Input() childGrid;\r\n\r\n /**\r\n\t * Sample: [\r\n\t\t\t{\r\n\t\t\t\ttext: \"Preview\",\r\n\t\t\t\ttarget: \".e-content\",\r\n\t\t\t\tid: \"preview-icon\",\r\n\t\t\t\ticonCss: \"preview\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttext: \"Download\",\r\n\t\t\t\ttarget: \".e-content\",\r\n\t\t\t\tid: \"download-icon\",\r\n\t\t\t\ticonCss: \"download\",\r\n\t\t\t}\r\n\t\t]\r\n\t\t用于定义row中 点击事件\r\n\t */\r\n @Input() contextMenuItems: IActionMenuItem[] = [];\r\n // @Input() selectionSettings = { checkboxOnly: true, type: \"Multiple\" };\r\n @Input() selectionSettings = {\r\n type: 'Multiple',\r\n // persistSelection: true,\r\n checkboxOnly: true,\r\n };\r\n @Input() alwaysShowCheckbox: boolean = false;\r\n @Input() defaultRecord: any;\r\n @Input() disableSystemRow: boolean = false; // 禁用IsSytem = true的整行\r\n\r\n @Output() recordDoubleClick = new EventEmitter();\r\n @Output() actionComplete = new EventEmitter();\r\n @Output() rowSelected = new EventEmitter();\r\n @Output() rowDeselected = new EventEmitter();\r\n @Output() onContextMenu = new EventEmitter();\r\n @Output() actionHandler = new EventEmitter();\r\n @Output() queryCellInfo = new EventEmitter();\r\n @Output() recordClick = new EventEmitter();\r\n @Output() actionBegin = new EventEmitter();\r\n @Output() rowDataBound = new EventEmitter();\r\n @Output() dataBound = new EventEmitter();\r\n @Output() exportQueryCellInfo = new EventEmitter();\r\n @Output() rowSelecting = new EventEmitter();\r\n\r\n selectId = [];\r\n startPaging = false;\r\n indexList = [];\r\n className = 'grid-loading';\r\n\r\n public translation;\r\n\r\n constructor(private ref: ChangeDetectorRef) {\r\n this.translation = JSON.parse(localStorage.getItem('translation'));\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.hiddenLoaded) this.className = '';\r\n this.ref && this.ref.markForCheck();\r\n }\r\n\r\n trackByFn(index, item) {\r\n return index; // or a unique identifier in your object\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.dataSource && changes.dataSource.currentValue) {\r\n if (\r\n this.allowPaging &&\r\n changes.dataSource.currentValue.length &&\r\n !this.pageSettings\r\n ) {\r\n this.pageSettings =\r\n changes.dataSource.currentValue.length > 9\r\n ? {\r\n pageSizes: ['All', '25', '50', '100'],\r\n pageSize: 50,\r\n }\r\n : null;\r\n }\r\n }\r\n }\r\n\r\n _load() {\r\n if (!this.authorized) {\r\n (this.grid.localeObj as any).localeStrings.EmptyRecord =\r\n this.translation.YOU_DO_NOT_HAVE_THE_DATASET_PERMISSION ||\r\n \"You don't have the dataset permission to view the record.\";\r\n }\r\n }\r\n\r\n _dataBound(args: any) {\r\n // 整个组件加载完成时的回调函数\r\n var pagerContainer = document.querySelector('.e-pagercontainer');\r\n if (pagerContainer) {\r\n var linkElements = pagerContainer.querySelectorAll('.e-link');\r\n linkElements.forEach(function (element) {\r\n element.removeAttribute('href'); // SMP2-10310 删除分页器的href属性\r\n });\r\n }\r\n if (this.selectedDiffKey) {\r\n setTimeout(() => {\r\n this.chooseRecords();\r\n });\r\n }\r\n this.dataBound.emit(args);\r\n }\r\n\r\n _exportQueryCellInfo(args) {\r\n this.exportQueryCellInfo.emit(args);\r\n }\r\n\r\n _recordDoubleClick($event) {\r\n this.recordDoubleClick.emit($event);\r\n }\r\n /**\r\n\t * [selectionSettings]=\"{ checkboxOnly: true }\"\r\n\t [showCheckBox]=\"true\"\r\n\t 控件使用时,必须配置上面两个属性,否则,全选会失效\r\n\t */\r\n _rowSelected($event) {\r\n if (this.selectedDiffKey) {\r\n if ($event.isHeaderCheckboxClicked && Array.isArray($event.data)) {\r\n if ($event.data && $event.data.length) {\r\n $event.data.forEach((item) => {\r\n item.isSelected = true;\r\n this.selectId.push(item);\r\n });\r\n this.dataSource.forEach((data) => {\r\n $event.data.forEach((_data) => {\r\n if (_data[this.selectedDiffKey] === data[this.selectedDiffKey]) {\r\n data.isSelected = true;\r\n }\r\n });\r\n });\r\n }\r\n } else {\r\n $event.data.isSelected = true;\r\n this.selectId.push($event.data);\r\n this.dataSource.forEach((data) => {\r\n if (\r\n data[this.selectedDiffKey] === $event.data[this.selectedDiffKey]\r\n ) {\r\n data.isSelected = true;\r\n }\r\n });\r\n }\r\n this.ref && this.ref.markForCheck();\r\n }\r\n this.rowSelected.emit($event);\r\n }\r\n\r\n _rowDeselected($event) {\r\n if (this.selectedDiffKey) {\r\n if (this.startPaging) {\r\n return;\r\n }\r\n if ($event.isHeaderCheckboxClicked && Array.isArray($event.data)) {\r\n $event.data.forEach((item) => {\r\n item.isSelected = false;\r\n });\r\n this.selectId = [];\r\n this.dataSource.forEach((data) => {\r\n $event.data.forEach((_data) => {\r\n if (_data[this.selectedDiffKey] === data[this.selectedDiffKey]) {\r\n data.isSelected = false;\r\n }\r\n });\r\n });\r\n } else {\r\n $event.data.isSelected = false;\r\n this.selectId = this.selectId.filter(\r\n (item) =>\r\n item[this.selectedDiffKey] !== $event.data[this.selectedDiffKey]\r\n );\r\n this.dataSource.forEach((data) => {\r\n if (\r\n data[this.selectedDiffKey] === $event.data[this.selectedDiffKey]\r\n ) {\r\n data.isSelected = false;\r\n }\r\n });\r\n }\r\n this.ref && this.ref.markForCheck();\r\n }\r\n this.rowDeselected.emit($event);\r\n }\r\n\r\n _onContextMenu(args) {\r\n this.onContextMenu.emit(args);\r\n }\r\n\r\n _actionBegin(args) {\r\n if (\r\n this.selectedDiffKey &&\r\n (args.requestType === 'paging' ||\r\n args.requestType === 'searching' ||\r\n args.requestType === 'filtering' ||\r\n args.requestType === 'sorting')\r\n ) {\r\n this.startPaging = true;\r\n }\r\n this.actionBegin.emit(args);\r\n }\r\n\r\n search(keywords) {\r\n this.grid.search(keywords);\r\n }\r\n selectRows(indexList: number[]) {\r\n this.grid.selectRows(indexList);\r\n }\r\n selectRow(index) {\r\n this.grid.selectRow(index);\r\n }\r\n getCurrentViewRecords() {\r\n return this.grid.getCurrentViewRecords();\r\n }\r\n\r\n customiseCell($event) {\r\n this.queryCellInfo.emit($event);\r\n }\r\n\r\n contextMenuOpen(args?: BeforeOpenCloseEventArgs): void {\r\n const data = (args as BeforeOpenCloseEventArgs | any).rowInfo.rowData;\r\n if (!data) {\r\n args.cancel = true;\r\n return;\r\n }\r\n let enableItems = [];\r\n let hideItems = [];\r\n this.grid.contextMenuModule.contextMenu.refresh(); // 每次点击按钮弹窗前需再次初始化状态 否则不更新;\r\n this.contextMenuItems.forEach((item: IActionMenuItem) => {\r\n // 用于处理部分按钮disabled的情况\r\n if (\r\n item.disabled ||\r\n (data.disableItem && data.disableItem.includes(item.iconCss))\r\n ) {\r\n enableItems.push(item.text);\r\n // this.grid.contextMenuModule.contextMenu.enableItems(\r\n // \t[item.text],\r\n // \tfalse\r\n // );\r\n }\r\n // 用于处理部分按钮需要hide的情况\r\n if (\r\n item.isHide ||\r\n (data.hideItem && data.hideItem.includes(item.iconCss))\r\n ) {\r\n hideItems.push(item.text);\r\n // this.grid.contextMenuModule.contextMenu.hideItems(\r\n // \t[item.text],\r\n // \tfalse\r\n // );\r\n }\r\n });\r\n this.grid.contextMenuModule.contextMenu.enableItems(enableItems, false);\r\n this.grid.contextMenuModule.contextMenu.hideItems(hideItems, false);\r\n }\r\n\r\n _actionHandler($event) {\r\n if (\r\n this.selectedDiffKey &&\r\n ($event.requestType === 'paging' ||\r\n $event.requestType === 'searching' ||\r\n $event.requestType === 'filtering' ||\r\n $event.requestType === 'sorting')\r\n ) {\r\n this.indexList = [];\r\n setTimeout(() => {\r\n this.chooseRecords();\r\n this.startPaging = false;\r\n this.ref && this.ref.detectChanges();\r\n this.ref && this.ref.markForCheck();\r\n });\r\n }\r\n this.actionHandler.emit($event);\r\n this.actionComplete.emit($event);\r\n }\r\n\r\n private chooseRecords() {\r\n this.indexList = [];\r\n this.dataSource.forEach((data) => {\r\n this.grid.getCurrentViewRecords().forEach((row: any, i) => {\r\n if (\r\n row &&\r\n data[this.selectedDiffKey] === row[this.selectedDiffKey] &&\r\n data.isSelected\r\n ) {\r\n this.indexList.push(i);\r\n }\r\n });\r\n });\r\n\r\n this.grid.selectRows(this.indexList);\r\n }\r\n\r\n _recordClick($event) {\r\n this.recordClick.emit($event);\r\n }\r\n refresh() {\r\n this.grid.refresh();\r\n }\r\n _rowSelecting(e) {\r\n this.rowSelecting.emit(e);\r\n }\r\n refreshColumns() {\r\n this.grid.refreshColumns();\r\n }\r\n refreshHeader() {\r\n this.grid.refreshHeader();\r\n }\r\n\r\n export(excelExportProperties?) {\r\n this.grid.excelExport(excelExportProperties);\r\n }\r\n\r\n getSelectedRecords() {\r\n return this.grid.getSelectedRecords();\r\n }\r\n\r\n _rowDataBound($event) {\r\n if (this.disableSystemRow && $event.data && $event.data.IsSystem) {\r\n $event.row.classList.add('e-disabled');\r\n }\r\n this.rowDataBound.emit($event);\r\n }\r\n\r\n clearSelection() {\r\n this.grid.clearSelection();\r\n }\r\n\r\n excelExport() {\r\n this.grid.excelExport();\r\n }\r\n\r\n addItem() {\r\n this.grid.addRecord({ ...this.defaultRecord, isNew: true }, 0);\r\n setTimeout(() => {\r\n this.grid.selectRow(0);\r\n this.grid.startEdit();\r\n }, 30);\r\n }\r\n\r\n saveItem() {\r\n this.grid.endEdit();\r\n }\r\n\r\n editItem(index) {\r\n setTimeout(() => {\r\n this.grid.selectRow(Number(index));\r\n this.grid.startEdit();\r\n }, 30);\r\n }\r\n\r\n deleteItem(index) {\r\n this.grid.selectRow(Number(index));\r\n var selectedRecord = this.grid.getSelectedRecords()[0] as any;\r\n this.grid.deleteRecord(selectedRecord as string);\r\n }\r\n\r\n cancelItem(index) {\r\n this.grid.closeEdit();\r\n this.deleteItem(index);\r\n }\r\n\r\n public showLoading() {\r\n this.className = 'grid-loading';\r\n this.ref && this.ref.markForCheck();\r\n this.ref && this.ref.detectChanges();\r\n }\r\n\r\n public hideLoading() {\r\n this.className = '';\r\n this.ref && this.ref.markForCheck();\r\n this.ref && this.ref.detectChanges();\r\n }\r\n}\r\n","import {\r\n\tAfterViewInit,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOutput,\r\n\tViewChild,\r\n} from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"rs-float-box\",\r\n\ttemplateUrl: \"./index.component.html\",\r\n\tstyleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class FloatBoxComponent implements AfterViewInit, OnDestroy {\r\n\t@Input(\"placement\") _placement: \"top\" | \"left\" | \"right\" | \"bottom\";\r\n\t@Input(\"position\") _position: \"start\" | \"center\" | \"end\";\r\n\t@Input(\"trigger\") _trigger: \"hover\" | \"click\" = \"hover\";\r\n\t@Input(\"animation\") _animation: \"yes\" | \"no\" = \"no\";\r\n\t@Input(\"fixed\") _fixed: \"yes\" | \"no\" = \"no\";\r\n\r\n\tget placement() {\r\n\t\tif ([\"top\", \"left\", \"right\", \"bottom\"].includes(this._placement)) {\r\n\t\t\treturn this._placement;\r\n\t\t}\r\n\t\treturn \"bottom\";\r\n\t}\r\n\r\n\tget position() {\r\n\t\tif ([\"start\", \"center\", \"end\"].includes(this._position)) {\r\n\t\t\treturn this._position;\r\n\t\t}\r\n\t\treturn \"center\";\r\n\t}\r\n\r\n\tget trigger() {\r\n\t\tif (this._trigger === \"click\") {\r\n\t\t\treturn \"click\";\r\n\t\t}\r\n\t\treturn \"hover\";\r\n\t}\r\n\r\n\tget animation() {\r\n\t\tif (this._animation === \"yes\") {\r\n\t\t\treturn \"yes\";\r\n\t\t}\r\n\t\treturn \"no\";\r\n\t}\r\n\r\n\tget fixed() {\r\n\t\tif (this._fixed === \"yes\") {\r\n\t\t\treturn \"yes\";\r\n\t\t}\r\n\t\treturn \"no\";\r\n\t}\r\n\r\n\t@Output(\"openChange\") openChange = new EventEmitter<boolean>();\r\n\r\n\t@ViewChild(\"element\", { static: false })\r\n\trootElement: ElementRef<HTMLDivElement>;\r\n\t@ViewChild(\"content\", { static: false })\r\n\tcontentElement: ElementRef<HTMLDivElement>;\r\n\r\n\tconstructor(private ref: ChangeDetectorRef) {}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.fixedContainerEl = this.getFixedContainer();\r\n\t\tif (this.fixed === \"yes\") {\r\n\t\t\tthis.fixedContainerEl.append(this.contentElement.nativeElement);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.contentElement.nativeElement.remove();\r\n\t}\r\n\r\n\tFIXED_CONTAINER_ID = \"kt-float-box-fixed-container\";\r\n\tfixedContainerEl: HTMLElement;\r\n\tgetFixedContainer() {\r\n\t\tlet containerElement = document.getElementById(this.FIXED_CONTAINER_ID);\r\n\t\tif (!containerElement) {\r\n\t\t\tcontainerElement = document.createElement(\"div\");\r\n\t\t\tcontainerElement.setAttribute(\"id\", this.FIXED_CONTAINER_ID);\r\n\t\t\tdocument.body.append(containerElement);\r\n\t\t}\r\n\t\treturn containerElement;\r\n\t}\r\n\r\n\tsetFixedContentPosition() {\r\n\t\tif (this.fixed === \"no\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst {\r\n\t\t\ttop: y,\r\n\t\t\tleft: x,\r\n\t\t\twidth,\r\n\t\t\theight,\r\n\t\t} = this.rootElement.nativeElement.getBoundingClientRect();\r\n\r\n\t\tlet top = \"0\";\r\n\t\tlet left = \"0\";\r\n\t\tlet translateX = \"0\";\r\n\t\tlet translateY = \"0\";\r\n\t\tswitch (this.placement + \"_\" + this.position) {\r\n\t\t\tcase \"top_start\":\r\n\t\t\t\ttop = y + \"px\";\r\n\t\t\t\tleft = x - 8 + \"px\";\r\n\t\t\t\ttranslateY = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"top_center\":\r\n\t\t\t\ttop = y + \"px\";\r\n\t\t\t\tleft = x + width / 2 + \"px\";\r\n\t\t\t\ttranslateX = \"-50%\";\r\n\t\t\t\ttranslateY = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"top_end\":\r\n\t\t\t\ttop = y + \"px\";\r\n\t\t\t\tleft = x + width + 8 + \"px\";\r\n\t\t\t\ttranslateX = \"-100%\";\r\n\t\t\t\ttranslateY = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"left_start\":\r\n\t\t\t\ttop = y - 8 + \"px\";\r\n\t\t\t\tleft = x + \"px\";\r\n\t\t\t\ttranslateX = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"left_center\":\r\n\t\t\t\ttop = y + height / 2 + \"px\";\r\n\t\t\t\tleft = x + \"px\";\r\n\t\t\t\ttranslateX = \"-100%\";\r\n\t\t\t\ttranslateY = \"-50%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"left_end\":\r\n\t\t\t\ttop = y + height + 8 + \"px\";\r\n\t\t\t\tleft = x + \"px\";\r\n\t\t\t\ttranslateX = \"-100%\";\r\n\t\t\t\ttranslateY = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"right_start\":\r\n\t\t\t\ttop = y - 8 + \"px\";\r\n\t\t\t\tleft = x + width + \"px\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"right_center\":\r\n\t\t\t\ttop = y + height / 2 + \"px\";\r\n\t\t\t\tleft = x + width + \"px\";\r\n\t\t\t\ttranslateY = \"-50%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"right_end\":\r\n\t\t\t\ttop = y + height + 8 + \"px\";\r\n\t\t\t\tleft = x + width + \"px\";\r\n\t\t\t\ttranslateY = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"bottom_start\":\r\n\t\t\t\ttop = y + height + \"px\";\r\n\t\t\t\tleft = x - 8 + \"px\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"bottom_center\":\r\n\t\t\t\ttop = y + height + \"px\";\r\n\t\t\t\tleft = x + width / 2 + \"px\";\r\n\t\t\t\ttranslateX = \"-50%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"bottom_end\":\r\n\t\t\t\ttop = y + height + \"px\";\r\n\t\t\t\tleft = x + width + 8 + \"px\";\r\n\t\t\t\ttranslateX = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.contentElement.nativeElement.style.top = top;\r\n\t\tthis.contentElement.nativeElement.style.left = left;\r\n\t\tthis.contentElement.nativeElement.style.transform = `translate(${translateX}, ${translateY})`;\r\n\t}\r\n\r\n\topened: \"yes\" | \"no\" = \"no\";\r\n\tonClickContainer() {\r\n\t\tif (this.trigger !== \"click\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.opened = \"yes\";\r\n\t\tthis.openChange.emit(true);\r\n\t\tthis.setFixedContentPosition();\r\n\t\twindow.addEventListener(\"click\", this.onClickOutside);\r\n\t}\r\n\r\n\tonClickOutside = (event: MouseEvent) => {\r\n\t\tif (\r\n\t\t\t!this.rootElement.nativeElement.contains(event.target as Element) &&\r\n\t\t\t!this.fixedContainerEl.contains(event.target as Element)\r\n\t\t) {\r\n\t\t\tthis.opened = \"no\";\r\n\t\t\tthis.openChange.emit(false);\r\n\t\t\twindow.removeEventListener(\"click\", this.onClickOutside);\r\n\t\t\tthis.ref.markForCheck();\r\n\t\t}\r\n\t};\r\n\r\n\tonMouseEnter() {\r\n\t\tif (this.fixed === \"no\" || this.trigger !== \"hover\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.opened = \"yes\";\r\n\t\tthis.openChange.emit(true);\r\n\t\tthis.setFixedContentPosition();\r\n\t\twindow.addEventListener(\"mousemove\", this.onMoveOutside);\r\n\t}\r\n\r\n\tonMoveOutside = (event: MouseEvent) => {\r\n\t\tif (\r\n\t\t\t!this.rootElement.nativeElement.contains(event.target as Element) &&\r\n\t\t\t!this.contentElement.nativeElement.contains(event.target as Element)\r\n\t\t) {\r\n\t\t\tthis.opened = \"no\";\r\n\t\t\tthis.openChange.emit(false);\r\n\t\t\twindow.removeEventListener(\"click\", this.onMoveOutside);\r\n\t\t\tthis.ref.markForCheck();\r\n\t\t}\r\n\t};\r\n\r\n\tclose() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.opened = \"no\";\r\n\t\t\tthis.openChange.emit(false);\r\n\t\t}, 0);\r\n\t}\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { CommonGridComponent } from '../../common-grid/index.component';\r\nimport { debounce } from 'lodash';\r\n\r\n@Component({\r\n selector: 'rs-page-list',\r\n templateUrl: './index.component.html',\r\n styleUrls: ['./index.component.scss'],\r\n})\r\nexport class RsPageListComponent implements OnInit {\r\n @ContentChild(CommonGridComponent, { static: true }) gridContent;\r\n @Input() pageTitle;\r\n @Input() customPageTitle = false;\r\n @Input() isInner = false;\r\n\r\n private debouncedInput: Function;\r\n\r\n ngOnInit() {\r\n this.debouncedInput = debounce(() => {\r\n this.onSeach()\r\n }, 300);\r\n }\r\n\r\n\r\n\r\n searchValue;\r\n onSeach() {\r\n this.gridContent.grid.search(this.searchValue);\r\n }\r\n\r\n onInput(){\r\n this.debouncedInput()\r\n }\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-page-tab\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class RsPageTabComponent implements OnInit {\r\n @Input() pageTitle;\r\n @Input() customPageTitle = false;\r\n @Input() tabList = [];\r\n @Input() currentTab;\r\n\r\n @Output()\r\n tabChange = new EventEmitter();\r\n\r\n public animation: object = {\r\n\t\tprevious: { effect: \"\", duration: 0, easing: \"\" },\r\n\t\tnext: { effect: \"\", duration: 0, easing: \"\" },\r\n\t};\r\n ngOnInit() {}\r\n\r\n onTabClick(e) {\r\n this.tabChange.emit(this.tabList[e.selectedIndex]);\r\n }\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { CommonGridComponent } from '../../common-grid/index.component';\r\nimport { debounce } from 'lodash';\r\n\r\n@Component({\r\n selector: 'rs-grid-box',\r\n templateUrl: './index.component.html',\r\n styleUrls: ['./index.component.scss'],\r\n})\r\nexport class GridBoxComponent implements OnInit {\r\n @ContentChild(TemplateRef, { static: true }) gridContent;\r\n @Input() pageTitle;\r\n @Input() customPageTitle = false;\r\n @Input() isInner = false;\r\n\r\n private debouncedInput: Function;\r\n\r\n ngOnInit() {\r\n this.debouncedInput = debounce(() => {\r\n this.onSeach()\r\n }, 300);\r\n }\r\n\r\n\r\n\r\n searchValue;\r\n onSeach() {\r\n this.gridContent.grid.search(this.searchValue);\r\n }\r\n\r\n onInput(){\r\n this.debouncedInput()\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class CommonFunctionService {\r\n constructor() {}\r\n\r\n testMethod() {\r\n return \"test1111\";\r\n }\r\n\r\n setMiddleEllipsis(text, maxWidth = 150, fontSize = 13) {\r\n\t\tconst canvas = document.createElement(\"canvas\");\r\n\t\tconst context = canvas.getContext(\"2d\");\r\n\t\tcontext.font = `${fontSize}px Arial`;\r\n\r\n\t\tlet width = context.measureText(text).width;\r\n\r\n\t\tif (width <= maxWidth) {\r\n\t\t\treturn text;\r\n\t\t}\r\n\t\tmaxWidth = Math.floor(maxWidth - context.measureText(\"...\").width);\r\n\t\tlet firstPart = \"\";\r\n\t\tlet secondPart = \"\";\r\n\t\tlet half = Math.floor(maxWidth / 2);\r\n\t\tfor (let i = 0; i < text.length; i++) {\r\n\t\t\tfirstPart += text[i];\r\n\t\t\twidth = context.measureText(firstPart).width;\r\n\t\t\tif (width > half) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let i = text.length - 1; i >= 0; i--) {\r\n\t\t\tsecondPart = text[i] + secondPart;\r\n\t\t\twidth = context.measureText(secondPart).width;\r\n\t\t\tif (width > half) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn firstPart + \"...\" + secondPart;\r\n\t}\r\n\r\n getPureUrl(url: string) {\r\n\t\tif (url) {\r\n\t\t\t// 如果params的value 携带查询参数, 则截取前面部分\r\n\t\t\turl = decodeURIComponent(url);\r\n\t\t\tif (url.includes(\"?\")) {\r\n\t\t\t\turl = url.split(\"?\")[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn url;\r\n\t}\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport {\r\n RouteReuseStrategy,\r\n ActivatedRouteSnapshot,\r\n DetachedRouteHandle,\r\n} from \"@angular/router\";\r\n\r\nconst storedRoutes: { [key: string]: DetachedRouteHandle } = {};\r\nlet toBeDeleteUrl: string;\r\nlet excludeRoutes: string[] = []; // 不需要缓存的url\r\n\r\nexport class KeepAliveService implements RouteReuseStrategy {\r\n \r\n setExcludeRoutes(routes: string[]) {\r\n excludeRoutes = routes; // 设置不缓存的路由\r\n }\r\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n if (toBeDeleteUrl === this.getRoutePath(route)) {\r\n // 对于新开的又即将关闭的tab,不缓存\r\n toBeDeleteUrl = \"\";\r\n return false;\r\n }\r\n return !excludeRoutes.includes(route.routeConfig.path)\r\n }\r\n\r\n store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {\r\n // console.log(\"store\", this.getRoutePath(route));\r\n // console.log(\"store\", storedRoutes);\r\n\r\n storedRoutes[this.getRoutePath(route)] = handle;\r\n }\r\n\r\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n return !!storedRoutes[this.getRoutePath(route)];\r\n }\r\n\r\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {\r\n return storedRoutes[this.getRoutePath(route)];\r\n }\r\n\r\n shouldReuseRoute(\r\n future: ActivatedRouteSnapshot,\r\n curr: ActivatedRouteSnapshot\r\n ): boolean {\r\n // console.log(\"shouldReuseRoute\");\r\n return this.getRoutePath(future) === this.getRoutePath(curr); // 复用相同的路由\r\n }\r\n\r\n getRoutePath(route): string {\r\n if (route.routeConfig) {\r\n // const pathParams = JSON.stringify(route.params);\r\n const queryParams = new URLSearchParams(route.queryParams).toString();\r\n return route._routerState.url + (queryParams ? \"?\" + queryParams : \"\");\r\n }\r\n return \"\";\r\n }\r\n\r\n clearCache(path: string) {\r\n toBeDeleteUrl = path;\r\n delete storedRoutes[path]; // 清除指定路径的缓存\r\n }\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport {\r\n ActivatedRoute,\r\n NavigationEnd,\r\n Router,\r\n RouterOutlet,\r\n} from \"@angular/router\";\r\nimport { CommonFunctionService } from \"../../service/common-function.service\";\r\nimport { KeepAliveService } from \"../../service/keep-alive.service\";\r\nimport { filter, map, mergeMap } from \"rxjs/operators\";\r\n\r\n@Component({\r\n selector: \"rs-multi-tab\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class MultiTabComponent implements OnInit {\r\n constructor(\r\n public router: Router,\r\n public cf: CommonFunctionService,\r\n public activatedRoute: ActivatedRoute,\r\n public keepAlive: KeepAliveService\r\n ) {}\r\n @Input() singleReuseUrls: string[] = []; //只能单个缓存的url\r\n\r\n TAB_WIDTH = 164;\r\n GAP_NORMAL = 54;\r\n GAP_SMALL = 30;\r\n textGap; // 文本与边框的总间距\r\n foo: RouterOutlet;\r\n comRef: any;\r\n tabList = [];\r\n selectedTab: number = 0;\r\n maxTabs: number = 10;\r\n screenWidth: number = window.innerWidth; // 初始化屏幕宽度\r\n @HostListener(\"window:resize\", [\"$event\"])\r\n onResize(event) {\r\n this.screenWidth = window.innerWidth; // 更新屏幕宽度\r\n this.setEllipsisTitle();\r\n }\r\n\r\n ngOnInit() {\r\n this.initTab();\r\n this.router.events\r\n .pipe(filter((event) => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n const navigation = this.router.getCurrentNavigation(); // 获取当前导航\r\n if (navigation) {\r\n const state = navigation.extras.state; // 获取传递的 state\r\n const currentRoute = this.router.routerState.root.firstChild;\r\n if (currentRoute) {\r\n this.setTab(\r\n this.router.url,\r\n currentRoute.snapshot.routeConfig.path,\r\n state && state.title\r\n );\r\n }\r\n }\r\n });\r\n this.setEllipsisTitle();\r\n }\r\n\r\n setEllipsisTitle(title?) {\r\n this.textGap = this.GAP_NORMAL;\r\n if (this.screenWidth <= 1100) {\r\n this.textGap = this.GAP_SMALL;\r\n }\r\n let { allWidth, leftWidth, rightWidth } = this.calcTabWidth();\r\n let width = Math.floor(\r\n (allWidth - rightWidth) / (this.tabList && this.tabList.length)\r\n );\r\n\r\n if (title) {\r\n return this.cf.setMiddleEllipsis(\r\n title,\r\n width > this.TAB_WIDTH\r\n ? this.TAB_WIDTH - this.textGap\r\n : width - this.textGap,\r\n 12\r\n );\r\n } else {\r\n this.tabList.forEach((ele, idx) => {\r\n ele.displayTitle = this.cf.setMiddleEllipsis(\r\n ele.title,\r\n width > this.TAB_WIDTH\r\n ? this.TAB_WIDTH - this.textGap\r\n : width - this.textGap,\r\n 12\r\n );\r\n });\r\n }\r\n }\r\n\r\n calcTabWidth() {\r\n const wrap = document.querySelector(\".rs-multi-tab\");\r\n const ulElement = document.querySelector(\".rs-multi-tab > ul\");\r\n const refreshTabDiv = document.querySelector(\".rs-multi-tab .refresh-tab\");\r\n let allWidth;\r\n let leftWidth;\r\n let rightWidth;\r\n if (wrap && ulElement && refreshTabDiv) {\r\n // 获取元素的位置信息\r\n const wrapRect = wrap.getBoundingClientRect();\r\n const ulRect = ulElement.getBoundingClientRect();\r\n const refreshTabRect = refreshTabDiv.getBoundingClientRect();\r\n allWidth = wrapRect.width;\r\n leftWidth = ulRect.width;\r\n rightWidth = refreshTabRect.width;\r\n }\r\n return {\r\n allWidth,\r\n leftWidth,\r\n rightWidth,\r\n };\r\n }\r\n initTab() {\r\n\t\tlet TabCache = JSON.parse(sessionStorage.getItem(\"TabCache\"));\r\n this.tabList = TabCache || [];\r\n }\r\n\r\n closeTab(tab, idx) {\r\n this.tabList = this.tabList.filter((ele) => ele.url !== tab.url);\r\n this.clearCache(tab.url);\r\n if (this.selectedTab === idx) {\r\n const targetIdx = Math.max(0, idx - 1);\r\n this.changeTab(this.tabList[targetIdx], targetIdx);\r\n }\r\n this.setEllipsisTitle();\r\n sessionStorage.setItem(\"TabCache\", JSON.stringify(this.tabList));\r\n }\r\n\r\n changeTab(tab, idx) {\r\n this.router.navigateByUrl(tab.url);\r\n this.selectedTab = idx;\r\n }\r\n\r\n addTab(url, title) {\r\n if (this.tabList.length >= this.maxTabs) {\r\n this.closeTab(this.tabList[0], 0); // 删除第一个\r\n }\r\n this.tabList.push({\r\n url: url,\r\n title: title || \"default\",\r\n displayTitle: this.setEllipsisTitle(title || \"default\"),\r\n });\r\n this.selectedTab = this.tabList.length - 1;\r\n this.setEllipsisTitle();\r\n sessionStorage.setItem(\"TabCache\", JSON.stringify(this.tabList));\r\n }\r\n\r\n public setTab(url, pureUrl, title) {\r\n const isExistIdx = this.tabList.findIndex((ele) => ele.url === url);\r\n if (isExistIdx === -1) {\r\n const singleIdx = this.singleReuseUrls.findIndex(\r\n (ele) => ele === pureUrl\r\n );\r\n if (singleIdx !== -1) {\r\n this.tabList = this.tabList.filter((ele) =>\r\n !ele.url.includes(this.singleReuseUrls[singleIdx])\r\n );\r\n this.keepAlive.clearCache(url);\r\n }\r\n this.addTab(url, title);\r\n } else {\r\n this.selectedTab = isExistIdx;\r\n }\r\n }\r\n\r\n refreshTab() {\r\n this.keepAlive.clearCache(this.tabList[this.selectedTab].url);\r\n const currentUrl = this.router.url; // 获取当前 URL\r\n this.router.navigateByUrl(\"/\", { skipLocationChange: true }).then(() => {\r\n this.router.navigateByUrl(currentUrl); // 重新导航到当前 URL\r\n });\r\n }\r\n\r\n clearCache(url) {\r\n this.keepAlive.clearCache(url); // 调用自定义策略的清除缓存方法\r\n }\r\n}\r\n","// 组件类\r\nimport { Component, ContentChild, Input, OnInit } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-main-container\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class MainContainerComponent implements OnInit {\r\n @Input() isCollapsed: boolean = false; // 接收输入属性\r\n @Input() singleReuseUrls: string[] = []; //只能单个缓存的url\r\n ngOnInit() {}\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-header\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class RSHeaderComponent implements OnInit {\r\n @Output()\r\n toggleMenu = new EventEmitter();\r\n @Input() lastLoginTime = new Date();\r\n public translation;\r\n\r\n ngOnInit() {\r\n this.translation = JSON.parse(localStorage.getItem(\"translation\"));\r\n }\r\n\r\n isCollapsed = false;\r\n onToggleMenu() {\r\n this.isCollapsed = !this.isCollapsed;\r\n this.toggleMenu.emit(this.isCollapsed);\r\n }\r\n\r\n langOptions = [\r\n {\r\n value: 1,\r\n text: \"English\",\r\n },\r\n {\r\n value: 2,\r\n text: \"繁體中文\",\r\n },\r\n {\r\n value: 3,\r\n text: \"简体中文\",\r\n },\r\n ];\r\n currentLang = this.langOptions[0];\r\n selectLanguage(event) {\r\n this.currentLang = this.langOptions.find(\r\n (item) => item.text === event.item.text\r\n );\r\n }\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n OnInit,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'rs-footer',\r\n templateUrl: './index.component.html',\r\n styleUrls: ['./index.component.scss'],\r\n})\r\nexport class RSFooterComponent implements OnInit {\r\n today = new Date();\r\n ngOnInit() {\r\n }\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: \"rs-aside\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class RSAsideComponent implements OnInit {\r\n constructor(public router: Router) {}\r\n @Input() isCollapsed: boolean = false; // 接收输入属性\r\n @Input() navList = [];\r\n ngOnInit() {}\r\n currentNav = null; \r\n onNavClick(item) {\r\n this.currentNav = item.title;\r\n this.router.navigate([item.url],{ state: { title: item.title }});\r\n }\r\n}\r\n","// 组件类\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-tag-input\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class TagInputComponent implements OnInit {\r\n @Input() value = [];\r\n @Input() fields;\r\n @Input() disabled = false;\r\n @Input() error = false;\r\n @Input() inputMinlength = 3;\r\n @Input() inputMaxlength = 30;\r\n\r\n @Output()\r\n valueChange = new EventEmitter();\r\n\r\n ngOnInit() {\r\n \r\n }\r\n onRemoveTag(tag) {\r\n const tagsList = this.value.filter((i) => i !== tag);\r\n this.valueChange.emit(tagsList);\r\n }\r\n\r\n onAddTag(event) {\r\n const inputValue = event.target.value;\r\n if (inputValue && this.verifyInputValue(inputValue)) {\r\n this.valueChange.emit([...this.value, inputValue]);\r\n event.target.value = \"\";\r\n }\r\n }\r\n inputError = false\r\n verifyInputValue(inputValue) {\r\n this.inputError = false\r\n const inputValueLength = inputValue.length;\r\n if (\r\n this.value.includes(inputValue) ||\r\n inputValueLength > this.inputMaxlength ||\r\n inputValueLength < this.inputMinlength\r\n ) {\r\n this.inputError = true\r\n return false;\r\n }\r\n return true;\r\n }\r\n onInput(){\r\n this.inputError = false\r\n }\r\n}\r\n","// 组件类\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-radio-group\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class RadioGroupComponent implements OnInit {\r\n @Input() value;\r\n @Input() dataSource = [];\r\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\r\n @Input() fields = { text: 'text', value: 'value', disabled: 'disabled' }\r\n @Input() disabled = false;\r\n @Input() error = false;\r\n\r\n @Output()\r\n valueChange = new EventEmitter();\r\n\r\n ngOnInit() {\r\n }\r\n onChange(event){\r\n const value = event.value\r\n this.valueChange.emit(value);\r\n }\r\n}\r\n","// 组件类\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-checkbox-group\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class CheckboxGroupComponent implements OnInit {\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n ) {}\r\n @Input() name; // 分组凭证\r\n @Input() value = [];\r\n @Input() dataSource = [];\r\n @Input() orientation: \"horizontal\" | \"vertical\" = \"horizontal\";\r\n @Input() fields = { text: \"text\", value: \"value\", disabled: \"disabled\" };\r\n @Input() disabled = false;\r\n @Input() error = false;\r\n\r\n @Output()\r\n valueChange = new EventEmitter();\r\n\r\n ngOnInit() {\r\n console.log('first',this.value)\r\n }\r\n onChange(event, option) {\r\n const originalValue = this.value;\r\n let result;\r\n if (event.checked) {\r\n result = [...originalValue, option[this.fields.value]];\r\n } else {\r\n result = originalValue.filter((val) => val !== option[this.fields.value]);\r\n }\r\n this.valueChange.emit(result);\r\n this.ref.markForCheck();\r\n }\r\n}\r\n","// 组件类\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-switch-input\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class SwitchInputComponent implements OnInit {\r\n @Input() value;\r\n @Input() text;\r\n @Input() orientation: 'front' | 'behind' = 'front';\r\n @Input() disabled = false;\r\n @Input() error = false;\r\n\r\n @Output()\r\n valueChange = new EventEmitter();\r\n\r\n ngOnInit() {}\r\n onChange(event) {\r\n const value = event.checked;\r\n this.valueChange.emit(value);\r\n }\r\n onClick(){\r\n const value = !this.value;\r\n this.valueChange.emit(value);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatIconRegistry } from \"@angular/material/icon\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\n@Injectable()\r\nexport class IconLoaderService {\r\n constructor(\r\n private registry: MatIconRegistry,\r\n private domSanitizer: DomSanitizer\r\n ) {}\r\n\r\n registerIcons(list) {\r\n list.forEach(({ name, path }) => {\r\n this.registry.addSvgIcon(\r\n name,\r\n this.domSanitizer.bypassSecurityTrustResourceUrl(path)\r\n );\r\n });\r\n }\r\n}\r\n","import { AfterViewInit, Component, Inject } from \"@angular/core\";\r\nimport { MAT_SNACK_BAR_DATA, MatSnackBar } from \"@angular/material/snack-bar\";\r\n\r\nexport type LoadingProgress = {\r\n\tdone: boolean;\r\n\tpercent?: number;\r\n};\r\n\r\nexport interface NotificationConfig {\r\n\tmessage: string;\r\n\tsnackBar: MatSnackBar;\r\n\tloadingCallback: (callback: (progress: LoadingProgress) => void) => void;\r\n\tstatus?: \"Success\" | \"Warning\" | \"Error\";\r\n\ttype?: \"Text\" | \"Detail\" | \"Loading\" | \"Progress\";\r\n\ttitle?: string;\r\n};\r\n\r\n@Component({\r\n\tselector: \"kt-new-action-notification\",\r\n\ttemplateUrl: \"./new-action-notification.component.html\",\r\n\tstyleUrls: [\"./new-action-notification.component.scss\"],\r\n})\r\nexport class NewActionNotificationComponent implements AfterViewInit {\r\n\tcollapsed = false;\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_SNACK_BAR_DATA)\r\n\t\tpublic data: NotificationConfig\r\n\t) {}\r\n\r\n\tngAfterViewInit() {\r\n\t\tif (this.config.type === \"Loading\") {\r\n\t\t\tthis.config.loadingCallback((progress) => {\r\n\t\t\t\tif (progress.done) {\r\n\t\t\t\t\treturn this.config.snackBar.dismiss();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcloseNotification() {\r\n\t\tif (this.config.type === \"Loading\") {\r\n\t\t\tthis.collapsed = true;\r\n\t\t} else {\r\n\t\t\tthis.config.snackBar.dismiss();\r\n\t\t}\r\n\t}\r\n\r\n\texpandNotification() {\r\n\t\tif (this.config.type === \"Loading\" && this.collapsed) {\r\n\t\t\tthis.collapsed = false;\r\n\t\t}\r\n\t}\r\n\r\n\tget config() {\r\n\t\treturn {\r\n\t\t\tstatus: \"Success\",\r\n\t\t\ttype: \"Text\",\r\n\t\t\t...this.data,\r\n\t\t};\r\n\t}\r\n}\r\n","import { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\r\n\r\nexport interface DialogConfig {\r\n title?: string;\r\n description?: string;\r\n saveBtnLabel?: string;\r\n cancelBtnLabel?: string;\r\n showErrorIcon?: boolean;\r\n hideCloseIcon?: boolean;\r\n size?: string;\r\n hideSaveBtn?: boolean;\r\n hideCloseBtn?: boolean;\r\n}\r\n@Component({\r\n selector: \"kt-common-delete-dialog\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class CommonDeleteComponent implements OnInit {\r\n translation;\r\n title = \"\";\r\n saveBtnLabel = \"\";\r\n cancelBtnLabel = \"\";\r\n description = \"\";\r\n size = \"small\";\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA)\r\n public data: DialogConfig,\r\n public dialogRef: MatDialogRef<CommonDeleteComponent>\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.translation = JSON.parse(localStorage.getItem(\"translation\"));\r\n this.title =\r\n this.data.title || this.translation[\"DELETE_RECORD\"] || \".DELETE_RECORD\";\r\n this.saveBtnLabel =\r\n this.data.saveBtnLabel || this.translation.DELETE || \".DELETE\";\r\n this.cancelBtnLabel =\r\n this.data.cancelBtnLabel || this.translation.CANCEL || \".CANCEL\";\r\n this.description =\r\n this.data.description ||\r\n this.translation.IF_YOU_DELETE_THIS_RECORD_WARNING ||\r\n \".If you delete this record, you won't be able to recover it. Do you want to delete it?\";\r\n this.size = this.data.size || \"small\";\r\n }\r\n\r\n onSave(e) {\r\n this.dialogRef.close(e);\r\n }\r\n}\r\n","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\n\r\nimport {\r\n NewActionNotificationComponent,\r\n NotificationConfig,\r\n} from \"../dialog/new-action-notification/new-action-notification.component\";\r\n\r\nimport { CommonDeleteComponent } from \"../dialog/common-delete-dialog/index.component\";\r\n\r\nexport enum MessageType {\r\n Create,\r\n Read,\r\n Update,\r\n Delete,\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class DialogService {\r\n /**\r\n * Service constructor\r\n *\r\n * @param snackBar: MatSnackBar\r\n * @param dialog: MatDialog\r\n */\r\n translation = null;\r\n constructor(private snackBar: MatSnackBar, private dialog: MatDialog) {\r\n this.translation = JSON.parse(localStorage.getItem(\"translation\"));\r\n }\r\n\r\n showLoadingNotification(\r\n config: Omit<\r\n NotificationConfig,\r\n \"message\" | \"snackBar\" | \"status\" | \"type\"\r\n > & { message?: string }\r\n ) {\r\n return this.snackBar.openFromComponent(NewActionNotificationComponent, {\r\n data: {\r\n ...config,\r\n message:\r\n config.message ||\r\n this.translation.DOWNLOAD_IS_IN_PROGRESS ||\r\n \".Download is in progress\",\r\n snackBar: this.snackBar,\r\n type: \"Loading\",\r\n },\r\n verticalPosition: \"top\",\r\n horizontalPosition: \"right\",\r\n panelClass: \"new-action-notification\",\r\n });\r\n }\r\n\r\n showNotification(\r\n message: string,\r\n config?: Omit<\r\n NotificationConfig,\r\n \"message\" | \"snackBar\" | \"loadingCallback\" | \"type\"\r\n > & {\r\n duration?: number;\r\n type?: Exclude<NotificationConfig[\"type\"], \"Loading\">;\r\n }\r\n ) {\r\n return this.snackBar.openFromComponent(NewActionNotificationComponent, {\r\n data: {\r\n message,\r\n snackBar: this.snackBar,\r\n ...(config || {}),\r\n },\r\n duration: (config && config.duration) || 3000,\r\n verticalPosition: \"top\",\r\n horizontalPosition: \"right\",\r\n panelClass: \"new-action-notification\",\r\n });\r\n }\r\n // 删除确认弹窗\r\n deleteElement() {\r\n return this.dialog.open(CommonDeleteComponent, {\r\n data: {},\r\n panelClass: \"basic-small-common-dialog\",\r\n });\r\n }\r\n\r\n // 自定义文案通用弹窗的提示框\r\n showCommonDilaog(data?: {\r\n title?: string;\r\n description?: string;\r\n saveBtnLabel?: string;\r\n cancelBtnLabel?: string;\r\n showErrorIcon?: boolean;\r\n size?: string;\r\n hideSaveBtn?: boolean;\r\n }) {\r\n return this.dialog.open(CommonDeleteComponent, {\r\n data,\r\n panelClass: \"basic-small-common-dialog\",\r\n });\r\n }\r\n\r\n // 有改动未保存 的提示框\r\n showUnsavedChanges(data?: {\r\n title?: string;\r\n description?: string;\r\n saveBtnLabel?: string;\r\n cancelBtnLabel?: string;\r\n showErrorIcon?: boolean;\r\n size?: string;\r\n hideSaveBtn?: boolean;\r\n }) {\r\n let defaultData = {\r\n title: this.translation.UNSAVED_CHANGES || \".UNSAVED_CHANGES\",\r\n description:\r\n this.translation\r\n .YOU_HAVE_UNSAVED_CHANGED_ARE_YOU_SURE_YOU_WANT_TO_DISCARD_THEM ||\r\n \".YOU_HAVE_UNSAVED_CHANGED_ARE_YOU_SURE_YOU_WANT_TO_DISCARD_THEM\",\r\n saveBtnLabel: this.translation.DISCARD_CHANGES || \".DISCARD_CHANGES\",\r\n cancelBtnLabel: this.translation.CONTINUE_EDITING || \".CONTINUE_EDITING\",\r\n };\r\n if (data) {\r\n data = Object.assign(defaultData, data);\r\n } else {\r\n data = defaultData;\r\n }\r\n // data.size = \"medium\";\r\n return this.dialog.open(CommonDeleteComponent, {\r\n data,\r\n panelClass: \"basic-small-common-dialog\",\r\n });\r\n }\r\n\r\n // 保存成功提示\r\n public showSucMsg(res) {\r\n this.showMessage(res, MessageType.Create);\r\n }\r\n\r\n // 更新成功提示\r\n public showUpdateMsg(res) {\r\n this.showMessage(res, MessageType.Update);\r\n }\r\n\r\n // 删除成功提示\r\n public showDelMsg(res) {\r\n this.showMessage(res, MessageType.Delete);\r\n }\r\n\r\n // 通用提示\r\n private showMessage(res, type = MessageType.Create) {\r\n let _saveMessage = this.translation.SAVESUCCESS || \".SAVESUCCESS\";\r\n switch (type) {\r\n case MessageType.Update:\r\n _saveMessage = this.translation.UPDATESUCCESS || \".UPDATESUCCESS\";\r\n break;\r\n case MessageType.Delete:\r\n _saveMessage = this.translation.DELETESUCCESS || \".DELETESUCCESS\";\r\n break;\r\n }\r\n if (res.status === \"ERROR\") _saveMessage = res.messages[0].message;\r\n this.showNotification(_saveMessage, {\r\n status: res.status === \"ERROR\" ? \"Error\" : \"Success\",\r\n });\r\n }\r\n}\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tInput,\r\n\tContentChild,\r\n\tOutput,\r\n\tEventEmitter,\r\n} from \"@angular/core\";\r\n\r\nimport { MatDialogRef } from \"@angular/material/dialog\";\r\n\r\n@Component({\r\n\tselector: \"kt-common-dialog\",\r\n\tstyleUrls: [\"./index.component.scss\"],\r\n\ttemplateUrl: \"./index.component.html\",\r\n})\r\nexport class CommonDialogComponent implements OnInit {\r\n\tpublic translation;\r\n\r\n\t// 隐藏元素相关属性\r\n\t@Input() hideHeader = false;\r\n\t@Input() hideCloseIcon = false;\r\n\t@Input() hideCloseBtn = false;\r\n\t@Input() hideSaveBtn = false;\r\n\t@Input() saveBtnLabel = \"\";\r\n\t@Input() cancelBtnLabel = \"\";\r\n\t@Input() showErrorIcon = false;\r\n\r\n\t// 显示相关属性\r\n\t@Input() size = \"\";\r\n\t@Input() title = \"Dialog\";\r\n\t@Input() loading = false;\r\n\t@Output() saveEmit: EventEmitter<Function> = new EventEmitter<Function>();\r\n\t@Output() closeEmit: EventEmitter<Function> = new EventEmitter<Function>();\r\n\tconstructor(public dialogRef: MatDialogRef<CommonDialogComponent>) {}\r\n\r\n\t// 控制底部插槽有内容时隐藏默认按钮\r\n\t@ContentChild(\"footerSlot\", { static: true }) footerContent: any;\r\n\tcustomFooter: boolean = false;\r\n\tngAfterContentInit() {\r\n\t\tthis.customFooter = !!this.footerContent;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.getInfo();\r\n\t}\r\n\r\n\tonClose(res?) {\r\n\t\tthis.dialogRef.close(res);\r\n\t\tthis.closeEmit.emit(res);\r\n\t}\r\n\r\n\tonSave() {\r\n\t\t// 这里把关闭事件emit上去,但是必须使用箭头函数保存this对象\r\n\t\tthis.saveEmit.emit((res) => {\r\n\t\t\tthis.onClose(res);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getInfo() {\r\n\t\tthis.translation = JSON.parse(localStorage.getItem(\"translation\"));\r\n\t\tthis.saveBtnLabel =\r\n\t\t\tthis.saveBtnLabel || this.translation.SAVE || \".SAVE\";\r\n\t\tthis.cancelBtnLabel =\r\n\t\t\tthis.cancelBtnLabel || this.translation.CANCEL || \".CANCEL\";\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { ReactiveFormsModule, FormsModule } from \"@angular/forms\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport {\r\n GridModule,\r\n PageService,\r\n SortService,\r\n FilterService,\r\n ExcelExportService,\r\n EditService,\r\n ResizeService,\r\n ToolbarService,\r\n ColumnChooserService,\r\n AggregateService,\r\n ColumnMenuService,\r\n DetailRowService,\r\n SelectionService,\r\n PagerModule,\r\n GroupService,\r\n GridAllModule,\r\n} from \"@syncfusion/ej2-angular-grids\";\r\nimport {\r\n SwitchModule,\r\n CheckBoxModule,\r\n RadioButtonModule,\r\n ButtonModule,\r\n} from \"@syncfusion/ej2-angular-buttons\";\r\nimport { DiagramModule } from \"@syncfusion/ej2-angular-diagrams\";\r\nimport { TooltipModule, DialogModule } from \"@syncfusion/ej2-angular-popups\";\r\nimport {\r\n DatePickerModule,\r\n DateRangePickerModule,\r\n DateTimePickerModule,\r\n} from \"@syncfusion/ej2-angular-calendars\";\r\n\r\nimport {\r\n TextBoxModule,\r\n ColorPickerModule,\r\n UploaderModule,\r\n NumericTextBoxModule,\r\n} from \"@syncfusion/ej2-angular-inputs\";\r\nimport {\r\n DropDownListModule,\r\n MultiSelectAllModule,\r\n AutoCompleteModule,\r\n DropDownTreeModule,\r\n ListBoxModule,\r\n} from \"@syncfusion/ej2-angular-dropdowns\";\r\nimport {\r\n PivotViewAllModule,\r\n PivotFieldListAllModule,\r\n} from \"@syncfusion/ej2-angular-pivotview\";\r\nimport {\r\n ChartAllModule,\r\n AccumulationChartAllModule,\r\n RangeNavigatorAllModule,\r\n AccumulationChartModule,\r\n PieSeriesService,\r\n AccumulationLegendService,\r\n AccumulationTooltipService,\r\n AccumulationAnnotationService,\r\n AccumulationDataLabelService,\r\n} from \"@syncfusion/ej2-angular-charts\";\r\nimport { DashboardLayoutModule } from \"@syncfusion/ej2-angular-layouts\";\r\nimport {\r\n CarouselAllModule,\r\n ToolbarModule,\r\n TabModule,\r\n} from \"@syncfusion/ej2-angular-navigations\";\r\nimport {\r\n PdfViewerModule,\r\n LinkAnnotationService,\r\n BookmarkViewService,\r\n MagnificationService,\r\n ThumbnailViewService,\r\n ToolbarService as PbfToolbarService,\r\n NavigationService,\r\n TextSearchService,\r\n TextSelectionService,\r\n PrintService,\r\n} from \"@syncfusion/ej2-angular-pdfviewer\";\r\nimport {\r\n DropDownButtonModule,\r\n SplitButtonModule,\r\n} from \"@syncfusion/ej2-angular-splitbuttons\";\r\nimport {\r\n RichTextEditorAllModule,\r\n HtmlEditorService,\r\n ToolbarService as RichEditorToolbarService,\r\n} from \"@syncfusion/ej2-angular-richtexteditor\";\r\n\r\nimport { MatSnackBarModule } from \"@angular/material/snack-bar\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\n// services\r\nimport { CommonFunctionService } from \"./service/common-function.service\";\r\nimport { IconLoaderService } from \"./service/icon-loader.service\";\r\nimport { DialogService } from \"./service/dialog.service\";\r\nimport { KeepAliveService } from \"./service/keep-alive.service\";\r\n\r\nimport { CommonGridComponent } from \"./common-grid/index.component\";\r\nimport { FloatBoxComponent } from \"./float-box/index.component\";\r\n\r\nimport { RsPageListComponent } from \"./layout/page-list/index.component\";\r\nimport { RsPageTabComponent } from \"./layout/page-tab/index.component\";\r\nimport { GridBoxComponent } from \"./layout/grid-box/index.component\";\r\n\r\nimport { MainContainerComponent } from \"./layout/main-container/index.component\";\r\nimport { RSHeaderComponent } from \"./layout/rs-header/index.component\";\r\nimport { RSFooterComponent } from \"./layout/rs-footer/index.component\";\r\nimport { RSAsideComponent } from \"./layout/rs-aside/index.component\";\r\nimport { MultiTabComponent } from \"./layout/multi-tab/index.component\";\r\n\r\nimport { TagInputComponent } from \"./form/tag-input/index.component\";\r\nimport { RadioGroupComponent } from \"./form/radio-group/index.component\";\r\nimport { CheckboxGroupComponent } from \"./form/checkbox-group/index.component\";\r\nimport { SwitchInputComponent } from \"./form/switch-input/index.component\";\r\n\r\nimport { NewActionNotificationComponent } from \"./dialog/new-action-notification/new-action-notification.component\";\r\nimport { CommonDialogComponent } from \"./dialog/common-dialog/index.component\";\r\nimport { CommonDeleteComponent } from \"./dialog/common-delete-dialog/index.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n CommonGridComponent,\r\n FloatBoxComponent,\r\n RsPageListComponent,\r\n RsPageTabComponent,\r\n GridBoxComponent,\r\n RSHeaderComponent,\r\n RSFooterComponent,\r\n RSAsideComponent,\r\n MultiTabComponent,\r\n MainContainerComponent,\r\n TagInputComponent,\r\n RadioGroupComponent,\r\n CheckboxGroupComponent,\r\n SwitchInputComponent,\r\n NewActionNotificationComponent,\r\n CommonDialogComponent,\r\n CommonDeleteComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatSnackBarModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n GridModule,\r\n PagerModule,\r\n GridAllModule,\r\n SwitchModule,\r\n CheckBoxModule,\r\n RadioButtonModule,\r\n ButtonModule,\r\n DiagramModule,\r\n TooltipModule,\r\n DialogModule,\r\n DatePickerModule,\r\n DateRangePickerModule,\r\n DateTimePickerModule,\r\n TextBoxModule,\r\n ColorPickerModule,\r\n UploaderModule,\r\n NumericTextBoxModule,\r\n DropDownListModule,\r\n DropDownTreeModule,\r\n MultiSelectAllModule,\r\n AutoCompleteModule,\r\n ListBoxModule,\r\n PivotViewAllModule,\r\n PivotFieldListAllModule,\r\n ChartAllModule,\r\n AccumulationChartAllModule,\r\n RangeNavigatorAllModule,\r\n AccumulationChartModule,\r\n DashboardLayoutModule,\r\n CarouselAllModule,\r\n ToolbarModule,\r\n TabModule,\r\n PdfViewerModule,\r\n DropDownButtonModule,\r\n SplitButtonModule,\r\n RichTextEditorAllModule,\r\n ],\r\n providers: [\r\n PageService,\r\n SortService,\r\n FilterService,\r\n ExcelExportService,\r\n EditService,\r\n ResizeService,\r\n ToolbarService,\r\n ColumnChooserService,\r\n AggregateService,\r\n ColumnMenuService,\r\n DetailRowService,\r\n SelectionService,\r\n GroupService,\r\n PieSeriesService,\r\n AccumulationLegendService,\r\n AccumulationTooltipService,\r\n AccumulationAnnotationService,\r\n AccumulationDataLabelService,\r\n LinkAnnotationService,\r\n BookmarkViewService,\r\n MagnificationService,\r\n ThumbnailViewService,\r\n PbfToolbarService,\r\n NavigationService,\r\n TextSearchService,\r\n TextSelectionService,\r\n PrintService,\r\n HtmlEditorService,\r\n RichEditorToolbarService,\r\n\r\n CommonFunctionService,\r\n IconLoaderService,\r\n DialogService,\r\n KeepAliveService,\r\n ],\r\n exports: [\r\n CommonModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatSnackBarModule,\r\n MatDialogModule,\r\n GridModule,\r\n PagerModule,\r\n GridAllModule,\r\n SwitchModule,\r\n CheckBoxModule,\r\n RadioButtonModule,\r\n ButtonModule,\r\n DiagramModule,\r\n TooltipModule,\r\n DialogModule,\r\n DatePickerModule,\r\n DateRangePickerModule,\r\n DateTimePickerModule,\r\n TextBoxModule,\r\n ColorPickerModule,\r\n UploaderModule,\r\n NumericTextBoxModule,\r\n DropDownListModule,\r\n DropDownTreeModule,\r\n MultiSelectAllModule,\r\n AutoCompleteModule,\r\n ListBoxModule,\r\n PivotViewAllModule,\r\n PivotFieldListAllModule,\r\n ChartAllModule,\r\n AccumulationChartAllModule,\r\n RangeNavigatorAllModule,\r\n AccumulationChartModule,\r\n DashboardLayoutModule,\r\n CarouselAllModule,\r\n ToolbarModule,\r\n TabModule,\r\n PdfViewerModule,\r\n DropDownButtonModule,\r\n SplitButtonModule,\r\n RichTextEditorAllModule,\r\n CommonGridComponent,\r\n FloatBoxComponent,\r\n RsPageListComponent,\r\n RsPageTabComponent,\r\n GridBoxComponent,\r\n RSHeaderComponent,\r\n RSFooterComponent,\r\n RSAsideComponent,\r\n MultiTabComponent,\r\n MainContainerComponent,\r\n TagInputComponent,\r\n RadioGroupComponent,\r\n CheckboxGroupComponent,\r\n SwitchInputComponent,\r\n ],\r\n entryComponents: [\r\n NewActionNotificationComponent,\r\n CommonDialogComponent,\r\n CommonDeleteComponent,\r\n ],\r\n})\r\nexport class RaiseCommonLibModule {}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://raise-common-lib/lib/common-grid/index.component.ts","ng://raise-common-lib/lib/float-box/index.component.ts","ng://raise-common-lib/lib/layout/page-list/index.component.ts","ng://raise-common-lib/lib/layout/page-tab/index.component.ts","ng://raise-common-lib/lib/layout/grid-box/index.component.ts","ng://raise-common-lib/lib/service/common-function.service.ts","ng://raise-common-lib/lib/service/keep-alive.service.ts","ng://raise-common-lib/lib/layout/multi-tab/index.component.ts","ng://raise-common-lib/lib/layout/main-container/index.component.ts","ng://raise-common-lib/lib/layout/rs-header/index.component.ts","ng://raise-common-lib/lib/layout/rs-footer/index.component.ts","ng://raise-common-lib/lib/layout/rs-aside/index.component.ts","ng://raise-common-lib/lib/form/tag-input/index.component.ts","ng://raise-common-lib/lib/form/radio-group/index.component.ts","ng://raise-common-lib/lib/form/checkbox-group/index.component.ts","ng://raise-common-lib/lib/form/switch-input/index.component.ts","ng://raise-common-lib/lib/service/icon-loader.service.ts","ng://raise-common-lib/lib/dialog/new-action-notification/new-action-notification.component.ts","ng://raise-common-lib/lib/dialog/common-delete-dialog/index.component.ts","ng://raise-common-lib/lib/service/dialog.service.ts","ng://raise-common-lib/lib/dialog/common-dialog/index.component.ts","ng://raise-common-lib/lib/raise-common-lib.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__read","o","m","Symbol","iterator","r","e","ar","next","done","push","value","error","__spread","concat","CommonGridComponent","ref","showCheckBox","loaded","hiddenLoaded","authorized","selectedDiffKey","gridHeight","gridId","resizeSettings","mode","filterSettings","type","fields","dataSource","allowPaging","clipMode","checkBoxWidth","contextMenuItems","selectionSettings","checkboxOnly","alwaysShowCheckbox","disableSystemRow","recordDoubleClick","EventEmitter","actionComplete","rowSelected","rowDeselected","onContextMenu","actionHandler","queryCellInfo","recordClick","actionBegin","rowDataBound","dataBound","exportQueryCellInfo","rowSelecting","selectId","startPaging","indexList","className","translation","JSON","parse","localStorage","getItem","ngOnInit","markForCheck","trackByFn","index","item","ngOnChanges","changes","currentValue","pageSettings","pageSizes","pageSize","_load","grid","localeStrings","EmptyRecord","YOU_DO_NOT_HAVE_THE_DATASET_PERMISSION","_dataBound","args","_this","pagerContainer","document","querySelector","querySelectorAll","forEach","element","removeAttribute","setTimeout","chooseRecords","emit","_exportQueryCellInfo","_recordDoubleClick","$event","_rowSelected","isHeaderCheckboxClicked","Array","isArray","data","isSelected","_data","_rowDeselected","filter","_onContextMenu","_actionBegin","requestType","search","keywords","selectRows","selectRow","getCurrentViewRecords","customiseCell","contextMenuOpen","rowInfo","rowData","enableItems","hideItems","contextMenuModule","contextMenu","refresh","disabled","disableItem","includes","iconCss","text","isHide","hideItem","cancel","_actionHandler","detectChanges","row","_recordClick","_rowSelecting","refreshColumns","refreshHeader","export","excelExportProperties","excelExport","getSelectedRecords","_rowDataBound","IsSystem","classList","add","clearSelection","addItem","addRecord","defaultRecord","isNew","startEdit","saveItem","endEdit","editItem","Number","deleteItem","selectedRecord","deleteRecord","cancelItem","closeEdit","showLoading","hideLoading","Component","selector","template","ChangeDetectorRef","ViewChild","static","Input","Output","FloatBoxComponent","_trigger","_animation","_fixed","openChange","FIXED_CONTAINER_ID","opened","onClickOutside","event","rootElement","nativeElement","contains","fixedContainerEl","window","removeEventListener","onMoveOutside","contentElement","defineProperty","_placement","_position","ngAfterViewInit","getFixedContainer","fixed","append","ngOnDestroy","remove","containerElement","getElementById","createElement","setAttribute","body","setFixedContentPosition","_a","getBoundingClientRect","y","top","x","left","width","height","translateX","translateY","placement","position","style","transform","onClickContainer","trigger","addEventListener","onMouseEnter","close","RsPageListComponent","customPageTitle","isInner","debouncedInput","debounce","onSeach","gridContent","searchValue","onInput","ContentChild","RsPageTabComponent","tabList","tabChange","animation","previous","effect","duration","easing","onTabClick","selectedIndex","GridBoxComponent","TemplateRef","toBeDeleteUrl","CommonFunctionService","testMethod","setMiddleEllipsis","maxWidth","fontSize","context","getContext","font","measureText","Math","floor","firstPart","secondPart","half","getPureUrl","url","decodeURIComponent","split","Injectable","providedIn","storedRoutes","excludeRoutes","KeepAliveService","setExcludeRoutes","routes","shouldDetach","route","getRoutePath","routeConfig","path","store","handle","shouldAttach","retrieve","loadChildren","shouldReuseRoute","future","curr","queryParams","URLSearchParams","toString","_routerState","clearCache","MultiTabComponent","router","cf","activatedRoute","keepAlive","singleReuseUrls","TAB_WIDTH","GAP_NORMAL","GAP_SMALL","selectedTab","maxTabs","screenWidth","innerWidth","onResize","setEllipsisTitle","initTab","events","pipe","NavigationEnd","subscribe","navigation","getCurrentNavigation","state","extras","currentRoute","routerState","root","firstChild","setTab","snapshot","title","textGap","calcTabWidth","allWidth","rightWidth","leftWidth","ele","idx","displayTitle","wrap","ulElement","refreshTabDiv","wrapRect","ulRect","refreshTabRect","TabCache","sessionStorage","closeTab","tab","targetIdx","max","changeTab","setItem","stringify","navigateByUrl","addTab","pureUrl","isExistIdx","findIndex","singleIdx_1","refreshTab","currentUrl","skipLocationChange","then","Router","ActivatedRoute","HostListener","MainContainerComponent","isCollapsed","RSHeaderComponent","toggleMenu","lastLoginTime","Date","langOptions","currentLang","onToggleMenu","selectLanguage","find","RSFooterComponent","today","RSAsideComponent","navList","currentNav","onNavClick","navigate","TagInputComponent","inputMinlength","inputMaxlength","valueChange","inputError","onRemoveTag","tag","tagsList","onAddTag","inputValue","target","verifyInputValue","inputValueLength","RadioGroupComponent","orientation","onChange","CheckboxGroupComponent","console","log","option","result","originalValue","checked","val","SwitchInputComponent","onClick","IconLoaderService","registry","domSanitizer","registerIcons","list","name","addSvgIcon","bypassSecurityTrustResourceUrl","MatIconRegistry","DomSanitizer","NewActionNotificationComponent","collapsed","config","loadingCallback","progress","snackBar","dismiss","closeNotification","expandNotification","status","Inject","MAT_SNACK_BAR_DATA","CommonDeleteComponent","dialogRef","saveBtnLabel","cancelBtnLabel","description","size","DELETE","CANCEL","IF_YOU_DELETE_THIS_RECORD_WARNING","onSave","MAT_DIALOG_DATA","MatDialogRef","MessageType","Create","Read","Update","Delete","DialogService","dialog","showLoadingNotification","openFromComponent","message","DOWNLOAD_IS_IN_PROGRESS","verticalPosition","horizontalPosition","panelClass","showNotification","deleteElement","open","showCommonDilaog","showUnsavedChanges","defaultData","UNSAVED_CHANGES","YOU_HAVE_UNSAVED_CHANGED_ARE_YOU_SURE_YOU_WANT_TO_DISCARD_THEM","DISCARD_CHANGES","CONTINUE_EDITING","showSucMsg","res","showMessage","showUpdateMsg","showDelMsg","_saveMessage","SAVESUCCESS","UPDATESUCCESS","DELETESUCCESS","messages","MatSnackBar","MatDialog","CommonDialogComponent","hideHeader","hideCloseIcon","hideCloseBtn","hideSaveBtn","showErrorIcon","loading","saveEmit","closeEmit","customFooter","ngAfterContentInit","footerContent","getInfo","onClose","SAVE","RaiseCommonLibModule","NgModule","declarations","imports","CommonModule","HttpClientModule","ReactiveFormsModule","FormsModule","MatSnackBarModule","MatDialogModule","MatIconModule","GridModule","PagerModule","GridAllModule","SwitchModule","CheckBoxModule","RadioButtonModule","ButtonModule","DiagramModule","TooltipModule","DialogModule","DatePickerModule","DateRangePickerModule","DateTimePickerModule","TextBoxModule","ColorPickerModule","UploaderModule","NumericTextBoxModule","DropDownListModule","DropDownTreeModule","MultiSelectAllModule","AutoCompleteModule","ListBoxModule","PivotViewAllModule","PivotFieldListAllModule","ChartAllModule","AccumulationChartAllModule","RangeNavigatorAllModule","AccumulationChartModule","DashboardLayoutModule","CarouselAllModule","ToolbarModule","TabModule","PdfViewerModule","DropDownButtonModule","SplitButtonModule","RichTextEditorAllModule","providers","PageService","SortService","FilterService","ExcelExportService","EditService","ResizeService","ToolbarService","ColumnChooserService","AggregateService","ColumnMenuService","DetailRowService","SelectionService","GroupService","PieSeriesService","AccumulationLegendService","AccumulationTooltipService","AccumulationAnnotationService","AccumulationDataLabelService","LinkAnnotationService","BookmarkViewService","MagnificationService","ThumbnailViewService","PbfToolbarService","NavigationService","TextSearchService","TextSelectionService","PrintService","HtmlEditorService","RichEditorToolbarService","exports","entryComponents"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n OnChanges,\r\n ViewChild,\r\n SimpleChanges,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { GridComponent } from '@syncfusion/ej2-angular-grids';\r\n\r\nimport { BeforeOpenCloseEventArgs } from '@syncfusion/ej2-angular-inputs';\r\nimport { IActionMenuItem, IColumnField } from '../constant';\r\n\r\n@Component({\r\n selector: 'rs-common-grid',\r\n templateUrl: './index.component.html',\r\n styleUrls: ['./index.component.scss'],\r\n})\r\nexport class CommonGridComponent implements OnInit, OnChanges {\r\n @ViewChild('grid', { static: false })\r\n public grid: GridComponent;\r\n @Input() showCheckBox = true;\r\n @Input() loaded = true;\r\n @Input() hiddenLoaded = false;\r\n @Input() authorized = true; // Dataset是否授权,未授权则显示权限错误提示\r\n // only use for local data pagination\r\n @Input() selectedDiffKey = '';\r\n @Input() gridHeight = '';\r\n // 这玩意必填,不然filter columnChooser都会报错\r\n @Input() gridId = 'grid';\r\n @Input() resizeSettings = { mode: 'Auto' };\r\n @Input() filterSettings = { type: 'Menu' };\r\n @Input() template: any;\r\n @Input() fields: IColumnField[] = [];\r\n @Input() dataSource = [];\r\n @Input() editSettings;\r\n @Input() columnTemplate: TemplateRef<any>;\r\n @Input() pageSettings;\r\n @Input() allowPaging = true;\r\n @Input() clipMode = 'EllipsisWithTooltip';\r\n @Input() checkBoxWidth = 32; // col 数量过少的时候,check宽度会拉伸,这时候设置null\r\n @Input() childGrid;\r\n\r\n /**\r\n\t * Sample: [\r\n\t\t\t{\r\n\t\t\t\ttext: \"Preview\",\r\n\t\t\t\ttarget: \".e-content\",\r\n\t\t\t\tid: \"preview-icon\",\r\n\t\t\t\ticonCss: \"preview\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttext: \"Download\",\r\n\t\t\t\ttarget: \".e-content\",\r\n\t\t\t\tid: \"download-icon\",\r\n\t\t\t\ticonCss: \"download\",\r\n\t\t\t}\r\n\t\t]\r\n\t\t用于定义row中 点击事件\r\n\t */\r\n @Input() contextMenuItems: IActionMenuItem[] = [];\r\n // @Input() selectionSettings = { checkboxOnly: true, type: \"Multiple\" };\r\n @Input() selectionSettings = {\r\n type: 'Multiple',\r\n // persistSelection: true,\r\n checkboxOnly: true,\r\n };\r\n @Input() alwaysShowCheckbox: boolean = false;\r\n @Input() defaultRecord: any;\r\n @Input() disableSystemRow: boolean = false; // 禁用IsSytem = true的整行\r\n\r\n @Output() recordDoubleClick = new EventEmitter();\r\n @Output() actionComplete = new EventEmitter();\r\n @Output() rowSelected = new EventEmitter();\r\n @Output() rowDeselected = new EventEmitter();\r\n @Output() onContextMenu = new EventEmitter();\r\n @Output() actionHandler = new EventEmitter();\r\n @Output() queryCellInfo = new EventEmitter();\r\n @Output() recordClick = new EventEmitter();\r\n @Output() actionBegin = new EventEmitter();\r\n @Output() rowDataBound = new EventEmitter();\r\n @Output() dataBound = new EventEmitter();\r\n @Output() exportQueryCellInfo = new EventEmitter();\r\n @Output() rowSelecting = new EventEmitter();\r\n\r\n selectId = [];\r\n startPaging = false;\r\n indexList = [];\r\n className = 'grid-loading';\r\n\r\n public translation;\r\n\r\n constructor(private ref: ChangeDetectorRef) {\r\n this.translation = JSON.parse(localStorage.getItem('translation'));\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.hiddenLoaded) this.className = '';\r\n this.ref && this.ref.markForCheck();\r\n }\r\n\r\n trackByFn(index, item) {\r\n return index; // or a unique identifier in your object\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.dataSource && changes.dataSource.currentValue) {\r\n if (\r\n this.allowPaging &&\r\n changes.dataSource.currentValue.length &&\r\n !this.pageSettings\r\n ) {\r\n this.pageSettings =\r\n changes.dataSource.currentValue.length > 9\r\n ? {\r\n pageSizes: ['All', '25', '50', '100'],\r\n pageSize: 50,\r\n }\r\n : null;\r\n }\r\n }\r\n }\r\n\r\n _load() {\r\n if (!this.authorized) {\r\n (this.grid.localeObj as any).localeStrings.EmptyRecord =\r\n this.translation.YOU_DO_NOT_HAVE_THE_DATASET_PERMISSION ||\r\n \"You don't have the dataset permission to view the record.\";\r\n }\r\n }\r\n\r\n _dataBound(args: any) {\r\n // 整个组件加载完成时的回调函数\r\n var pagerContainer = document.querySelector('.e-pagercontainer');\r\n if (pagerContainer) {\r\n var linkElements = pagerContainer.querySelectorAll('.e-link');\r\n linkElements.forEach(function (element) {\r\n element.removeAttribute('href'); // SMP2-10310 删除分页器的href属性\r\n });\r\n }\r\n if (this.selectedDiffKey) {\r\n setTimeout(() => {\r\n this.chooseRecords();\r\n });\r\n }\r\n this.dataBound.emit(args);\r\n }\r\n\r\n _exportQueryCellInfo(args) {\r\n this.exportQueryCellInfo.emit(args);\r\n }\r\n\r\n _recordDoubleClick($event) {\r\n this.recordDoubleClick.emit($event);\r\n }\r\n /**\r\n\t * [selectionSettings]=\"{ checkboxOnly: true }\"\r\n\t [showCheckBox]=\"true\"\r\n\t 控件使用时,必须配置上面两个属性,否则,全选会失效\r\n\t */\r\n _rowSelected($event) {\r\n if (this.selectedDiffKey) {\r\n if ($event.isHeaderCheckboxClicked && Array.isArray($event.data)) {\r\n if ($event.data && $event.data.length) {\r\n $event.data.forEach((item) => {\r\n item.isSelected = true;\r\n this.selectId.push(item);\r\n });\r\n this.dataSource.forEach((data) => {\r\n $event.data.forEach((_data) => {\r\n if (_data[this.selectedDiffKey] === data[this.selectedDiffKey]) {\r\n data.isSelected = true;\r\n }\r\n });\r\n });\r\n }\r\n } else {\r\n $event.data.isSelected = true;\r\n this.selectId.push($event.data);\r\n this.dataSource.forEach((data) => {\r\n if (\r\n data[this.selectedDiffKey] === $event.data[this.selectedDiffKey]\r\n ) {\r\n data.isSelected = true;\r\n }\r\n });\r\n }\r\n this.ref && this.ref.markForCheck();\r\n }\r\n this.rowSelected.emit($event);\r\n }\r\n\r\n _rowDeselected($event) {\r\n if (this.selectedDiffKey) {\r\n if (this.startPaging) {\r\n return;\r\n }\r\n if ($event.isHeaderCheckboxClicked && Array.isArray($event.data)) {\r\n $event.data.forEach((item) => {\r\n item.isSelected = false;\r\n });\r\n this.selectId = [];\r\n this.dataSource.forEach((data) => {\r\n $event.data.forEach((_data) => {\r\n if (_data[this.selectedDiffKey] === data[this.selectedDiffKey]) {\r\n data.isSelected = false;\r\n }\r\n });\r\n });\r\n } else {\r\n $event.data.isSelected = false;\r\n this.selectId = this.selectId.filter(\r\n (item) =>\r\n item[this.selectedDiffKey] !== $event.data[this.selectedDiffKey]\r\n );\r\n this.dataSource.forEach((data) => {\r\n if (\r\n data[this.selectedDiffKey] === $event.data[this.selectedDiffKey]\r\n ) {\r\n data.isSelected = false;\r\n }\r\n });\r\n }\r\n this.ref && this.ref.markForCheck();\r\n }\r\n this.rowDeselected.emit($event);\r\n }\r\n\r\n _onContextMenu(args) {\r\n this.onContextMenu.emit(args);\r\n }\r\n\r\n _actionBegin(args) {\r\n if (\r\n this.selectedDiffKey &&\r\n (args.requestType === 'paging' ||\r\n args.requestType === 'searching' ||\r\n args.requestType === 'filtering' ||\r\n args.requestType === 'sorting')\r\n ) {\r\n this.startPaging = true;\r\n }\r\n this.actionBegin.emit(args);\r\n }\r\n\r\n search(keywords) {\r\n this.grid.search(keywords);\r\n }\r\n selectRows(indexList: number[]) {\r\n this.grid.selectRows(indexList);\r\n }\r\n selectRow(index) {\r\n this.grid.selectRow(index);\r\n }\r\n getCurrentViewRecords() {\r\n return this.grid.getCurrentViewRecords();\r\n }\r\n\r\n customiseCell($event) {\r\n this.queryCellInfo.emit($event);\r\n }\r\n\r\n contextMenuOpen(args?: BeforeOpenCloseEventArgs): void {\r\n const data = (args as BeforeOpenCloseEventArgs | any).rowInfo.rowData;\r\n if (!data) {\r\n args.cancel = true;\r\n return;\r\n }\r\n let enableItems = [];\r\n let hideItems = [];\r\n this.grid.contextMenuModule.contextMenu.refresh(); // 每次点击按钮弹窗前需再次初始化状态 否则不更新;\r\n this.contextMenuItems.forEach((item: IActionMenuItem) => {\r\n // 用于处理部分按钮disabled的情况\r\n if (\r\n item.disabled ||\r\n (data.disableItem && data.disableItem.includes(item.iconCss))\r\n ) {\r\n enableItems.push(item.text);\r\n // this.grid.contextMenuModule.contextMenu.enableItems(\r\n // \t[item.text],\r\n // \tfalse\r\n // );\r\n }\r\n // 用于处理部分按钮需要hide的情况\r\n if (\r\n item.isHide ||\r\n (data.hideItem && data.hideItem.includes(item.iconCss))\r\n ) {\r\n hideItems.push(item.text);\r\n // this.grid.contextMenuModule.contextMenu.hideItems(\r\n // \t[item.text],\r\n // \tfalse\r\n // );\r\n }\r\n });\r\n this.grid.contextMenuModule.contextMenu.enableItems(enableItems, false);\r\n this.grid.contextMenuModule.contextMenu.hideItems(hideItems, false);\r\n }\r\n\r\n _actionHandler($event) {\r\n if (\r\n this.selectedDiffKey &&\r\n ($event.requestType === 'paging' ||\r\n $event.requestType === 'searching' ||\r\n $event.requestType === 'filtering' ||\r\n $event.requestType === 'sorting')\r\n ) {\r\n this.indexList = [];\r\n setTimeout(() => {\r\n this.chooseRecords();\r\n this.startPaging = false;\r\n this.ref && this.ref.detectChanges();\r\n this.ref && this.ref.markForCheck();\r\n });\r\n }\r\n this.actionHandler.emit($event);\r\n this.actionComplete.emit($event);\r\n }\r\n\r\n private chooseRecords() {\r\n this.indexList = [];\r\n this.dataSource.forEach((data) => {\r\n this.grid.getCurrentViewRecords().forEach((row: any, i) => {\r\n if (\r\n row &&\r\n data[this.selectedDiffKey] === row[this.selectedDiffKey] &&\r\n data.isSelected\r\n ) {\r\n this.indexList.push(i);\r\n }\r\n });\r\n });\r\n\r\n this.grid.selectRows(this.indexList);\r\n }\r\n\r\n _recordClick($event) {\r\n this.recordClick.emit($event);\r\n }\r\n refresh() {\r\n this.grid.refresh();\r\n }\r\n _rowSelecting(e) {\r\n this.rowSelecting.emit(e);\r\n }\r\n refreshColumns() {\r\n this.grid.refreshColumns();\r\n }\r\n refreshHeader() {\r\n this.grid.refreshHeader();\r\n }\r\n\r\n export(excelExportProperties?) {\r\n this.grid.excelExport(excelExportProperties);\r\n }\r\n\r\n getSelectedRecords() {\r\n return this.grid.getSelectedRecords();\r\n }\r\n\r\n _rowDataBound($event) {\r\n if (this.disableSystemRow && $event.data && $event.data.IsSystem) {\r\n $event.row.classList.add('e-disabled');\r\n }\r\n this.rowDataBound.emit($event);\r\n }\r\n\r\n clearSelection() {\r\n this.grid.clearSelection();\r\n }\r\n\r\n excelExport() {\r\n this.grid.excelExport();\r\n }\r\n\r\n addItem() {\r\n this.grid.addRecord({ ...this.defaultRecord, isNew: true }, 0);\r\n setTimeout(() => {\r\n this.grid.selectRow(0);\r\n this.grid.startEdit();\r\n }, 30);\r\n }\r\n\r\n saveItem() {\r\n this.grid.endEdit();\r\n }\r\n\r\n editItem(index) {\r\n setTimeout(() => {\r\n this.grid.selectRow(Number(index));\r\n this.grid.startEdit();\r\n }, 30);\r\n }\r\n\r\n deleteItem(index) {\r\n this.grid.selectRow(Number(index));\r\n var selectedRecord = this.grid.getSelectedRecords()[0] as any;\r\n this.grid.deleteRecord(selectedRecord as string);\r\n }\r\n\r\n cancelItem(index) {\r\n this.grid.closeEdit();\r\n this.deleteItem(index);\r\n }\r\n\r\n public showLoading() {\r\n this.className = 'grid-loading';\r\n this.ref && this.ref.markForCheck();\r\n this.ref && this.ref.detectChanges();\r\n }\r\n\r\n public hideLoading() {\r\n this.className = '';\r\n this.ref && this.ref.markForCheck();\r\n this.ref && this.ref.detectChanges();\r\n }\r\n}\r\n","import {\r\n\tAfterViewInit,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOutput,\r\n\tViewChild,\r\n} from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"rs-float-box\",\r\n\ttemplateUrl: \"./index.component.html\",\r\n\tstyleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class FloatBoxComponent implements AfterViewInit, OnDestroy {\r\n\t@Input(\"placement\") _placement: \"top\" | \"left\" | \"right\" | \"bottom\";\r\n\t@Input(\"position\") _position: \"start\" | \"center\" | \"end\";\r\n\t@Input(\"trigger\") _trigger: \"hover\" | \"click\" = \"hover\";\r\n\t@Input(\"animation\") _animation: \"yes\" | \"no\" = \"no\";\r\n\t@Input(\"fixed\") _fixed: \"yes\" | \"no\" = \"no\";\r\n\r\n\tget placement() {\r\n\t\tif ([\"top\", \"left\", \"right\", \"bottom\"].includes(this._placement)) {\r\n\t\t\treturn this._placement;\r\n\t\t}\r\n\t\treturn \"bottom\";\r\n\t}\r\n\r\n\tget position() {\r\n\t\tif ([\"start\", \"center\", \"end\"].includes(this._position)) {\r\n\t\t\treturn this._position;\r\n\t\t}\r\n\t\treturn \"center\";\r\n\t}\r\n\r\n\tget trigger() {\r\n\t\tif (this._trigger === \"click\") {\r\n\t\t\treturn \"click\";\r\n\t\t}\r\n\t\treturn \"hover\";\r\n\t}\r\n\r\n\tget animation() {\r\n\t\tif (this._animation === \"yes\") {\r\n\t\t\treturn \"yes\";\r\n\t\t}\r\n\t\treturn \"no\";\r\n\t}\r\n\r\n\tget fixed() {\r\n\t\tif (this._fixed === \"yes\") {\r\n\t\t\treturn \"yes\";\r\n\t\t}\r\n\t\treturn \"no\";\r\n\t}\r\n\r\n\t@Output(\"openChange\") openChange = new EventEmitter<boolean>();\r\n\r\n\t@ViewChild(\"element\", { static: false })\r\n\trootElement: ElementRef<HTMLDivElement>;\r\n\t@ViewChild(\"content\", { static: false })\r\n\tcontentElement: ElementRef<HTMLDivElement>;\r\n\r\n\tconstructor(private ref: ChangeDetectorRef) {}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.fixedContainerEl = this.getFixedContainer();\r\n\t\tif (this.fixed === \"yes\") {\r\n\t\t\tthis.fixedContainerEl.append(this.contentElement.nativeElement);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.contentElement.nativeElement.remove();\r\n\t}\r\n\r\n\tFIXED_CONTAINER_ID = \"kt-float-box-fixed-container\";\r\n\tfixedContainerEl: HTMLElement;\r\n\tgetFixedContainer() {\r\n\t\tlet containerElement = document.getElementById(this.FIXED_CONTAINER_ID);\r\n\t\tif (!containerElement) {\r\n\t\t\tcontainerElement = document.createElement(\"div\");\r\n\t\t\tcontainerElement.setAttribute(\"id\", this.FIXED_CONTAINER_ID);\r\n\t\t\tdocument.body.append(containerElement);\r\n\t\t}\r\n\t\treturn containerElement;\r\n\t}\r\n\r\n\tsetFixedContentPosition() {\r\n\t\tif (this.fixed === \"no\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst {\r\n\t\t\ttop: y,\r\n\t\t\tleft: x,\r\n\t\t\twidth,\r\n\t\t\theight,\r\n\t\t} = this.rootElement.nativeElement.getBoundingClientRect();\r\n\r\n\t\tlet top = \"0\";\r\n\t\tlet left = \"0\";\r\n\t\tlet translateX = \"0\";\r\n\t\tlet translateY = \"0\";\r\n\t\tswitch (this.placement + \"_\" + this.position) {\r\n\t\t\tcase \"top_start\":\r\n\t\t\t\ttop = y + \"px\";\r\n\t\t\t\tleft = x - 8 + \"px\";\r\n\t\t\t\ttranslateY = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"top_center\":\r\n\t\t\t\ttop = y + \"px\";\r\n\t\t\t\tleft = x + width / 2 + \"px\";\r\n\t\t\t\ttranslateX = \"-50%\";\r\n\t\t\t\ttranslateY = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"top_end\":\r\n\t\t\t\ttop = y + \"px\";\r\n\t\t\t\tleft = x + width + 8 + \"px\";\r\n\t\t\t\ttranslateX = \"-100%\";\r\n\t\t\t\ttranslateY = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"left_start\":\r\n\t\t\t\ttop = y - 8 + \"px\";\r\n\t\t\t\tleft = x + \"px\";\r\n\t\t\t\ttranslateX = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"left_center\":\r\n\t\t\t\ttop = y + height / 2 + \"px\";\r\n\t\t\t\tleft = x + \"px\";\r\n\t\t\t\ttranslateX = \"-100%\";\r\n\t\t\t\ttranslateY = \"-50%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"left_end\":\r\n\t\t\t\ttop = y + height + 8 + \"px\";\r\n\t\t\t\tleft = x + \"px\";\r\n\t\t\t\ttranslateX = \"-100%\";\r\n\t\t\t\ttranslateY = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"right_start\":\r\n\t\t\t\ttop = y - 8 + \"px\";\r\n\t\t\t\tleft = x + width + \"px\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"right_center\":\r\n\t\t\t\ttop = y + height / 2 + \"px\";\r\n\t\t\t\tleft = x + width + \"px\";\r\n\t\t\t\ttranslateY = \"-50%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"right_end\":\r\n\t\t\t\ttop = y + height + 8 + \"px\";\r\n\t\t\t\tleft = x + width + \"px\";\r\n\t\t\t\ttranslateY = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"bottom_start\":\r\n\t\t\t\ttop = y + height + \"px\";\r\n\t\t\t\tleft = x - 8 + \"px\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"bottom_center\":\r\n\t\t\t\ttop = y + height + \"px\";\r\n\t\t\t\tleft = x + width / 2 + \"px\";\r\n\t\t\t\ttranslateX = \"-50%\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"bottom_end\":\r\n\t\t\t\ttop = y + height + \"px\";\r\n\t\t\t\tleft = x + width + 8 + \"px\";\r\n\t\t\t\ttranslateX = \"-100%\";\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.contentElement.nativeElement.style.top = top;\r\n\t\tthis.contentElement.nativeElement.style.left = left;\r\n\t\tthis.contentElement.nativeElement.style.transform = `translate(${translateX}, ${translateY})`;\r\n\t}\r\n\r\n\topened: \"yes\" | \"no\" = \"no\";\r\n\tonClickContainer() {\r\n\t\tif (this.trigger !== \"click\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.opened = \"yes\";\r\n\t\tthis.openChange.emit(true);\r\n\t\tthis.setFixedContentPosition();\r\n\t\twindow.addEventListener(\"click\", this.onClickOutside);\r\n\t}\r\n\r\n\tonClickOutside = (event: MouseEvent) => {\r\n\t\tif (\r\n\t\t\t!this.rootElement.nativeElement.contains(event.target as Element) &&\r\n\t\t\t!this.fixedContainerEl.contains(event.target as Element)\r\n\t\t) {\r\n\t\t\tthis.opened = \"no\";\r\n\t\t\tthis.openChange.emit(false);\r\n\t\t\twindow.removeEventListener(\"click\", this.onClickOutside);\r\n\t\t\tthis.ref.markForCheck();\r\n\t\t}\r\n\t};\r\n\r\n\tonMouseEnter() {\r\n\t\tif (this.fixed === \"no\" || this.trigger !== \"hover\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.opened = \"yes\";\r\n\t\tthis.openChange.emit(true);\r\n\t\tthis.setFixedContentPosition();\r\n\t\twindow.addEventListener(\"mousemove\", this.onMoveOutside);\r\n\t}\r\n\r\n\tonMoveOutside = (event: MouseEvent) => {\r\n\t\tif (\r\n\t\t\t!this.rootElement.nativeElement.contains(event.target as Element) &&\r\n\t\t\t!this.contentElement.nativeElement.contains(event.target as Element)\r\n\t\t) {\r\n\t\t\tthis.opened = \"no\";\r\n\t\t\tthis.openChange.emit(false);\r\n\t\t\twindow.removeEventListener(\"click\", this.onMoveOutside);\r\n\t\t\tthis.ref.markForCheck();\r\n\t\t}\r\n\t};\r\n\r\n\tclose() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.opened = \"no\";\r\n\t\t\tthis.openChange.emit(false);\r\n\t\t}, 0);\r\n\t}\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { CommonGridComponent } from '../../common-grid/index.component';\r\nimport { debounce } from 'lodash';\r\n\r\n@Component({\r\n selector: 'rs-page-list',\r\n templateUrl: './index.component.html',\r\n styleUrls: ['./index.component.scss'],\r\n})\r\nexport class RsPageListComponent implements OnInit {\r\n @ContentChild(CommonGridComponent, { static: true }) gridContent;\r\n @Input() pageTitle;\r\n @Input() customPageTitle = false;\r\n @Input() isInner = false;\r\n\r\n private debouncedInput: Function;\r\n\r\n ngOnInit() {\r\n this.debouncedInput = debounce(() => {\r\n this.onSeach()\r\n }, 300);\r\n }\r\n\r\n\r\n\r\n searchValue;\r\n onSeach() {\r\n this.gridContent.grid.search(this.searchValue);\r\n }\r\n\r\n onInput(){\r\n this.debouncedInput()\r\n }\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-page-tab\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class RsPageTabComponent implements OnInit {\r\n @Input() pageTitle;\r\n @Input() customPageTitle = false;\r\n @Input() tabList = [];\r\n @Input() currentTab;\r\n\r\n @Output()\r\n tabChange = new EventEmitter();\r\n\r\n public animation: object = {\r\n\t\tprevious: { effect: \"\", duration: 0, easing: \"\" },\r\n\t\tnext: { effect: \"\", duration: 0, easing: \"\" },\r\n\t};\r\n ngOnInit() {}\r\n\r\n onTabClick(e) {\r\n this.tabChange.emit(this.tabList[e.selectedIndex]);\r\n }\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { CommonGridComponent } from '../../common-grid/index.component';\r\nimport { debounce } from 'lodash';\r\n\r\n@Component({\r\n selector: 'rs-grid-box',\r\n templateUrl: './index.component.html',\r\n styleUrls: ['./index.component.scss'],\r\n})\r\nexport class GridBoxComponent implements OnInit {\r\n @ContentChild(TemplateRef, { static: true }) gridContent;\r\n @Input() pageTitle;\r\n @Input() customPageTitle = false;\r\n @Input() isInner = false;\r\n\r\n private debouncedInput: Function;\r\n\r\n ngOnInit() {\r\n this.debouncedInput = debounce(() => {\r\n this.onSeach()\r\n }, 300);\r\n }\r\n\r\n\r\n\r\n searchValue;\r\n onSeach() {\r\n this.gridContent.grid.search(this.searchValue);\r\n }\r\n\r\n onInput(){\r\n this.debouncedInput()\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class CommonFunctionService {\r\n constructor() {}\r\n\r\n testMethod() {\r\n return \"test1111\";\r\n }\r\n\r\n setMiddleEllipsis(text, maxWidth = 150, fontSize = 13) {\r\n\t\tconst canvas = document.createElement(\"canvas\");\r\n\t\tconst context = canvas.getContext(\"2d\");\r\n\t\tcontext.font = `${fontSize}px Arial`;\r\n\r\n\t\tlet width = context.measureText(text).width;\r\n\r\n\t\tif (width <= maxWidth) {\r\n\t\t\treturn text;\r\n\t\t}\r\n\t\tmaxWidth = Math.floor(maxWidth - context.measureText(\"...\").width);\r\n\t\tlet firstPart = \"\";\r\n\t\tlet secondPart = \"\";\r\n\t\tlet half = Math.floor(maxWidth / 2);\r\n\t\tfor (let i = 0; i < text.length; i++) {\r\n\t\t\tfirstPart += text[i];\r\n\t\t\twidth = context.measureText(firstPart).width;\r\n\t\t\tif (width > half) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let i = text.length - 1; i >= 0; i--) {\r\n\t\t\tsecondPart = text[i] + secondPart;\r\n\t\t\twidth = context.measureText(secondPart).width;\r\n\t\t\tif (width > half) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn firstPart + \"...\" + secondPart;\r\n\t}\r\n\r\n getPureUrl(url: string) {\r\n\t\tif (url) {\r\n\t\t\t// 如果params的value 携带查询参数, 则截取前面部分\r\n\t\t\turl = decodeURIComponent(url);\r\n\t\t\tif (url.includes(\"?\")) {\r\n\t\t\t\turl = url.split(\"?\")[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn url;\r\n\t}\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport {\r\n RouteReuseStrategy,\r\n ActivatedRouteSnapshot,\r\n DetachedRouteHandle,\r\n} from \"@angular/router\";\r\n\r\nconst storedRoutes: { [key: string]: DetachedRouteHandle } = {};\r\nlet toBeDeleteUrl: string;\r\nlet excludeRoutes: string[] = []; // 不需要缓存的url\r\n\r\nexport class KeepAliveService implements RouteReuseStrategy {\r\n setExcludeRoutes(routes: string[]) {\r\n excludeRoutes = routes; // 设置不缓存的路由\r\n }\r\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n if (toBeDeleteUrl === this.getRoutePath(route)) {\r\n // 对于新开的又即将关闭的tab,不缓存\r\n toBeDeleteUrl = \"\";\r\n return false;\r\n }\r\n return !excludeRoutes.includes(route.routeConfig.path);\r\n }\r\n\r\n store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {\r\n // console.log(\"store\", this.getRoutePath(route));\r\n // console.log(\"store\", storedRoutes);\r\n\r\n storedRoutes[this.getRoutePath(route)] = handle;\r\n }\r\n\r\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n return !!storedRoutes[this.getRoutePath(route)];\r\n }\r\n\r\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {\r\n if (!route.routeConfig) return null;\r\n if (route.routeConfig.loadChildren) return null;\r\n return storedRoutes[this.getRoutePath(route)];\r\n }\r\n\r\n shouldReuseRoute(\r\n future: ActivatedRouteSnapshot,\r\n curr: ActivatedRouteSnapshot\r\n ): boolean {\r\n // console.log(\"shouldReuseRoute\");\r\n return this.getRoutePath(future) === this.getRoutePath(curr); // 复用相同的路由\r\n }\r\n\r\n getRoutePath(route): string {\r\n if (route.routeConfig) {\r\n // const pathParams = JSON.stringify(route.params);\r\n const queryParams = new URLSearchParams(route.queryParams).toString();\r\n return route._routerState.url + (queryParams ? \"?\" + queryParams : \"\");\r\n }\r\n return \"\";\r\n }\r\n\r\n clearCache(path: string) {\r\n toBeDeleteUrl = path;\r\n delete storedRoutes[path]; // 清除指定路径的缓存\r\n }\r\n}\r\n","// 组件类\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport {\r\n ActivatedRoute,\r\n NavigationEnd,\r\n Router,\r\n RouterOutlet,\r\n} from \"@angular/router\";\r\nimport { CommonFunctionService } from \"../../service/common-function.service\";\r\nimport { KeepAliveService } from \"../../service/keep-alive.service\";\r\nimport { filter, map, mergeMap } from \"rxjs/operators\";\r\n\r\n@Component({\r\n selector: \"rs-multi-tab\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class MultiTabComponent implements OnInit {\r\n constructor(\r\n public router: Router,\r\n public cf: CommonFunctionService,\r\n public activatedRoute: ActivatedRoute,\r\n public keepAlive: KeepAliveService,\r\n private ref: ChangeDetectorRef\r\n ) {}\r\n @Input() singleReuseUrls: string[] = []; //只能单个缓存的url\r\n\r\n TAB_WIDTH = 164;\r\n GAP_NORMAL = 54;\r\n GAP_SMALL = 30;\r\n textGap; // 文本与边框的总间距\r\n foo: RouterOutlet;\r\n comRef: any;\r\n tabList = [];\r\n selectedTab: number = 0;\r\n maxTabs: number = 10;\r\n screenWidth: number = window.innerWidth; // 初始化屏幕宽度\r\n @HostListener(\"window:resize\", [\"$event\"])\r\n onResize(event) {\r\n this.screenWidth = window.innerWidth; // 更新屏幕宽度\r\n this.setEllipsisTitle();\r\n }\r\n\r\n ngOnInit() {\r\n this.initTab();\r\n this.router.events\r\n .pipe(filter((event) => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n const navigation = this.router.getCurrentNavigation(); // 获取当前导航\r\n if (navigation) {\r\n const state = navigation.extras.state; // 获取传递的 state\r\n const currentRoute = this.router.routerState.root.firstChild;\r\n if (currentRoute) {\r\n this.setTab(\r\n this.router.url,\r\n currentRoute.snapshot.routeConfig.path,\r\n state && state.title\r\n );\r\n }\r\n }\r\n });\r\n this.setEllipsisTitle();\r\n }\r\n\r\n setEllipsisTitle(title?) {\r\n this.textGap = this.GAP_NORMAL;\r\n if (this.screenWidth <= 1100) {\r\n this.textGap = this.GAP_SMALL;\r\n }\r\n let { allWidth, leftWidth, rightWidth } = this.calcTabWidth();\r\n let width = Math.floor(\r\n (allWidth - rightWidth) / (this.tabList && this.tabList.length)\r\n );\r\n\r\n if (title) {\r\n return this.cf.setMiddleEllipsis(\r\n title,\r\n width > this.TAB_WIDTH\r\n ? this.TAB_WIDTH - this.textGap\r\n : width - this.textGap,\r\n 12\r\n );\r\n } else {\r\n this.tabList.forEach((ele, idx) => {\r\n ele.displayTitle = this.cf.setMiddleEllipsis(\r\n ele.title,\r\n width > this.TAB_WIDTH\r\n ? this.TAB_WIDTH - this.textGap\r\n : width - this.textGap,\r\n 12\r\n );\r\n });\r\n }\r\n }\r\n\r\n calcTabWidth() {\r\n const wrap = document.querySelector(\".rs-multi-tab\");\r\n const ulElement = document.querySelector(\".rs-multi-tab > ul\");\r\n const refreshTabDiv = document.querySelector(\".rs-multi-tab .refresh-tab\");\r\n let allWidth;\r\n let leftWidth;\r\n let rightWidth;\r\n if (wrap && ulElement && refreshTabDiv) {\r\n // 获取元素的位置信息\r\n const wrapRect = wrap.getBoundingClientRect();\r\n const ulRect = ulElement.getBoundingClientRect();\r\n const refreshTabRect = refreshTabDiv.getBoundingClientRect();\r\n allWidth = wrapRect.width;\r\n leftWidth = ulRect.width;\r\n rightWidth = refreshTabRect.width;\r\n }\r\n return {\r\n allWidth,\r\n leftWidth,\r\n rightWidth,\r\n };\r\n }\r\n initTab() {\r\n let TabCache = JSON.parse(sessionStorage.getItem(\"TabCache\"));\r\n this.tabList = TabCache || [];\r\n }\r\n\r\n closeTab(tab, idx) {\r\n this.tabList = this.tabList.filter((ele) => ele.url !== tab.url);\r\n this.clearCache(tab.url);\r\n if (this.selectedTab === idx) {\r\n const targetIdx = Math.max(0, idx - 1);\r\n this.changeTab(this.tabList[targetIdx], targetIdx);\r\n }\r\n this.setEllipsisTitle();\r\n sessionStorage.setItem(\"TabCache\", JSON.stringify(this.tabList));\r\n this.ref.markForCheck();\r\n }\r\n\r\n changeTab(tab, idx) {\r\n this.router.navigateByUrl(tab.url);\r\n this.selectedTab = idx;\r\n this.ref.markForCheck();\r\n }\r\n\r\n addTab(url, title) {\r\n if (this.tabList.length >= this.maxTabs) {\r\n this.closeTab(this.tabList[0], 0); // 删除第一个\r\n }\r\n this.tabList.push({\r\n url: url,\r\n title: title || \"default\",\r\n displayTitle: this.setEllipsisTitle(title || \"default\"),\r\n });\r\n this.selectedTab = this.tabList.length - 1;\r\n this.setEllipsisTitle();\r\n sessionStorage.setItem(\"TabCache\", JSON.stringify(this.tabList));\r\n this.ref.markForCheck();\r\n }\r\n\r\n public setTab(url, pureUrl, title) {\r\n const isExistIdx = this.tabList.findIndex((ele) => ele.url === url);\r\n if (isExistIdx === -1) {\r\n const singleIdx = this.singleReuseUrls.findIndex(\r\n (ele) => ele === pureUrl\r\n );\r\n if (singleIdx !== -1) {\r\n this.tabList = this.tabList.filter(\r\n (ele) => !ele.url.includes(this.singleReuseUrls[singleIdx])\r\n );\r\n this.keepAlive.clearCache(url);\r\n }\r\n this.addTab(url, title);\r\n } else {\r\n this.selectedTab = isExistIdx;\r\n this.ref.markForCheck();\r\n }\r\n }\r\n\r\n refreshTab() {\r\n this.keepAlive.clearCache(this.tabList[this.selectedTab].url);\r\n const currentUrl = this.router.url; // 获取当前 URL\r\n this.router.navigateByUrl(\"/\", { skipLocationChange: true }).then(() => {\r\n this.router.navigateByUrl(currentUrl); // 重新导航到当前 URL\r\n });\r\n }\r\n\r\n clearCache(url) {\r\n this.keepAlive.clearCache(url); // 调用自定义策略的清除缓存方法\r\n }\r\n}\r\n","// 组件类\r\nimport { Component, ContentChild, Input, OnInit } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-main-container\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class MainContainerComponent implements OnInit {\r\n @Input() isCollapsed: boolean = false; // 接收输入属性\r\n @Input() singleReuseUrls: string[] = []; //只能单个缓存的url\r\n ngOnInit() {}\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-header\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class RSHeaderComponent implements OnInit {\r\n @Output()\r\n toggleMenu = new EventEmitter();\r\n @Input() lastLoginTime = new Date();\r\n public translation;\r\n\r\n ngOnInit() {\r\n this.translation = JSON.parse(localStorage.getItem(\"translation\"));\r\n }\r\n\r\n isCollapsed = false;\r\n onToggleMenu() {\r\n this.isCollapsed = !this.isCollapsed;\r\n this.toggleMenu.emit(this.isCollapsed);\r\n }\r\n\r\n langOptions = [\r\n {\r\n value: 1,\r\n text: \"English\",\r\n },\r\n {\r\n value: 2,\r\n text: \"繁體中文\",\r\n },\r\n {\r\n value: 3,\r\n text: \"简体中文\",\r\n },\r\n ];\r\n currentLang = this.langOptions[0];\r\n selectLanguage(event) {\r\n this.currentLang = this.langOptions.find(\r\n (item) => item.text === event.item.text\r\n );\r\n }\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n OnInit,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'rs-footer',\r\n templateUrl: './index.component.html',\r\n styleUrls: ['./index.component.scss'],\r\n})\r\nexport class RSFooterComponent implements OnInit {\r\n today = new Date();\r\n ngOnInit() {\r\n }\r\n}\r\n","// 组件类\r\nimport {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: \"rs-aside\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class RSAsideComponent implements OnInit {\r\n constructor(public router: Router) {}\r\n @Input() isCollapsed: boolean = false; // 接收输入属性\r\n @Input() navList = [];\r\n ngOnInit() {}\r\n currentNav = null; \r\n onNavClick(item) {\r\n this.currentNav = item.title;\r\n this.router.navigate([item.url],{ state: { title: item.title }});\r\n }\r\n}\r\n","// 组件类\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-tag-input\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class TagInputComponent implements OnInit {\r\n @Input() value = [];\r\n @Input() fields;\r\n @Input() disabled = false;\r\n @Input() error = false;\r\n @Input() inputMinlength = 3;\r\n @Input() inputMaxlength = 30;\r\n\r\n @Output()\r\n valueChange = new EventEmitter();\r\n\r\n ngOnInit() {\r\n \r\n }\r\n onRemoveTag(tag) {\r\n const tagsList = this.value.filter((i) => i !== tag);\r\n this.valueChange.emit(tagsList);\r\n }\r\n\r\n onAddTag(event) {\r\n const inputValue = event.target.value;\r\n if (inputValue && this.verifyInputValue(inputValue)) {\r\n this.valueChange.emit([...this.value, inputValue]);\r\n event.target.value = \"\";\r\n }\r\n }\r\n inputError = false\r\n verifyInputValue(inputValue) {\r\n this.inputError = false\r\n const inputValueLength = inputValue.length;\r\n if (\r\n this.value.includes(inputValue) ||\r\n inputValueLength > this.inputMaxlength ||\r\n inputValueLength < this.inputMinlength\r\n ) {\r\n this.inputError = true\r\n return false;\r\n }\r\n return true;\r\n }\r\n onInput(){\r\n this.inputError = false\r\n }\r\n}\r\n","// 组件类\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-radio-group\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class RadioGroupComponent implements OnInit {\r\n @Input() value;\r\n @Input() dataSource = [];\r\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\r\n @Input() fields = { text: 'text', value: 'value', disabled: 'disabled' }\r\n @Input() disabled = false;\r\n @Input() error = false;\r\n\r\n @Output()\r\n valueChange = new EventEmitter();\r\n\r\n ngOnInit() {\r\n }\r\n onChange(event){\r\n const value = event.value\r\n this.valueChange.emit(value);\r\n }\r\n}\r\n","// 组件类\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-checkbox-group\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class CheckboxGroupComponent implements OnInit {\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n ) {}\r\n @Input() name; // 分组凭证\r\n @Input() value = [];\r\n @Input() dataSource = [];\r\n @Input() orientation: \"horizontal\" | \"vertical\" = \"horizontal\";\r\n @Input() fields = { text: \"text\", value: \"value\", disabled: \"disabled\" };\r\n @Input() disabled = false;\r\n @Input() error = false;\r\n\r\n @Output()\r\n valueChange = new EventEmitter();\r\n\r\n ngOnInit() {\r\n console.log('first',this.value)\r\n }\r\n onChange(event, option) {\r\n const originalValue = this.value;\r\n let result;\r\n if (event.checked) {\r\n result = [...originalValue, option[this.fields.value]];\r\n } else {\r\n result = originalValue.filter((val) => val !== option[this.fields.value]);\r\n }\r\n this.valueChange.emit(result);\r\n this.ref.markForCheck();\r\n }\r\n}\r\n","// 组件类\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"rs-switch-input\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class SwitchInputComponent implements OnInit {\r\n @Input() value;\r\n @Input() text;\r\n @Input() orientation: 'front' | 'behind' = 'front';\r\n @Input() disabled = false;\r\n @Input() error = false;\r\n\r\n @Output()\r\n valueChange = new EventEmitter();\r\n\r\n ngOnInit() {}\r\n onChange(event) {\r\n const value = event.checked;\r\n this.valueChange.emit(value);\r\n }\r\n onClick(){\r\n const value = !this.value;\r\n this.valueChange.emit(value);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatIconRegistry } from \"@angular/material/icon\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\n@Injectable()\r\nexport class IconLoaderService {\r\n constructor(\r\n private registry: MatIconRegistry,\r\n private domSanitizer: DomSanitizer\r\n ) {}\r\n\r\n registerIcons(list) {\r\n list.forEach(({ name, path }) => {\r\n this.registry.addSvgIcon(\r\n name,\r\n this.domSanitizer.bypassSecurityTrustResourceUrl(path)\r\n );\r\n });\r\n }\r\n}\r\n","import { AfterViewInit, Component, Inject } from \"@angular/core\";\r\nimport { MAT_SNACK_BAR_DATA, MatSnackBar } from \"@angular/material/snack-bar\";\r\n\r\nexport type LoadingProgress = {\r\n\tdone: boolean;\r\n\tpercent?: number;\r\n};\r\n\r\nexport interface NotificationConfig {\r\n\tmessage: string;\r\n\tsnackBar: MatSnackBar;\r\n\tloadingCallback: (callback: (progress: LoadingProgress) => void) => void;\r\n\tstatus?: \"Success\" | \"Warning\" | \"Error\";\r\n\ttype?: \"Text\" | \"Detail\" | \"Loading\" | \"Progress\";\r\n\ttitle?: string;\r\n};\r\n\r\n@Component({\r\n\tselector: \"kt-new-action-notification\",\r\n\ttemplateUrl: \"./new-action-notification.component.html\",\r\n\tstyleUrls: [\"./new-action-notification.component.scss\"],\r\n})\r\nexport class NewActionNotificationComponent implements AfterViewInit {\r\n\tcollapsed = false;\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_SNACK_BAR_DATA)\r\n\t\tpublic data: NotificationConfig\r\n\t) {}\r\n\r\n\tngAfterViewInit() {\r\n\t\tif (this.config.type === \"Loading\") {\r\n\t\t\tthis.config.loadingCallback((progress) => {\r\n\t\t\t\tif (progress.done) {\r\n\t\t\t\t\treturn this.config.snackBar.dismiss();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcloseNotification() {\r\n\t\tif (this.config.type === \"Loading\") {\r\n\t\t\tthis.collapsed = true;\r\n\t\t} else {\r\n\t\t\tthis.config.snackBar.dismiss();\r\n\t\t}\r\n\t}\r\n\r\n\texpandNotification() {\r\n\t\tif (this.config.type === \"Loading\" && this.collapsed) {\r\n\t\t\tthis.collapsed = false;\r\n\t\t}\r\n\t}\r\n\r\n\tget config() {\r\n\t\treturn {\r\n\t\t\tstatus: \"Success\",\r\n\t\t\ttype: \"Text\",\r\n\t\t\t...this.data,\r\n\t\t};\r\n\t}\r\n}\r\n","import { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\r\n\r\nexport interface DialogConfig {\r\n title?: string;\r\n description?: string;\r\n saveBtnLabel?: string;\r\n cancelBtnLabel?: string;\r\n showErrorIcon?: boolean;\r\n hideCloseIcon?: boolean;\r\n size?: string;\r\n hideSaveBtn?: boolean;\r\n hideCloseBtn?: boolean;\r\n}\r\n@Component({\r\n selector: \"kt-common-delete-dialog\",\r\n templateUrl: \"./index.component.html\",\r\n styleUrls: [\"./index.component.scss\"],\r\n})\r\nexport class CommonDeleteComponent implements OnInit {\r\n translation;\r\n title = \"\";\r\n saveBtnLabel = \"\";\r\n cancelBtnLabel = \"\";\r\n description = \"\";\r\n size = \"small\";\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA)\r\n public data: DialogConfig,\r\n public dialogRef: MatDialogRef<CommonDeleteComponent>\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.translation = JSON.parse(localStorage.getItem(\"translation\"));\r\n this.title =\r\n this.data.title || this.translation[\"DELETE_RECORD\"] || \".DELETE_RECORD\";\r\n this.saveBtnLabel =\r\n this.data.saveBtnLabel || this.translation.DELETE || \".DELETE\";\r\n this.cancelBtnLabel =\r\n this.data.cancelBtnLabel || this.translation.CANCEL || \".CANCEL\";\r\n this.description =\r\n this.data.description ||\r\n this.translation.IF_YOU_DELETE_THIS_RECORD_WARNING ||\r\n \".If you delete this record, you won't be able to recover it. Do you want to delete it?\";\r\n this.size = this.data.size || \"small\";\r\n }\r\n\r\n onSave(e) {\r\n this.dialogRef.close(e);\r\n }\r\n}\r\n","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\n\r\nimport {\r\n NewActionNotificationComponent,\r\n NotificationConfig,\r\n} from \"../dialog/new-action-notification/new-action-notification.component\";\r\n\r\nimport { CommonDeleteComponent } from \"../dialog/common-delete-dialog/index.component\";\r\n\r\nexport enum MessageType {\r\n Create,\r\n Read,\r\n Update,\r\n Delete,\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class DialogService {\r\n /**\r\n * Service constructor\r\n *\r\n * @param snackBar: MatSnackBar\r\n * @param dialog: MatDialog\r\n */\r\n translation = null;\r\n constructor(private snackBar: MatSnackBar, private dialog: MatDialog) {\r\n this.translation = JSON.parse(localStorage.getItem(\"translation\"));\r\n }\r\n\r\n showLoadingNotification(\r\n config: Omit<\r\n NotificationConfig,\r\n \"message\" | \"snackBar\" | \"status\" | \"type\"\r\n > & { message?: string }\r\n ) {\r\n return this.snackBar.openFromComponent(NewActionNotificationComponent, {\r\n data: {\r\n ...config,\r\n message:\r\n config.message ||\r\n this.translation.DOWNLOAD_IS_IN_PROGRESS ||\r\n \".Download is in progress\",\r\n snackBar: this.snackBar,\r\n type: \"Loading\",\r\n },\r\n verticalPosition: \"top\",\r\n horizontalPosition: \"right\",\r\n panelClass: \"new-action-notification\",\r\n });\r\n }\r\n\r\n showNotification(\r\n message: string,\r\n config?: Omit<\r\n NotificationConfig,\r\n \"message\" | \"snackBar\" | \"loadingCallback\" | \"type\"\r\n > & {\r\n duration?: number;\r\n type?: Exclude<NotificationConfig[\"type\"], \"Loading\">;\r\n }\r\n ) {\r\n return this.snackBar.openFromComponent(NewActionNotificationComponent, {\r\n data: {\r\n message,\r\n snackBar: this.snackBar,\r\n ...(config || {}),\r\n },\r\n duration: (config && config.duration) || 3000,\r\n verticalPosition: \"top\",\r\n horizontalPosition: \"right\",\r\n panelClass: \"new-action-notification\",\r\n });\r\n }\r\n // 删除确认弹窗\r\n deleteElement() {\r\n return this.dialog.open(CommonDeleteComponent, {\r\n data: {},\r\n panelClass: \"basic-small-common-dialog\",\r\n });\r\n }\r\n\r\n // 自定义文案通用弹窗的提示框\r\n showCommonDilaog(data?: {\r\n title?: string;\r\n description?: string;\r\n saveBtnLabel?: string;\r\n cancelBtnLabel?: string;\r\n showErrorIcon?: boolean;\r\n size?: string;\r\n hideSaveBtn?: boolean;\r\n }) {\r\n return this.dialog.open(CommonDeleteComponent, {\r\n data,\r\n panelClass: \"basic-small-common-dialog\",\r\n });\r\n }\r\n\r\n // 有改动未保存 的提示框\r\n showUnsavedChanges(data?: {\r\n title?: string;\r\n description?: string;\r\n saveBtnLabel?: string;\r\n cancelBtnLabel?: string;\r\n showErrorIcon?: boolean;\r\n size?: string;\r\n hideSaveBtn?: boolean;\r\n }) {\r\n let defaultData = {\r\n title: this.translation.UNSAVED_CHANGES || \".UNSAVED_CHANGES\",\r\n description:\r\n this.translation\r\n .YOU_HAVE_UNSAVED_CHANGED_ARE_YOU_SURE_YOU_WANT_TO_DISCARD_THEM ||\r\n \".YOU_HAVE_UNSAVED_CHANGED_ARE_YOU_SURE_YOU_WANT_TO_DISCARD_THEM\",\r\n saveBtnLabel: this.translation.DISCARD_CHANGES || \".DISCARD_CHANGES\",\r\n cancelBtnLabel: this.translation.CONTINUE_EDITING || \".CONTINUE_EDITING\",\r\n };\r\n if (data) {\r\n data = Object.assign(defaultData, data);\r\n } else {\r\n data = defaultData;\r\n }\r\n // data.size = \"medium\";\r\n return this.dialog.open(CommonDeleteComponent, {\r\n data,\r\n panelClass: \"basic-small-common-dialog\",\r\n });\r\n }\r\n\r\n // 保存成功提示\r\n public showSucMsg(res) {\r\n this.showMessage(res, MessageType.Create);\r\n }\r\n\r\n // 更新成功提示\r\n public showUpdateMsg(res) {\r\n this.showMessage(res, MessageType.Update);\r\n }\r\n\r\n // 删除成功提示\r\n public showDelMsg(res) {\r\n this.showMessage(res, MessageType.Delete);\r\n }\r\n\r\n // 通用提示\r\n private showMessage(res, type = MessageType.Create) {\r\n let _saveMessage = this.translation.SAVESUCCESS || \".SAVESUCCESS\";\r\n switch (type) {\r\n case MessageType.Update:\r\n _saveMessage = this.translation.UPDATESUCCESS || \".UPDATESUCCESS\";\r\n break;\r\n case MessageType.Delete:\r\n _saveMessage = this.translation.DELETESUCCESS || \".DELETESUCCESS\";\r\n break;\r\n }\r\n if (res.status === \"ERROR\") _saveMessage = res.messages[0].message;\r\n this.showNotification(_saveMessage, {\r\n status: res.status === \"ERROR\" ? \"Error\" : \"Success\",\r\n });\r\n }\r\n}\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tInput,\r\n\tContentChild,\r\n\tOutput,\r\n\tEventEmitter,\r\n} from \"@angular/core\";\r\n\r\nimport { MatDialogRef } from \"@angular/material/dialog\";\r\n\r\n@Component({\r\n\tselector: \"kt-common-dialog\",\r\n\tstyleUrls: [\"./index.component.scss\"],\r\n\ttemplateUrl: \"./index.component.html\",\r\n})\r\nexport class CommonDialogComponent implements OnInit {\r\n\tpublic translation;\r\n\r\n\t// 隐藏元素相关属性\r\n\t@Input() hideHeader = false;\r\n\t@Input() hideCloseIcon = false;\r\n\t@Input() hideCloseBtn = false;\r\n\t@Input() hideSaveBtn = false;\r\n\t@Input() saveBtnLabel = \"\";\r\n\t@Input() cancelBtnLabel = \"\";\r\n\t@Input() showErrorIcon = false;\r\n\r\n\t// 显示相关属性\r\n\t@Input() size = \"\";\r\n\t@Input() title = \"Dialog\";\r\n\t@Input() loading = false;\r\n\t@Output() saveEmit: EventEmitter<Function> = new EventEmitter<Function>();\r\n\t@Output() closeEmit: EventEmitter<Function> = new EventEmitter<Function>();\r\n\tconstructor(public dialogRef: MatDialogRef<CommonDialogComponent>) {}\r\n\r\n\t// 控制底部插槽有内容时隐藏默认按钮\r\n\t@ContentChild(\"footerSlot\", { static: true }) footerContent: any;\r\n\tcustomFooter: boolean = false;\r\n\tngAfterContentInit() {\r\n\t\tthis.customFooter = !!this.footerContent;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.getInfo();\r\n\t}\r\n\r\n\tonClose(res?) {\r\n\t\tthis.dialogRef.close(res);\r\n\t\tthis.closeEmit.emit(res);\r\n\t}\r\n\r\n\tonSave() {\r\n\t\t// 这里把关闭事件emit上去,但是必须使用箭头函数保存this对象\r\n\t\tthis.saveEmit.emit((res) => {\r\n\t\t\tthis.onClose(res);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getInfo() {\r\n\t\tthis.translation = JSON.parse(localStorage.getItem(\"translation\"));\r\n\t\tthis.saveBtnLabel =\r\n\t\t\tthis.saveBtnLabel || this.translation.SAVE || \".SAVE\";\r\n\t\tthis.cancelBtnLabel =\r\n\t\t\tthis.cancelBtnLabel || this.translation.CANCEL || \".CANCEL\";\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { ReactiveFormsModule, FormsModule } from \"@angular/forms\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport {\r\n GridModule,\r\n PageService,\r\n SortService,\r\n FilterService,\r\n ExcelExportService,\r\n EditService,\r\n ResizeService,\r\n ToolbarService,\r\n ColumnChooserService,\r\n AggregateService,\r\n ColumnMenuService,\r\n DetailRowService,\r\n SelectionService,\r\n PagerModule,\r\n GroupService,\r\n GridAllModule,\r\n} from \"@syncfusion/ej2-angular-grids\";\r\nimport {\r\n SwitchModule,\r\n CheckBoxModule,\r\n RadioButtonModule,\r\n ButtonModule,\r\n} from \"@syncfusion/ej2-angular-buttons\";\r\nimport { DiagramModule } from \"@syncfusion/ej2-angular-diagrams\";\r\nimport { TooltipModule, DialogModule } from \"@syncfusion/ej2-angular-popups\";\r\nimport {\r\n DatePickerModule,\r\n DateRangePickerModule,\r\n DateTimePickerModule,\r\n} from \"@syncfusion/ej2-angular-calendars\";\r\n\r\nimport {\r\n TextBoxModule,\r\n ColorPickerModule,\r\n UploaderModule,\r\n NumericTextBoxModule,\r\n} from \"@syncfusion/ej2-angular-inputs\";\r\nimport {\r\n DropDownListModule,\r\n MultiSelectAllModule,\r\n AutoCompleteModule,\r\n DropDownTreeModule,\r\n ListBoxModule,\r\n} from \"@syncfusion/ej2-angular-dropdowns\";\r\nimport {\r\n PivotViewAllModule,\r\n PivotFieldListAllModule,\r\n} from \"@syncfusion/ej2-angular-pivotview\";\r\nimport {\r\n ChartAllModule,\r\n AccumulationChartAllModule,\r\n RangeNavigatorAllModule,\r\n AccumulationChartModule,\r\n PieSeriesService,\r\n AccumulationLegendService,\r\n AccumulationTooltipService,\r\n AccumulationAnnotationService,\r\n AccumulationDataLabelService,\r\n} from \"@syncfusion/ej2-angular-charts\";\r\nimport { DashboardLayoutModule } from \"@syncfusion/ej2-angular-layouts\";\r\nimport {\r\n CarouselAllModule,\r\n ToolbarModule,\r\n TabModule,\r\n} from \"@syncfusion/ej2-angular-navigations\";\r\nimport {\r\n PdfViewerModule,\r\n LinkAnnotationService,\r\n BookmarkViewService,\r\n MagnificationService,\r\n ThumbnailViewService,\r\n ToolbarService as PbfToolbarService,\r\n NavigationService,\r\n TextSearchService,\r\n TextSelectionService,\r\n PrintService,\r\n} from \"@syncfusion/ej2-angular-pdfviewer\";\r\nimport {\r\n DropDownButtonModule,\r\n SplitButtonModule,\r\n} from \"@syncfusion/ej2-angular-splitbuttons\";\r\nimport {\r\n RichTextEditorAllModule,\r\n HtmlEditorService,\r\n ToolbarService as RichEditorToolbarService,\r\n} from \"@syncfusion/ej2-angular-richtexteditor\";\r\n\r\nimport { MatSnackBarModule } from \"@angular/material/snack-bar\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\n// services\r\nimport { CommonFunctionService } from \"./service/common-function.service\";\r\nimport { IconLoaderService } from \"./service/icon-loader.service\";\r\nimport { DialogService } from \"./service/dialog.service\";\r\nimport { KeepAliveService } from \"./service/keep-alive.service\";\r\n\r\nimport { CommonGridComponent } from \"./common-grid/index.component\";\r\nimport { FloatBoxComponent } from \"./float-box/index.component\";\r\n\r\nimport { RsPageListComponent } from \"./layout/page-list/index.component\";\r\nimport { RsPageTabComponent } from \"./layout/page-tab/index.component\";\r\nimport { GridBoxComponent } from \"./layout/grid-box/index.component\";\r\n\r\nimport { MainContainerComponent } from \"./layout/main-container/index.component\";\r\nimport { RSHeaderComponent } from \"./layout/rs-header/index.component\";\r\nimport { RSFooterComponent } from \"./layout/rs-footer/index.component\";\r\nimport { RSAsideComponent } from \"./layout/rs-aside/index.component\";\r\nimport { MultiTabComponent } from \"./layout/multi-tab/index.component\";\r\n\r\nimport { TagInputComponent } from \"./form/tag-input/index.component\";\r\nimport { RadioGroupComponent } from \"./form/radio-group/index.component\";\r\nimport { CheckboxGroupComponent } from \"./form/checkbox-group/index.component\";\r\nimport { SwitchInputComponent } from \"./form/switch-input/index.component\";\r\n\r\nimport { NewActionNotificationComponent } from \"./dialog/new-action-notification/new-action-notification.component\";\r\nimport { CommonDialogComponent } from \"./dialog/common-dialog/index.component\";\r\nimport { CommonDeleteComponent } from \"./dialog/common-delete-dialog/index.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n CommonGridComponent,\r\n FloatBoxComponent,\r\n RsPageListComponent,\r\n RsPageTabComponent,\r\n GridBoxComponent,\r\n RSHeaderComponent,\r\n RSFooterComponent,\r\n RSAsideComponent,\r\n MultiTabComponent,\r\n MainContainerComponent,\r\n TagInputComponent,\r\n RadioGroupComponent,\r\n CheckboxGroupComponent,\r\n SwitchInputComponent,\r\n NewActionNotificationComponent,\r\n CommonDialogComponent,\r\n CommonDeleteComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatSnackBarModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n GridModule,\r\n PagerModule,\r\n GridAllModule,\r\n SwitchModule,\r\n CheckBoxModule,\r\n RadioButtonModule,\r\n ButtonModule,\r\n DiagramModule,\r\n TooltipModule,\r\n DialogModule,\r\n DatePickerModule,\r\n DateRangePickerModule,\r\n DateTimePickerModule,\r\n TextBoxModule,\r\n ColorPickerModule,\r\n UploaderModule,\r\n NumericTextBoxModule,\r\n DropDownListModule,\r\n DropDownTreeModule,\r\n MultiSelectAllModule,\r\n AutoCompleteModule,\r\n ListBoxModule,\r\n PivotViewAllModule,\r\n PivotFieldListAllModule,\r\n ChartAllModule,\r\n AccumulationChartAllModule,\r\n RangeNavigatorAllModule,\r\n AccumulationChartModule,\r\n DashboardLayoutModule,\r\n CarouselAllModule,\r\n ToolbarModule,\r\n TabModule,\r\n PdfViewerModule,\r\n DropDownButtonModule,\r\n SplitButtonModule,\r\n RichTextEditorAllModule,\r\n ],\r\n providers: [\r\n PageService,\r\n SortService,\r\n FilterService,\r\n ExcelExportService,\r\n EditService,\r\n ResizeService,\r\n ToolbarService,\r\n ColumnChooserService,\r\n AggregateService,\r\n ColumnMenuService,\r\n DetailRowService,\r\n SelectionService,\r\n GroupService,\r\n PieSeriesService,\r\n AccumulationLegendService,\r\n AccumulationTooltipService,\r\n AccumulationAnnotationService,\r\n AccumulationDataLabelService,\r\n LinkAnnotationService,\r\n BookmarkViewService,\r\n MagnificationService,\r\n ThumbnailViewService,\r\n PbfToolbarService,\r\n NavigationService,\r\n TextSearchService,\r\n TextSelectionService,\r\n PrintService,\r\n HtmlEditorService,\r\n RichEditorToolbarService,\r\n\r\n CommonFunctionService,\r\n IconLoaderService,\r\n DialogService,\r\n KeepAliveService,\r\n ],\r\n exports: [\r\n CommonModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatSnackBarModule,\r\n MatDialogModule,\r\n GridModule,\r\n PagerModule,\r\n GridAllModule,\r\n SwitchModule,\r\n CheckBoxModule,\r\n RadioButtonModule,\r\n ButtonModule,\r\n DiagramModule,\r\n TooltipModule,\r\n DialogModule,\r\n DatePickerModule,\r\n DateRangePickerModule,\r\n DateTimePickerModule,\r\n TextBoxModule,\r\n ColorPickerModule,\r\n UploaderModule,\r\n NumericTextBoxModule,\r\n DropDownListModule,\r\n DropDownTreeModule,\r\n MultiSelectAllModule,\r\n AutoCompleteModule,\r\n ListBoxModule,\r\n PivotViewAllModule,\r\n PivotFieldListAllModule,\r\n ChartAllModule,\r\n AccumulationChartAllModule,\r\n RangeNavigatorAllModule,\r\n AccumulationChartModule,\r\n DashboardLayoutModule,\r\n CarouselAllModule,\r\n ToolbarModule,\r\n TabModule,\r\n PdfViewerModule,\r\n DropDownButtonModule,\r\n SplitButtonModule,\r\n RichTextEditorAllModule,\r\n CommonGridComponent,\r\n FloatBoxComponent,\r\n RsPageListComponent,\r\n RsPageTabComponent,\r\n GridBoxComponent,\r\n RSHeaderComponent,\r\n RSFooterComponent,\r\n RSAsideComponent,\r\n MultiTabComponent,\r\n MainContainerComponent,\r\n TagInputComponent,\r\n RadioGroupComponent,\r\n CheckboxGroupComponent,\r\n SwitchInputComponent,\r\n ],\r\n entryComponents: [\r\n NewActionNotificationComponent,\r\n CommonDialogComponent,\r\n CommonDeleteComponent,\r\n ],\r\n})\r\nexport class RaiseCommonLibModule {}\r\n"]}
|
|
@@ -20,7 +20,7 @@ export class MainContainerComponent {
|
|
|
20
20
|
MainContainerComponent.decorators = [
|
|
21
21
|
{ type: Component, args: [{
|
|
22
22
|
selector: "rs-main-container",
|
|
23
|
-
template: "<div class=\"app-main-container\">\r\n <ng-content select=\"[headerSlot]\"></ng-content>\r\n <div class=\"main-page\">\r\n <div class=\"left-aside\" [ngClass]=\"{ isCollapsed: isCollapsed }\">\r\n <ng-content select=\"[leftAsideSlot]\"></ng-content>\r\n </div>\r\n <div class=\"right-aside\">\r\n <rs-multi-tab [singleReuseUrls]=\"singleReuseUrls\"></rs-multi-tab
|
|
23
|
+
template: "<div class=\"app-main-container\">\r\n <ng-content select=\"[headerSlot]\"></ng-content>\r\n <div class=\"main-page\">\r\n <div class=\"left-aside\" [ngClass]=\"{ isCollapsed: isCollapsed }\">\r\n <ng-content select=\"[leftAsideSlot]\"></ng-content>\r\n </div>\r\n <div class=\"right-aside\">\r\n <ng-content select=\"[multiTabSlot]\"></ng-content>\r\n <!-- <rs-multi-tab [singleReuseUrls]=\"singleReuseUrls\"></rs-multi-tab> -->\r\n <div class=\"router-content\">\r\n <ng-content select=\"[routerSlot]\"></ng-content>\r\n </div>\r\n <rs-footer></rs-footer>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
24
24
|
styles: [".app-main-container{display:flex;flex-direction:column;height:100vh}.app-main-container .main-page{flex:1;height:0;display:flex;background-color:var(--rs-container-bg)}.app-main-container .left-aside{width:240px;height:100%;padding-right:16px;will-change:width;transition:width .3s}.app-main-container .left-aside.isCollapsed{width:64px;padding-right:0}.app-main-container .right-aside{width:0;flex:1;display:flex;flex-direction:column;padding-right:12px}.app-main-container .right-aside .router-content{flex:1;overflow:auto}"]
|
|
25
25
|
}] }
|
|
26
26
|
];
|
|
@@ -34,4 +34,4 @@ if (false) {
|
|
|
34
34
|
/** @type {?} */
|
|
35
35
|
MainContainerComponent.prototype.singleReuseUrls;
|
|
36
36
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9sYXlvdXQvbWFpbi1jb250YWluZXIvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQU92RSxNQUFNLE9BQU8sc0JBQXNCO0lBTG5DO1FBTVcsZ0JBQVcsR0FBWSxLQUFLLENBQUMsQ0FBQyxTQUFTOztRQUN2QyxvQkFBZSxHQUFhLEVBQUUsQ0FBQyxDQUFDLFlBQVk7SUFFdkQsQ0FBQzs7Ozs7SUFEQyxRQUFRLEtBQUksQ0FBQzs7O1lBUmQsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLGlwQkFBcUM7O2FBRXRDOzs7MEJBRUUsS0FBSzs4QkFDTCxLQUFLOzs7O0lBRE4sNkNBQXNDOztJQUN0QyxpREFBd0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDnu4Tku7bnsbtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIElucHV0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtbWFpbi1jb250YWluZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFpbkNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgaXNDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8g5o6l5pS26L6T5YWl5bGe5oCnXHJcbiAgQElucHV0KCkgc2luZ2xlUmV1c2VVcmxzOiBzdHJpbmdbXSA9IFtdOyAvL+WPquiDveWNleS4que8k+WtmOeahHVybFxyXG4gIG5nT25Jbml0KCkge31cclxufVxyXG4iXX0=
|