raise-common-lib 0.0.15 → 0.0.20

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.
Files changed (54) hide show
  1. package/bundles/raise-common-lib.umd.js +772 -71
  2. package/bundles/raise-common-lib.umd.js.map +1 -1
  3. package/bundles/raise-common-lib.umd.min.js +2 -2
  4. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  5. package/esm2015/lib/layout/grid-box/index.component.js +68 -0
  6. package/esm2015/lib/layout/main-container/index.component.js +10 -5
  7. package/esm2015/lib/layout/multi-tab/index.component.js +298 -0
  8. package/esm2015/lib/layout/page-list/index.component.js +69 -0
  9. package/esm2015/lib/layout/page-tab/index.component.js +58 -0
  10. package/esm2015/lib/layout/rs-aside/index.component.js +4 -4
  11. package/esm2015/lib/layout/rs-header/index.component.js +3 -3
  12. package/esm2015/lib/raise-common-lib.module.js +23 -8
  13. package/esm2015/lib/service/common-function.service.js +55 -1
  14. package/esm2015/lib/service/icon-loader.service.js +19 -10
  15. package/esm2015/lib/service/keep-alive.service.js +88 -0
  16. package/esm2015/public-api.js +6 -2
  17. package/esm2015/raise-common-lib.js +2 -2
  18. package/esm5/lib/layout/grid-box/index.component.js +80 -0
  19. package/esm5/lib/layout/main-container/index.component.js +11 -6
  20. package/esm5/lib/layout/multi-tab/index.component.js +347 -0
  21. package/esm5/lib/layout/page-list/index.component.js +81 -0
  22. package/esm5/lib/layout/page-tab/index.component.js +67 -0
  23. package/esm5/lib/layout/rs-aside/index.component.js +4 -4
  24. package/esm5/lib/layout/rs-header/index.component.js +3 -3
  25. package/esm5/lib/raise-common-lib.module.js +23 -8
  26. package/esm5/lib/service/common-function.service.js +67 -1
  27. package/esm5/lib/service/icon-loader.service.js +18 -9
  28. package/esm5/lib/service/keep-alive.service.js +129 -0
  29. package/esm5/public-api.js +6 -2
  30. package/esm5/raise-common-lib.js +2 -2
  31. package/fesm2015/raise-common-lib.js +643 -62
  32. package/fesm2015/raise-common-lib.js.map +1 -1
  33. package/fesm5/raise-common-lib.js +771 -72
  34. package/fesm5/raise-common-lib.js.map +1 -1
  35. package/lib/layout/{common-list → grid-box}/index.component.d.ts +1 -1
  36. package/lib/layout/main-container/index.component.d.ts +1 -0
  37. package/lib/layout/multi-tab/index.component.d.ts +37 -0
  38. package/lib/layout/page-list/index.component.d.ts +12 -0
  39. package/lib/layout/page-tab/index.component.d.ts +11 -0
  40. package/lib/service/common-function.service.d.ts +2 -0
  41. package/lib/service/icon-loader.service.d.ts +5 -3
  42. package/lib/service/keep-alive.service.d.ts +11 -0
  43. package/package.json +1 -1
  44. package/public-api.d.ts +5 -1
  45. package/raise-common-lib.metadata.json +1 -1
  46. package/src/assets/img/close-url.svg +10 -0
  47. package/src/assets/img/desktop-refresh-btn.svg +6 -0
  48. package/src/assets/img/icon-more-active.svg +7 -0
  49. package/src/assets/img/icon-more.svg +7 -0
  50. package/src/assets/img/split-button-arrow copy.svg +3 -0
  51. package/src/assets/img/split-button-arrow.svg +3 -0
  52. package/src/assets/style/reset/button.scss +38 -3
  53. package/esm2015/lib/layout/common-list/index.component.js +0 -69
  54. package/esm5/lib/layout/common-list/index.component.js +0 -81
@@ -1,8 +1,10 @@
1
- import { EventEmitter, Component, ChangeDetectorRef, ViewChild, Input, Output, ContentChild, Injectable, ɵɵdefineInjectable, Inject, ɵɵinject, NgModule } from '@angular/core';
1
+ import { EventEmitter, Component, ChangeDetectorRef, ViewChild, Input, Output, ContentChild, TemplateRef, Injectable, ɵɵdefineInjectable, HostListener, Inject, ɵɵinject, NgModule } from '@angular/core';
2
2
  import { GridModule, PagerModule, GridAllModule, PageService, SortService, FilterService, ExcelExportService, EditService, ResizeService, ToolbarService, ColumnChooserService, AggregateService, ColumnMenuService, DetailRowService, SelectionService, GroupService } from '@syncfusion/ej2-angular-grids';
3
3
  import { debounce } from 'lodash';
