raise-common-lib 0.0.15 → 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.
Files changed (53) hide show
  1. package/bundles/raise-common-lib.umd.js +785 -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 +310 -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 +92 -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 +356 -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 +133 -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 +659 -62
  32. package/fesm2015/raise-common-lib.js.map +1 -1
  33. package/fesm5/raise-common-lib.js +784 -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 +38 -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.svg +3 -0
  51. package/src/assets/style/reset/button.scss +38 -3
  52. package/esm2015/lib/layout/common-list/index.component.js +0 -69
  53. 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,614 @@ 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
+ if (!route.routeConfig)
1352
+ return null;
1353
+ if (route.routeConfig.loadChildren)
1354
+ return null;
1355
+ return storedRoutes[this.getRoutePath(route)];
1356
+ }
1357
+ /**
1358
+ * @param {?} future
1359
+ * @param {?} curr
1360
+ * @return {?}
1361
+ */
1362
+ shouldReuseRoute(future, curr) {
1363
+ // console.log("shouldReuseRoute");
1364
+ return this.getRoutePath(future) === this.getRoutePath(curr); // 复用相同的路由
1365
+ }
1366
+ /**
1367
+ * @param {?} route
1368
+ * @return {?}
1369
+ */
1370
+ getRoutePath(route) {
1371
+ if (route.routeConfig) {
1372
+ // const pathParams = JSON.stringify(route.params);
1373
+ /** @type {?} */
1374
+ const queryParams = new URLSearchParams(route.queryParams).toString();
1375
+ return route._routerState.url + (queryParams ? "?" + queryParams : "");
1376
+ }
1377
+ return "";
1378
+ }
1379
+ /**
1380
+ * @param {?} path
1381
+ * @return {?}
1382
+ */
1383
+ clearCache(path) {
1384
+ toBeDeleteUrl = path;
1385
+ delete storedRoutes[path]; // 清除指定路径的缓存
1386
+ }
1387
+ }
1388
+
1389
+ /**
1390
+ * @fileoverview added by tsickle
1391
+ * Generated from: lib/layout/multi-tab/index.component.ts
1392
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1393
+ */
1394
+ class MultiTabComponent {
1395
+ /**
1396
+ * @param {?} router
1397
+ * @param {?} cf
1398
+ * @param {?} activatedRoute
1399
+ * @param {?} keepAlive
1400
+ * @param {?} ref
1401
+ */
1402
+ constructor(router, cf, activatedRoute, keepAlive, ref) {
1403
+ this.router = router;
1404
+ this.cf = cf;
1405
+ this.activatedRoute = activatedRoute;
1406
+ this.keepAlive = keepAlive;
1407
+ this.ref = ref;
1408
+ this.singleReuseUrls = []; //只能单个缓存的url
1409
+ //只能单个缓存的url
1410
+ this.TAB_WIDTH = 164;
1411
+ this.GAP_NORMAL = 54;
1412
+ this.GAP_SMALL = 30;
1413
+ this.tabList = [];
1414
+ this.selectedTab = 0;
1415
+ this.maxTabs = 10;
1416
+ this.screenWidth = window.innerWidth; // 初始化屏幕宽度
1417
+ }
1418
+ // 初始化屏幕宽度
1419
+ /**
1420
+ * @param {?} event
1421
+ * @return {?}
1422
+ */
1423
+ onResize(event) {
1424
+ this.screenWidth = window.innerWidth; // 更新屏幕宽度
1425
+ this.setEllipsisTitle();
1426
+ }
1427
+ /**
1428
+ * @return {?}
1429
+ */
1430
+ ngOnInit() {
1431
+ this.initTab();
1432
+ this.router.events
1433
+ .pipe(filter((/**
1434
+ * @param {?} event
1435
+ * @return {?}
1436
+ */
1437
+ (event) => event instanceof NavigationEnd)))
1438
+ .subscribe((/**
1439
+ * @return {?}
1440
+ */
1441
+ () => {
1442
+ /** @type {?} */
1443
+ const navigation = this.router.getCurrentNavigation();
1444
+ if (navigation) {
1445
+ /** @type {?} */
1446
+ const state = navigation.extras.state;
1447
+ // 获取传递的 state
1448
+ /** @type {?} */
1449
+ const currentRoute = this.router.routerState.root.firstChild;
1450
+ if (currentRoute) {
1451
+ this.setTab(this.router.url, currentRoute.snapshot.routeConfig.path, state && state.title);
1452
+ }
1453
+ }
1454
+ }));
1455
+ this.setEllipsisTitle();
1456
+ }
1457
+ /**
1458
+ * @param {?=} title
1459
+ * @return {?}
1460
+ */
1461
+ setEllipsisTitle(title) {
1462
+ this.textGap = this.GAP_NORMAL;
1463
+ if (this.screenWidth <= 1100) {
1464
+ this.textGap = this.GAP_SMALL;
1465
+ }
1466
+ let { allWidth, leftWidth, rightWidth } = this.calcTabWidth();
1467
+ /** @type {?} */
1468
+ let width = Math.floor((allWidth - rightWidth) / (this.tabList && this.tabList.length));
1469
+ if (title) {
1470
+ return this.cf.setMiddleEllipsis(title, width > this.TAB_WIDTH
1471
+ ? this.TAB_WIDTH - this.textGap
1472
+ : width - this.textGap, 12);
1473
+ }
1474
+ else {
1475
+ this.tabList.forEach((/**
1476
+ * @param {?} ele
1477
+ * @param {?} idx
1478
+ * @return {?}
1479
+ */
1480
+ (ele, idx) => {
1481
+ ele.displayTitle = this.cf.setMiddleEllipsis(ele.title, width > this.TAB_WIDTH
1482
+ ? this.TAB_WIDTH - this.textGap
1483
+ : width - this.textGap, 12);
1484
+ }));
1485
+ }
1486
+ }
1487
+ /**
1488
+ * @return {?}
1489
+ */
1490
+ calcTabWidth() {
1491
+ /** @type {?} */
1492
+ const wrap = document.querySelector(".rs-multi-tab");
1493
+ /** @type {?} */
1494
+ const ulElement = document.querySelector(".rs-multi-tab > ul");
1495
+ /** @type {?} */
1496
+ const refreshTabDiv = document.querySelector(".rs-multi-tab .refresh-tab");
1497
+ /** @type {?} */
1498
+ let allWidth;
1499
+ /** @type {?} */
1500
+ let leftWidth;
1501
+ /** @type {?} */
1502
+ let rightWidth;
1503
+ if (wrap && ulElement && refreshTabDiv) {
1504
+ // 获取元素的位置信息
1505
+ /** @type {?} */
1506
+ const wrapRect = wrap.getBoundingClientRect();
1507
+ /** @type {?} */
1508
+ const ulRect = ulElement.getBoundingClientRect();
1509
+ /** @type {?} */
1510
+ const refreshTabRect = refreshTabDiv.getBoundingClientRect();
1511
+ allWidth = wrapRect.width;
1512
+ leftWidth = ulRect.width;
1513
+ rightWidth = refreshTabRect.width;
1514
+ }
1515
+ return {
1516
+ allWidth,
1517
+ leftWidth,
1518
+ rightWidth,
1519
+ };
1520
+ }
1521
+ /**
1522
+ * @return {?}
1523
+ */
1524
+ initTab() {
1525
+ /** @type {?} */
1526
+ let TabCache = JSON.parse(sessionStorage.getItem("TabCache"));
1527
+ this.tabList = TabCache || [];
1528
+ }
1529
+ /**
1530
+ * @param {?} tab
1531
+ * @param {?} idx
1532
+ * @return {?}
1533
+ */
1534
+ closeTab(tab, idx) {
1535
+ this.tabList = this.tabList.filter((/**
1536
+ * @param {?} ele
1537
+ * @return {?}
1538
+ */
1539
+ (ele) => ele.url !== tab.url));
1540
+ this.clearCache(tab.url);
1541
+ if (this.selectedTab === idx) {
1542
+ /** @type {?} */
1543
+ const targetIdx = Math.max(0, idx - 1);
1544
+ this.changeTab(this.tabList[targetIdx], targetIdx);
1545
+ }
1546
+ this.setEllipsisTitle();
1547
+ sessionStorage.setItem("TabCache", JSON.stringify(this.tabList));
1548
+ this.ref.markForCheck();
1549
+ }
1550
+ /**
1551
+ * @param {?} tab
1552
+ * @param {?} idx
1553
+ * @return {?}
1554
+ */
1555
+ changeTab(tab, idx) {
1556
+ this.router.navigateByUrl(tab.url);
1557
+ this.selectedTab = idx;
1558
+ this.ref.markForCheck();
1559
+ }
1560
+ /**
1561
+ * @param {?} url
1562
+ * @param {?} title
1563
+ * @return {?}
1564
+ */
1565
+ addTab(url, title) {
1566
+ if (this.tabList.length >= this.maxTabs) {
1567
+ this.closeTab(this.tabList[0], 0); // 删除第一个
1568
+ }
1569
+ this.tabList.push({
1570
+ url: url,
1571
+ title: title || "default",
1572
+ displayTitle: this.setEllipsisTitle(title || "default"),
1573
+ });
1574
+ this.selectedTab = this.tabList.length - 1;
1575
+ this.setEllipsisTitle();
1576
+ sessionStorage.setItem("TabCache", JSON.stringify(this.tabList));
1577
+ this.ref.markForCheck();
1578
+ }
1579
+ /**
1580
+ * @param {?} url
1581
+ * @param {?} pureUrl
1582
+ * @param {?} title
1583
+ * @return {?}
1584
+ */
1585
+ setTab(url, pureUrl, title) {
1586
+ /** @type {?} */
1587
+ const isExistIdx = this.tabList.findIndex((/**
1588
+ * @param {?} ele
1589
+ * @return {?}
1590
+ */
1591
+ (ele) => ele.url === url));
1592
+ if (isExistIdx === -1) {
1593
+ /** @type {?} */
1594
+ const singleIdx = this.singleReuseUrls.findIndex((/**
1595
+ * @param {?} ele
1596
+ * @return {?}
1597
+ */
1598
+ (ele) => ele === pureUrl));
1599
+ if (singleIdx !== -1) {
1600
+ this.tabList = this.tabList.filter((/**
1601
+ * @param {?} ele
1602
+ * @return {?}
1603
+ */
1604
+ (ele) => !ele.url.includes(this.singleReuseUrls[singleIdx])));
1605
+ this.keepAlive.clearCache(url);
1606
+ }
1607
+ this.addTab(url, title);
1608
+ }
1609
+ else {
1610
+ this.selectedTab = isExistIdx;
1611
+ this.ref.markForCheck();
1612
+ }
1613
+ }
1614
+ /**
1615
+ * @return {?}
1616
+ */
1617
+ refreshTab() {
1618
+ this.keepAlive.clearCache(this.tabList[this.selectedTab].url);
1619
+ /** @type {?} */
1620
+ const currentUrl = this.router.url;
1621
+ this.router.navigateByUrl("/", { skipLocationChange: true }).then((/**
1622
+ * @return {?}
1623
+ */
1624
+ () => {
1625
+ this.router.navigateByUrl(currentUrl); // 重新导航到当前 URL
1626
+ }));
1627
+ }
1628
+ /**
1629
+ * @param {?} url
1630
+ * @return {?}
1631
+ */
1632
+ clearCache(url) {
1633
+ this.keepAlive.clearCache(url); // 调用自定义策略的清除缓存方法
1634
+ }
1635
+ }
1636
+ MultiTabComponent.decorators = [
1637
+ { type: Component, args: [{
1638
+ selector: "rs-multi-tab",
1639
+ 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",
1640
+ 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}}"]
1641
+ }] }
1642
+ ];
1643
+ /** @nocollapse */
1644
+ MultiTabComponent.ctorParameters = () => [
1645
+ { type: Router },
1646
+ { type: CommonFunctionService },
1647
+ { type: ActivatedRoute },
1648
+ { type: KeepAliveService },
1649
+ { type: ChangeDetectorRef }
1650
+ ];
1651
+ MultiTabComponent.propDecorators = {
1652
+ singleReuseUrls: [{ type: Input }],
1653
+ onResize: [{ type: HostListener, args: ["window:resize", ["$event"],] }]
1654
+ };
1655
+ if (false) {
1656
+ /** @type {?} */
1657
+ MultiTabComponent.prototype.singleReuseUrls;
1658
+ /** @type {?} */
1659
+ MultiTabComponent.prototype.TAB_WIDTH;
1660
+ /** @type {?} */
1661
+ MultiTabComponent.prototype.GAP_NORMAL;
1662
+ /** @type {?} */
1663
+ MultiTabComponent.prototype.GAP_SMALL;
1664
+ /** @type {?} */
1665
+ MultiTabComponent.prototype.textGap;
1666
+ /** @type {?} */
1667
+ MultiTabComponent.prototype.foo;
1668
+ /** @type {?} */
1669
+ MultiTabComponent.prototype.comRef;
1670
+ /** @type {?} */
1671
+ MultiTabComponent.prototype.tabList;
1672
+ /** @type {?} */
1673
+ MultiTabComponent.prototype.selectedTab;
1674
+ /** @type {?} */
1675
+ MultiTabComponent.prototype.maxTabs;
1676
+ /** @type {?} */
1677
+ MultiTabComponent.prototype.screenWidth;
1678
+ /** @type {?} */
1679
+ MultiTabComponent.prototype.router;
1680
+ /** @type {?} */
1681
+ MultiTabComponent.prototype.cf;
1682
+ /** @type {?} */
1683
+ MultiTabComponent.prototype.activatedRoute;
1684
+ /** @type {?} */
1685
+ MultiTabComponent.prototype.keepAlive;
1686
+ /**
1687
+ * @type {?}
1688
+ * @private
1689
+ */
1690
+ MultiTabComponent.prototype.ref;
1095
1691
  }
