raise-common-lib 0.0.128 → 0.0.130

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.
@@ -2078,7 +2078,7 @@ RsPageListComponent.decorators = [
2078
2078
  { type: Component, args: [{
2079
2079
  selector: "rs-page-list",
2080
2080
  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 <h1 class=\"rs-page-title\" *ngIf=\"pageTitle\">{{ pageTitle }}</h1>\r\n </ng-template>\r\n <div class=\"rs-sub-section\">\r\n <ng-content select=\"[subSectionSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-content-wrap\">\r\n <div class=\"rs-content-tab\">\r\n <ng-content select=\"[contentTabSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-toolbar-wrap\">\r\n <div class=\"rs-whole-bar\" *ngIf=\"hasWholeToolbarSlot\">\r\n <ng-content select=\"[wholeToolbarSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-left-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[leftToolbarBtnSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-right-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[rightToolbarBtnSlot]\"></ng-content>\r\n <div class=\"rs-search-input\" *ngIf=\"!hideSearch\">\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",
2081
- 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-sub-section{width:100%}.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;padding-bottom:4px;border-bottom:1px solid #eaedf0}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-whole-bar{width:100%}.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;align-items:center}.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:24px;min-width:auto!important}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col{gap:12px}.rs-page-list-wrap .rs-content-wrap .rs-left-col{flex:1;width:0}.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}"]
2081
+ 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-sub-section{width:100%}.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;padding-bottom:4px;border-bottom:1px solid #eaedf0}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-whole-bar{width:100%}.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;align-items:center}.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:24px!important;min-width:auto!important}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col{gap:12px}.rs-page-list-wrap .rs-content-wrap .rs-left-col{flex:1;width:0;gap:4px}.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}"]
2082
2082
  }] }
2083
2083
  ];
2084
2084
  RsPageListComponent.propDecorators = {
@@ -2264,7 +2264,7 @@ GridBoxComponent.decorators = [
2264
2264
  { type: Component, args: [{
2265
2265
  selector: "rs-grid-box",
2266
2266
  template: "<div class=\"rs-grid-box\" [ngClass]=\"{ 'is-not-inner': !isInner }\">\r\n <div class=\"rs-content-tab\">\r\n <ng-content select=\"[contentTabSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-toolbar-wrap\">\r\n <div class=\"rs-whole-bar\" *ngIf=\"hasWholeToolbarSlot\">\r\n <ng-content select=\"[wholeToolbarSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-left-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[leftToolbarBtnSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-right-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[rightToolbarBtnSlot]\"></ng-content>\r\n <div class=\"rs-search-input\" *ngIf=\"!hideSearch\">\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",
2267
- 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;padding-bottom:4px;border-bottom:1px solid #eaedf0}.rs-grid-box .rs-toolbar-wrap .rs-whole-bar{width:100%}.rs-grid-box .rs-toolbar-wrap .rs-left-col,.rs-grid-box .rs-toolbar-wrap .rs-right-col{display:flex;align-items:center}.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:24px;min-width:auto!important}.rs-grid-box .rs-toolbar-wrap .rs-left-col{flex:1;width:0}.rs-grid-box .rs-toolbar-wrap .rs-right-col{gap:12px}.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}"]
2267
+ 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;padding-bottom:4px;border-bottom:1px solid #eaedf0}.rs-grid-box .rs-toolbar-wrap .rs-whole-bar{width:100%}.rs-grid-box .rs-toolbar-wrap .rs-left-col,.rs-grid-box .rs-toolbar-wrap .rs-right-col{display:flex;align-items:center}.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:24px!important;min-width:auto!important}.rs-grid-box .rs-toolbar-wrap .rs-left-col{flex:1;width:0;gap:4px}.rs-grid-box .rs-toolbar-wrap .rs-right-col{gap:12px}.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}"]
2268
2268
  }] }
2269
2269
  ];
2270
2270
  GridBoxComponent.propDecorators = {
@@ -2577,16 +2577,6 @@ class MultiTabComponent {
2577
2577
  * @return {?}
2578
2578
  */
2579
2579
  ngOnInit() {
2580
- this.subscriptions.push(this.cf.closeTab$.subscribe((/**
2581
- * @param {?} idx
2582
- * @return {?}
2583
- */
2584
- (idx) => {
2585
- if (idx === undefined) {
2586
- idx = this.selectedTab;
2587
- }
2588
- this.closeTab(idx);
2589
- })));
2590
2580
  this.initTab();
2591
2581
  // 解决刷新页面后,选中的 tab 丢失问题
2592
2582
  /** @type {?} */
@@ -2594,7 +2584,8 @@ class MultiTabComponent {
2594
2584
  * @param {?} ele
2595
2585
  * @return {?}
2596
2586
  */
2597
- (ele) => this.urlWithoutQuery(ele.url) === this.urlWithoutQuery(this.router.url)));
2587
+ (ele) => this.urlWithoutQuery(ele.url) ===
2588
+ this.urlWithoutQuery(this.router.url)));
2598
2589
  if (isExistIdx !== -1) {
2599
2590
  this.selectedTab = isExistIdx;
2600
2591
  }
@@ -2611,6 +2602,18 @@ class MultiTabComponent {
2611
2602
  /** @type {?} */
2612
2603
  const navigation = this.router.getCurrentNavigation();
2613
2604
  if (navigation) {
2605
+ /** @type {?} */
2606
+ const tooltipElements = document.querySelectorAll(".e-popup-open");
2607
+ // 删除tooltips
2608
+ tooltipElements.forEach((/**
2609
+ * @param {?} element
2610
+ * @return {?}
2611
+ */
2612
+ (element) => {
2613
+ /** @type {?} */
2614
+ const htmlElement = (/** @type {?} */ (element));
2615
+ htmlElement.style.display = "none";
2616
+ }));
2614
2617
  /** @type {?} */
2615
2618
  const state = navigation.extras.state;
2616
2619
  // 获取传递的 state
@@ -2624,12 +2627,15 @@ class MultiTabComponent {
2624
2627
  /** @type {?} */
2625
2628
  let title = (state && state.title) ||
2626
2629
  navigationInfo.title ||
2627
- navigationInfo.subTitle;
2630
+ navigationInfo.subTitle ||
2631
+ navigationInfo.name;
2632
+ /** @type {?} */
2633
+ let noReused = (state && state.noReused) || false;
2628
2634
  if (currentRoute && !skipLocationChange) {
2629
2635
  if (this.noGenerateTabUrls.includes(this.urlWithoutQuery(this.router.url))) {
2630
2636
  return; // 排除不生成tab的url
2631
2637
  }
2632
- this.setTab(this.router.url, currentRoute.snapshot.routeConfig.path, title);
2638
+ this.setTab(this.router.url, currentRoute.snapshot.routeConfig.path, title, noReused);
2633
2639
  }
2634
2640
  }
2635
2641
  })));
