@theseam/ui-common 0.4.9 → 0.4.11

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 (110) hide show
  1. package/buttons/badge-button/badge-button.component.d.ts +7 -7
  2. package/buttons/button/button.component.d.ts +6 -6
  3. package/buttons/buttons.module.d.ts +1 -1
  4. package/buttons/progress-circle-button/progress-circle-button.component.d.ts +4 -4
  5. package/buttons/toggle-button/toggle-button.component.d.ts +4 -4
  6. package/datatable/datatable-action-menu/datatable-action-menu.component.d.ts +7 -2
  7. package/datatable/datatable-action-menu-item/datatable-action-menu-item.component.d.ts +3 -1
  8. package/esm2020/buttons/badge-button/badge-button.component.mjs +10 -10
  9. package/esm2020/buttons/button/button.component.mjs +9 -9
  10. package/esm2020/buttons/buttons.module.mjs +29 -29
  11. package/esm2020/buttons/progress-circle-button/progress-circle-button.component.mjs +10 -10
  12. package/esm2020/buttons/toggle-button/toggle-button.component.mjs +8 -8
  13. package/esm2020/carousel/carousel.component.mjs +2 -2
  14. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +17 -5
  15. package/esm2020/datatable/datatable-action-menu-item/datatable-action-menu-item.component.mjs +4 -2
  16. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  17. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  18. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  19. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.component.mjs +1 -1
  20. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +1 -1
  21. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +11 -3
  22. package/esm2020/framework/side-nav/side-nav.component.mjs +29 -4
  23. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  24. package/esm2020/framework/top-bar/top-bar.component.mjs +1 -1
  25. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
  26. package/esm2020/loading/loading/loading.component.mjs +5 -5
  27. package/esm2020/loading/loading-overlay.service.mjs +3 -3
  28. package/esm2020/loading/loading.module.mjs +6 -6
  29. package/esm2020/menu/menu-toggle.directive.mjs +16 -4
  30. package/esm2020/services/preferences/preferences-accessor.mjs +1 -1
  31. package/esm2020/services/preferences/preferences-manager.service.mjs +1 -1
  32. package/esm2020/services/preferences/preferences-record.mjs +1 -1
  33. package/esm2020/services/preferences/preferences.models.mjs +1 -1
  34. package/esm2020/story-helpers/arg-type-helpers.mjs +5 -9
  35. package/esm2020/story-helpers/story-preferences-accessor.service.mjs +1 -1
  36. package/esm2020/testing/get-harness.mjs +8 -2
  37. package/esm2020/testing/story-expect.mjs +3 -2
  38. package/esm2020/toggle-edit/toggle-edit.component.mjs +1 -1
  39. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  40. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  41. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  42. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  43. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  44. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  45. package/esm2020/widget/preferences/widget-preferences.models.mjs +1 -1
  46. package/esm2020/widget/preferences/widget-preferences.service.mjs +1 -1
  47. package/esm2020/widget/preferences/widget-preferences.token.mjs +1 -1
  48. package/esm2020/widget/widget/widget.component.mjs +3 -3
  49. package/esm2020/widget/widget.models.mjs +1 -1
  50. package/fesm2015/theseam-ui-common-buttons.mjs +55 -55
  51. package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
  52. package/fesm2015/theseam-ui-common-carousel.mjs +1 -1
  53. package/fesm2015/theseam-ui-common-carousel.mjs.map +1 -1
  54. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +1 -1
  55. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  56. package/fesm2015/theseam-ui-common-datatable.mjs +21 -10
  57. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  58. package/fesm2015/theseam-ui-common-framework.mjs +42 -9
  59. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  60. package/fesm2015/theseam-ui-common-google-maps.mjs +2 -2
  61. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  62. package/fesm2015/theseam-ui-common-loading.mjs +10 -10
  63. package/fesm2015/theseam-ui-common-loading.mjs.map +1 -1
  64. package/fesm2015/theseam-ui-common-menu.mjs +15 -4
  65. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  66. package/fesm2015/theseam-ui-common-services.mjs.map +1 -1
  67. package/fesm2015/theseam-ui-common-story-helpers.mjs +4 -8
  68. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  69. package/fesm2015/theseam-ui-common-testing.mjs +9 -2
  70. package/fesm2015/theseam-ui-common-testing.mjs.map +1 -1
  71. package/fesm2015/theseam-ui-common-toggle-edit.mjs +1 -1
  72. package/fesm2015/theseam-ui-common-toggle-edit.mjs.map +1 -1
  73. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  74. package/fesm2015/theseam-ui-common-widget.mjs +2 -2
  75. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  76. package/fesm2020/theseam-ui-common-buttons.mjs +55 -55
  77. package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
  78. package/fesm2020/theseam-ui-common-carousel.mjs +1 -1
  79. package/fesm2020/theseam-ui-common-carousel.mjs.map +1 -1
  80. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +1 -1
  81. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  82. package/fesm2020/theseam-ui-common-datatable.mjs +20 -9
  83. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  84. package/fesm2020/theseam-ui-common-framework.mjs +41 -8
  85. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  86. package/fesm2020/theseam-ui-common-google-maps.mjs +2 -2
  87. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  88. package/fesm2020/theseam-ui-common-loading.mjs +10 -10
  89. package/fesm2020/theseam-ui-common-loading.mjs.map +1 -1
  90. package/fesm2020/theseam-ui-common-menu.mjs +15 -4
  91. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  92. package/fesm2020/theseam-ui-common-services.mjs.map +1 -1
  93. package/fesm2020/theseam-ui-common-story-helpers.mjs +4 -8
  94. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  95. package/fesm2020/theseam-ui-common-testing.mjs +9 -2
  96. package/fesm2020/theseam-ui-common-testing.mjs.map +1 -1
  97. package/fesm2020/theseam-ui-common-toggle-edit.mjs +1 -1
  98. package/fesm2020/theseam-ui-common-toggle-edit.mjs.map +1 -1
  99. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  100. package/fesm2020/theseam-ui-common-widget.mjs +2 -2
  101. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  102. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +5 -2
  103. package/framework/side-nav/side-nav.component.d.ts +6 -2
  104. package/framework/side-nav/side-nav.models.d.ts +12 -0
  105. package/loading/loading/loading.component.d.ts +3 -3
  106. package/loading/loading.module.d.ts +1 -1
  107. package/menu/menu-toggle.directive.d.ts +4 -1
  108. package/package.json +1 -1
  109. package/testing/get-harness.d.ts +2 -2
  110. package/testing/story-expect.d.ts +1 -0