1096
1692
 
1097
1693
  /**
@@ -1102,8 +1698,10 @@ if (false) {
1102
1698
  class MainContainerComponent {
1103
1699
  constructor() {
1104
1700
  this.isCollapsed = false; // 接收输入属性
1701
+ // 接收输入属性
1702
+ this.singleReuseUrls = []; //只能单个缓存的url
1105
1703
  }
1106
- // 接收输入属性
1704
+ //只能单个缓存的url
1107
1705
  /**
1108
1706
  * @return {?}
1109
1707
  */
@@ -1112,16 +1710,19 @@ class MainContainerComponent {
1112
1710
  MainContainerComponent.decorators = [
1113
1711
  { type: Component, args: [{
1114
1712
  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}"]
1713
+ 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",
1714
+ 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
1715
  }] }
1118
1716
  ];
1119
1717
  MainContainerComponent.propDecorators = {
1120
- isCollapsed: [{ type: Input }]
1718
+ isCollapsed: [{ type: Input }],
1719
+ singleReuseUrls: [{ type: Input }]
1121
1720
  };
1122
1721
  if (false) {
1123
1722
  /** @type {?} */
1124
1723
  MainContainerComponent.prototype.isCollapsed;
1724
+ /** @type {?} */
1725
+ MainContainerComponent.prototype.singleReuseUrls;
1125
1726
  }