4
- import { Router } from '@angular/router';
5
- import { SvgIconRegistryService, AngularSvgIconModule } from 'angular-svg-icon';
4
+ import { NavigationEnd, Router, ActivatedRoute } from '@angular/router';
5
+ import { filter } from 'rxjs/operators';
6
+ import { MatIconRegistry, MatIconModule } from '@angular/material/icon';
7
+ import { DomSanitizer } from '@angular/platform-browser';
6
8
  import { MAT_SNACK_BAR_DATA, MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';
7
9
  import { MAT_DIALOG_DATA, MatDialogRef, MatDialog, MatDialogModule } from '@angular/material/dialog';
8
10
  import { ReactiveFormsModule, FormsModule } from '@angular/forms';
@@ -17,9 +19,9 @@ import { DropDownListModule, DropDownTreeModule, MultiSelectAllModule, AutoCompl
17
19
  import { PivotViewAllModule, PivotFieldListAllModule } from '@syncfusion/ej2-angular-pivotview';
18
20
  import { ChartAllModule, AccumulationChartAllModule, RangeNavigatorAllModule, AccumulationChartModule, PieSeriesService, AccumulationLegendService, AccumulationTooltipService, AccumulationAnnotationService, AccumulationDataLabelService } from '@syncfusion/ej2-angular-charts';
19
21
  import { DashboardLayoutModule } from '@syncfusion/ej2-angular-layouts';
20
- import { CarouselAllModule, ToolbarModule } from '@syncfusion/ej2-angular-navigations';
22
+ import { CarouselAllModule, ToolbarModule, TabModule } from '@syncfusion/ej2-angular-navigations';
21
23
  import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, ToolbarService as ToolbarService$1, NavigationService, TextSearchService, TextSelectionService, PrintService } from '@syncfusion/ej2-angular-pdfviewer';
22
- import { DropDownButtonModule } from '@syncfusion/ej2-angular-splitbuttons';
24
+ import { DropDownButtonModule, SplitButtonModule } from '@syncfusion/ej2-angular-splitbuttons';
23
25
  import { RichTextEditorAllModule, HtmlEditorService, ToolbarService as ToolbarService$2 } from '@syncfusion/ej2-angular-richtexteditor';
24
26
 
25
27
  /**
@@ -1031,10 +1033,10 @@ if (false) {
1031
1033
 
1032
1034
  /**
1033
1035
  * @fileoverview added by tsickle
1034
- * Generated from: lib/layout/common-list/index.component.ts
1036
+ * Generated from: lib/layout/page-list/index.component.ts
1035
1037
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1036
1038
  */
1037
- class CommonListComponent {
1039
+ class RsPageListComponent {
1038
1040
  constructor() {
1039
1041
  this.customPageTitle = false;
1040
1042
  this.isInner = false;
@@ -1063,14 +1065,14 @@ class CommonListComponent {
1063
1065
  this.debouncedInput();
1064
1066
  }
1065
1067
  }
1066
- CommonListComponent.decorators = [
1068
+ RsPageListComponent.decorators = [
1067
1069
  { type: Component, args: [{
1068
- selector: 'rs-common-list',
1069
- template: "<div class=\"rs-page-list-wrap\" [ngClass]=\"{ 'is-not-inner': !isInner }\">\r\n <ng-container *ngIf=\"customPageTitle; else defaultTitle\">\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultTitle>\r\n <div class=\"rs-page-title\" *ngIf=\"pageTitle\">{{ pageTitle }}</div>\r\n </ng-template>\r\n <div class=\"rs-content-wrap\">\r\n <ng-content select=\"[tabSlot]\"></ng-content>\r\n <div class=\"rs-toolbar-wrap\">\r\n <div class=\"rs-left-col\">\r\n <ng-content select=\"[leftToolbarBtnSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-right-col\">\r\n <ng-content select=\"[rightToolbarBtnSlot]\"></ng-content>\r\n <div class=\"rs-search-input\">\r\n <ejs-textbox\r\n type=\"text\"\r\n class=\"e-input\"\r\n [(ngModel)]=\"searchValue\"\r\n (input)=\"onInput()\"\r\n placeholder=\"Search all fields\"\r\n [showClearButton]=\"true\"\r\n autocomplete=\"off\"\r\n ></ejs-textbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"rs-grid-wrap\">\r\n <ng-content select=\"[gridSlot]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
1070
- styles: [".rs-page-list-wrap{height:100%;display:flex;flex-direction:column;position:relative;margin:0 auto;max-width:1885px}.rs-page-list-wrap .rs-page-title{font-family:var(--rs-font-family);font-size:var(--rs-page-title-font-size);font-weight:700;text-align:left;color:var(--rs-page-title-color);display:flex;align-items:center;padding:16px 8px 12px 20px}.rs-page-list-wrap .rs-content-wrap{display:flex;flex-direction:column;flex:1;height:0}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-left-col,.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col{display:flex;gap:12px}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-left-col ::ng-deep .e-btn,.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col ::ng-deep .e-btn{height:28px}.rs-page-list-wrap .rs-content-wrap .rs-grid-wrap{flex:1;height:0}.rs-page-list-wrap.is-not-inner .rs-content-wrap{border-radius:15px;padding:12px 20px;background:#fff;border:1px solid var(--rs-border-color);box-shadow:0 0 4px 0 rgba(0,0,0,.1)}.rs-page-list-wrap .rs-search-input{width:240px}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group{border-radius:14px!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group.e-input-focus,.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group:hover{box-shadow:0 0 3px 0 rgba(31,123,255,.4)!important;border-color:var(--rs-input-hover-border-color)!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group.e-input-focus input.e-input,.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group:hover input.e-input{box-shadow:none!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group input.e-input{width:calc(100% - 50px);height:26px}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group::before{content:\"\"!important;margin:6px 0 0 8px;display:block;width:16px;height:16px;background-image:url(/assets/img/search.svg);background-size:cover;background-position:center}"]
1070
+ selector: 'rs-page-list',
1071
+ template: "<div class=\"rs-page-list-wrap\" [ngClass]=\"{ 'is-not-inner': !isInner }\">\r\n <ng-container *ngIf=\"customPageTitle; else defaultTitle\">\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultTitle>\r\n <div class=\"rs-page-title\" *ngIf=\"pageTitle\">{{ pageTitle }}</div>\r\n </ng-template>\r\n <div class=\"rs-content-wrap\">\r\n <div class=\"rs-toolbar-wrap\">\r\n <div class=\"rs-left-col\">\r\n <ng-content select=\"[leftToolbarBtnSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-right-col\">\r\n <ng-content select=\"[rightToolbarBtnSlot]\"></ng-content>\r\n <div class=\"rs-search-input\">\r\n <ejs-textbox\r\n type=\"text\"\r\n class=\"e-input\"\r\n [(ngModel)]=\"searchValue\"\r\n (input)=\"onInput()\"\r\n placeholder=\"Search all fields\"\r\n [showClearButton]=\"true\"\r\n autocomplete=\"off\"\r\n ></ejs-textbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"rs-grid-wrap\">\r\n <ng-content select=\"[gridSlot]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
1072
+ styles: [".rs-page-list-wrap{height:100%;display:flex;flex-direction:column;position:relative;margin:0 auto;max-width:1885px}.rs-page-list-wrap .rs-page-title{font-family:var(--rs-font-family);font-size:var(--rs-page-title-font-size);font-weight:700;text-align:left;color:var(--rs-page-title-color);display:flex;align-items:center;padding:16px 8px 12px 20px}.rs-page-list-wrap .rs-content-wrap{display:flex;flex-direction:column;flex:1;height:0}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-left-col,.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col{display:flex;gap:12px}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-left-col ::ng-deep .e-btn,.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col ::ng-deep .e-btn{height:28px}.rs-page-list-wrap .rs-content-wrap .rs-grid-wrap{flex:1;height:0}.rs-page-list-wrap.is-not-inner .rs-content-wrap{border-radius:15px;padding:12px 20px;background:#fff;border:1px solid var(--rs-border-color);box-shadow:0 0 4px 0 rgba(0,0,0,.1)}.rs-page-list-wrap .rs-search-input{width:240px}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group{border-radius:14px!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group.e-input-focus,.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group:hover{box-shadow:0 0 3px 0 rgba(31,123,255,.4)!important;border-color:var(--rs-input-hover-border-color)!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group.e-input-focus input.e-input,.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group:hover input.e-input{box-shadow:none!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group input.e-input{width:calc(100% - 50px);height:26px}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group input.e-input:hover{box-shadow:none!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group::before{content:\"\"!important;margin:6px 0 0 8px;display:block;width:16px;height:16px;background-image:url(/assets/img/search.svg);background-size:cover;background-position:center}"]
1071
1073
  }] }
1072
1074
  ];
1073
- CommonListComponent.propDecorators = {
1075
+ RsPageListComponent.propDecorators = {
1074
1076
  gridContent: [{ type: ContentChild, args: [CommonGridComponent, { static: true },] }],
1075
1077
  pageTitle: [{ type: Input }],
1076
1078
  customPageTitle: [{ type: Input }],
@@ -1078,20 +1080,598 @@ CommonListComponent.propDecorators = {
1078
1080
  };
1079
1081
  if (false) {
1080
1082
  /** @type {?} */
1081
- CommonListComponent.prototype.gridContent;
1083
+ RsPageListComponent.prototype.gridContent;
1082
1084
  /** @type {?} */
1083
- CommonListComponent.prototype.pageTitle;
1085
+ RsPageListComponent.prototype.pageTitle;
1084
1086
  /** @type {?} */
1085
- CommonListComponent.prototype.customPageTitle;
1087
+ RsPageListComponent.prototype.customPageTitle;
1086
1088
  /** @type {?} */
1087
- CommonListComponent.prototype.isInner;
1089
+ RsPageListComponent.prototype.isInner;
1088
1090
  /**
1089
1091
  * @type {?}
1090
1092
  * @private
1091
1093
  */
1092
- CommonListComponent.prototype.debouncedInput;
1094
+ RsPageListComponent.prototype.debouncedInput;
1093
1095
  /** @type {?} */
1094
- CommonListComponent.prototype.searchValue;
1096
+ RsPageListComponent.prototype.searchValue;
1097
+ }
1098
+
1099
+ /**
1100
+ * @fileoverview added by tsickle
1101
+ * Generated from: lib/layout/page-tab/index.component.ts
1102
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1103
+ */
1104
+ class RsPageTabComponent {
1105
+ constructor() {
1106
+ this.customPageTitle = false;
1107
+ this.tabList = [];
1108
+ this.tabChange = new EventEmitter();
1109
+ this.animation = {
1110
+ previous: { effect: "", duration: 0, easing: "" },
1111
+ next: { effect: "", duration: 0, easing: "" },
1112
+ };
1113
+ }
1114
+ /**
1115
+ * @return {?}
1116
+ */
1117
+ ngOnInit() { }
1118
+ /**
1119
+ * @param {?} e
1120
+ * @return {?}
1121
+ */
1122
+ onTabClick(e) {
1123
+ this.tabChange.emit(this.tabList[e.selectedIndex]);
1124
+ }
1125
+ }
1126
+ RsPageTabComponent.decorators = [
1127
+ { type: Component, args: [{
1128
+ selector: "rs-page-tab",
1129
+ template: "<div class=\"rs-page-list-wrap\">\r\n <ng-container *ngIf=\"customPageTitle; else defaultTitle\">\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultTitle>\r\n <div class=\"rs-page-title\" *ngIf=\"pageTitle\">{{ pageTitle }}</div>\r\n </ng-template>\r\n <ejs-tab\r\n class=\"rs-tab\"\r\n (selected)=\"onTabClick($event)\"\r\n [animation]=\"animation\"\r\n\toverflowMode=\"Popup\"\r\n heightAdjustMode=\"None\"\r\n >\r\n <e-tabitems>\r\n <e-tabitem *ngFor=\"let item of tabList\">\r\n <ng-template #headerText>\r\n <div>{{ item.title }}</div>\r\n </ng-template>\r\n </e-tabitem>\r\n </e-tabitems>\r\n </ejs-tab>\r\n <div class=\"rs-grid-wrap\">\r\n <ng-content select=\"[tabContentSlot]\"></ng-content>\r\n </div>\r\n</div>\r\n",
1130
+ styles: [".rs-page-list-wrap{height:100%;display:flex;flex-direction:column;position:relative;margin:0 auto;max-width:1885px}.rs-page-list-wrap .rs-page-title{font-family:var(--rs-font-family);font-size:var(--rs-page-title-font-size);font-weight:700;text-align:left;color:var(--rs-page-title-color);display:flex;align-items:center;padding:16px 8px 12px 20px}.rs-page-list-wrap .rs-tab{padding:0 20px}.rs-page-list-wrap .rs-tab .e-tab-header::before{display:none}.rs-page-list-wrap .rs-tab .e-toolbar-items{gap:32px;min-height:36px}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item{border:0}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item .e-tab-wrap{padding:0;border:0;position:relative;height:36px}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item .e-tab-wrap::before{content:\" \";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:transparent}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item .e-tab-text{color:#5f6f81;font-family:Arial;font-size:13px;font-style:normal;font-weight:400;line-height:16px}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item.e-active .e-tab-wrap::before{background-color:#1f7bff}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item.e-active .e-tab-text{color:#44566c}.rs-page-list-wrap .rs-tab .e-hor-nav{width:24px;height:24px;min-height:24px;top:3px;border-radius:4px;background-color:transparent!important;border:1px solid #eaedf0!important}.rs-page-list-wrap .rs-tab .e-hor-nav .e-icons{box-shadow:none;background-color:transparent!important;border-color:transparent!important;background-image:url(../../assets/img/icon-more.svg);background-size:14px 3px;background-repeat:no-repeat;background-position:4px 14px}.rs-page-list-wrap .rs-tab .e-hor-nav .e-icons::before{display:none}.rs-page-list-wrap .rs-tab .e-hor-nav .e-icons:hover{background-color:#eff5fb!important;border-color:#b1d0fc!important;background-image:url(../../assets/img/icon-more-active.svg)}.rs-page-list-wrap .rs-tab .e-toolbar-pop{min-width:160px;border-radius:10px;background:#fff;box-shadow:0 0 8px 0 rgba(0,0,0,.25);padding:8px}.rs-page-list-wrap .rs-tab .e-toolbar-pop .e-toolbar-item .e-tab-wrap{padding:0 8px}.rs-page-list-wrap .rs-tab .e-toolbar-pop .e-toolbar-item .e-tab-wrap .e-tab-text{color:#44566c;font-family:Arial;font-size:13px;font-weight:400;line-height:16px}.rs-page-list-wrap .rs-tab .e-toolbar-pop .e-toolbar-item .e-tab-wrap:hover{border-radius:6px;background:rgba(31,123,255,.05)}.rs-page-list-wrap .rs-grid-wrap{flex:1;height:0}"]
1131
+ }] }
1132
+ ];
1133
+ RsPageTabComponent.propDecorators = {
1134
+ pageTitle: [{ type: Input }],
1135
+ customPageTitle: [{ type: Input }],
1136
+ tabList: [{ type: Input }],
1137
+ currentTab: [{ type: Input }],
1138
+ tabChange: [{ type: Output }]
1139
+ };
1140
+ if (false) {
1141
+ /** @type {?} */
1142
+ RsPageTabComponent.prototype.pageTitle;
1143
+ /** @type {?} */
1144
+ RsPageTabComponent.prototype.customPageTitle;
1145
+ /** @type {?} */
1146
+ RsPageTabComponent.prototype.tabList;
1147
+ /** @type {?} */
1148
+ RsPageTabComponent.prototype.currentTab;
1149
+ /** @type {?} */
1150
+ RsPageTabComponent.prototype.tabChange;
1151
+ /** @type {?} */
1152
+ RsPageTabComponent.prototype.animation;
1153
+ }
1154
+
1155
+ /**
1156
+ * @fileoverview added by tsickle
1157
+ * Generated from: lib/layout/grid-box/index.component.ts
1158
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1159
+ */
1160
+ class GridBoxComponent {
1161
+ constructor() {
1162
+ this.customPageTitle = false;
1163
+ this.isInner = false;
1164
+ }
1165
+ /**
1166
+ * @return {?}
1167
+ */
1168
+ ngOnInit() {
1169
+ this.debouncedInput = debounce((/**
1170
+ * @return {?}
1171
+ */
1172
+ () => {
1173
+ this.onSeach();
1174
+ }), 300);
1175
+ }
1176
+ /**
1177
+ * @return {?}
1178
+ */
1179
+ onSeach() {
1180
+ this.gridContent.grid.search(this.searchValue);
1181
+ }
1182
+ /**
1183
+ * @return {?}
1184
+ */
1185
+ onInput() {
1186
+ this.debouncedInput();
1187
+ }
1188
+ }
1189
+ GridBoxComponent.decorators = [
1190
+ { type: Component, args: [{
1191
+ selector: 'rs-grid-box',
1192
+ template: "<div class=\"rs-grid-box\" [ngClass]=\"{ 'is-not-inner': !isInner }\">\r\n <div class=\"rs-toolbar-wrap\">\r\n <div class=\"rs-left-col\">\r\n <ng-content select=\"[leftToolbarBtnSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-right-col\">\r\n <ng-content select=\"[rightToolbarBtnSlot]\"></ng-content>\r\n <div class=\"rs-search-input\">\r\n <ejs-textbox\r\n type=\"text\"\r\n class=\"e-input\"\r\n [(ngModel)]=\"searchValue\"\r\n (input)=\"onInput()\"\r\n placeholder=\"Search all fields\"\r\n [showClearButton]=\"true\"\r\n autocomplete=\"off\"\r\n ></ejs-textbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"rs-grid-wrap\">\r\n <ng-content select=\"[gridSlot]\"></ng-content>\r\n </div>\r\n</div>\r\n",
1193
+ styles: [":host{height:100%}.rs-grid-box{display:flex;flex-direction:column;height:100%}.rs-grid-box.is-not-inner{border-radius:15px;padding:12px 20px;background:#fff;border:1px solid var(--rs-border-color);box-shadow:0 0 4px 0 rgba(0,0,0,.1)}.rs-grid-box .rs-toolbar-wrap{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.rs-grid-box .rs-toolbar-wrap .rs-left-col,.rs-grid-box .rs-toolbar-wrap .rs-right-col{display:flex;gap:12px}.rs-grid-box .rs-toolbar-wrap .rs-left-col ::ng-deep .e-btn,.rs-grid-box .rs-toolbar-wrap .rs-right-col ::ng-deep .e-btn{height:28px}.rs-grid-box .rs-grid-wrap{flex:1;height:0}.rs-grid-box .rs-search-input{width:240px}.rs-grid-box .rs-search-input ::ng-deep .e-input-group{border-radius:14px!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group.e-input-focus,.rs-grid-box .rs-search-input ::ng-deep .e-input-group:hover{box-shadow:0 0 3px 0 rgba(31,123,255,.4)!important;border-color:var(--rs-input-hover-border-color)!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group.e-input-focus input.e-input,.rs-grid-box .rs-search-input ::ng-deep .e-input-group:hover input.e-input{box-shadow:none!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group input.e-input{width:calc(100% - 50px);height:26px}.rs-grid-box .rs-search-input ::ng-deep .e-input-group input.e-input:hover{box-shadow:none!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group::before{content:\"\"!important;margin:6px 0 0 8px;display:block;width:16px;height:16px;background-image:url(/assets/img/search.svg);background-size:cover;background-position:center}"]
1194
+ }] }
1195
+ ];
1196
+ GridBoxComponent.propDecorators = {
1197
+ gridContent: [{ type: ContentChild, args: [TemplateRef, { static: true },] }],
1198
+ pageTitle: [{ type: Input }],
1199
+ customPageTitle: [{ type: Input }],
1200
+ isInner: [{ type: Input }]
1201
+ };
1202
+ if (false) {
1203
+ /** @type {?} */
1204
+ GridBoxComponent.prototype.gridContent;
1205
+ /** @type {?} */
1206
+ GridBoxComponent.prototype.pageTitle;
1207
+ /** @type {?} */
1208
+ GridBoxComponent.prototype.customPageTitle;
1209
+ /** @type {?} */
1210
+ GridBoxComponent.prototype.isInner;
1211
+ /**
1212
+ * @type {?}
1213
+ * @private
1214
+ */
1215
+ GridBoxComponent.prototype.debouncedInput;
1216
+ /** @type {?} */
1217
+ GridBoxComponent.prototype.searchValue;
1218
+ }
1219
+
1220
+ /**
1221
+ * @fileoverview added by tsickle
1222
+ * Generated from: lib/service/common-function.service.ts
1223
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1224
+ */
1225
+ class CommonFunctionService {
1226
+ constructor() { }
1227
+ /**
1228
+ * @return {?}
1229
+ */
1230
+ testMethod() {
1231
+ return "test1111";
1232
+ }
1233
+ /**
1234
+ * @param {?} text
1235
+ * @param {?=} maxWidth
1236
+ * @param {?=} fontSize
1237
+ * @return {?}
1238
+ */
1239
+ setMiddleEllipsis(text, maxWidth = 150, fontSize = 13) {
1240
+ /** @type {?} */
1241
+ const canvas = document.createElement("canvas");
1242
+ /** @type {?} */
1243
+ const context = canvas.getContext("2d");
1244
+ context.font = `${fontSize}px Arial`;
1245
+ /** @type {?} */
1246
+ let width = context.measureText(text).width;
1247
+ if (width <= maxWidth) {
1248
+ return text;
1249
+ }
1250
+ maxWidth = Math.floor(maxWidth - context.measureText("...").width);
1251
+ /** @type {?} */
1252
+ let firstPart = "";
1253
+ /** @type {?} */
1254
+ let secondPart = "";
1255
+ /** @type {?} */
1256
+ let half = Math.floor(maxWidth / 2);
1257
+ for (let i = 0; i < text.length; i++) {
1258
+ firstPart += text[i];
1259
+ width = context.measureText(firstPart).width;
1260
+ if (width > half) {
1261
+ break;
1262
+ }
1263
+ }
1264
+ for (let i = text.length - 1; i >= 0; i--) {
1265
+ secondPart = text[i] + secondPart;
1266
+ width = context.measureText(secondPart).width;
1267
+ if (width > half) {
1268
+ break;
1269
+ }
1270
+ }
1271
+ return firstPart + "..." + secondPart;
1272
+ }
1273
+ /**
1274
+ * @param {?} url
1275
+ * @return {?}
1276
+ */
1277
+ getPureUrl(url) {
1278
+ if (url) {
1279
+ // 如果params的value 携带查询参数, 则截取前面部分
1280
+ url = decodeURIComponent(url);
1281
+ if (url.includes("?")) {
1282
+ url = url.split("?")[0];
1283
+ }
1284
+ }
1285
+ return url;
1286
+ }
1287
+ }
1288
+ CommonFunctionService.decorators = [
1289
+ { type: Injectable, args: [{
1290
+ providedIn: "root",
1291
+ },] }
1292
+ ];
1293
+ /** @nocollapse */
1294
+ CommonFunctionService.ctorParameters = () => [];
1295
+ /** @nocollapse */ CommonFunctionService.ngInjectableDef = ɵɵdefineInjectable({ factory: function CommonFunctionService_Factory() { return new CommonFunctionService(); }, token: CommonFunctionService, providedIn: "root" });
1296
+
1297
+ /**
1298
+ * @fileoverview added by tsickle
1299
+ * Generated from: lib/service/keep-alive.service.ts
1300
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1301
+ */
1302
+ /** @type {?} */
1303
+ const storedRoutes = {};
1304
+ /** @type {?} */
1305
+ let toBeDeleteUrl;
1306
+ /** @type {?} */
1307
+ let excludeRoutes = [];
1308
+ // 不需要缓存的url
1309
+ class KeepAliveService {
1310
+ /**
1311
+ * @param {?} routes
1312
+ * @return {?}
1313
+ */
1314
+ setExcludeRoutes(routes) {
1315
+ excludeRoutes = routes; // 设置不缓存的路由
1316
+ }
1317
+ /**
1318
+ * @param {?} route
1319
+ * @return {?}
1320
+ */
1321
+ shouldDetach(route) {
1322
+ if (toBeDeleteUrl === this.getRoutePath(route)) {
1323
+ // 对于新开的又即将关闭的tab,不缓存
1324
+ toBeDeleteUrl = "";
1325
+ return false;
1326
+ }
1327
+ return !excludeRoutes.includes(route.routeConfig.path);
1328
+ }
1329
+ /**
1330
+ * @param {?} route
1331
+ * @param {?} handle
1332
+ * @return {?}
1333
+ */
1334
+ store(route, handle) {
1335
+ // console.log("store", this.getRoutePath(route));
1336
+ // console.log("store", storedRoutes);
1337
+ storedRoutes[this.getRoutePath(route)] = handle;
1338
+ }
1339
+ /**
1340
+ * @param {?} route
1341
+ * @return {?}
1342
+ */
1343
+ shouldAttach(route) {
1344
+ return !!storedRoutes[this.getRoutePath(route)];
1345
+ }
1346
+ /**
1347
+ * @param {?} route
1348
+ * @return {?}
1349
+ */
1350
+ retrieve(route) {
1351
+ return storedRoutes[this.getRoutePath(route)];
1352
+ }
1353
+ /**
1354
+ * @param {?} future
1355
+ * @param {?} curr
1356
+ * @return {?}
1357
+ */
1358
+ shouldReuseRoute(future, curr) {
1359
+ // console.log("shouldReuseRoute");
1360
+ return this.getRoutePath(future) === this.getRoutePath(curr); // 复用相同的路由
1361
+ }
1362
+ /**
1363
+ * @param {?} route
1364
+ * @return {?}
1365
+ */
1366
+ getRoutePath(route) {
1367
+ if (route.routeConfig) {
1368
+ // const pathParams = JSON.stringify(route.params);
1369
+ /** @type {?} */
1370
+ const queryParams = new URLSearchParams(route.queryParams).toString();
1371
+ return route._routerState.url + (queryParams ? "?" + queryParams : "");
1372
+ }
1373
+ return "";
1374
+ }
1375
+ /**
1376
+ * @param {?} path
1377
+ * @return {?}
1378
+ */
1379
+ clearCache(path) {
1380
+ toBeDeleteUrl = path;
1381
+ delete storedRoutes[path]; // 清除指定路径的缓存
1382
+ }
1383
+ }
1384
+
1385
+ /**
1386
+ * @fileoverview added by tsickle
1387
+ * Generated from: lib/layout/multi-tab/index.component.ts
1388
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1389
+ */
1390
+ class MultiTabComponent {
1391
+ /**
1392
+ * @param {?} router
1393
+ * @param {?} cf
1394
+ * @param {?} activatedRoute
1395
+ * @param {?} keepAlive
1396
+ */
1397
+ constructor(router, cf, activatedRoute, keepAlive) {
1398
+ this.router = router;
1399
+ this.cf = cf;
1400
+ this.activatedRoute = activatedRoute;
1401
+ this.keepAlive = keepAlive;
1402
+ this.singleReuseUrls = []; //只能单个缓存的url
1403
+ //只能单个缓存的url
1404
+ this.TAB_WIDTH = 164;
1405
+ this.GAP_NORMAL = 54;
1406
+ this.GAP_SMALL = 30;
1407
+ this.tabList = [];
1408
+ this.selectedTab = 0;
1409
+ this.maxTabs = 10;
1410
+ this.screenWidth = window.innerWidth; // 初始化屏幕宽度
1411
+ }
1412
+ // 初始化屏幕宽度
1413
+ /**
1414
+ * @param {?} event
1415
+ * @return {?}
1416
+ */
1417
+ onResize(event) {
1418
+ this.screenWidth = window.innerWidth; // 更新屏幕宽度
1419
+ this.setEllipsisTitle();
1420
+ }
1421
+ /**
1422
+ * @return {?}
1423
+ */
1424
+ ngOnInit() {
1425
+ this.initTab();
1426
+ this.router.events
1427
+ .pipe(filter((/**
1428
+ * @param {?} event
1429
+ * @return {?}
1430
+ */
1431
+ (event) => event instanceof NavigationEnd)))
1432
+ .subscribe((/**
1433
+ * @return {?}
1434
+ */
1435
+ () => {
1436
+ /** @type {?} */
1437
+ const navigation = this.router.getCurrentNavigation();
1438
+ if (navigation) {
1439
+ /** @type {?} */
1440
+ const state = navigation.extras.state;
1441
+ // 获取传递的 state
1442
+ /** @type {?} */
1443
+ const currentRoute = this.router.routerState.root.firstChild;
1444
+ if (currentRoute) {
1445
+ this.setTab(this.router.url, currentRoute.snapshot.routeConfig.path, state && state.title);
1446
+ }
1447
+ }
1448
+ }));
1449
+ this.setEllipsisTitle();
1450
+ }
1451
+ /**
1452
+ * @param {?=} title
1453
+ * @return {?}
1454
+ */
1455
+ setEllipsisTitle(title) {
1456
+ this.textGap = this.GAP_NORMAL;
1457
+ if (this.screenWidth <= 1100) {
1458
+ this.textGap = this.GAP_SMALL;
1459
+ }
1460
+ let { allWidth, leftWidth, rightWidth } = this.calcTabWidth();
1461
+ /** @type {?} */
1462
+ let width = Math.floor((allWidth - rightWidth) / (this.tabList && this.tabList.length));
1463
+ if (title) {
1464
+ return this.cf.setMiddleEllipsis(title, width > this.TAB_WIDTH
1465
+ ? this.TAB_WIDTH - this.textGap
1466
+ : width - this.textGap, 12);
1467
+ }
1468
+ else {
1469
+ this.tabList.forEach((/**
1470
+ * @param {?} ele
1471
+ * @param {?} idx
1472
+ * @return {?}
1473
+ */
1474
+ (ele, idx) => {
1475
+ ele.displayTitle = this.cf.setMiddleEllipsis(ele.title, width > this.TAB_WIDTH
1476
+ ? this.TAB_WIDTH - this.textGap
1477
+ : width - this.textGap, 12);
1478
+ }));
1479
+ }
1480
+ }
1481
+ /**
1482
+ * @return {?}
1483
+ */
1484
+ calcTabWidth() {
1485
+ /** @type {?} */
1486
+ const wrap = document.querySelector(".rs-multi-tab");
1487
+ /** @type {?} */
1488
+ const ulElement = document.querySelector(".rs-multi-tab > ul");
1489
+ /** @type {?} */
1490
+ const refreshTabDiv = document.querySelector(".rs-multi-tab .refresh-tab");
1491
+ /** @type {?} */
1492
+ let allWidth;
1493
+ /** @type {?} */
1494
+ let leftWidth;
1495
+ /** @type {?} */
1496
+ let rightWidth;
1497
+ if (wrap && ulElement && refreshTabDiv) {
1498
+ // 获取元素的位置信息
1499
+ /** @type {?} */
1500
+ const wrapRect = wrap.getBoundingClientRect();
1501
+ /** @type {?} */
1502
+ const ulRect = ulElement.getBoundingClientRect();
1503
+ /** @type {?} */
1504
+ const refreshTabRect = refreshTabDiv.getBoundingClientRect();
1505
+ allWidth = wrapRect.width;
1506
+ leftWidth = ulRect.width;
1507
+ rightWidth = refreshTabRect.width;
1508
+ }
1509
+ return {
1510
+ allWidth,
1511
+ leftWidth,
1512
+ rightWidth,
1513
+ };
1514
+ }
1515
+ /**
1516
+ * @return {?}
1517
+ */
1518
+ initTab() {
1519
+ /** @type {?} */
1520
+ let TabCache = JSON.parse(sessionStorage.getItem("TabCache"));
1521
+ this.tabList = TabCache || [];
1522
+ }
1523
+ /**
1524
+ * @param {?} tab
1525
+ * @param {?} idx
1526
+ * @return {?}
1527
+ */
1528
+ closeTab(tab, idx) {
1529
+ this.tabList = this.tabList.filter((/**
1530
+ * @param {?} ele
1531
+ * @return {?}
1532
+ */
1533
+ (ele) => ele.url !== tab.url));
1534
+ this.clearCache(tab.url);
1535
+ if (this.selectedTab === idx) {
1536
+ /** @type {?} */
1537
+ const targetIdx = Math.max(0, idx - 1);
1538
+ this.changeTab(this.tabList[targetIdx], targetIdx);
1539
+ }
1540
+ this.setEllipsisTitle();
1541
+ sessionStorage.setItem("TabCache", JSON.stringify(this.tabList));
1542
+ }
1543
+ /**
1544
+ * @param {?} tab
1545
+ * @param {?} idx
1546
+ * @return {?}
1547
+ */
1548
+ changeTab(tab, idx) {
1549
+ this.router.navigateByUrl(tab.url);
1550
+ this.selectedTab = idx;
1551
+ }
1552
+ /**
1553
+ * @param {?} url
1554
+ * @param {?} title
1555
+ * @return {?}
1556
+ */
1557
+ addTab(url, title) {
1558
+ if (this.tabList.length >= this.maxTabs) {
1559
+ this.closeTab(this.tabList[0], 0); // 删除第一个
1560
+ }
1561
+ this.tabList.push({
1562
+ url: url,
1563
+ title: title || "default",
1564
+ displayTitle: this.setEllipsisTitle(title || "default"),
1565
+ });
1566
+ this.selectedTab = this.tabList.length - 1;
1567
+ this.setEllipsisTitle();
1568
+ sessionStorage.setItem("TabCache", JSON.stringify(this.tabList));
1569
+ }
1570
+ /**
1571
+ * @param {?} url
1572
+ * @param {?} pureUrl
1573
+ * @param {?} title
1574
+ * @return {?}
1575
+ */
1576
+ setTab(url, pureUrl, title) {
1577
+ /** @type {?} */
1578
+ const isExistIdx = this.tabList.findIndex((/**
1579
+ * @param {?} ele
1580
+ * @return {?}
1581
+ */
1582
+ (ele) => ele.url === url));
1583
+ if (isExistIdx === -1) {
1584
+ /** @type {?} */
1585
+ const singleIdx = this.singleReuseUrls.findIndex((/**
1586
+ * @param {?} ele
1587
+ * @return {?}
1588
+ */
1589
+ (ele) => ele === pureUrl));
1590
+ if (singleIdx !== -1) {
1591
+ this.tabList = this.tabList.filter((/**
1592
+ * @param {?} ele
1593
+ * @return {?}
1594
+ */
1595
+ (ele) => !ele.url.includes(this.singleReuseUrls[singleIdx])));
1596
+ this.keepAlive.clearCache(url);
1597
+ }
1598
+ this.addTab(url, title);
1599
+ }
1600
+ else {
1601
+ this.selectedTab = isExistIdx;
1602
+ }
1603
+ }
1604
+ /**
1605
+ * @return {?}
1606
+ */
1607
+ refreshTab() {
1608
+ this.keepAlive.clearCache(this.tabList[this.selectedTab].url);
1609
+ /** @type {?} */
1610
+ const currentUrl = this.router.url;
1611
+ this.router.navigateByUrl("/", { skipLocationChange: true }).then((/**
1612
+ * @return {?}
1613
+ */
1614
+ () => {
1615
+ this.router.navigateByUrl(currentUrl); // 重新导航到当前 URL
1616
+ }));
1617
+ }
1618
+ /**
1619
+ * @param {?} url
1620
+ * @return {?}
1621
+ */
1622
+ clearCache(url) {
1623
+ this.keepAlive.clearCache(url); // 调用自定义策略的清除缓存方法
1624
+ }
1625
+ }
1626
+ MultiTabComponent.decorators = [
1627
+ { type: Component, args: [{
1628
+ selector: "rs-multi-tab",
1629
+ template: "<div class=\"rs-multi-tab\">\r\n <ul>\r\n <ng-container *ngFor=\"let tab of tabList; let i = index\">\r\n <li\r\n [ngClass]=\"selectedTab === i ? 'isSelect' : 'notSelect'\"\r\n (click)=\"changeTab(tab, i)\"\r\n >\r\n <ejs-tooltip\r\n id=\"notSelectTooltip\"\r\n [showTipPointer]=\"false\"\r\n [openDelay]=\"500\"\r\n *ngIf=\"tab.displayTitle !== tab.title; else originText\"\r\n style=\"height: 27px\"\r\n >\r\n <ng-template #content>\r\n <div class=\"tooltip-content\">\r\n {{ tab.title }}\r\n </div>\r\n </ng-template>\r\n <span class=\"tabTitle\">{{ tab.displayTitle }}</span>\r\n </ejs-tooltip>\r\n <ng-template #originText>\r\n <span class=\"tabTitle\">\r\n {{ tab.displayTitle }}\r\n </span>\r\n </ng-template>\r\n <span class=\"img-block\" *ngIf=\"selectedTab !== i\"></span>\r\n <img\r\n *ngIf=\"tabList.length !== 1\"\r\n src=\"../../../assets/img/close-url.svg\"\r\n (click)=\"closeTab(tab, i)\"\r\n />\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <div class=\"refresh-tab\" (click)=\"refreshTab()\">\r\n <img\r\n id=\"loadingIcon\"\r\n alt\r\n class=\"refresh-btn\"\r\n src=\"../../../assets/img/desktop-refresh-btn.svg\"\r\n />\r\n <span>Refresh Current Tab</span>\r\n </div>\r\n</div>\r\n",
1630
+ styles: [".rs-multi-tab{border-bottom:1px solid #e5eaef;height:28px;width:100%;display:flex;justify-content:space-between}.rs-multi-tab ul{display:flex;margin:0 8px;padding:0;overflow:hidden;height:100%}.rs-multi-tab ul li{max-width:164px;padding:0 12px;display:flex;align-items:center;flex:auto;border:1px solid #e5eaef;border-bottom:none;color:#5f6f81;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:28px;height:100%;background:#f8fafb;vertical-align:top;position:relative;cursor:default}.rs-multi-tab ul li .tabTitle{display:inline-block;white-space:nowrap;font-size:11px;font-family:Arial;font-style:normal;font-weight:400;line-height:16px;transition:width .3s}.rs-multi-tab ul li img{border-radius:4px;padding:4px;margin-left:6px;margin-top:1px;vertical-align:top;cursor:pointer}.rs-multi-tab ul li img:hover{background:#dce8f6}.rs-multi-tab ul li:not(:last-child){border-right:none}.rs-multi-tab ul li:first-of-type{border-top-left-radius:8px}.rs-multi-tab ul li:last-child{border-top-right-radius:8px}.rs-multi-tab ul .isSelect{color:#1f3f5c;background:#fff}.rs-multi-tab ul .notSelect img{display:none}.rs-multi-tab ul .notSelect .img-block{display:inline-block;width:22px}.rs-multi-tab ul .notSelect:hover{color:#1f3f5c;background-color:rgba(31,123,255,.04)}.rs-multi-tab ul .notSelect:hover .img-block{display:none}.rs-multi-tab ul .notSelect:hover img{display:inline-block}.rs-multi-tab .refresh-tab{cursor:pointer;text-align:right;color:#6c7c90;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:28px;padding-right:12px}.rs-multi-tab .refresh-tab img{vertical-align:middle;margin-right:4px}.refresh-tab-loading{-webkit-animation:1s linear infinite spin;animation:1s linear infinite spin}@-webkit-keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.tooltip-content{padding:4px;color:#f8fafb;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:14px}@media (max-width:1400px){.refresh-tab{padding-right:0!important}.refresh-tab span{display:none!important}}@media (max-width:1100px){.rs-multi-tab ul li img{position:absolute;right:3px;background-color:#fff}.notSelect:hover img{position:absolute;right:3px;background-color:#eff5fb}.img-block{display:none!important}}@media (max-width:600px){.rs-multi-tab ul li{padding:0 8px}.rs-multi-tab ul .notSelect .img-block{width:0!important}}"]
1631
+ }] }
1632
+ ];
1633
+ /** @nocollapse */
1634
+ MultiTabComponent.ctorParameters = () => [
1635
+ { type: Router },
1636
+ { type: CommonFunctionService },
1637
+ { type: ActivatedRoute },
1638
+ { type: KeepAliveService }
1639
+ ];
1640
+ MultiTabComponent.propDecorators = {
1641
+ singleReuseUrls: [{ type: Input }],
1642
+ onResize: [{ type: HostListener, args: ["window:resize", ["$event"],] }]
1643
+ };
1644
+ if (false) {
1645
+ /** @type {?} */
1646
+ MultiTabComponent.prototype.singleReuseUrls;
1647
+ /** @type {?} */
1648
+ MultiTabComponent.prototype.TAB_WIDTH;
1649
+ /** @type {?} */
1650
+ MultiTabComponent.prototype.GAP_NORMAL;
1651
+ /** @type {?} */
1652
+ MultiTabComponent.prototype.GAP_SMALL;
1653
+ /** @type {?} */
1654
+ MultiTabComponent.prototype.textGap;
1655
+ /** @type {?} */
1656
+ MultiTabComponent.prototype.foo;
1657
+ /** @type {?} */
1658
+ MultiTabComponent.prototype.comRef;
1659
+ /** @type {?} */
1660
+ MultiTabComponent.prototype.tabList;
1661
+ /** @type {?} */
1662
+ MultiTabComponent.prototype.selectedTab;
1663
+ /** @type {?} */
1664
+ MultiTabComponent.prototype.maxTabs;
1665
+ /** @type {?} */
1666
+ MultiTabComponent.prototype.screenWidth;
1667
+ /** @type {?} */
1668
+ MultiTabComponent.prototype.router;
1669
+ /** @type {?} */
1670
+ MultiTabComponent.prototype.cf;
1671
+ /** @type {?} */
1672
+ MultiTabComponent.prototype.activatedRoute;
1673
+ /** @type {?} */
1674
+ MultiTabComponent.prototype.keepAlive;
1095
1675
  }
1096
1676
 
1097
1677
  /**
@@ -1102,8 +1682,10 @@ if (false) {
1102
1682
  class MainContainerComponent {
1103
1683
  constructor() {
1104
1684
  this.isCollapsed = false; // 接收输入属性
1685
+ // 接收输入属性
1686
+ this.singleReuseUrls = []; //只能单个缓存的url
1105
1687
  }
1106
- // 接收输入属性
1688
+ //只能单个缓存的url
1107
1689
  /**
1108
1690
  * @return {?}
1109
1691
  */
@@ -1112,16 +1694,19 @@ class MainContainerComponent {
1112
1694
  MainContainerComponent.decorators = [
1113
1695
  { type: Component, args: [{
1114
1696
  selector: "rs-main-container",
1115
- 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 <!-- <div class=\"multi-tab\"></div> -->\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",
1116
- 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 .multi-tab{height:40px;background-color:#efefef}.app-main-container .right-aside .router-content{flex:1;overflow:auto}"]
1697
+ 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>\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",
1698
+ 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}"]
1117
1699
  }] }
1118
1700
  ];
1119
1701
  MainContainerComponent.propDecorators = {
1120
- isCollapsed: [{ type: Input }]
1702
+ isCollapsed: [{ type: Input }],
1703
+ singleReuseUrls: [{ type: Input }]
1121
1704
  };
1122
1705
  if (false) {
1123
1706
  /** @type {?} */
1124
1707
  MainContainerComponent.prototype.isCollapsed;
1708
+ /** @type {?} */
1709
+ MainContainerComponent.prototype.singleReuseUrls;
1125
1710
  }
1126
1711
 
1127
1712
  /**
@@ -1178,8 +1763,8 @@ class RSHeaderComponent {
1178
1763
  RSHeaderComponent.decorators = [
1179
1764
  { type: Component, args: [{
1180
1765
  selector: "rs-header",
1181
- template: "<div class=\"rs-header\">\r\n <div class=\"logo-wrap\">\r\n <div class=\"toggle-menu-wrap\">\r\n <img\r\n class=\"toggle-menu\"\r\n src=\"../../../assets/img/toggle-menu-icon.svg\"\r\n (click)=\"onToggleMenu()\"\r\n />\r\n </div>\r\n <img\r\n class=\"logo\"\r\n src=\"../../../assets/img/raise_logo_main.svg\"\r\n alt=\"logo\"\r\n />\r\n </div>\r\n <div class=\"bread-crumbs-wrap\">\r\n <ng-content select=\"[breadCrumbs]\"></ng-content>\r\n </div>\r\n <div class=\"rs-toolbar-wrap\">\r\n <div class=\"group\">\r\n <ng-content select=\"[toolbar]\"></ng-content>\r\n </div>\r\n <div class=\"line\"></div>\r\n <div class=\"langulage-wrap\">\r\n <button\r\n class=\"e-btn text\"\r\n ejs-dropdownbutton\r\n [items]=\"langOptions\"\r\n (select)=\"selectLanguage($event)\"\r\n >\r\n {{currentLang.text}}\r\n </button>\r\n </div>\r\n <div class=\"line\"></div>\r\n <div class=\"last-login-wrap\">\r\n {{ translation?.LAST_LOGIN || \"Last Login\" }}:\r\n {{ lastLoginTime | date : \"dd MMM yy h:mm a\" }}\r\n </div>\r\n <div class=\"line\"></div>\r\n <div class=\"user-info-wrap\">\r\n <ng-content select=\"[userInfo]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
1182
- styles: [".rs-header{height:50px;background-color:var(--rs-container-bg);display:flex;justify-content:space-between}.rs-header .logo-wrap{width:240px;display:flex;padding:12px 0 0 20px}.rs-header .logo-wrap .toggle-menu-wrap{cursor:pointer;margin-right:8px}.rs-header .logo-wrap .logo{width:77px;height:32px}.rs-header .rs-toolbar-wrap{display:flex;align-items:center}.rs-header .rs-toolbar-wrap .line{width:1px;height:24px;background-color:var(--rs-border-color)}.rs-header .rs-toolbar-wrap .langulage-wrap{padding:0 16px}.rs-header .rs-toolbar-wrap .last-login-wrap{padding:0 16px;color:var(--rs-labels-color);font-size:11px;font-weight:400;line-height:1}.rs-header .rs-toolbar-wrap .user-info-wrap{padding:0 20px 0 16px}"]
1766
+ template: "<div class=\"rs-header\">\r\n <div class=\"logo-wrap\">\r\n <div class=\"toggle-menu-wrap\">\r\n <img\r\n class=\"toggle-menu\"\r\n src=\"../../../assets/img/toggle-menu-icon.svg\"\r\n (click)=\"onToggleMenu()\"\r\n />\r\n </div>\r\n <img\r\n class=\"logo\"\r\n src=\"../../../assets/img/raise_logo_main.svg\"\r\n alt=\"logo\"\r\n />\r\n </div>\r\n <div class=\"bread-crumbs-wrap\">\r\n <ng-content select=\"[breadCrumbs]\"></ng-content>\r\n </div>\r\n <div class=\"rs-toolbar-wrap\">\r\n <div class=\"quick-icon-group\">\r\n <ng-content select=\"[toolbar]\"></ng-content>\r\n </div>\r\n <div class=\"line\"></div>\r\n <div class=\"langulage-wrap\">\r\n <button\r\n class=\"e-btn text\"\r\n ejs-dropdownbutton\r\n [items]=\"langOptions\"\r\n (select)=\"selectLanguage($event)\"\r\n >\r\n {{currentLang.text}}\r\n </button>\r\n </div>\r\n <div class=\"line\"></div>\r\n <div class=\"last-login-wrap\">\r\n {{ translation?.LAST_LOGIN || \"Last Login\" }}:\r\n {{ lastLoginTime | date : \"dd MMM yy h:mm a\" }}\r\n </div>\r\n <div class=\"line\"></div>\r\n <div class=\"user-info-wrap\">\r\n <ng-content select=\"[userInfo]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
1767
+ styles: [".rs-header{height:50px;background-color:var(--rs-container-bg);display:flex;justify-content:space-between}.rs-header .logo-wrap{width:240px;display:flex;padding:12px 0 0 20px}.rs-header .logo-wrap .toggle-menu-wrap{cursor:pointer;margin-right:8px}.rs-header .logo-wrap .logo{width:77px;height:32px}.rs-header .rs-toolbar-wrap,.rs-header .rs-toolbar-wrap .quick-icon-group{display:flex;align-items:center}.rs-header .rs-toolbar-wrap .quick-icon-group ::ng-deep .header-icon{width:24px;height:24px;display:flex;justify-content:center;align-items:center;margin-right:24px;cursor:pointer}.rs-header .rs-toolbar-wrap .quick-icon-group ::ng-deep .header-icon svg{width:16px;height:16px;color:#6c7c90;stroke:#6c7c90}.rs-header .rs-toolbar-wrap .quick-icon-group ::ng-deep .header-icon:hover{border-radius:4px;background:rgba(31,123,255,.04)}.rs-header .rs-toolbar-wrap .quick-icon-group ::ng-deep .header-icon:hover svg{color:#1f7bff;stroke:#1f7bff}.rs-header .rs-toolbar-wrap .line{width:1px;height:24px;background-color:var(--rs-border-color)}.rs-header .rs-toolbar-wrap .langulage-wrap{padding:0 16px}.rs-header .rs-toolbar-wrap .last-login-wrap{padding:0 16px;color:var(--rs-labels-color);font-size:11px;font-weight:400;line-height:1}.rs-header .rs-toolbar-wrap .user-info-wrap{padding:0 20px 0 16px}"]
1183
1768
  }] }
1184
1769
  ];
1185
1770
  RSHeaderComponent.propDecorators = {
@@ -1254,14 +1839,14 @@ class RSAsideComponent {
1254
1839
  */
1255
1840
  onNavClick(item) {
1256
1841
  this.currentNav = item.title;
1257
- this.router.navigate([item.url]);
1842
+ this.router.navigate([item.url], { state: { title: item.title } });
1258
1843
  }
1259
1844
  }
1260
1845
  RSAsideComponent.decorators = [
1261
1846
  { type: Component, args: [{
1262
1847
  selector: "rs-aside",
1263
- template: "<div class=\"rs-aside\">\r\n <div class=\"nav-list\">\r\n <div\r\n class=\"nav-item\"\r\n [ngClass]=\"{ isCurrent: currentNav === nav.title }\"\r\n *ngFor=\"let nav of navList\"\r\n (click)=\"onNavClick(nav)\"\r\n >\r\n <div class=\"nav-item-inner\">\r\n <div\r\n class=\"icon-wrap\"\r\n [ngStyle]=\"{\r\n stroke: currentNav === nav.title ? '#44566c' : '#6c7c90',\r\n fill: currentNav === nav.title ? '#44566c' : '#6c7c90'\r\n }\"\r\n >\r\n <svg-icon\r\n [name]=\"nav.icon\"\r\n [svgStyle]=\"{\r\n 'width.px': 16,\r\n 'height.px': 16\r\n }\"\r\n ></svg-icon>\r\n </div>\r\n <span class=\"nav-text\" [ngClass]=\"{ isCollapsed: isCollapsed }\">{{\r\n nav.title\r\n }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bottom-iconbox\" [ngClass]=\"{ isCollapsed: isCollapsed }\">\r\n <ng-content select=\"[bottomIconBox]\"></ng-content>\r\n </div>\r\n</div>\r\n",
1264
- styles: [".rs-aside{display:flex;flex-direction:column;height:100%}.rs-aside .nav-list{padding-top:12px;flex:1;overflow:auto;height:0}.rs-aside .nav-list .nav-item{height:32px;cursor:pointer;padding-left:11px}.rs-aside .nav-list .nav-item .nav-item-inner{display:flex;align-items:center;padding:8px 8px 8px 12px}.rs-aside .nav-list .nav-item:hover .nav-item-inner{border-radius:6px;background:rgba(31,123,255,.04)}.rs-aside .nav-list .nav-item .icon-wrap{width:33px;height:16px}.rs-aside .nav-list .nav-item .nav-text{color:#5f6f81;font-family:Arial;font-size:12px;font-weight:400;line-height:16px;transition:.3s;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;position:relative;top:1px}.rs-aside .nav-list .nav-item .nav-text.isCollapsed{opacity:0;width:0}.rs-aside .nav-list .nav-item.isCurrent{position:relative}.rs-aside .nav-list .nav-item.isCurrent .nav-text{color:#44566c;font-weight:700}.rs-aside .nav-list .nav-item.isCurrent::before{content:\"\";position:absolute;left:4px;top:8px;width:3px;height:16px;background-color:#1364b3;border-radius:2px}.rs-aside .bottom-iconbox{padding:12px 20px;height:48px;display:flex;gap:12px}.rs-aside .bottom-iconbox ::ng-deep .icon-wrap{width:24px;height:24px;border-radius:12px;border:1px solid #eaedf0;display:flex;justify-content:center;align-items:center;background-color:#fff;stroke:#6c7c90;fill:#6c7c90}.rs-aside .bottom-iconbox ::ng-deep .icon-wrap:not(.disabled){cursor:pointer}.rs-aside .bottom-iconbox ::ng-deep .icon-wrap:not(.disabled):hover{stroke:var(--rs-active-color);fill:var(--rs-active-color)}.rs-aside .bottom-iconbox.isCollapsed{flex-direction:column;height:auto}"]
1848
+ template: "<div class=\"rs-aside\">\r\n <div class=\"nav-list\">\r\n <div\r\n class=\"nav-item\"\r\n [ngClass]=\"{ isCurrent: currentNav === nav.title }\"\r\n *ngFor=\"let nav of navList\"\r\n (click)=\"onNavClick(nav)\"\r\n >\r\n <div class=\"nav-item-inner\">\r\n <mat-icon class=\"menu-icon\" [svgIcon]=\"nav.icon\"></mat-icon>\r\n <span class=\"nav-text\" [ngClass]=\"{ isCollapsed: isCollapsed }\">{{\r\n nav.title\r\n }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bottom-iconbox\" [ngClass]=\"{ isCollapsed: isCollapsed }\">\r\n <ng-content select=\"[bottomIconBox]\"></ng-content>\r\n </div>\r\n</div>\r\n",
1849
+ styles: [".rs-aside{display:flex;flex-direction:column;height:100%}.rs-aside .nav-list{padding-top:12px;flex:1;overflow:auto;height:0}.rs-aside .nav-list .nav-item{height:32px;cursor:pointer;padding-left:11px}.rs-aside .nav-list .nav-item .nav-item-inner{display:flex;align-items:center;padding:8px 8px 8px 12px}.rs-aside .nav-list .nav-item .nav-item-inner ::ng-deep .menu-icon{width:33px;height:16px}.rs-aside .nav-list .nav-item .nav-item-inner ::ng-deep .menu-icon svg{width:16px;height:16px;color:#6c7c90;stroke:#6c7c90}.rs-aside .nav-list .nav-item:hover .nav-item-inner{border-radius:6px;background:rgba(31,123,255,.04)}.rs-aside .nav-list .nav-item:hover .nav-item-inner ::ng-deep .menu-icon svg{color:#44566c;stroke:#44566c}.rs-aside .nav-list .nav-item .nav-text{color:#5f6f81;font-family:Arial;font-size:12px;font-weight:400;line-height:16px;transition:.3s;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;position:relative;top:1px}.rs-aside .nav-list .nav-item .nav-text.isCollapsed{opacity:0;width:0}.rs-aside .nav-list .nav-item.isCurrent{position:relative}.rs-aside .nav-list .nav-item.isCurrent .nav-text{color:#44566c;font-weight:700}.rs-aside .nav-list .nav-item.isCurrent::before{content:\"\";position:absolute;left:4px;top:8px;width:3px;height:16px;background-color:#1364b3;border-radius:2px}.rs-aside .bottom-iconbox{padding:12px 20px;height:48px;display:flex;gap:12px}.rs-aside .bottom-iconbox ::ng-deep .menu-bottom-icon{width:24px;height:24px;display:flex;justify-content:center;align-items:center;border:1px solid #eaedf0;border-radius:24px;cursor:pointer}.rs-aside .bottom-iconbox ::ng-deep .menu-bottom-icon svg{width:16px;height:16px;color:#6c7c90;stroke:#6c7c90}.rs-aside .bottom-iconbox ::ng-deep .menu-bottom-icon.disabled{cursor:default;opacity:.5}.rs-aside .bottom-iconbox ::ng-deep .menu-bottom-icon:not(.disabled):hover{background-color:#fff}.rs-aside .bottom-iconbox ::ng-deep .menu-bottom-icon:not(.disabled):hover svg{color:#1f7bff;stroke:#1f7bff}.rs-aside .bottom-iconbox.isCollapsed{flex-direction:column;height:auto}"]
1265
1850
  }] }
1266
1851
  ];
1267
1852
  /** @nocollapse */
@@ -1607,29 +2192,6 @@ if (false) {
1607
2192
  SwitchInputComponent.prototype.valueChange;
1608
2193
  }
1609
2194
 
1610
- /**
1611
- * @fileoverview added by tsickle
1612
- * Generated from: lib/service/common-function.service.ts
1613
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1614
- */
1615
- class CommonFunctionService {
1616
- constructor() { }
1617
- /**
1618
- * @return {?}
1619
- */
1620
- testMethod() {
1621
- return "test1111";
1622
- }
1623
- }
1624
- CommonFunctionService.decorators = [
1625
- { type: Injectable, args: [{
1626
- providedIn: "root",
1627
- },] }
1628
- ];
1629
- /** @nocollapse */
1630
- CommonFunctionService.ctorParameters = () => [];
1631
- /** @nocollapse */ CommonFunctionService.ngInjectableDef = ɵɵdefineInjectable({ factory: function CommonFunctionService_Factory() { return new CommonFunctionService(); }, token: CommonFunctionService, providedIn: "root" });
1632
-
1633
2195
  /**
1634
2196
  * @fileoverview added by tsickle
1635
2197
  * Generated from: lib/service/icon-loader.service.ts
@@ -1637,10 +2199,12 @@ CommonFunctionService.ctorParameters = () => [];
1637
2199
  */
1638
2200
  class IconLoaderService {
1639
2201
  /**
1640
- * @param {?} iconReg
2202
+ * @param {?} registry
2203
+ * @param {?} domSanitizer
1641
2204
  */
1642
- constructor(iconReg) {
1643
- this.iconReg = iconReg;
2205
+ constructor(registry, domSanitizer) {
2206
+ this.registry = registry;
2207
+ this.domSanitizer = domSanitizer;
1644
2208
  }
1645
2209
  /**
1646
2210
  * @param {?} list
@@ -1648,11 +2212,11 @@ class IconLoaderService {
1648
2212
  */
1649
2213
  registerIcons(list) {
1650
2214
  list.forEach((/**
1651
- * @param {?} item
2215
+ * @param {?} __0
1652
2216
  * @return {?}
1653
2217
  */
1654
- (item) => {
1655
- this.iconReg.loadSvg(item.url, item.name).subscribe();
2218
+ ({ name, path }) => {
2219
+ this.registry.addSvgIcon(name, this.domSanitizer.bypassSecurityTrustResourceUrl(path));
1656
2220
  }));
1657
2221
  }
1658
2222
  }
@@ -1661,14 +2225,20 @@ IconLoaderService.decorators = [
1661
2225
  ];
1662
2226
  /** @nocollapse */
1663
2227
  IconLoaderService.ctorParameters = () => [
1664
- { type: SvgIconRegistryService }
2228
+ { type: MatIconRegistry },
2229
+ { type: DomSanitizer }
1665
2230
  ];
1666
2231
  if (false) {
1667
2232
  /**
1668
2233
  * @type {?}
1669
2234
  * @private
1670
2235
  */
1671
- IconLoaderService.prototype.iconReg;
2236
+ IconLoaderService.prototype.registry;
2237
+ /**
2238
+ * @type {?}
2239
+ * @private
2240
+ */
2241
+ IconLoaderService.prototype.domSanitizer;
1672
2242
  }
1673
2243
 
1674
2244
  /**
@@ -2197,10 +2767,13 @@ RaiseCommonLibModule.decorators = [
2197
2767
  declarations: [
2198
2768
  CommonGridComponent,
2199
2769
  FloatBoxComponent,
2200
- CommonListComponent,
2770
+ RsPageListComponent,
2771
+ RsPageTabComponent,
2772
+ GridBoxComponent,
2201
2773
  RSHeaderComponent,
2202
2774
  RSFooterComponent,
2203
2775
  RSAsideComponent,
2776
+ MultiTabComponent,
2204
2777
  MainContainerComponent,
2205
2778
  TagInputComponent,
2206
2779
  RadioGroupComponent,
@@ -2217,6 +2790,7 @@ RaiseCommonLibModule.decorators = [
2217
2790
  FormsModule,
2218
2791
  MatSnackBarModule,
2219
2792
  MatDialogModule,
2793
+ MatIconModule,
2220
2794
  GridModule,
2221
2795
  PagerModule,
2222
2796
  GridAllModule,
@@ -2248,10 +2822,11 @@ RaiseCommonLibModule.decorators = [
2248
2822
  DashboardLayoutModule,
2249
2823
  CarouselAllModule,
2250
2824
  ToolbarModule,
2825
+ TabModule,
2251
2826
  PdfViewerModule,
2252
2827
  DropDownButtonModule,
2828
+ SplitButtonModule,
2253
2829
  RichTextEditorAllModule,
2254
- AngularSvgIconModule.forRoot(),
2255
2830
  ],
2256
2831
  providers: [
2257
2832
  PageService,
@@ -2286,6 +2861,7 @@ RaiseCommonLibModule.decorators = [
2286
2861
  CommonFunctionService,
2287
2862
  IconLoaderService,
2288
2863
  DialogService,
2864
+ KeepAliveService,
2289
2865
  ],
2290
2866
  exports: [
2291
2867
  CommonModule,
@@ -2325,15 +2901,20 @@ RaiseCommonLibModule.decorators = [
2325
2901
  DashboardLayoutModule,
2326
2902
  CarouselAllModule,
2327
2903
  ToolbarModule,
2904
+ TabModule,
2328
2905
  PdfViewerModule,
2329
2906
  DropDownButtonModule,
2907
+ SplitButtonModule,
2330
2908
  RichTextEditorAllModule,
2331
2909
  CommonGridComponent,
2332
2910
  FloatBoxComponent,
2333
- CommonListComponent,
2911
+ RsPageListComponent,
2912
+ RsPageTabComponent,
2913
+ GridBoxComponent,
2334
2914
  RSHeaderComponent,
2335
2915
  RSFooterComponent,
2336
2916
  RSAsideComponent,
2917
+ MultiTabComponent,
2337
2918
  MainContainerComponent,
2338
2919
  TagInputComponent,
2339
2920
  RadioGroupComponent,
@@ -2360,5 +2941,5 @@ RaiseCommonLibModule.decorators = [
2360
2941
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2361
2942
  */
2362
2943
 
2363
- export { CheckboxGroupComponent, CommonFunctionService, CommonGridComponent, CommonListComponent, DialogService, FloatBoxComponent, IconLoaderService, MainContainerComponent, MessageType, RSAsideComponent, RSFooterComponent, RSHeaderComponent, RadioGroupComponent, RaiseCommonLibModule, SwitchInputComponent, TagInputComponent, NewActionNotificationComponent as ɵa, CommonDialogComponent as ɵb, CommonDeleteComponent as ɵc };
2944
+ export { CheckboxGroupComponent, CommonFunctionService, CommonGridComponent, DialogService, FloatBoxComponent, GridBoxComponent, IconLoaderService, KeepAliveService, MainContainerComponent, MessageType, MultiTabComponent, RSAsideComponent, RSFooterComponent, RSHeaderComponent, RadioGroupComponent, RaiseCommonLibModule, RsPageListComponent, RsPageTabComponent, SwitchInputComponent, TagInputComponent, NewActionNotificationComponent as ɵa, CommonDialogComponent as ɵb, CommonDeleteComponent as ɵc };
2364
2945
  //# sourceMappingURL=raise-common-lib.js.map