@@ -2739,9 +2745,10 @@ class MultiTabComponent {
2739
2745
  }
2740
2746
  /**
2741
2747
  * @param {?} idx
2748
+ * @param {?=} isExternal
2742
2749
  * @return {?}
2743
2750
  */
2744
- closeTab(idx) {
2751
+ closeTab(idx, isExternal) {
2745
2752
  /** @type {?} */
2746
2753
  const tab = this.tabList[idx];
2747
2754
  this.tabList = this.tabList.filter((/**
@@ -2750,11 +2757,14 @@ class MultiTabComponent {
2750
2757
  */
2751
2758
  (ele) => ele.url !== tab.url));
2752
2759
  this.clearCache(this.urlWithoutQuery(tab.url));
2753
- if (this.selectedTab === idx) {
2760
+ if (!isExternal && this.selectedTab === idx) {
2754
2761
  /** @type {?} */
2755
2762
  const targetIdx = Math.max(0, idx - 1);
2756
2763
  this.changeTab(this.tabList[targetIdx], targetIdx);
2757
2764
  }
2765
+ if (idx < this.selectedTab) {
2766
+ this.selectedTab = this.selectedTab - 1; // 如果关闭的tab在当前选中的tab之前,选中tab索引减1
2767
+ }
2758
2768
  this.setEllipsisTitle();
2759
2769
  sessionStorage.setItem("TabCache", JSON.stringify(this.tabList));
2760
2770
  this.ref.markForCheck();
@@ -2766,6 +2776,15 @@ class MultiTabComponent {
2766
2776
  */
2767
2777
  changeTab(tab, idx) {
2768
2778
  this.router.navigateByUrl(tab.url);
2779
+ if (tab.navigationInfo) {
2780
+ sessionStorage.setItem("navigationInfo", JSON.stringify(tab.navigationInfo));
2781
+ }
2782
+ if (tab.fromUrl) {
2783
+ sessionStorage.setItem("fromUrl", tab.fromUrl);
2784
+ }
2785
+ if (tab.permissions) {
2786
+ sessionStorage.setItem("permissions", JSON.stringify(tab.permissions));
2787
+ }
2769
2788
  this.selectedTab = idx;
2770
2789
  this.ref.markForCheck();
2771
2790
  }
@@ -2776,12 +2795,24 @@ class MultiTabComponent {
2776
2795
  */
2777
2796
  addTab(url, title) {
2778
2797
  if (this.tabList.length >= this.maxTabs) {
2779
- this.closeTab(0); // 删除第一个
2798
+ this.closeTab(1); // 删除第二个,第一个固定
2780
2799
  }
2800
+ /** @type {?} */
2801
+ const localPermissions = sessionStorage.getItem("permissions") ||
2802
+ localStorage.getItem("permissions");
2803
+ /** @type {?} */
2804
+ const navigationInfo = JSON.parse(sessionStorage.getItem("navigationInfo"));
2805
+ /** @type {?} */
2806
+ const fromUrl = sessionStorage.getItem("fromUrl");
2807
+ /** @type {?} */
2808
+ const permissions = JSON.parse(localPermissions);
2781
2809
  this.tabList.push({
2782
2810
  url: url,
2783
2811
  title: title || "default",
2784
2812
  displayTitle: title,
2813
+ navigationInfo: navigationInfo,
2814
+ permissions: permissions,
2815
+ fromUrl: fromUrl,
2785
2816
  });
2786
2817
  this.selectedTab = this.tabList.length - 1;
2787
2818
  this.setEllipsisTitle();
@@ -2790,11 +2821,12 @@ class MultiTabComponent {
2790
2821
  }
2791
2822
  /**
2792
2823
  * @param {?} url
2793
- * @param {?=} pureUrl
2794
- * @param {?=} title
2824
+ * @param {?} pureUrl
2825
+ * @param {?} title
2826
+ * @param {?} noReused
2795
2827
  * @return {?}
2796
2828
  */
2797
- setTab(url, pureUrl, title) {
2829
+ setTab(url, pureUrl, title, noReused) {
2798
2830
  /** @type {?} */
2799
2831
  const isExistIdx = this.tabList.findIndex((/**
2800
2832
  * @param {?} ele
@@ -2820,7 +2852,16 @@ class MultiTabComponent {
2820
2852
  this.addTab(url, title);
2821
2853
  }
2822
2854
  else {
2823
- this.selectedTab = isExistIdx;
2855
+ /** @type {?} */
2856
+ const targetTabUrl = this.tabList[isExistIdx].url;
2857
+ if (targetTabUrl !== url || noReused) {
2858
+ // 当缓存一致时候,但是url不一致,重新按照新的url生成tab
2859
+ this.closeTab(isExistIdx, true);
2860
+ this.addTab(url, title);
2861
+ }
2862
+ else {
2863
+ this.changeTab(this.tabList[isExistIdx], isExistIdx);
2864
+ }
2824
2865
  this.ref.markForCheck();
2825
2866
  }
2826
2867
  }
@@ -2871,8 +2912,8 @@ class MultiTabComponent {
2871
2912
  MultiTabComponent.decorators = [
2872
2913
  { type: Component, args: [{
2873
2914
  selector: "rs-multi-tab",
2874
- template: "<div class=\"rs-multi-tab\" [ngClass]=\"{ 'b-line': tabList.length > 0 }\">\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(i)\"\r\n />\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <div class=\"refresh-tab\" (click)=\"refreshTab()\" *ngIf=\"tabList.length > 0\">\r\n <ejs-tooltip\r\n id=\"notSelectTooltip\"\r\n [showTipPointer]=\"false\"\r\n [openDelay]=\"500\"\r\n style=\"height: 27px\"\r\n >\r\n <ng-template #content>\r\n <div class=\"tooltip-content\">Refresh Current Tab</div>\r\n </ng-template>\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 </ejs-tooltip>\r\n <span>Refresh Current Tab</span>\r\n </div>\r\n</div>\r\n",
2875
- styles: [".rs-multi-tab{width:100%;display:flex;justify-content:space-between;margin:0 auto;max-width:1886px}.rs-multi-tab.b-line{border-bottom:1px solid #e5eaef}.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:28px;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}}"]
2915
+ template: "<div class=\"rs-multi-tab\" [ngClass]=\"{ 'b-line': tabList.length > 0 }\">\r\n\t<ul>\r\n\t\t<ng-container *ngFor=\"let tab of tabList; let i = index\">\r\n\t\t\t<li\r\n\t\t\t\t[ngClass]=\"selectedTab === i ? 'isSelect' : 'notSelect'\"\r\n\t\t\t\t(click)=\"changeTab(tab, i)\"\r\n\t\t\t>\r\n\t\t\t\t<ejs-tooltip\r\n\t\t\t\t\tid=\"notSelectTooltip\"\r\n\t\t\t\t\t[showTipPointer]=\"false\"\r\n\t\t\t\t\t[openDelay]=\"500\"\r\n\t\t\t\t\t*ngIf=\"tab.displayTitle !== tab.title; else originText\"\r\n\t\t\t\t\tstyle=\"height: 27px\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<ng-template #content>\r\n\t\t\t\t\t\t<div class=\"tooltip-content\">\r\n\t\t\t\t\t\t\t{{ tab.title }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<span class=\"tabTitle\">{{ tab.displayTitle }}</span>\r\n\t\t\t\t</ejs-tooltip>\r\n\t\t\t\t<ng-template #originText>\r\n\t\t\t\t\t<span class=\"tabTitle\">\r\n\t\t\t\t\t\t{{ tab.displayTitle }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<span\r\n\t\t\t\t\tclass=\"img-block\"\r\n\t\t\t\t\t*ngIf=\"selectedTab !== i && i !== 0\"\r\n\t\t\t\t></span>\r\n\t\t\t\t<img\r\n\t\t\t\t\t*ngIf=\"i !== 0\"\r\n\t\t\t\t\tsrc=\"../../../assets/img/close-url.svg\"\r\n\t\t\t\t\t(click)=\"closeTab(i)\"\r\n\t\t\t\t/>\r\n\t\t\t</li>\r\n\t\t</ng-container>\r\n\t</ul>\r\n\t<div class=\"refresh-tab\" (click)=\"refreshTab()\" *ngIf=\"tabList.length > 0\">\r\n\t\t<ejs-tooltip\r\n\t\t\tid=\"notSelectTooltip\"\r\n\t\t\tcssClass=\"notSelectTooltip\"\r\n\t\t\t[showTipPointer]=\"false\"\r\n\t\t\t[openDelay]=\"500\"\r\n\t\t\tstyle=\"height: 27px\"\r\n\t\t>\r\n\t\t\t<ng-template #content>\r\n\t\t\t\t<div class=\"tooltip-content\">Refresh Current Tab</div>\r\n\t\t\t</ng-template>\r\n\t\t\t<img\r\n\t\t\t\tid=\"loadingIcon\"\r\n\t\t\t\talt\r\n\t\t\t\tclass=\"refresh-btn\"\r\n\t\t\t\tsrc=\"../../../assets/img/desktop-refresh-btn.svg\"\r\n\t\t\t/>\r\n\t\t</ejs-tooltip>\r\n\t</div>\r\n</div>\r\n",
2916
+ styles: [".rs-multi-tab{width:100%;display:flex;justify-content:space-between;margin:0 auto;max-width:1886px}.rs-multi-tab.b-line{border-bottom:1px solid #e5eaef}.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:28px;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}.notSelectTooltip{transform:translateX(-12px)}@-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}.isSelect:not(:first-child){padding-right:20px!important}}@media (max-width:600px){.rs-multi-tab ul li{padding:0 8px}.rs-multi-tab ul .notSelect .img-block{width:0!important}}"]
2876
2917
  }] }
2877
2918
  ];
2878
2919
  /** @nocollapse */
@@ -3299,6 +3340,7 @@ class RSToolbarComponent {
3299
3340
  this.router = router;
3300
3341
  this.ref = ref;
3301
3342
  this.buttons = [];
3343
+ this.disabledOptions = {};
3302
3344
  this.visibleButtons = [];
3303
3345
  this.hiddenButtons = [];
3304
3346
  }
@@ -3330,6 +3372,7 @@ class RSToolbarComponent {
3330
3372
  const buttonWidth = buttonRefs[i].nativeElement.getBoundingClientRect().width;
3331
3373
  // console.log("buttonWidth", buttonWidth);
3332
3374
  if (totalWidth +
3375
+ 4 + // 4px margin between buttons
3333
3376
  buttonWidth +
3334
3377
  (i < buttonRefs.length - 1 ? menuButtonWidth : 0) <=
3335
3378
  containerWidth) {
@@ -3356,7 +3399,7 @@ class RSToolbarComponent {
3356
3399
  RSToolbarComponent.decorators = [
3357
3400
  { type: Component, args: [{
3358
3401
  selector: "rs-toolbar",
3359
- template: "<div #toolbarContainer class=\"rs-toolbar-container\">\r\n <!-- \u53EF\u89C1\u6309\u94AE -->\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <div class=\"temp-hidden\" #toolbarItem>\r\n <rs-toolbar-item\r\n [image]=\"button.image\"\r\n [text]=\"button.text\"\r\n [disabled]=\"button.disabled\"\r\n (click)=\"button.action && button.action()\"\r\n [children]=\"button.children || []\"\r\n >\r\n </rs-toolbar-item>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- \u4E0B\u62C9\u83DC\u5355\uFF08\u5982\u679C\u6709\u9690\u85CF\u6309\u94AE\uFF09 -->\r\n <button\r\n *ngIf=\"hiddenButtons.length > 0\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n #menuTrigger=\"matMenuTrigger\"\r\n class=\"action-toggle\"\r\n >\r\n <mat-icon svgIcon=\"more\"></mat-icon>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\">\r\n <ng-container *ngFor=\"let button of hiddenButtons\">\r\n <rs-toolbar-item\r\n [image]=\"button.image\"\r\n [text]=\"button.text\"\r\n [disabled]=\"button.disabled\"\r\n (click)=\"button.action && button.action()\"\r\n [children]=\"button.children || []\"\r\n >\r\n </rs-toolbar-item>\r\n </ng-container>\r\n </mat-menu>\r\n</div>\r\n",
3402
+ template: "<div #toolbarContainer class=\"rs-toolbar-container\">\r\n <!-- \u53EF\u89C1\u6309\u94AE -->\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <div class=\"temp-hidden\" #toolbarItem>\r\n <rs-toolbar-item\r\n [image]=\"button.image\"\r\n [text]=\"button.text\"\r\n [disabled]=\"(button.key && disabledOptions[button.key]) || false\"\r\n (click)=\"button.action && button.action()\"\r\n [children]=\"button.children || []\"\r\n [disabledOptions]=\"disabledOptions\"\r\n >\r\n </rs-toolbar-item>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- \u4E0B\u62C9\u83DC\u5355\uFF08\u5982\u679C\u6709\u9690\u85CF\u6309\u94AE\uFF09 -->\r\n <button\r\n *ngIf=\"hiddenButtons.length > 0\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n #menuTrigger=\"matMenuTrigger\"\r\n class=\"action-toggle\"\r\n >\r\n <mat-icon svgIcon=\"more\"></mat-icon>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\">\r\n <ng-container *ngFor=\"let button of hiddenButtons\">\r\n <rs-toolbar-item\r\n [image]=\"button.image\"\r\n [text]=\"button.text\"\r\n (click)=\"button.action && button.action()\"\r\n [disabled]=\"disabledOptions[button.key] || false\"\r\n [children]=\"button.children || []\"\r\n [disabledOptions]=\"disabledOptions\"\r\n >\r\n </rs-toolbar-item>\r\n </ng-container>\r\n </mat-menu>\r\n</div>\r\n",
3360
3403
  styles: [":host{display:block;width:100%}.rs-toolbar-container{width:100%;display:flex;align-items:center}.rs-toolbar-container .temp-hidden{visibility:hidden;position:absolute}.rs-toolbar-container .action-toggle{width:24px;height:24px;min-width:24px;max-width:24px;padding:0;border-radius:4px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;background:0 0}.rs-toolbar-container .action-toggle:hover{background:rgba(214,227,245,.2)}.rs-toolbar-container .action-toggle .mat-button-wrapper{max-height:24px;height:24px}.rs-toolbar-container .action-toggle ::ng-deep .mat-icon{width:16px;height:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}"]
3361
3404
  }] }
3362
3405
  ];
@@ -3367,6 +3410,7 @@ RSToolbarComponent.ctorParameters = () => [
3367
3410
  ];
3368
3411
  RSToolbarComponent.propDecorators = {
3369
3412
  buttons: [{ type: Input }],
3413
+ disabledOptions: [{ type: Input }],
3370
3414
  toolbarContainer: [{ type: ViewChild, args: ["toolbarContainer", { static: false },] }],
3371
3415
  buttonElements: [{ type: ViewChildren, args: ["toolbarItem",] }],
3372
3416
  onWindowResize: [{ type: HostListener, args: ["window:resize",] }]
@@ -3375,6 +3419,8 @@ if (false) {
3375
3419
  /** @type {?} */
3376
3420
  RSToolbarComponent.prototype.buttons;
3377
3421
  /** @type {?} */
3422
+ RSToolbarComponent.prototype.disabledOptions;
3423
+ /** @type {?} */
3378
3424
  RSToolbarComponent.prototype.toolbarContainer;
3379
3425
  /** @type {?} */
3380
3426
  RSToolbarComponent.prototype.buttonElements;
@@ -21395,6 +21441,7 @@ if (false) {
21395
21441
  class ToolbarItemComponent {
21396
21442
  constructor() {
21397
21443
  this.children = [];
21444
+ this.disabledOptions = {};
21398
21445
  this.ImageType = [
21399
21446
  "Add",
21400
21447
  "Delete",
@@ -21423,8 +21470,8 @@ class ToolbarItemComponent {
21423
21470
  ToolbarItemComponent.decorators = [
21424
21471
  { type: Component, args: [{
21425
21472
  selector: "rs-toolbar-item",
21426
- template: "<button\r\n *ngIf=\"!children.length\"\r\n class=\"toolbar-action-item e-btn text\"\r\n #buttonElement\r\n [disabled]=\"!!disabled\"\r\n>\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"image\">\r\n <img *ngIf=\"!ImageType.includes(image)\" [src]=\"image\" />\r\n </span>\r\n <span>{{ text }}</span>\r\n</button>\r\n\r\n<button\r\n *ngIf=\"children.length\"\r\n class=\"toolbar-action-item e-btn text\"\r\n #buttonElement\r\n mat-menu-item\r\n [matMenuTriggerFor]=\"menu\"\r\n [disabled]=\"!!disabled\"\r\n>\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"image\">\r\n <img *ngIf=\"!ImageType.includes(image)\" [src]=\"image\" />\r\n </span>\r\n <span>{{ text }}</span>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-container *ngFor=\"let button of children\">\r\n <button\r\n class=\"toolbar-action-item e-btn text\"\r\n [disabled]=\"!!button.disabled\"\r\n (click)=\"button.action()\"\r\n >\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"button.image\">\r\n <img *ngIf=\"!ImageType.includes(button.image)\" [src]=\"button.image\" />\r\n </span>\r\n <span>{{ button.text }}</span>\r\n </button>\r\n </ng-container>\r\n</mat-menu>\r\n",
21427
- styles: ["rs-toolbar-item.disabled{pointer-events:none}.toolbar-action-item{min-width:auto;padding:4px 8px}.toolbar-action-item .toolbar-action-image{height:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}.toolbar-action-item .toolbar-action-image::before{display:block;width:16px;height:16px;line-height:16px}.toolbar-action-item .toolbar-action-image[data-type=Add]::before{content:url(/assets/img/toolbar-action-add.svg)}.toolbar-action-item .toolbar-action-image[data-type=Delete]::before{content:url(/assets/img/toolbar-action-delete.svg)}.toolbar-action-item .toolbar-action-image[data-type=Import]::before{content:url(/assets/img/toolbar-action-import.svg)}.toolbar-action-item .toolbar-action-image[data-type=Upload]::before{content:url(/assets/img/toolbar-action-upload.svg)}.toolbar-action-item .toolbar-action-image[data-type=Download]::before{content:url(/assets/img/toolbar-action-download.svg)}.toolbar-action-item .toolbar-action-image[data-type=Export]::before{content:url(/assets/img/toolbar-action-export.svg)}.toolbar-action-item .toolbar-action-image[data-type=Duplicate]::before{content:url(/assets/img/toolbar-action-duplicate.svg)}.toolbar-action-item .toolbar-action-image[data-type=Refresh]::before{content:url(/assets/img/toolbar-action-refresh.svg)}.toolbar-action-item .toolbar-action-image img{height:16px;display:block}.toolbar-action-item.e-btn{width:100%;justify-content:flex-start}.toolbar-action-item.mat-menu-item{height:24px!important}.toolbar-action-item.mat-menu-item::after{display:none}"]
21473
+ template: "<button\r\n *ngIf=\"!children.length\"\r\n class=\"toolbar-action-item e-btn text\"\r\n #buttonElement\r\n [disabled]=\"!!disabled\"\r\n>\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"image\">\r\n <img *ngIf=\"!ImageType.includes(image)\" [src]=\"image\" />\r\n </span>\r\n <span>{{ text }}</span>\r\n</button>\r\n\r\n<button\r\n *ngIf=\"children.length\"\r\n class=\"toolbar-action-item e-btn text\"\r\n #buttonElement\r\n mat-menu-item\r\n [matMenuTriggerFor]=\"menu\"\r\n [disabled]=\"!!disabled\"\r\n>\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"image\">\r\n <img *ngIf=\"!ImageType.includes(image)\" [src]=\"image\" />\r\n </span>\r\n <span>{{ text }}</span>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-container *ngFor=\"let button of children\">\r\n <button\r\n class=\"toolbar-action-item e-btn text\"\r\n [disabled]=\"(button.key && disabledOptions[button.key]) || false\"\r\n (click)=\"button.action()\"\r\n >\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"button.image\">\r\n <img *ngIf=\"!ImageType.includes(button.image)\" [src]=\"button.image\" />\r\n </span>\r\n <span>{{ button.text }}</span>\r\n </button>\r\n </ng-container>\r\n</mat-menu>\r\n",
21474
+ styles: ["rs-toolbar-item.disabled{pointer-events:none}.toolbar-action-item{min-width:auto;padding:4px 8px}.toolbar-action-item .toolbar-action-image{height:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}.toolbar-action-item .toolbar-action-image::before{display:block;width:16px;height:16px;line-height:16px}.toolbar-action-item .toolbar-action-image[data-type=Add]::before{content:url(/assets/img/toolbar-action-add.svg)}.toolbar-action-item .toolbar-action-image[data-type=Delete]::before{content:url(/assets/img/toolbar-action-delete.svg)}.toolbar-action-item .toolbar-action-image[data-type=Import]::before{content:url(/assets/img/toolbar-action-import.svg)}.toolbar-action-item .toolbar-action-image[data-type=Upload]::before{content:url(/assets/img/toolbar-action-upload.svg)}.toolbar-action-item .toolbar-action-image[data-type=Download]::before{content:url(/assets/img/toolbar-action-download.svg)}.toolbar-action-item .toolbar-action-image[data-type=Export]::before{content:url(/assets/img/toolbar-action-export.svg)}.toolbar-action-item .toolbar-action-image[data-type=Duplicate]::before{content:url(/assets/img/toolbar-action-duplicate.svg)}.toolbar-action-item .toolbar-action-image[data-type=Refresh]::before{content:url(/assets/img/toolbar-action-refresh.svg)}.toolbar-action-item .toolbar-action-image img{height:16px;display:block}.toolbar-action-item.e-btn{width:100%;justify-content:flex-start}.toolbar-action-item.mat-menu-item::after{display:none}"]
21428
21475
  }] }
21429
21476
  ];
21430
21477
  ToolbarItemComponent.propDecorators = {
@@ -21432,6 +21479,7 @@ ToolbarItemComponent.propDecorators = {
21432
21479
  text: [{ type: Input, args: ["text",] }],
21433
21480
  disabled: [{ type: Input, args: ["disabled",] }],
21434
21481
  children: [{ type: Input, args: ["children",] }],
21482
+ disabledOptions: [{ type: Input }],
21435
21483
  buttonElement: [{ type: ViewChild, args: ["buttonElement", { static: false },] }],
21436
21484
  hostDisabled: [{ type: HostBinding, args: ["class.disabled",] }]
21437
21485
  };
@@ -21445,6 +21493,8 @@ if (false) {
21445
21493
  /** @type {?} */
21446
21494
  ToolbarItemComponent.prototype.children;
21447
21495
  /** @type {?} */
21496
+ ToolbarItemComponent.prototype.disabledOptions;
21497
+ /** @type {?} */
21448
21498
  ToolbarItemComponent.prototype.buttonElement;
21449
21499
  /** @type {?} */
21450
21500
  ToolbarItemComponent.prototype.ImageType;