raise-common-lib 0.0.22 → 0.0.24

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 (36) hide show
  1. package/bundles/raise-common-lib.umd.js +82 -42
  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/dialog/common-delete-dialog/index.component.js +2 -2
  6. package/esm2015/lib/dialog/common-dialog/index.component.js +2 -2
  7. package/esm2015/lib/form/checkbox-group/index.component.js +1 -1
  8. package/esm2015/lib/form/radio-group/index.component.js +1 -1
  9. package/esm2015/lib/form/switch-input/index.component.js +1 -1
  10. package/esm2015/lib/layout/multi-tab/index.component.js +1 -1
  11. package/esm2015/lib/layout/rs-aside/index.component.js +25 -9
  12. package/esm2015/lib/layout/rs-header/index.component.js +41 -26
  13. package/esm2015/lib/service/dialog.service.js +2 -2
  14. package/esm2015/lib/service/keep-alive.service.js +11 -6
  15. package/esm5/lib/dialog/common-delete-dialog/index.component.js +2 -2
  16. package/esm5/lib/dialog/common-dialog/index.component.js +2 -2
  17. package/esm5/lib/form/checkbox-group/index.component.js +1 -1
  18. package/esm5/lib/form/radio-group/index.component.js +1 -1
  19. package/esm5/lib/form/switch-input/index.component.js +1 -1
  20. package/esm5/lib/layout/multi-tab/index.component.js +1 -1
  21. package/esm5/lib/layout/rs-aside/index.component.js +26 -9
  22. package/esm5/lib/layout/rs-header/index.component.js +45 -26
  23. package/esm5/lib/service/dialog.service.js +2 -2
  24. package/esm5/lib/service/keep-alive.service.js +11 -6
  25. package/fesm2015/raise-common-lib.js +77 -42
  26. package/fesm2015/raise-common-lib.js.map +1 -1
  27. package/fesm5/raise-common-lib.js +82 -42
  28. package/fesm5/raise-common-lib.js.map +1 -1
  29. package/lib/layout/rs-aside/index.component.d.ts +1 -1
  30. package/lib/layout/rs-header/index.component.d.ts +5 -9
  31. package/package.json +1 -1
  32. package/raise-common-lib.metadata.json +1 -1
  33. package/src/assets/style/reset/checkbox.scss +33 -0
  34. package/src/assets/style/reset/radio.scss +37 -0
  35. package/src/assets/style/reset/switch.scss +32 -0
  36. package/src/assets/style/style.scss +4 -0
@@ -1822,11 +1822,16 @@
1822
1822
  * @return {?}
1823
1823
  */
1824
1824
  function (future, curr) {
1825
- console.log("shouldReuseRoute");
1826
- // return this.getRoutePath(future) === this.getRoutePath(curr); // 复用相同的路由
1827
- return (future.routeConfig === curr.routeConfig &&
1828
- JSON.stringify(future.params) === JSON.stringify(curr.params) &&
1829
- JSON.stringify(future.queryParams) === JSON.stringify(curr.queryParams));
1825
+ if (future.routeConfig === curr.routeConfig) {
1826
+ if (future.children.length === 0 && curr.children.length === 0) {
1827
+ // 无子路由时, 通过params和queryParams判断是否复用路由
1828
+ return (JSON.stringify(future.params) === JSON.stringify(curr.params) &&
1829
+ JSON.stringify(future.queryParams) ===
1830
+ JSON.stringify(curr.queryParams));
1831
+ }
1832
+ return true;
1833
+ }
1834
+ return false;
1830
1835
  };
1831
1836
  /**
1832
1837
  * @param {?} route
@@ -2228,26 +2233,37 @@
2228
2233
  */
