@energycap/components 0.27.2 → 0.27.3

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.
@@ -5273,110 +5273,6 @@ JsonDisplayComponent.propDecorators = {
5273
5273
  maxLength: [{ type: Input }]
5274
5274
  };
5275
5275
 
5276
- /** Exposes the markup and styles that represent the spinner. No inputs or outputs defined because it is just a visual component*/
5277
- class SpinnerComponent {
5278
- }
5279
- SpinnerComponent.decorators = [
5280
- { type: Component, args: [{
5281
- selector: 'ec-spinner',
5282
- template: "<div class=\"spinner\">\r\n <span class=\"spinner-dot\"></span>\r\n <span class=\"spinner-dot\"></span>\r\n <span class=\"spinner-dot\"></span>\r\n <span class=\"spinner-dot\"></span>\r\n</div>",
5283
- styles: ["@-webkit-keyframes sk-bouncedelay{0%,80%,to{opacity:0}40%{opacity:1}}@keyframes sk-bouncedelay{0%,80%,to{opacity:0}40%{opacity:1}}.spinner{display:flex}.spinner-dot{-webkit-animation:sk-bouncedelay 1.7s ease-in-out infinite both;animation:sk-bouncedelay 1.7s ease-in-out infinite both;background-color:#0084a9;height:.75rem;margin-right:.25rem;width:.75rem}.spinner-dot:first-child{-webkit-animation-delay:-.6s;animation-delay:-.6s}.spinner-dot:nth-child(2){-webkit-animation-delay:-.4s;animation-delay:-.4s}.spinner-dot:nth-child(3){-webkit-animation-delay:-.2s;animation-delay:-.2s}:host(.spinner-small) .spinner-dot{-webkit-animation:sk-bouncedelay 1.7s ease-in-out infinite both;animation:sk-bouncedelay 1.7s ease-in-out infinite both;background-color:#0084a9;height:.5rem;margin-right:.1666666667rem;width:.5rem}:host(.spinner-small) .spinner-dot:first-child{-webkit-animation-delay:-.6s;animation-delay:-.6s}:host(.spinner-small) .spinner-dot:nth-child(2){-webkit-animation-delay:-.4s;animation-delay:-.4s}:host(.spinner-small) .spinner-dot:nth-child(3){-webkit-animation-delay:-.2s;animation-delay:-.2s}"]
5284
- },] }
5285
- ];
5286
-
5287
- class SplashService {
5288
- constructor() {
5289
- /** Used to interact with the splash component
5290
- * The splash component will subscribe to this and any components
5291
- * that wish to bring the splash visible can use this to communicate
5292
- * with the splash component.
5293
- */
5294
- this._splashVisibility = new Subject();
5295
- this.splashVisibility = this._splashVisibility;
5296
- }
5297
- /**
5298
- * Shows the splash screen
5299
- */
5300
- showSplash() {
5301
- this._splashVisibility.next(true);
5302
- }
5303
- /**
5304
- * Hides the splash screen
5305
- */
5306
- hideSplash() {
5307
- this._splashVisibility.next(false);
5308
- }
5309
- }
5310
- SplashService.ɵprov = ɵɵdefineInjectable({ factory: function SplashService_Factory() { return new SplashService(); }, token: SplashService, providedIn: "root" });
5311
- SplashService.decorators = [
5312
- { type: Injectable, args: [{
5313
- providedIn: 'root'
5314
- },] }
5315
- ];
5316
- SplashService.ctorParameters = () => [];
5317
-
5318
- class SplashComponent {
5319
- constructor(splashService) {
5320
- this.splashService = splashService;
5321
- /** Sets the visibility of the splash display */
5322
- this.isVisible = true;
5323
- this.stopAnimation = false;
5324
- /** Emits when the service is destroyed */
5325
- this.destroyed = new Subject();
5326
- }
5327
- ngOnInit() {
5328
- this.splashService.splashVisibility.pipe(takeUntil(this.destroyed), tap((value) => __awaiter(this, void 0, void 0, function* () {
5329
- if (value) {
5330
- this.stopAnimation = false;
5331
- }
5332
- else {
5333
- // Prevent animation from continuing after splash screen is hidden
5334
- // but if we hide it then show while the timer is running, don't stop the animation after all
5335
- timer(1000).pipe(takeUntil(this.splashService.splashVisibility)).subscribe(() => {
5336
- this.stopAnimation = true;
5337
- });
5338
- }
5339
- }))).subscribe(showSplash => {
5340
- this.isVisible = showSplash;
5341
- });
5342
- }
5343
- ngOnDestroy() {
5344
- this.destroyed.next();
5345
- this.destroyed.unsubscribe();
5346
- }
5347
- }
5348
- SplashComponent.decorators = [
5349
- { type: Component, args: [{
5350
- selector: 'ec-splash',
5351
- template: "<div class=\"app-splash\"\r\n [class.app-loaded]=\"!isVisible\">\r\n\r\n <!-- This is the raw icon.svg file so we can animate it -->\r\n <svg [class.d-none]=\"stopAnimation\" \r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"50\"\r\n height=\"50\"\r\n viewBox=\"0 0 50 50\">\r\n <g>\r\n <g>\r\n <path fill=\"#A0AD39\"\r\n fill-rule=\"nonzero\"\r\n d=\"M34.93,32.25 L34.93,37.25 L15.21,37.25 L15.21,32.25 L34.93,32.25 Z M28.45,22.48 L28.45,27.48 L15.21,27.48 L15.21,22.48 L28.45,22.48 Z M34.93,12.71 L34.93,17.71 L15.21,17.71 L15.21,12.71 L34.93,12.71 Z\" />\r\n <path fill=\"#A0AD39\"\r\n d=\"M24.99,5 C31.1,5 36.56,7.75 40.23,12.07 L44.33,9.16 C39.75,3.57 32.78,0 24.99,0 C17.2,0 10.23,3.57 5.65,9.16 L9.75,12.07 C13.42,7.75 18.88,5 24.99,5 Z\" />\r\n </g>\r\n <path fill=\"#17303B\"\r\n d=\"M40.24,37.93 C36.57,42.25 31.11,45 25,45 C18.89,45 13.43,42.25 9.76,37.93 L9.78,37.92 C6.82,34.43 5,29.94 5,25 C5,21.86 5.74,18.91 7.03,16.26 L2.89,13.33 C1.05,16.81 0,20.78 0,25 C0,31.01 2.13,36.52 5.66,40.83 L5.66,40.83 C10.24,46.42 17.21,49.99 25,49.99 C32.79,49.99 39.76,46.42 44.34,40.83 L40.24,37.93 Z\" />\r\n </g>\r\n\r\n </svg>\r\n</div>"
5352
- },] }
5353
- ];
5354
- SplashComponent.ctorParameters = () => [
5355
- { type: SplashService }
5356
- ];
5357
-
5358
- class ResizableColumnComponent {
5359
- constructor(el) {
5360
- this.el = el;
5361
- this.onResize = new EventEmitter();
5362
- }
5363
- emitWidth(width) {
5364
- this.onResize.emit(width);
5365
- }
5366
- }
5367
- ResizableColumnComponent.decorators = [
5368
- { type: Component, args: [{
5369
- selector: 'th.is-resizable',
5370
- template: "<div class=\"content-wrapper\">\r\n <div class=\"content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n<div class=\"handle\"></div>\r\n"
5371
- },] }
5372
- ];
5373
- ResizableColumnComponent.ctorParameters = () => [
5374
- { type: ElementRef }
5375
- ];
5376
- ResizableColumnComponent.propDecorators = {
5377
- onResize: [{ type: Output }]
5378
- };
5379
-
5380
5276
  class CacheService {
5381
5277
  constructor() {
5382
5278
  this.localStorageAvailable = false;
@@ -5595,6 +5491,163 @@ ResizableBase.propDecorators = {
5595
5491
  id: [{ type: Input }]
5596
5492
  };
5597
5493
 
5494
+ /**
5495
+ * Make an element resizable horizontally by wrapping it in the ResizableComponent.
5496
+ * Default widths / limits are applied but you can optionally override them
5497
+ * with min-width and max-width with style attributes
5498
+ * @example
5499
+ * <ec-resizable [style.width.px]="200"
5500
+ * [style.min-width.px]="75"
5501
+ * [style.max-width.px]="300">
5502
+ * <div> ... </div>
5503
+ * </ec-resizable>
5504
+ */
5505
+ class ResizableComponent extends ResizableBase {
5506
+ constructor(el, renderer, cacheService, document) {
5507
+ super(renderer, cacheService, document);
5508
+ this.el = el;
5509
+ //default rememberWidth to true for standard resizable, resizable tables default to false
5510
+ this.rememberWidth = true;
5511
+ }
5512
+ /** Store the host element to reference later */
5513
+ ngOnInit() {
5514
+ this.currentEl = this.el.nativeElement;
5515
+ }
5516
+ /**
5517
+ * Set the new width of the element and emit the new width to subscribers
5518
+ */
5519
+ setWidth(width) {
5520
+ this.renderer.setStyle(this.currentEl, 'width', width + 'px');
5521
+ this.saveWidths([width]);
5522
+ }
5523
+ /**Called from the base class when cached widths are available and restoring
5524
+ * width is enabled. We only care about the first one because we only have one width
5525
+ */
5526
+ restoreWidths(widths) {
5527
+ this.setWidth(widths[0]);
5528
+ }
5529
+ }
5530
+ ResizableComponent.decorators = [
5531
+ { type: Component, args: [{
5532
+ selector: 'ec-resizable',
5533
+ template: `<div class="content">
5534
+ <ng-content></ng-content>
5535
+ </div>
5536
+ <div class="handle" (mousedown)="startDrag($event)"></div>`,
5537
+ styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{border-right:1px solid #d2d7d9;display:flex;max-width:480px;min-width:100px;position:relative;width:240px}:host.is-active{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}:host.is-active .handle:after{background-color:#0084a9}.handle{height:100%;padding:0 5px;position:absolute;right:-7px;top:0;width:13px;z-index:30}.handle:after{content:\"\";display:block;height:100%;position:relative;transition:background-color .3s ease}.handle:hover{cursor:col-resize}.handle:hover:after{background-color:#0084a9}.content{display:flex;overflow:hidden}.content,.content ::ng-deep>*{flex:1 1;min-height:0;min-width:0}"]
5538
+ },] }
5539
+ ];
5540
+ ResizableComponent.ctorParameters = () => [
5541
+ { type: ElementRef },
5542
+ { type: Renderer2 },
5543
+ { type: CacheService },
5544
+ { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
5545
+ ];
5546
+
5547
+ /** Exposes the markup and styles that represent the spinner. No inputs or outputs defined because it is just a visual component*/
5548
+ class SpinnerComponent {
5549
+ }
5550
+ SpinnerComponent.decorators = [
5551
+ { type: Component, args: [{
5552
+ selector: 'ec-spinner',
5553
+ template: "<div class=\"spinner\">\r\n <span class=\"spinner-dot\"></span>\r\n <span class=\"spinner-dot\"></span>\r\n <span class=\"spinner-dot\"></span>\r\n <span class=\"spinner-dot\"></span>\r\n</div>",
5554
+ styles: ["@-webkit-keyframes sk-bouncedelay{0%,80%,to{opacity:0}40%{opacity:1}}@keyframes sk-bouncedelay{0%,80%,to{opacity:0}40%{opacity:1}}.spinner{display:flex}.spinner-dot{-webkit-animation:sk-bouncedelay 1.7s ease-in-out infinite both;animation:sk-bouncedelay 1.7s ease-in-out infinite both;background-color:#0084a9;height:.75rem;margin-right:.25rem;width:.75rem}.spinner-dot:first-child{-webkit-animation-delay:-.6s;animation-delay:-.6s}.spinner-dot:nth-child(2){-webkit-animation-delay:-.4s;animation-delay:-.4s}.spinner-dot:nth-child(3){-webkit-animation-delay:-.2s;animation-delay:-.2s}:host(.spinner-small) .spinner-dot{-webkit-animation:sk-bouncedelay 1.7s ease-in-out infinite both;animation:sk-bouncedelay 1.7s ease-in-out infinite both;background-color:#0084a9;height:.5rem;margin-right:.1666666667rem;width:.5rem}:host(.spinner-small) .spinner-dot:first-child{-webkit-animation-delay:-.6s;animation-delay:-.6s}:host(.spinner-small) .spinner-dot:nth-child(2){-webkit-animation-delay:-.4s;animation-delay:-.4s}:host(.spinner-small) .spinner-dot:nth-child(3){-webkit-animation-delay:-.2s;animation-delay:-.2s}"]
5555
+ },] }
5556
+ ];
5557
+
5558
+ class SplashService {
5559
+ constructor() {
5560
+ /** Used to interact with the splash component
5561
+ * The splash component will subscribe to this and any components
5562
+ * that wish to bring the splash visible can use this to communicate
5563
+ * with the splash component.
5564
+ */
5565
+ this._splashVisibility = new Subject();
5566
+ this.splashVisibility = this._splashVisibility;
5567
+ }
5568
+ /**
5569
+ * Shows the splash screen
5570
+ */
5571
+ showSplash() {
5572
+ this._splashVisibility.next(true);
5573
+ }
5574
+ /**
5575
+ * Hides the splash screen
5576
+ */
5577
+ hideSplash() {
5578
+ this._splashVisibility.next(false);
5579
+ }
5580
+ }
5581
+ SplashService.ɵprov = ɵɵdefineInjectable({ factory: function SplashService_Factory() { return new SplashService(); }, token: SplashService, providedIn: "root" });
5582
+ SplashService.decorators = [
5583
+ { type: Injectable, args: [{
5584
+ providedIn: 'root'
5585
+ },] }
5586
+ ];
5587
+ SplashService.ctorParameters = () => [];
5588
+
5589
+ class SplashComponent {
5590
+ constructor(splashService) {
5591
+ this.splashService = splashService;
5592
+ /** Sets the visibility of the splash display */
5593
+ this.isVisible = true;
5594
+ this.stopAnimation = false;
5595
+ /** Emits when the service is destroyed */
5596
+ this.destroyed = new Subject();
5597
+ }
5598
+ ngOnInit() {
5599
+ this.splashService.splashVisibility.pipe(takeUntil(this.destroyed), tap((value) => __awaiter(this, void 0, void 0, function* () {
5600
+ if (value) {
5601
+ this.stopAnimation = false;
5602
+ }
5603
+ else {
5604
+ // Prevent animation from continuing after splash screen is hidden
5605
+ // but if we hide it then show while the timer is running, don't stop the animation after all
5606
+ timer(1000).pipe(takeUntil(this.splashService.splashVisibility)).subscribe(() => {
5607
+ this.stopAnimation = true;
5608
+ });
5609
+ }
5610
+ }))).subscribe(showSplash => {
5611
+ this.isVisible = showSplash;
5612
+ });
5613
+ }
5614
+ ngOnDestroy() {
5615
+ this.destroyed.next();
5616
+ this.destroyed.unsubscribe();
5617
+ }
5618
+ }
5619
+ SplashComponent.decorators = [
5620
+ { type: Component, args: [{
5621
+ selector: 'ec-splash',
5622
+ template: "<div class=\"app-splash\"\r\n [class.app-loaded]=\"!isVisible\">\r\n\r\n <!-- This is the raw icon.svg file so we can animate it -->\r\n <svg [class.d-none]=\"stopAnimation\" \r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"50\"\r\n height=\"50\"\r\n viewBox=\"0 0 50 50\">\r\n <g>\r\n <g>\r\n <path fill=\"#A0AD39\"\r\n fill-rule=\"nonzero\"\r\n d=\"M34.93,32.25 L34.93,37.25 L15.21,37.25 L15.21,32.25 L34.93,32.25 Z M28.45,22.48 L28.45,27.48 L15.21,27.48 L15.21,22.48 L28.45,22.48 Z M34.93,12.71 L34.93,17.71 L15.21,17.71 L15.21,12.71 L34.93,12.71 Z\" />\r\n <path fill=\"#A0AD39\"\r\n d=\"M24.99,5 C31.1,5 36.56,7.75 40.23,12.07 L44.33,9.16 C39.75,3.57 32.78,0 24.99,0 C17.2,0 10.23,3.57 5.65,9.16 L9.75,12.07 C13.42,7.75 18.88,5 24.99,5 Z\" />\r\n </g>\r\n <path fill=\"#17303B\"\r\n d=\"M40.24,37.93 C36.57,42.25 31.11,45 25,45 C18.89,45 13.43,42.25 9.76,37.93 L9.78,37.92 C6.82,34.43 5,29.94 5,25 C5,21.86 5.74,18.91 7.03,16.26 L2.89,13.33 C1.05,16.81 0,20.78 0,25 C0,31.01 2.13,36.52 5.66,40.83 L5.66,40.83 C10.24,46.42 17.21,49.99 25,49.99 C32.79,49.99 39.76,46.42 44.34,40.83 L40.24,37.93 Z\" />\r\n </g>\r\n\r\n </svg>\r\n</div>"
5623
+ },] }
5624
+ ];
5625
+ SplashComponent.ctorParameters = () => [
5626
+ { type: SplashService }
5627
+ ];
5628
+
5629
+ class ResizableColumnComponent {
5630
+ constructor(el) {
5631
+ this.el = el;
5632
+ this.onResize = new EventEmitter();
5633
+ }
5634
+ emitWidth(width) {
5635
+ this.onResize.emit(width);
5636
+ }
5637
+ }
5638
+ ResizableColumnComponent.decorators = [
5639
+ { type: Component, args: [{
5640
+ selector: 'th.is-resizable',
5641
+ template: "<div class=\"content-wrapper\">\r\n <div class=\"content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n<div class=\"handle\"></div>\r\n"
5642
+ },] }
5643
+ ];
5644
+ ResizableColumnComponent.ctorParameters = () => [
5645
+ { type: ElementRef }
5646
+ ];
5647
+ ResizableColumnComponent.propDecorators = {
5648
+ onResize: [{ type: Output }]
5649
+ };
5650
+
5598
5651
  /**
5599
5652
  * Add the ability to resize columns to a standard HTML table.
5600
5653
  * Specify a column as resizable by adding the .is-resizable class to a <th>.
@@ -7529,7 +7582,7 @@ class PageTitleComponent {
7529
7582
  PageTitleComponent.decorators = [
7530
7583
  { type: Component, args: [{
7531
7584
  selector: 'app-page-title',
7532
- template: "<i *ngIf=\"titleIcon\"\r\n class=\"flex-shrink mr-1 my-1 ec-icon ec-icon-md {{titleIcon}}\"></i>\r\n<div>\r\n <h1 *ngIf=\"title\"\r\n class=\"text-title-1 mb-0 py-1 text-truncate\">{{title}}</h1>\r\n <p *ngIf=\"subTitle\"\r\n class=\"text-caption-1 mb-0 mt-n1 text-truncate\">{{subTitle}}</p>\r\n</div>",
7585
+ template: "<i *ngIf=\"titleIcon\"\r\n class=\"flex-shrink mr-1 my-1 ec-icon ec-icon-md {{titleIcon}}\"></i>\r\n<div class=\"text-truncate\">\r\n <h1 *ngIf=\"title\"\r\n class=\"text-title-1 mb-0 py-1 text-truncate\"\r\n title=\"{{title}}\">{{title}}</h1>\r\n <p *ngIf=\"subTitle\"\r\n class=\"text-caption-1 mb-0 mt-n1 text-truncate\">{{subTitle}}</p>\r\n</div>",
7533
7586
  host: {
7534
7587
  class: 'd-flex'
7535
7588
  }
@@ -7594,7 +7647,7 @@ class PageViewComponent {
7594
7647
  PageViewComponent.decorators = [
7595
7648
  { type: Component, args: [{
7596
7649
  selector: 'ec-page-view',
7597
- template: "<div ecOverlay\r\n [status]=\"status?.status\"\r\n [message]=\"status?.message\"\r\n [displayAsMask]=\"true\"\r\n class=\"bg-body flex-grow d-flex\">\r\n <div id=\"PageViewScrollContainer\" \r\n class=\"d-flex flex-column flex-grow scroll-y\" \r\n [class.is-dialog]=\"isDialog\"\r\n [class.fit-content]=\"fitContent\"\r\n [class.sticky-footer]=\"stickyFooter && !!footerTemplate\"\r\n [class.overlay-visible]=\"status?.status !== 'hasData'\">\r\n <section>\r\n <ng-content></ng-content> \r\n </section>\r\n \r\n <footer>\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </footer>\r\n\r\n <header *ngIf=\"showHeader\">\r\n \r\n <ol id=\"breadcrumbs\"\r\n *ngIf=\"breadcrumbs?.length && !isDialog\">\r\n <li *ngFor=\"let crumb of breadcrumbs; last as isLast\">\r\n <a *ngIf=\"crumb.url; else label\"\r\n [routerLink]=\"crumb.url\">\r\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\r\n </a>\r\n <ng-template #label>{{crumb.label}}</ng-template>\r\n </li>\r\n </ol>\r\n \r\n <div *ngIf=\"!customHeaderTemplate; else customHeaderOutlet\" class=\"titlebar\">\r\n <app-page-title *ngIf=\"!customTitleTemplate; else customTitle\" \r\n [title]=\"title\"\r\n [subTitle]=\"subTitle\"\r\n [titleIcon]=\"titleIcon\"\r\n class=\"title\">\r\n </app-page-title>\r\n \r\n <ng-template #customTitle>\r\n <div class=\"title\">\r\n <ng-container *ngTemplateOutlet=\"customTitleTemplate\"></ng-container>\r\n </div>\r\n </ng-template>\r\n \r\n <div class=\"actions\">\r\n <ec-button id=\"primaryAction\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hidePrimaryAction && onPrimaryAction.observers?.length\"\r\n [disabled]=\"status?.status === 'pending'\"\r\n type=\"primary\"\r\n [label]=\"primaryActionLabel\"\r\n (clicked)=\"primaryAction($event)\">\r\n </ec-button>\r\n <ec-button id=\"secondaryAction\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hideSecondaryAction && onSecondaryAction.observers?.length\"\r\n type=\"secondary\"\r\n [label]=\"secondaryActionLabel\"\r\n (clicked)=\"secondaryAction($event)\">\r\n </ec-button>\r\n <ec-dropdown id=\"moreActions\"\r\n *ngIf=\"moreActions?.length\"\r\n [disabled]=\"status?.status === 'pending'\"\r\n class=\"ml-2\"\r\n buttonType=\"secondary\"\r\n [label]=\"moreActionsLabel\"\r\n [items]=\"moreActions\">\r\n </ec-dropdown>\r\n <ng-container *ngTemplateOutlet=\"customActionsTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n \r\n <ng-template #customHeaderOutlet> \r\n <div class=\"page-header\">\r\n <ng-container *ngTemplateOutlet=\"customHeaderTemplate\"></ng-container>\r\n </div>\r\n </ng-template>\r\n \r\n <ec-banner *ngIf=\"errors\"\r\n id=\"pageViewErrors\"\r\n [class.border-bottom-0]=\"!isDialog\">\r\n <div [innerHtml]=\"errors\"></div>\r\n </ec-banner>\r\n </header>\r\n </div>\r\n</div>\r\n\r\n",
7650
+ template: "<div ecOverlay\r\n [status]=\"status?.status\"\r\n [message]=\"status?.message\"\r\n [displayAsMask]=\"true\"\r\n class=\"bg-body flex-grow d-flex\">\r\n <div id=\"PageViewScrollContainer\" \r\n class=\"d-flex flex-column flex-grow scroll-y\" \r\n [class.is-dialog]=\"isDialog\"\r\n [class.fit-content]=\"fitContent\"\r\n [class.sticky-footer]=\"stickyFooter && !!footerTemplate\"\r\n [class.overlay-visible]=\"status?.status !== 'hasData'\">\r\n <section>\r\n <ng-content></ng-content> \r\n </section>\r\n \r\n <footer>\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </footer>\r\n\r\n <header *ngIf=\"showHeader\">\r\n \r\n <ol id=\"breadcrumbs\"\r\n *ngIf=\"breadcrumbs?.length && !isDialog\">\r\n <li *ngFor=\"let crumb of breadcrumbs; last as isLast\">\r\n <a *ngIf=\"crumb.url; else label\"\r\n [routerLink]=\"crumb.url\">\r\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\r\n </a>\r\n <ng-template #label>{{crumb.label}}</ng-template>\r\n </li>\r\n </ol>\r\n \r\n <div *ngIf=\"!customHeaderTemplate; else customHeaderOutlet\" class=\"titlebar\">\r\n <app-page-title *ngIf=\"!customTitleTemplate; else customTitle\" \r\n [title]=\"title\"\r\n [subTitle]=\"subTitle\"\r\n [titleIcon]=\"titleIcon\"\r\n class=\"title text-truncate\">\r\n </app-page-title>\r\n \r\n <ng-template #customTitle>\r\n <div class=\"title\">\r\n <ng-container *ngTemplateOutlet=\"customTitleTemplate\"></ng-container>\r\n </div>\r\n </ng-template>\r\n \r\n <div class=\"actions\">\r\n <ec-button id=\"primaryAction\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hidePrimaryAction && onPrimaryAction.observers?.length\"\r\n [disabled]=\"status?.status === 'pending'\"\r\n type=\"primary\"\r\n [label]=\"primaryActionLabel\"\r\n (clicked)=\"primaryAction($event)\">\r\n </ec-button>\r\n <ec-button id=\"secondaryAction\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hideSecondaryAction && onSecondaryAction.observers?.length\"\r\n type=\"secondary\"\r\n [label]=\"secondaryActionLabel\"\r\n (clicked)=\"secondaryAction($event)\">\r\n </ec-button>\r\n <ec-dropdown id=\"moreActions\"\r\n *ngIf=\"moreActions?.length\"\r\n [disabled]=\"status?.status === 'pending'\"\r\n class=\"ml-2\"\r\n buttonType=\"secondary\"\r\n [label]=\"moreActionsLabel\"\r\n [items]=\"moreActions\">\r\n </ec-dropdown>\r\n <ng-container *ngTemplateOutlet=\"customActionsTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n \r\n <ng-template #customHeaderOutlet> \r\n <div class=\"page-header\">\r\n <ng-container *ngTemplateOutlet=\"customHeaderTemplate\"></ng-container>\r\n </div>\r\n </ng-template>\r\n \r\n <ec-banner *ngIf=\"errors\"\r\n id=\"pageViewErrors\"\r\n [class.border-bottom-0]=\"!isDialog\">\r\n <div [innerHtml]=\"errors\"></div>\r\n </ec-banner>\r\n </header>\r\n </div>\r\n</div>\r\n\r\n",
7598
7651
  host: {
7599
7652
  class: "flex-grow"
7600
7653
  },
@@ -8057,59 +8110,6 @@ class Tag {
8057
8110
  }
8058
8111
  ;
8059
8112
 
8060
- /**
8061
- * Make an element resizable horizontally by wrapping it in the ResizableComponent.
8062
- * Default widths / limits are applied but you can optionally override them
8063
- * with min-width and max-width with style attributes
8064
- * @example
8065
- * <ec-resizable [style.width.px]="200"
8066
- * [style.min-width.px]="75"
8067
- * [style.max-width.px]="300">
8068
- * <div> ... </div>
8069
- * </ec-resizable>
8070
- */
8071
- class ResizableComponent extends ResizableBase {
8072
- constructor(el, renderer, cacheService, document) {
8073
- super(renderer, cacheService, document);
8074
- this.el = el;
8075
- //default rememberWidth to true for standard resizable, resizable tables default to false
8076
- this.rememberWidth = true;
8077
- }
8078
- /** Store the host element to reference later */
8079
- ngOnInit() {
8080
- this.currentEl = this.el.nativeElement;
8081
- }
8082
- /**
8083
- * Set the new width of the element and emit the new width to subscribers
8084
- */
8085
- setWidth(width) {
8086
- this.renderer.setStyle(this.currentEl, 'width', width + 'px');
8087
- this.saveWidths([width]);
8088
- }
8089
- /**Called from the base class when cached widths are available and restoring
8090
- * width is enabled. We only care about the first one because we only have one width
8091
- */
8092
- restoreWidths(widths) {
8093
- this.setWidth(widths[0]);
8094
- }
8095
- }
8096
- ResizableComponent.decorators = [
8097
- { type: Component, args: [{
8098
- selector: 'ec-resizable',
8099
- template: `<div class="content">
8100
- <ng-content></ng-content>
8101
- </div>
8102
- <div class="handle" (mousedown)="startDrag($event)"></div>`,
8103
- styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{border-right:1px solid #d2d7d9;display:flex;max-width:480px;min-width:100px;position:relative;width:240px}:host.is-active{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}:host.is-active .handle:after{background-color:#0084a9}.handle{height:100%;padding:0 5px;position:absolute;right:-7px;top:0;width:13px;z-index:30}.handle:after{content:\"\";display:block;height:100%;position:relative;transition:background-color .3s ease}.handle:hover{cursor:col-resize}.handle:hover:after{background-color:#0084a9}.content{display:flex;overflow:hidden}.content,.content ::ng-deep>*{flex:1 1;min-height:0;min-width:0}"]
8104
- },] }
8105
- ];
8106
- ResizableComponent.ctorParameters = () => [
8107
- { type: ElementRef },
8108
- { type: Renderer2 },
8109
- { type: CacheService },
8110
- { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
8111
- ];
8112
-
8113
8113
  class CustomValidators {
8114
8114
  }
8115
8115
  /**
@@ -8182,6 +8182,10 @@ class PageBaseComponent {
8182
8182
  * Default unknown save error message, override if a more specific message is needed
8183
8183
  */
8184
8184
  this.defaultUnknownSaveError = 'PageBaseUnknownSaveError_SC';
8185
+ /**
8186
+ * Used to opt out of hiding the splash screen when the page is loaded
8187
+ */
8188
+ this.skipHideSplashOnComplete = false;
8185
8189
  /**
8186
8190
  * Used to unsubscribe from observables
8187
8191
  */
@@ -8203,6 +8207,7 @@ class PageBaseComponent {
8203
8207
  this.router = injector.get(Router);
8204
8208
  this.activatedRoute = injector.get(ActivatedRoute);
8205
8209
  this.dialogService = injector.get(DialogService);
8210
+ this.splashService = injector.get(SplashService);
8206
8211
  }
8207
8212
  get errors() {
8208
8213
  return this._errors;
@@ -8250,6 +8255,9 @@ class PageBaseComponent {
8250
8255
  if (this.status.status === 'pending') {
8251
8256
  this.showStatus(PageStatus.Loaded);
8252
8257
  }
8258
+ if (!this.skipHideSplashOnComplete) {
8259
+ this.splashService.hideSplash();
8260
+ }
8253
8261
  this.setUpRouterSubscriptions();
8254
8262
  }
8255
8263
  catch (error) {
@@ -8600,6 +8608,13 @@ PageBaseComponentTestInjectorFactory.CoreProviders = [
8600
8608
  return new MockActivatedRoute();
8601
8609
  },
8602
8610
  deps: [],
8611
+ },
8612
+ {
8613
+ provide: SplashService,
8614
+ useFactory: () => {
8615
+ return SpyFactory.createSpy(SplashService);
8616
+ },
8617
+ deps: []
8603
8618
  }
8604
8619
  ];
8605
8620
  /**