1126
1727
 
1127
1728
  /**
@@ -1178,8 +1779,8 @@ class RSHeaderComponent {
1178
1779
  RSHeaderComponent.decorators = [
1179
1780
  { type: Component, args: [{
1180
1781
  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}"]
1782
+ 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",
1783
+ 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
1784
  }] }
1184
1785
  ];
1185
1786
  RSHeaderComponent.propDecorators = {
@@ -1254,14 +1855,14 @@ class RSAsideComponent {
1254
1855
  */
1255
1856
  onNavClick(item) {
1256
1857
  this.currentNav = item.title;
1257
- this.router.navigate([item.url]);
1858
+ this.router.navigate([item.url], { state: { title: item.title } });
1258
1859
  }
1259
1860
  }
1260
1861
  RSAsideComponent.decorators = [
1261
1862
  { type: Component, args: [{
1262
1863
  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}"]
1864
+ 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",
1865
+ 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
1866
  }] }
1266
1867
  ];
1267
1868
  /** @nocollapse */
@@ -1607,29 +2208,6 @@ if (false) {
1607
2208
  SwitchInputComponent.prototype.valueChange;
1608
2209
  }
1609
2210
 
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
2211
  /**
1634
2212
  * @fileoverview added by tsickle
1635
2213
  * Generated from: lib/service/icon-loader.service.ts
@@ -1637,10 +2215,12 @@ CommonFunctionService.ctorParameters = () => [];
1637
2215
  */