2229
2234
  var RSHeaderComponent = /** @class */ (function () {
2230
2235
  function RSHeaderComponent() {
2231
- this.toggleMenu = new core.EventEmitter();
2232
2236
  this.isCollapsed = false; // 接收输入属性
2233
2237
  // 接收输入属性
2234
2238
  this.lastLoginTime = new Date();
2235
- this.langOptions = [
2236
- {
2237
- value: 1,
2238
- text: "English",
2239
- },
2240
- {
2241
- value: 2,
2242
- text: "繁體中文",
2243
- },
2244
- {
2245
- value: 3,
2246
- text: "简体中文",
2247
- },
2248
- ];
2249
- this.currentLang = this.langOptions[0];
2239
+ this.toggleMenu = new core.EventEmitter();
2240
+ this.changeLanguage = new core.EventEmitter();
2241
+ this._langOptions = [];
2250
2242
  }
2243
+ Object.defineProperty(RSHeaderComponent.prototype, "langOptions", {
2244
+ get: /**
2245
+ * @return {?}
2246
+ */
2247
+ function () {
2248
+ return this._langOptions;
2249
+ },
2250
+ set: /**
2251
+ * @param {?} options
2252
+ * @return {?}
2253
+ */
2254
+ function (options) {
2255
+ this._langOptions = options;
2256
+ if (options && options.length > 0) {
2257
+ this.currentLang = options.find((/**
2258
+ * @param {?} e
2259
+ * @return {?}
2260
+ */
2261
+ function (e) { return e.defaultLang; }));
2262
+ }
2263
+ },
2264
+ enumerable: true,
2265
+ configurable: true
2266
+ });
2251
2267
  /**
2252
2268
  * @return {?}
2253
2269
  */
@@ -2255,7 +2271,7 @@
2255
2271
  * @return {?}
2256
2272
  */
2257
2273
  function () {
2258
- this.translation = JSON.parse(localStorage.getItem("translation"));
2274
+ this.translation = JSON.parse(localStorage.getItem("translation")) || {};
2259
2275
  };
2260
2276
  /**
2261
2277
  * @return {?}
@@ -2280,34 +2296,42 @@
2280
2296
  * @return {?}
2281
2297
  */
2282
2298
  function (item) { return item.text === event.item.text; }));
2299
+ this.changeLanguage.emit(this.currentLang.languageCode);
2283
2300
  };
2284
2301
  RSHeaderComponent.decorators = [
2285
2302
  { type: core.Component, args: [{
2286
2303
  selector: "rs-header",
2287
- 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",
2288
- 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}"]
2304
+ 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=\"content-header-wrap\">\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</div>\r\n",
2305
+ 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 .content-header-wrap{display:flex;justify-content:space-between;align-items:center;flex:1}.rs-header .bread-crumbs-wrap{padding-left:16px}.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}"]
2289
2306
  }] }
2290
2307
  ];
2291
2308
  RSHeaderComponent.propDecorators = {
2292
- toggleMenu: [{ type: core.Output }],
2293
2309
  isCollapsed: [{ type: core.Input }],
2294
- lastLoginTime: [{ type: core.Input }]
2310
+ lastLoginTime: [{ type: core.Input }],
2311
+ langOptions: [{ type: core.Input }],
2312
+ toggleMenu: [{ type: core.Output }],
2313
+ changeLanguage: [{ type: core.Output }]
2295
2314
  };
2296
2315
  return RSHeaderComponent;
2297
2316
  }());
2298
2317
  if (false) {
2299
- /** @type {?} */
2300
- RSHeaderComponent.prototype.toggleMenu;
2301
2318
  /** @type {?} */
2302
2319
  RSHeaderComponent.prototype.isCollapsed;
2303
2320
  /** @type {?} */
2304
2321
  RSHeaderComponent.prototype.lastLoginTime;
2305
2322
  /** @type {?} */
2306
- RSHeaderComponent.prototype.translation;
2323
+ RSHeaderComponent.prototype.toggleMenu;
2307
2324
  /** @type {?} */
2308
- RSHeaderComponent.prototype.langOptions;
2325
+ RSHeaderComponent.prototype.changeLanguage;
2326
+ /**
2327
+ * @type {?}
2328
+ * @private
2329
+ */
2330
+ RSHeaderComponent.prototype._langOptions;
2309
2331
  /** @type {?} */
2310
2332
  RSHeaderComponent.prototype.currentLang;
2333
+ /** @type {?} */
2334
+ RSHeaderComponent.prototype.translation;
2311
2335
  }