@@ -168,7 +168,7 @@ class TheSeamCarouselComponent {
168
168
  }
169
169
  }
170
170
  TheSeamCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
171
- TheSeamCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamCarouselComponent, selector: "seam-carousel", inputs: { slideInterval: "slideInterval", autoPlay: "autoPlay", pauseOnHover: "pauseOnHover", pauseOnFocus: "pauseOnFocus", showPager: "showPager", showNavButtons: "showNavButtons", showPauseButton: "showPauseButton" }, queries: [{ propertyName: "slides", predicate: TheSeamCarouselSlideDirective }], exportAs: ["seamCarousel"], ngImport: i0, template: "<ng-container *ngIf=\"slides$ | async as slides\">\n <div class=\"position-relative\"\n *ngIf=\"slides.length\"\n (focusin)=\"focusIn()\"\n (mouseenter)=\"mouseEnter()\"\n (focusout)=\"focusOut()\"\n (mouseleave)=\"mouseLeave()\">\n\n <div class=\"d-flex\" style=\"min-height: 150px;\">\n <button\n *ngIf=\"showNavButtons && slides.length > 1\"\n seamButton\n class=\"carousel-arrow px-2\"\n (click)=\"pageCarousel(-1)\"\n title=\"Go to previous slide\">\n <seam-icon [icon]=\"faAngleLeft\"></seam-icon>\n </button>\n\n <div *ngIf=\"activeSlide$ | async as slide\" [@fadeInOut]=\"slide.template\" class=\"flex-grow-1 d-flex align-items-center\">\n <div class=\"carousel-content w-100 py-1 px-2\" [attr.data-slide-index]=\"activeIndex$ | async\">\n <ng-template [ngTemplateOutlet]=\"$any(slide.template)\"></ng-template>\n </div>\n </div>\n\n <button\n *ngIf=\"showNavButtons && slides.length > 1\"\n seamButton\n class=\"carousel-arrow px-2\"\n (click)=\"pageCarousel(1)\"\n title=\"Go to next slide\">\n <seam-icon [icon]=\"faAngleRight\"></seam-icon>\n </button>\n </div>\n\n <div class=\"carousel-pages d-flex flex-wrap justify-content-center mt-3 mx-auto\" *ngIf=\"showPager && slides.length > 1\">\n <button\n *ngFor=\"let q of slides; let i = index\"\n seamButton\n theme=\"light\"\n class=\"carousel-page\"\n [class.active]=\"(activeIndex$ | async) == i\"\n (click)=\"setCarousel(i)\"\n [title]=\"'Go to slide ' + (i + 1)\"></button>\n </div>\n\n <div class=\"carousel-controls\" *ngIf=\"showPauseButton && autoPlay\">\n <button\n *ngIf=\"slides.length > 1\"\n seamButton\n (click)=\"toggleCarouselStop()\"\n [title]=\"(carouselStopped$ | async) ? 'Play' : 'Pause'\">\n <seam-icon [icon]=\"faPlay\" *ngIf=\"carouselStopped$ | async; else pauseButton\"></seam-icon>\n <ng-template #pauseButton>\n <seam-icon [icon]=\"faPause\"></seam-icon>\n </ng-template>\n </button>\n </div>\n\n </div>\n</ng-container>\n", styles: [":host{display:block}:host .carousel-arrow{color:#adb5bd}:host .carousel-pages{max-width:calc(100% - 40px)}:host .carousel-pages .carousel-page{padding:4px;border-radius:50%;margin:1px 3px}:host .carousel-controls{position:absolute;right:-5px;bottom:5px;opacity:0;transition:.3s ease}:host .carousel-controls button{font-size:12px;color:#adb5bd;width:20px;height:20px;padding:2px!important}:host:hover .carousel-controls{opacity:1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], animations: [
171
+ TheSeamCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamCarouselComponent, selector: "seam-carousel", inputs: { slideInterval: "slideInterval", autoPlay: "autoPlay", pauseOnHover: "pauseOnHover", pauseOnFocus: "pauseOnFocus", showPager: "showPager", showNavButtons: "showNavButtons", showPauseButton: "showPauseButton" }, queries: [{ propertyName: "slides", predicate: TheSeamCarouselSlideDirective }], exportAs: ["seamCarousel"], ngImport: i0, template: "<ng-container *ngIf=\"slides$ | async as slides\">\n <div class=\"position-relative\"\n *ngIf=\"slides.length\"\n (focusin)=\"focusIn()\"\n (mouseenter)=\"mouseEnter()\"\n (focusout)=\"focusOut()\"\n (mouseleave)=\"mouseLeave()\">\n\n <div class=\"d-flex\" style=\"min-height: 150px;\">\n <button\n *ngIf=\"showNavButtons && slides.length > 1\"\n seamButton\n class=\"carousel-arrow px-2\"\n (click)=\"pageCarousel(-1)\"\n title=\"Go to previous slide\">\n <seam-icon [icon]=\"faAngleLeft\"></seam-icon>\n </button>\n\n <div *ngIf=\"activeSlide$ | async as slide\" [@fadeInOut]=\"slide.template\" class=\"flex-grow-1 d-flex align-items-center\">\n <div class=\"carousel-content w-100 py-1 px-2\" [attr.data-slide-index]=\"activeIndex$ | async\">\n <ng-template [ngTemplateOutlet]=\"$any(slide.template)\"></ng-template>\n </div>\n </div>\n\n <button\n *ngIf=\"showNavButtons && slides.length > 1\"\n seamButton\n class=\"carousel-arrow px-2\"\n (click)=\"pageCarousel(1)\"\n title=\"Go to next slide\">\n <seam-icon [icon]=\"faAngleRight\"></seam-icon>\n </button>\n </div>\n\n <div class=\"carousel-pages d-flex flex-wrap justify-content-center mt-3 mx-auto\" *ngIf=\"showPager && slides.length > 1\">\n <button\n *ngFor=\"let q of slides; let i = index\"\n seamButton\n theme=\"light\"\n class=\"carousel-page\"\n [class.active]=\"(activeIndex$ | async) == i\"\n (click)=\"setCarousel(i)\"\n [title]=\"'Go to slide ' + (i + 1)\"></button>\n </div>\n\n <div class=\"carousel-controls\" *ngIf=\"showPauseButton && autoPlay\">\n <button\n *ngIf=\"slides.length > 1\"\n seamButton\n (click)=\"toggleCarouselStop()\"\n [title]=\"(carouselStopped$ | async) ? 'Play' : 'Pause'\">\n <seam-icon [icon]=\"faPlay\" *ngIf=\"carouselStopped$ | async; else pauseButton\"></seam-icon>\n <ng-template #pauseButton>\n <seam-icon [icon]=\"faPause\"></seam-icon>\n </ng-template>\n </button>\n </div>\n\n </div>\n</ng-container>\n", styles: [":host{display:block}:host .carousel-arrow{color:#adb5bd}:host .carousel-pages{max-width:calc(100% - 40px)}:host .carousel-pages .carousel-page{padding:4px;border-radius:50%;margin:1px 3px}:host .carousel-controls{position:absolute;right:-5px;bottom:5px;opacity:0;transition:.3s ease}:host .carousel-controls button{font-size:12px;color:#adb5bd;width:20px;height:20px;padding:2px!important}:host:hover .carousel-controls{opacity:1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "component", type: i3.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], animations: [
172
172
  trigger('fadeInOut', [
173
173
  transition('* => *', [
174
174
  style({ opacity: '0', height: '*' }),
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-carousel.mjs","sources":["../../../projects/ui-common/carousel/carousel-slide.directive.ts","../../../projects/ui-common/carousel/carousel.component.ts","../../../projects/ui-common/carousel/carousel.component.html","../../../projects/ui-common/carousel/carousel.module.ts","../../../projects/ui-common/carousel/theseam-ui-common-carousel.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamCarouselSlide]',\n})\nexport class TheSeamCarouselSlideDirective {\n\n constructor(public readonly template: TemplateRef<any>) { }\n\n}\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport { Component, ContentChildren, Input, OnDestroy, OnInit, QueryList } from '@angular/core'\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion'\nimport { BehaviorSubject, combineLatest, interval, Observable, Subject } from 'rxjs'\nimport { filter, map, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators'\n\nimport { faAngleLeft, faAngleRight, faPause, faPlay } from '@fortawesome/free-solid-svg-icons'\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { TheSeamCarouselSlideDirective } from './carousel-slide.directive'\n\n@Component({\n selector: 'seam-carousel',\n templateUrl: './carousel.component.html',\n styleUrls: ['./carousel.component.scss'],\n animations: [\n trigger('fadeInOut', [\n transition('* => *', [\n style({ opacity: '0', height: '*' }),\n animate(250, style({ opacity: '1', height: '*' })),\n ]),\n ])\n ],\n exportAs: 'seamCarousel',\n})\nexport class TheSeamCarouselComponent implements OnInit, OnDestroy {\n static ngAcceptInputType_slideInterval: NumberInput\n static ngAcceptInputType_autoPlay: BooleanInput\n static ngAcceptInputType_pauseOnHover: BooleanInput\n static ngAcceptInputType_pauseOnFocus: BooleanInput\n static ngAcceptInputType_showPager: BooleanInput\n static ngAcceptInputType_showNavButtons: BooleanInput\n static ngAcceptInputType_showPauseButton: BooleanInput\n\n readonly faAngleRight = faAngleRight\n readonly faAngleLeft = faAngleLeft\n readonly faPause = faPause\n readonly faPlay = faPlay\n\n /**\n * Duration in ms that slide is displayed before paging.\n * Only applicable when `autoPlay === true`.\n * Defaults to 10000ms.\n */\n @Input() @InputNumber(10000) slideInterval = 10000\n\n /**\n * When `true`, carousel will page automatically.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() autoPlay = true\n\n /**\n * When `true`, will pause automatic paging when user mouses over carousel.\n * Timer will restart when user mouses out.\n * Only applicable when `autoPlay === true`.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() pauseOnHover = true\n\n /**\n * When `true`, will pause automatic paging when user focuses in on item in carousel.\n * Timer will restart when user focuses out.\n * Only applicable when `autoPlay === true`.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() pauseOnFocus = true\n\n /**\n * When `true`, will show pager row at the bottom of the carousel with clickable buttons to navigate directly to a page.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() showPager = true\n\n /**\n * When `true`, will show left and right nav button on either side of the carousel to navigate through pages.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() showNavButtons = true\n\n /**\n * When `true`, will show pause/play button to stop/restart automatic paging.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() showPauseButton = true\n\n @ContentChildren(TheSeamCarouselSlideDirective)\n get slides(): QueryList<TheSeamCarouselSlideDirective> | undefined {\n return this._slides.value\n }\n set slides(value: QueryList<TheSeamCarouselSlideDirective> | undefined) {\n // Check if slides were added or removed that would make the active index not exist.\n const count = value?.length || 0\n const maxIdx = count >= 0 ? count - 1 : 0\n const activeIdx = this._pollActiveIndex.value\n if (activeIdx > maxIdx) {\n this._pollActiveIndex.next(maxIdx)\n } else if (count > 0 && activeIdx < 0) {\n this._pollActiveIndex.next(0)\n }\n\n this._slides.next(value)\n }\n private readonly _slides = new BehaviorSubject<QueryList<TheSeamCarouselSlideDirective> | undefined>(undefined)\n public readonly slides$ = this._slides.asObservable()\n\n public readonly activeSlide$: Observable<any | undefined>\n\n private readonly _pollActiveIndex = new BehaviorSubject<number>(0)\n public readonly activeIndex$ = this._pollActiveIndex.asObservable()\n\n private readonly _carouselPaused = new BehaviorSubject<boolean>(false)\n public readonly carouselPaused$ = this._carouselPaused.asObservable()\n\n private readonly _carouselStopped = new BehaviorSubject<boolean>(false)\n public readonly carouselStopped$ = this._carouselStopped.asObservable()\n\n private readonly _resetInterval = new Subject<void>()\n\n constructor() {\n this.activeSlide$ = this._pollActiveIndex.pipe(\n startWith(0),\n switchMap(i => this.slides$.pipe(\n map(slides => slides?.get(i)),\n ))\n )\n }\n\n ngOnInit(): void {\n combineLatest([this.carouselPaused$, this.carouselStopped$]).pipe(\n tap(([paused, stopped]) => {\n if (paused || stopped) {\n this._resetInterval.next(undefined)\n } else {\n this._startInterval()\n }\n })\n ).subscribe()\n }\n\n ngOnDestroy(): void {\n this._resetInterval.next(undefined)\n this._resetInterval.complete()\n }\n\n private _startInterval() {\n if (this.autoPlay) {\n interval(this.slideInterval).pipe(\n takeUntil(this._resetInterval),\n tap(() => {\n this.pageCarousel(1)\n })\n ).subscribe()\n }\n }\n\n focusIn() {\n if (this.pauseOnFocus) {\n this.pauseTimer()\n }\n }\n\n focusOut() {\n if (this.pauseOnFocus) {\n this.startTimer()\n }\n }\n\n mouseEnter() {\n if (this.pauseOnHover) {\n this.pauseTimer()\n }\n }\n\n mouseLeave() {\n if (this.pauseOnHover) {\n this.startTimer()\n }\n }\n\n pauseTimer() {\n this._carouselPaused.next(true)\n }\n\n startTimer() {\n if (!this._carouselStopped.value) {\n this._carouselPaused.next(false)\n }\n }\n\n setCarousel(i: number) {\n this._pollActiveIndex.next(i)\n }\n\n pageCarousel(step: number) {\n this.slides$.pipe(\n take(1),\n filter(slides => notNullOrUndefined(slides)),\n map(slides => {\n const slidesLen = slides?.length || 1\n let index = this._pollActiveIndex.value\n index = index + step\n index = index < 0 ? slidesLen + index : index % slidesLen\n this._pollActiveIndex.next(index)\n })\n ).subscribe()\n }\n\n toggleCarouselStop() {\n const carouselStopped = this._carouselStopped.value\n this._carouselStopped.next(!carouselStopped)\n }\n}\n","<ng-container *ngIf=\"slides$ | async as slides\">\n <div class=\"position-relative\"\n *ngIf=\"slides.length\"\n (focusin)=\"focusIn()\"\n (mouseenter)=\"mouseEnter()\"\n (focusout)=\"focusOut()\"\n (mouseleave)=\"mouseLeave()\">\n\n <div class=\"d-flex\" style=\"min-height: 150px;\">\n <button\n *ngIf=\"showNavButtons && slides.length > 1\"\n seamButton\n class=\"carousel-arrow px-2\"\n (click)=\"pageCarousel(-1)\"\n title=\"Go to previous slide\">\n <seam-icon [icon]=\"faAngleLeft\"></seam-icon>\n </button>\n\n <div *ngIf=\"activeSlide$ | async as slide\" [@fadeInOut]=\"slide.template\" class=\"flex-grow-1 d-flex align-items-center\">\n <div class=\"carousel-content w-100 py-1 px-2\" [attr.data-slide-index]=\"activeIndex$ | async\">\n <ng-template [ngTemplateOutlet]=\"$any(slide.template)\"></ng-template>\n </div>\n </div>\n\n <button\n *ngIf=\"showNavButtons && slides.length > 1\"\n seamButton\n class=\"carousel-arrow px-2\"\n (click)=\"pageCarousel(1)\"\n title=\"Go to next slide\">\n <seam-icon [icon]=\"faAngleRight\"></seam-icon>\n </button>\n </div>\n\n <div class=\"carousel-pages d-flex flex-wrap justify-content-center mt-3 mx-auto\" *ngIf=\"showPager && slides.length > 1\">\n <button\n *ngFor=\"let q of slides; let i = index\"\n seamButton\n theme=\"light\"\n class=\"carousel-page\"\n [class.active]=\"(activeIndex$ | async) == i\"\n (click)=\"setCarousel(i)\"\n [title]=\"'Go to slide ' + (i + 1)\"></button>\n </div>\n\n <div class=\"carousel-controls\" *ngIf=\"showPauseButton && autoPlay\">\n <button\n *ngIf=\"slides.length > 1\"\n seamButton\n (click)=\"toggleCarouselStop()\"\n [title]=\"(carouselStopped$ | async) ? 'Play' : 'Pause'\">\n <seam-icon [icon]=\"faPlay\" *ngIf=\"carouselStopped$ | async; else pauseButton\"></seam-icon>\n <ng-template #pauseButton>\n <seam-icon [icon]=\"faPause\"></seam-icon>\n </ng-template>\n </button>\n </div>\n\n </div>\n</ng-container>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\n\nimport { TheSeamCarouselSlideDirective } from './carousel-slide.directive'\nimport { TheSeamCarouselComponent } from './carousel.component'\n\n@NgModule({\n declarations: [\n TheSeamCarouselComponent,\n TheSeamCarouselSlideDirective\n ],\n imports: [\n CommonModule,\n TheSeamIconModule,\n TheSeamButtonsModule,\n ],\n exports: [\n TheSeamCarouselComponent,\n TheSeamCarouselSlideDirective\n ],\n providers: []\n})\nexport class TheSeamCarouselModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-carousel.mjs","sources":["../../../projects/ui-common/carousel/carousel-slide.directive.ts","../../../projects/ui-common/carousel/carousel.component.ts","../../../projects/ui-common/carousel/carousel.component.html","../../../projects/ui-common/carousel/carousel.module.ts","../../../projects/ui-common/carousel/theseam-ui-common-carousel.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamCarouselSlide]',\n})\nexport class TheSeamCarouselSlideDirective {\n\n constructor(public readonly template: TemplateRef<any>) { }\n\n}\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport { Component, ContentChildren, Input, OnDestroy, OnInit, QueryList } from '@angular/core'\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion'\nimport { BehaviorSubject, combineLatest, interval, Observable, Subject } from 'rxjs'\nimport { filter, map, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators'\n\nimport { faAngleLeft, faAngleRight, faPause, faPlay } from '@fortawesome/free-solid-svg-icons'\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { TheSeamCarouselSlideDirective } from './carousel-slide.directive'\n\n@Component({\n selector: 'seam-carousel',\n templateUrl: './carousel.component.html',\n styleUrls: ['./carousel.component.scss'],\n animations: [\n trigger('fadeInOut', [\n transition('* => *', [\n style({ opacity: '0', height: '*' }),\n animate(250, style({ opacity: '1', height: '*' })),\n ]),\n ])\n ],\n exportAs: 'seamCarousel',\n})\nexport class TheSeamCarouselComponent implements OnInit, OnDestroy {\n static ngAcceptInputType_slideInterval: NumberInput\n static ngAcceptInputType_autoPlay: BooleanInput\n static ngAcceptInputType_pauseOnHover: BooleanInput\n static ngAcceptInputType_pauseOnFocus: BooleanInput\n static ngAcceptInputType_showPager: BooleanInput\n static ngAcceptInputType_showNavButtons: BooleanInput\n static ngAcceptInputType_showPauseButton: BooleanInput\n\n readonly faAngleRight = faAngleRight\n readonly faAngleLeft = faAngleLeft\n readonly faPause = faPause\n readonly faPlay = faPlay\n\n /**\n * Duration in ms that slide is displayed before paging.\n * Only applicable when `autoPlay === true`.\n * Defaults to 10000ms.\n */\n @Input() @InputNumber(10000) slideInterval = 10000\n\n /**\n * When `true`, carousel will page automatically.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() autoPlay = true\n\n /**\n * When `true`, will pause automatic paging when user mouses over carousel.\n * Timer will restart when user mouses out.\n * Only applicable when `autoPlay === true`.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() pauseOnHover = true\n\n /**\n * When `true`, will pause automatic paging when user focuses in on item in carousel.\n * Timer will restart when user focuses out.\n * Only applicable when `autoPlay === true`.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() pauseOnFocus = true\n\n /**\n * When `true`, will show pager row at the bottom of the carousel with clickable buttons to navigate directly to a page.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() showPager = true\n\n /**\n * When `true`, will show left and right nav button on either side of the carousel to navigate through pages.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() showNavButtons = true\n\n /**\n * When `true`, will show pause/play button to stop/restart automatic paging.\n * Defaults to `true`.\n */\n @Input() @InputBoolean() showPauseButton = true\n\n @ContentChildren(TheSeamCarouselSlideDirective)\n get slides(): QueryList<TheSeamCarouselSlideDirective> | undefined {\n return this._slides.value\n }\n set slides(value: QueryList<TheSeamCarouselSlideDirective> | undefined) {\n // Check if slides were added or removed that would make the active index not exist.\n const count = value?.length || 0\n const maxIdx = count >= 0 ? count - 1 : 0\n const activeIdx = this._pollActiveIndex.value\n if (activeIdx > maxIdx) {\n this._pollActiveIndex.next(maxIdx)\n } else if (count > 0 && activeIdx < 0) {\n this._pollActiveIndex.next(0)\n }\n\n this._slides.next(value)\n }\n private readonly _slides = new BehaviorSubject<QueryList<TheSeamCarouselSlideDirective> | undefined>(undefined)\n public readonly slides$ = this._slides.asObservable()\n\n public readonly activeSlide$: Observable<any | undefined>\n\n private readonly _pollActiveIndex = new BehaviorSubject<number>(0)\n public readonly activeIndex$ = this._pollActiveIndex.asObservable()\n\n private readonly _carouselPaused = new BehaviorSubject<boolean>(false)\n public readonly carouselPaused$ = this._carouselPaused.asObservable()\n\n private readonly _carouselStopped = new BehaviorSubject<boolean>(false)\n public readonly carouselStopped$ = this._carouselStopped.asObservable()\n\n private readonly _resetInterval = new Subject<void>()\n\n constructor() {\n this.activeSlide$ = this._pollActiveIndex.pipe(\n startWith(0),\n switchMap(i => this.slides$.pipe(\n map(slides => slides?.get(i)),\n ))\n )\n }\n\n ngOnInit(): void {\n combineLatest([this.carouselPaused$, this.carouselStopped$]).pipe(\n tap(([paused, stopped]) => {\n if (paused || stopped) {\n this._resetInterval.next(undefined)\n } else {\n this._startInterval()\n }\n })\n ).subscribe()\n }\n\n ngOnDestroy(): void {\n this._resetInterval.next(undefined)\n this._resetInterval.complete()\n }\n\n private _startInterval() {\n if (this.autoPlay) {\n interval(this.slideInterval).pipe(\n takeUntil(this._resetInterval),\n tap(() => {\n this.pageCarousel(1)\n })\n ).subscribe()\n }\n }\n\n focusIn() {\n if (this.pauseOnFocus) {\n this.pauseTimer()\n }\n }\n\n focusOut() {\n if (this.pauseOnFocus) {\n this.startTimer()\n }\n }\n\n mouseEnter() {\n if (this.pauseOnHover) {\n this.pauseTimer()\n }\n }\n\n mouseLeave() {\n if (this.pauseOnHover) {\n this.startTimer()\n }\n }\n\n pauseTimer() {\n this._carouselPaused.next(true)\n }\n\n startTimer() {\n if (!this._carouselStopped.value) {\n this._carouselPaused.next(false)\n }\n }\n\n setCarousel(i: number) {\n this._pollActiveIndex.next(i)\n }\n\n pageCarousel(step: number) {\n this.slides$.pipe(\n take(1),\n filter(slides => notNullOrUndefined(slides)),\n map(slides => {\n const slidesLen = slides?.length || 1\n let index = this._pollActiveIndex.value\n index = index + step\n index = index < 0 ? slidesLen + index : index % slidesLen\n this._pollActiveIndex.next(index)\n })\n ).subscribe()\n }\n\n toggleCarouselStop() {\n const carouselStopped = this._carouselStopped.value\n this._carouselStopped.next(!carouselStopped)\n }\n}\n","<ng-container *ngIf=\"slides$ | async as slides\">\n <div class=\"position-relative\"\n *ngIf=\"slides.length\"\n (focusin)=\"focusIn()\"\n (mouseenter)=\"mouseEnter()\"\n (focusout)=\"focusOut()\"\n (mouseleave)=\"mouseLeave()\">\n\n <div class=\"d-flex\" style=\"min-height: 150px;\">\n <button\n *ngIf=\"showNavButtons && slides.length > 1\"\n seamButton\n class=\"carousel-arrow px-2\"\n (click)=\"pageCarousel(-1)\"\n title=\"Go to previous slide\">\n <seam-icon [icon]=\"faAngleLeft\"></seam-icon>\n </button>\n\n <div *ngIf=\"activeSlide$ | async as slide\" [@fadeInOut]=\"slide.template\" class=\"flex-grow-1 d-flex align-items-center\">\n <div class=\"carousel-content w-100 py-1 px-2\" [attr.data-slide-index]=\"activeIndex$ | async\">\n <ng-template [ngTemplateOutlet]=\"$any(slide.template)\"></ng-template>\n </div>\n </div>\n\n <button\n *ngIf=\"showNavButtons && slides.length > 1\"\n seamButton\n class=\"carousel-arrow px-2\"\n (click)=\"pageCarousel(1)\"\n title=\"Go to next slide\">\n <seam-icon [icon]=\"faAngleRight\"></seam-icon>\n </button>\n </div>\n\n <div class=\"carousel-pages d-flex flex-wrap justify-content-center mt-3 mx-auto\" *ngIf=\"showPager && slides.length > 1\">\n <button\n *ngFor=\"let q of slides; let i = index\"\n seamButton\n theme=\"light\"\n class=\"carousel-page\"\n [class.active]=\"(activeIndex$ | async) == i\"\n (click)=\"setCarousel(i)\"\n [title]=\"'Go to slide ' + (i + 1)\"></button>\n </div>\n\n <div class=\"carousel-controls\" *ngIf=\"showPauseButton && autoPlay\">\n <button\n *ngIf=\"slides.length > 1\"\n seamButton\n (click)=\"toggleCarouselStop()\"\n [title]=\"(carouselStopped$ | async) ? 'Play' : 'Pause'\">\n <seam-icon [icon]=\"faPlay\" *ngIf=\"carouselStopped$ | async; else pauseButton\"></seam-icon>\n <ng-template #pauseButton>\n <seam-icon [icon]=\"faPause\"></seam-icon>\n </ng-template>\n </button>\n </div>\n\n </div>\n</ng-container>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\n\nimport { TheSeamCarouselSlideDirective } from './carousel-slide.directive'\nimport { TheSeamCarouselComponent } from './carousel.component'\n\n@NgModule({\n declarations: [\n TheSeamCarouselComponent,\n TheSeamCarouselSlideDirective\n ],\n imports: [\n CommonModule,\n TheSeamIconModule,\n TheSeamButtonsModule,\n ],\n exports: [\n TheSeamCarouselComponent,\n TheSeamCarouselSlideDirective\n ],\n providers: []\n})\nexport class TheSeamCarouselModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -658,7 +658,7 @@ class DatatableDynamicActionMenuComponent {
658
658
  }
659
659
  }
660
660
  DatatableDynamicActionMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableDynamicActionMenuComponent, deps: [{ token: i1.DynamicValueHelperService }, { token: DynamicDatatableRowActionsService }], target: i0.ɵɵFactoryTarget.Component });
661
- DatatableDynamicActionMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableDynamicActionMenuComponent, selector: "seam-datatable-dynamic-action-menu", inputs: { row: "row", actionDefs: "actionDefs" }, ngImport: i0, template: "<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let record of _menuRecords$ | async\">\n\n <a *ngIf=\"record.elementType === 'a'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</a>\n\n <button *ngIf=\"record.elementType === 'button'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</button>\n\n </ng-container>\n\n <!-- <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [routerLink]=\"item.routerLink\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-container> -->\n</seam-menu>\n\n<button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"$any(_actionMenuPositions)\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n</button>\n", styles: [":host{display:block;position:relative}.datatable-action-button{font-size:20px;line-height:20px;width:30px;height:30px;padding:0;border-radius:15px;text-align:center}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "component", type: i5.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i5.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions"], outputs: ["menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i5.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "directive", type: DatatableDynamicActionMenuItemDirective, selector: "[seamDatatableDynamicActionMenuItem]", inputs: ["seamDatatableDynamicActionMenuItem"], exportAs: ["seamDatatableDynamicActionMenuItem"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
661
+ DatatableDynamicActionMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableDynamicActionMenuComponent, selector: "seam-datatable-dynamic-action-menu", inputs: { row: "row", actionDefs: "actionDefs" }, ngImport: i0, template: "<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let record of _menuRecords$ | async\">\n\n <a *ngIf=\"record.elementType === 'a'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</a>\n\n <button *ngIf=\"record.elementType === 'button'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</button>\n\n </ng-container>\n\n <!-- <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [routerLink]=\"item.routerLink\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-container> -->\n</seam-menu>\n\n<button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"$any(_actionMenuPositions)\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n</button>\n", styles: [":host{display:block;position:relative}.datatable-action-button{font-size:20px;line-height:20px;width:30px;height:30px;padding:0;border-radius:15px;text-align:center}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "component", type: i5.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i5.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i5.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "directive", type: DatatableDynamicActionMenuItemDirective, selector: "[seamDatatableDynamicActionMenuItem]", inputs: ["seamDatatableDynamicActionMenuItem"], exportAs: ["seamDatatableDynamicActionMenuItem"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
662
662
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableDynamicActionMenuComponent, decorators: [{
663
663
  type: Component,
664
664
  args: [{ selector: 'seam-datatable-dynamic-action-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let record of _menuRecords$ | async\">\n\n <a *ngIf=\"record.elementType === 'a'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</a>\n\n <button *ngIf=\"record.elementType === 'button'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</button>\n\n </ng-container>\n\n <!-- <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [routerLink]=\"item.routerLink\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-container> -->\n</seam-menu>\n\n<button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"$any(_actionMenuPositions)\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n</button>\n", styles: [":host{display:block;position:relative}.datatable-action-button{font-size:20px;line-height:20px;width:30px;height:30px;padding:0;border-radius:15px;text-align:center}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]