1638
2216
  class IconLoaderService {
1639
2217
  /**
1640
- * @param {?} iconReg
2218
+ * @param {?} registry
2219
+ * @param {?} domSanitizer
1641
2220
  */
1642
- constructor(iconReg) {
1643
- this.iconReg = iconReg;
2221
+ constructor(registry, domSanitizer) {
2222
+ this.registry = registry;
2223
+ this.domSanitizer = domSanitizer;
1644
2224
  }
1645
2225
  /**
1646
2226
  * @param {?} list
@@ -1648,11 +2228,11 @@ class IconLoaderService {
1648
2228
  */
1649
2229
  registerIcons(list) {
1650
2230
  list.forEach((/**
1651
- * @param {?} item
2231
+ * @param {?} __0
1652
2232
  * @return {?}
1653
2233
  */
1654
- (item) => {
1655
- this.iconReg.loadSvg(item.url, item.name).subscribe();
2234
+ ({ name, path }) => {
2235
+ this.registry.addSvgIcon(name, this.domSanitizer.bypassSecurityTrustResourceUrl(path));
1656
2236
  }));
1657
2237
  }
1658
2238
  }
@@ -1661,14 +2241,20 @@ IconLoaderService.decorators = [
1661
2241
  ];
1662
2242
  /** @nocollapse */
1663
2243
  IconLoaderService.ctorParameters = () => [
1664
- { type: SvgIconRegistryService }
2244
+ { type: MatIconRegistry },
2245
+ { type: DomSanitizer }
1665
2246
  ];
1666
2247
  if (false) {
1667
2248
  /**
1668
2249
  * @type {?}
1669
2250
  * @private
1670
2251
  */
1671
- IconLoaderService.prototype.iconReg;
2252
+ IconLoaderService.prototype.registry;
2253
+ /**
2254
+ * @type {?}
2255
+ * @private
2256
+ */
2257
+ IconLoaderService.prototype.domSanitizer;
1672
2258
  }
1673
2259
 
1674
2260
  /**
@@ -2197,10 +2783,13 @@ RaiseCommonLibModule.decorators = [
2197
2783
  declarations: [
2198
2784
  CommonGridComponent,
2199
2785
  FloatBoxComponent,
2200
- CommonListComponent,
2786
+ RsPageListComponent,
2787
+ RsPageTabComponent,
2788
+ GridBoxComponent,
2201
2789
  RSHeaderComponent,
2202
2790
  RSFooterComponent,
2203
2791
  RSAsideComponent,
2792
+ MultiTabComponent,
2204
2793
  MainContainerComponent,
2205
2794
  TagInputComponent,
2206
2795
  RadioGroupComponent,
@@ -2217,6 +2806,7 @@ RaiseCommonLibModule.decorators = [
2217
2806
  FormsModule,
2218
2807
  MatSnackBarModule,
2219
2808
  MatDialogModule,
2809
+ MatIconModule,
2220
2810
  GridModule,
2221
2811
  PagerModule,
2222
2812
  GridAllModule,
@@ -2248,10 +2838,11 @@ RaiseCommonLibModule.decorators = [
2248
2838
  DashboardLayoutModule,
2249
2839
  CarouselAllModule,
2250
2840
  ToolbarModule,
2841
+ TabModule,
2251
2842
  PdfViewerModule,
2252
2843
  DropDownButtonModule,
2844
+ SplitButtonModule,
2253
2845
  RichTextEditorAllModule,
2254
- AngularSvgIconModule.forRoot(),
2255
2846
  ],
2256
2847
  providers: [
2257
2848
  PageService,
@@ -2286,6 +2877,7 @@ RaiseCommonLibModule.decorators = [
2286
2877
  CommonFunctionService,
2287
2878
  IconLoaderService,
2288
2879
  DialogService,
2880
+ KeepAliveService,
2289
2881
  ],
2290
2882
  exports: [
2291
2883
  CommonModule,
@@ -2325,15 +2917,20 @@ RaiseCommonLibModule.decorators = [
2325
2917
  DashboardLayoutModule,
2326
2918
  CarouselAllModule,
2327
2919
  ToolbarModule,
2920
+ TabModule,
2328
2921
  PdfViewerModule,
2329
2922
  DropDownButtonModule,
2923
+ SplitButtonModule,
2330
2924
  RichTextEditorAllModule,
2331
2925
  CommonGridComponent,
2332
2926
  FloatBoxComponent,
2333
- CommonListComponent,
2927
+ RsPageListComponent,
2928
+ RsPageTabComponent,
2929
+ GridBoxComponent,
2334
2930
  RSHeaderComponent,
2335
2931
  RSFooterComponent,
2336
2932
  RSAsideComponent,
2933
+ MultiTabComponent,
2337
2934
  MainContainerComponent,
2338
2935
  TagInputComponent,
2339
2936
  RadioGroupComponent,
@@ -2360,5 +2957,5 @@ RaiseCommonLibModule.decorators = [
2360
2957
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2361
2958
  */
2362
2959
 
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 };
2960
+ 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
2961
  //# sourceMappingURL=raise-common-lib.js.map