2312
2336
 
2313
2337
  /**
@@ -2410,7 +2434,7 @@
2410
2434
  this.isCollapsed = false; // 接收输入属性
2411
2435
  // 接收输入属性
2412
2436
  this.navList = [];
2413
- this.currentNav = null;
2437
+ this.currentNav = "";
2414
2438
  }
2415
2439
  /**
2416
2440
  * @return {?}
@@ -2418,7 +2442,23 @@
2418
2442
  RSAsideComponent.prototype.ngOnInit = /**
2419
2443
  * @return {?}
2420
2444
  */
2421
- function () { };
2445
+ function () {
2446
+ var _this = this;
2447
+ this.currentNav = this.router.url;
2448
+ // 监听路由变化
2449
+ this.router.events
2450
+ .pipe(operators.filter((/**
2451
+ * @param {?} event
2452
+ * @return {?}
2453
+ */
2454
+ function (event) { return event instanceof router.NavigationEnd; })))
2455
+ .subscribe((/**
2456
+ * @return {?}
2457
+ */
2458
+ function () {
2459
+ _this.currentNav = _this.router.url;
2460
+ }));
2461
+ };
2422
2462
  /**
2423
2463
  * @param {?} item
2424
2464
  * @return {?}
@@ -2428,8 +2468,8 @@
2428
2468
  * @return {?}
2429
2469
  */
2430
2470
  function (item) {
2431
- this.currentNav = item.title;
2432
- this.router.navigate([item.url], { state: { title: item.title } });
2471
+ this.currentNav = item.url;
2472
+ this.router.navigate([item.url], { state: { title: item.label } });
2433
2473
  /** @type {?} */
2434
2474
  var screenWidth = window.innerWidth;
2435
2475
  if (screenWidth <= 992 && this.isCollapsed) {
@@ -2439,8 +2479,8 @@
2439
2479
  RSAsideComponent.decorators = [
2440
2480
  { type: core.Component, args: [{
2441
2481
  selector: "rs-aside",
2442
- template: "<div class=\"rs-aside\" [ngClass]=\"{ isCollapsed: isCollapsed }\">\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",
2443
- styles: [".rs-aside{display:flex;flex-direction:column;height:100%;width:240px;will-change:width;transition:width .3s;padding-right:16px}.rs-aside.isCollapsed{width:64px;padding-right:0}.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}@media (min-width:992px){.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}@media (min-width:992px){.rs-aside .bottom-iconbox.isCollapsed{flex-direction:column;height:auto}}@media (max-width:992px){.rs-aside{width:0;overflow:hidden;position:absolute;height:calc(100% - 50px);z-index:10;background-color:var(--rs-container-bg);padding-right:0}.rs-aside.isCollapsed{width:240px;padding-right:16px}}"]
2482
+ template: "<div class=\"rs-aside\" [ngClass]=\"{ isCollapsed: isCollapsed }\">\r\n <div class=\"nav-list\">\r\n <div\r\n class=\"nav-item\"\r\n [ngClass]=\"{ isCurrent: currentNav === nav.url }\"\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.iconCode\"></mat-icon>\r\n <span class=\"nav-text\" [ngClass]=\"{ isCollapsed: isCollapsed }\">{{\r\n nav.label\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",
2483
+ styles: [".rs-aside{display:flex;flex-direction:column;height:100%;width:240px;will-change:width;transition:width .3s;padding-right:16px}.rs-aside.isCollapsed{width:64px;padding-right:0}.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;display:flex;align-items:center}.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}@media (min-width:992px){.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}@media (min-width:992px){.rs-aside .bottom-iconbox.isCollapsed{flex-direction:column;height:auto}}@media (max-width:992px){.rs-aside{width:0;overflow:hidden;position:absolute;height:calc(100% - 50px);z-index:10;background-color:var(--rs-container-bg);padding-right:0}.rs-aside.isCollapsed{width:240px;padding-right:16px}}"]
2444
2484
  }] }
2445
2485
  ];
2446
2486
  /** @nocollapse */
@@ -2628,7 +2668,7 @@
2628
2668
  { type: core.Component, args: [{
2629
2669
  selector: "rs-radio-group",
2630
2670
  template: "<div class=\"radio-group\" [ngClass]=\"[orientation, error ? 'error' : '']\">\r\n <div class=\"radio-item\" *ngFor=\"let option of dataSource\">\r\n <ejs-radiobutton\r\n [label]=\"option[fields.text]\"\r\n [(ngModel)]=\"value\"\r\n [value]=\"option[fields.value]\"\r\n [disabled]=\"option[fields.disabled] || disabled\"\r\n (change)=\"onChange($event)\"\r\n ></ejs-radiobutton>\r\n </div>\r\n</div>\r\n",
2631
- styles: [".radio-group{display:flex;padding-left:4px}.radio-group.horizontal{flex-direction:row;gap:35px}.radio-group.vertical{flex-direction:column;gap:14px}.radio-group .radio-item .e-radio:disabled+label::before{border-color:rgba(209,209,209,.5);background-color:rgba(234,237,240,.35)}.radio-group .radio-item .e-radio:checked+label::before{background-color:var(--rs-active-color);border-color:var(--rs-active-color);box-shadow:none}.radio-group .radio-item .e-radio:checked+label::after{content:\"\"!important;display:block;width:11px;height:8px;background-image:url(/assets/img/checked-vector.svg);background-size:cover;background-position:center;background-color:transparent;transform:scale(1);left:2px;top:3px;border:0;border-radius:0}.radio-group .radio-item .e-label{color:var(--rs-label-color);font-family:var(--rs-font-family);font-size:var(--rs-font-size);font-weight:400;line-height:14px}"]
2671
+ styles: [".radio-group{display:flex;padding-left:4px}.radio-group.horizontal{flex-direction:row;gap:35px}.radio-group.vertical{flex-direction:column;gap:14px}"]
2632
2672
  }] }
2633
2673
  ];
2634
2674
  RadioGroupComponent.propDecorators = {
@@ -2718,7 +2758,7 @@
2718
2758
  { type: core.Component, args: [{
2719
2759
  selector: "rs-checkbox-group",
2720
2760
  template: "<div class=\"checkbox-group\" [ngClass]=\"[orientation, error ? 'error' : '']\">\r\n <div class=\"checkbox-item\" *ngFor=\"let option of dataSource\">\r\n <ejs-checkbox\r\n [name]=\"name\"\r\n [label]=\"option[fields.text]\"\r\n [value]=\"option[fields.value]\"\r\n [disabled]=\"option[fields.disabled] || disabled\"\r\n [checked]=\"value.includes(option[fields.value])\"\r\n (change)=\"onChange($event, option)\"\r\n ></ejs-checkbox>\r\n </div>\r\n</div>\r\n",
2721
- styles: [".checkbox-group{display:flex;padding-left:4px}.checkbox-group.horizontal{flex-direction:row;gap:35px}.checkbox-group.vertical{flex-direction:column;gap:14px}.checkbox-group .checkbox-item .e-label{color:var(--rs-label-color);font-family:var(--rs-font-family);font-size:var(--rs-font-size);font-weight:400;line-height:14px}.checkbox-group .checkbox-item .e-checkbox-wrapper.e-checkbox-disabled .e-icons{border-color:rgba(209,209,209,.5);background-color:rgba(234,237,240,.35)}.checkbox-group .checkbox-item .e-icons{box-shadow:none!important}.checkbox-group .checkbox-item .e-icons.e-check{background-color:var(--rs-active-color);border-color:var(--rs-active-color)}.checkbox-group .checkbox-item .e-icons.e-check::before{content:\"\"!important;display:block;width:11px;height:8px;background-image:url(/assets/img/checked-vector.svg);background-size:cover;background-position:center;background-color:transparent;margin:2px auto}"]
2761
+ styles: [".checkbox-group{display:flex;padding-left:4px}.checkbox-group.horizontal{flex-direction:row;gap:35px}.checkbox-group.vertical{flex-direction:column;gap:14px}"]
2722
2762
  }] }
2723
2763
  ];
2724
2764
  /** @nocollapse */
@@ -2808,7 +2848,7 @@
2808
2848
  { type: core.Component, args: [{
2809
2849
  selector: "rs-switch-input",
2810
2850
  template: "<div class=\"rs-switch\" [ngClass]=\"[orientation, error ? 'error' : '', disabled ? 'disabled' : '']\">\r\n <label class=\"switch-label\" (click)=\"onClick()\"> {{ text }} </label>\r\n <ejs-switch\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange($event)\"\r\n ></ejs-switch>\r\n</div>\r\n",
2811
- styles: [".rs-switch{display:flex;align-items:center;gap:8px}.rs-switch.behind{flex-direction:row-reverse;justify-content:flex-end}.rs-switch .switch-label{color:var(--rs-label-color);font-family:var(--rs-font-family);font-size:var(--rs-font-size);cursor:pointer}.rs-switch.disabled .switch-label{cursor:default;pointer-events:none}.rs-switch .e-switch-wrapper{width:28px}.rs-switch .e-switch-wrapper .e-switch-inner{border:1px solid #adb5bd}.rs-switch .e-switch-wrapper .e-switch-inner.e-switch-active{background-color:var(--rs-active-color);border-color:var(--rs-active-color)}.rs-switch .e-switch-wrapper .e-switch-handle{background-color:#fff;border:1px solid #adb5bd;left:2px}.rs-switch .e-switch-wrapper .e-switch-handle.e-switch-active{background-color:#fff;border-color:var(--rs-active-color);left:100%}.rs-switch .e-switch-wrapper.e-switch-disabled .e-switch-handle{background-color:#e9ecef;opacity:.5}.rs-switch .e-switch-wrapper.e-switch-disabled .e-switch-handle.e-switch-active{border-color:rgba(0,129,255,.5)}.rs-switch .e-switch-wrapper .e-switch-on{background-color:var(--rs-active-color);color:#fff}"]
2851
+ styles: [".rs-switch{display:flex;align-items:center;gap:8px}.rs-switch.behind{flex-direction:row-reverse;justify-content:flex-end}.rs-switch .switch-label{color:var(--rs-label-color);font-family:var(--rs-font-family);font-size:var(--rs-font-size);cursor:pointer}.rs-switch.disabled .switch-label{cursor:default;pointer-events:none}"]
2812
2852
  }] }
2813
2853
  ];
2814
2854
  SwitchInputComponent.propDecorators = {
@@ -3038,7 +3078,7 @@
3038
3078
  * @return {?}
3039
3079
  */
3040
3080
  function () {
3041
- this.translation = JSON.parse(localStorage.getItem("translation"));
3081
+ this.translation = JSON.parse(localStorage.getItem("translation")) || {};
3042
3082
  this.title =
3043
3083
  this.data.title || this.translation["DELETE_RECORD"] || ".DELETE_RECORD";
3044
3084
  this.saveBtnLabel =
@@ -3122,7 +3162,7 @@
3122
3162
  * @param dialog: MatDialog
3123
3163
  */
3124
3164
  this.translation = null;
3125
- this.translation = JSON.parse(localStorage.getItem("translation"));
3165
+ this.translation = JSON.parse(localStorage.getItem("translation")) || {};
3126
3166
  }
3127
3167
  /**
3128
3168
  * @param {?} config
@@ -3422,7 +3462,7 @@
3422
3462
  * @return {?}
3423
3463
  */
3424
3464
  function () {
3425
- this.translation = JSON.parse(localStorage.getItem("translation"));
3465
+ this.translation = JSON.parse(localStorage.getItem("translation")) || {};
3426
3466
  this.saveBtnLabel =
3427
3467
  this.saveBtnLabel || this.translation.SAVE || ".SAVE";
3428
3468
  this.cancelBtnLabel =