@theseam/ui-common 1.0.0-beta.9 → 1.0.1-beta.7
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.
- package/ai/package.json +3 -0
- package/asset-reader/package.json +3 -0
- package/breadcrumbs/package.json +3 -0
- package/buttons/index.d.ts +4 -1
- package/buttons/package.json +3 -0
- package/card/package.json +3 -0
- package/carousel/package.json +3 -0
- package/checkbox/package.json +3 -0
- package/confirm-dialog/package.json +3 -0
- package/core/package.json +3 -0
- package/data-exporter/package.json +3 -0
- package/data-filters/package.json +3 -0
- package/datatable/index.d.ts +44 -24
- package/datatable/package.json +3 -0
- package/datatable-alterations-display/package.json +3 -0
- package/datatable-dynamic/package.json +3 -0
- package/dynamic/package.json +3 -0
- package/dynamic-component-loader/package.json +3 -0
- package/fesm2022/theseam-ui-common-asset-reader.mjs +10 -10
- package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs +6 -6
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-buttons.mjs +35 -28
- package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-card.mjs +16 -16
- package/fesm2022/theseam-ui-common-card.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-carousel.mjs +10 -10
- package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-checkbox.mjs +7 -7
- package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs +13 -13
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-data-exporter.mjs +31 -14
- package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-data-filters.mjs +13 -13
- package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +12 -12
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +25 -25
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable.mjs +177 -145
- package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +7 -7
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-dynamic.mjs +21 -21
- package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-footer-bar.mjs +7 -7
- package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-form-field-error.mjs +16 -16
- package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-form-field.mjs +22 -22
- package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-framework.mjs +160 -158
- package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-google-maps.mjs +40 -40
- package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-graphql.mjs +852 -479
- package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-icon.mjs +13 -13
- package/fesm2022/theseam-ui-common-icon.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-layout.mjs +7 -7
- package/fesm2022/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-loading.mjs +10 -10
- package/fesm2022/theseam-ui-common-loading.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-menu.mjs +25 -25
- package/fesm2022/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-modal.mjs +43 -43
- package/fesm2022/theseam-ui-common-modal.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-navigation-reload.mjs +3 -3
- package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-popover.mjs +10 -10
- package/fesm2022/theseam-ui-common-popover.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-progress.mjs +7 -7
- package/fesm2022/theseam-ui-common-progress.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-rich-text.mjs +7 -7
- package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-scrollbar.mjs +6 -6
- package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-services.mjs +12 -12
- package/fesm2022/theseam-ui-common-services.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-shared.mjs +37 -37
- package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-storage.mjs +3 -3
- package/fesm2022/theseam-ui-common-storage.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-story-helpers.mjs +26 -26
- package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tabbed.mjs +22 -22
- package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table-cell-type.mjs +10 -10
- package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table-cell-types.mjs +31 -31
- package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table.mjs +20 -28
- package/fesm2022/theseam-ui-common-table.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tel-input.mjs +13 -13
- package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tiled-select.mjs +22 -22
- package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-toggle-edit.mjs +16 -16
- package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-toggle-group.mjs +10 -10
- package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tooltip.mjs +10 -10
- package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +10 -10
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +3 -3
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-viewers.mjs +12 -12
- package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-widget.mjs +135 -135
- package/fesm2022/theseam-ui-common-widget.mjs.map +1 -1
- package/footer-bar/package.json +3 -0
- package/form-field/package.json +3 -0
- package/form-field-error/package.json +3 -0
- package/framework/package.json +3 -0
- package/google-maps/package.json +3 -0
- package/graphql/index.d.ts +265 -54
- package/graphql/package.json +3 -0
- package/icon/package.json +3 -0
- package/layout/package.json +3 -0
- package/loading/package.json +3 -0
- package/menu/package.json +3 -0
- package/modal/package.json +3 -0
- package/models/package.json +3 -0
- package/navigation-reload/package.json +3 -0
- package/package.json +55 -55
- package/popover/package.json +3 -0
- package/progress/package.json +3 -0
- package/rich-text/package.json +3 -0
- package/scrollbar/package.json +3 -0
- package/services/package.json +3 -0
- package/shared/package.json +3 -0
- package/storage/package.json +3 -0
- package/story-helpers/package.json +3 -0
- package/tabbed/package.json +3 -0
- package/table/index.d.ts +1 -5
- package/table/package.json +3 -0
- package/table-cell-type/package.json +3 -0
- package/table-cell-types/package.json +3 -0
- package/tel-input/package.json +3 -0
- package/testing/package.json +3 -0
- package/tiled-select/package.json +3 -0
- package/toggle-edit/package.json +3 -0
- package/toggle-group/package.json +3 -0
- package/tooltip/package.json +3 -0
- package/unsaved-changes-dialog/package.json +3 -0
- package/utils/package.json +3 -0
- package/validators/package.json +3 -0
- package/vertical-list-filter/package.json +3 -0
- package/viewers/package.json +3 -0
- package/widget/package.json +3 -0
|
@@ -15,10 +15,10 @@ import { TheSeamButtonsModule } from '@theseam/ui-common/buttons';
|
|
|
15
15
|
|
|
16
16
|
class TheSeamCarouselSlideDirective {
|
|
17
17
|
template = inject((TemplateRef));
|
|
18
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
19
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
18
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCarouselSlideDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
19
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: TheSeamCarouselSlideDirective, isStandalone: true, selector: "[seamCarouselSlide]", exportAs: ["seamCarouselSlide"], ngImport: i0 });
|
|
20
20
|
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCarouselSlideDirective, decorators: [{
|
|
22
22
|
type: Directive,
|
|
23
23
|
args: [{
|
|
24
24
|
selector: '[seamCarouselSlide]',
|
|
@@ -179,8 +179,8 @@ class TheSeamCarouselComponent {
|
|
|
179
179
|
const carouselStopped = this._carouselStopped.value;
|
|
180
180
|
this._carouselStopped.next(!carouselStopped);
|
|
181
181
|
}
|
|
182
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
183
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
182
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
183
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: TheSeamCarouselComponent, isStandalone: true, 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\n 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 >\n <seam-icon [icon]=\"faAngleLeft\"></seam-icon>\n </button>\n\n <div\n *ngIf=\"activeSlide$ | async as slide\"\n [@fadeInOut]=\"slide.template\"\n class=\"flex-grow-1 d-flex align-items-center\"\n >\n <div\n class=\"carousel-content w-100 py-1 px-2\"\n [attr.data-slide-index]=\"activeIndex$ | async\"\n >\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 >\n <seam-icon [icon]=\"faAngleRight\"></seam-icon>\n </button>\n </div>\n\n <div\n class=\"carousel-pages d-flex flex-wrap justify-content-center mt-3 mx-auto\"\n *ngIf=\"showPager && slides.length > 1\"\n >\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)\"\n ></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 >\n <seam-icon\n [icon]=\"faPlay\"\n *ngIf=\"carouselStopped$ | async; else pauseButton\"\n ></seam-icon>\n <ng-template #pauseButton>\n <seam-icon [icon]=\"faPause\"></seam-icon>\n </ng-template>\n </button>\n </div>\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: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: TheSeamButtonsModule }, { kind: "component", type: i2.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
|
|
184
184
|
trigger('fadeInOut', [
|
|
185
185
|
transition('* => *', [
|
|
186
186
|
style({ opacity: '0', height: '*' }),
|
|
@@ -210,7 +210,7 @@ __decorate([
|
|
|
210
210
|
__decorate([
|
|
211
211
|
InputBoolean()
|
|
212
212
|
], TheSeamCarouselComponent.prototype, "showPauseButton", void 0);
|
|
213
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
213
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCarouselComponent, decorators: [{
|
|
214
214
|
type: Component,
|
|
215
215
|
args: [{ selector: 'seam-carousel', animations: [
|
|
216
216
|
trigger('fadeInOut', [
|
|
@@ -247,11 +247,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImpor
|
|
|
247
247
|
}] } });
|
|
248
248
|
|
|
249
249
|
class TheSeamCarouselModule {
|
|
250
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
251
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
252
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
250
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
251
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCarouselModule, imports: [TheSeamCarouselComponent, TheSeamCarouselSlideDirective], exports: [TheSeamCarouselComponent, TheSeamCarouselSlideDirective] });
|
|
252
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCarouselModule, imports: [TheSeamCarouselComponent] });
|
|
253
253
|
}
|
|
254
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
254
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCarouselModule, decorators: [{
|
|
255
255
|
type: NgModule,
|
|
256
256
|
args: [{
|
|
257
257
|
imports: [TheSeamCarouselComponent, TheSeamCarouselSlideDirective],
|
|
@@ -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, inject, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamCarouselSlide]',\n exportAs: 'seamCarouselSlide',\n})\nexport class TheSeamCarouselSlideDirective {\n private readonly template = inject(TemplateRef<any>)\n}\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common'\nimport {\n Component,\n ContentChildren,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n} from '@angular/core'\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion'\nimport {\n BehaviorSubject,\n combineLatest,\n interval,\n Observable,\n Subject,\n} from 'rxjs'\nimport {\n filter,\n map,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators'\n\nimport {\n faAngleLeft,\n faAngleRight,\n faPause,\n faPlay,\n} from '@fortawesome/free-solid-svg-icons'\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\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 imports: [\n NgIf,\n NgFor,\n NgTemplateOutlet,\n AsyncPipe,\n TheSeamIconModule,\n TheSeamButtonsModule,\n ],\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<\n QueryList<TheSeamCarouselSlideDirective> | undefined\n >(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(map((slides) => slides?.get(i)))),\n )\n }\n\n ngOnInit(): void {\n combineLatest([this.carouselPaused$, this.carouselStopped$])\n .pipe(\n tap(([paused, stopped]) => {\n if (paused || stopped) {\n this._resetInterval.next(undefined)\n } else {\n this._startInterval()\n }\n }),\n )\n .subscribe()\n }\n\n ngOnDestroy(): void {\n this._resetInterval.next(undefined)\n this._resetInterval.complete()\n }\n\n private _startInterval() {\n this._resetInterval.next(undefined)\n if (this.autoPlay) {\n interval(this.slideInterval)\n .pipe(\n takeUntil(this._resetInterval),\n tap(() => {\n this.pageCarousel(1)\n }),\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$\n .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 )\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\n 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 >\n <seam-icon [icon]=\"faAngleLeft\"></seam-icon>\n </button>\n\n <div\n *ngIf=\"activeSlide$ | async as slide\"\n [@fadeInOut]=\"slide.template\"\n class=\"flex-grow-1 d-flex align-items-center\"\n >\n <div\n class=\"carousel-content w-100 py-1 px-2\"\n [attr.data-slide-index]=\"activeIndex$ | async\"\n >\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 >\n <seam-icon [icon]=\"faAngleRight\"></seam-icon>\n </button>\n </div>\n\n <div\n class=\"carousel-pages d-flex flex-wrap justify-content-center mt-3 mx-auto\"\n *ngIf=\"showPager && slides.length > 1\"\n >\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)\"\n ></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 >\n <seam-icon\n [icon]=\"faPlay\"\n *ngIf=\"carouselStopped$ | async; else pauseButton\"\n ></seam-icon>\n <ng-template #pauseButton>\n <seam-icon [icon]=\"faPause\"></seam-icon>\n </ng-template>\n </button>\n </div>\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core'\n\nimport { TheSeamCarouselSlideDirective } from './carousel-slide.directive'\nimport { TheSeamCarouselComponent } from './carousel.component'\n\n@NgModule({\n imports: [TheSeamCarouselComponent, TheSeamCarouselSlideDirective],\n exports: [TheSeamCarouselComponent, TheSeamCarouselSlideDirective],\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, inject, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamCarouselSlide]',\n exportAs: 'seamCarouselSlide',\n})\nexport class TheSeamCarouselSlideDirective {\n private readonly template = inject(TemplateRef<any>)\n}\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common'\nimport {\n Component,\n ContentChildren,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n} from '@angular/core'\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion'\nimport {\n BehaviorSubject,\n combineLatest,\n interval,\n Observable,\n Subject,\n} from 'rxjs'\nimport {\n filter,\n map,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators'\n\nimport {\n faAngleLeft,\n faAngleRight,\n faPause,\n faPlay,\n} from '@fortawesome/free-solid-svg-icons'\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\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 imports: [\n NgIf,\n NgFor,\n NgTemplateOutlet,\n AsyncPipe,\n TheSeamIconModule,\n TheSeamButtonsModule,\n ],\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<\n QueryList<TheSeamCarouselSlideDirective> | undefined\n >(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(map((slides) => slides?.get(i)))),\n )\n }\n\n ngOnInit(): void {\n combineLatest([this.carouselPaused$, this.carouselStopped$])\n .pipe(\n tap(([paused, stopped]) => {\n if (paused || stopped) {\n this._resetInterval.next(undefined)\n } else {\n this._startInterval()\n }\n }),\n )\n .subscribe()\n }\n\n ngOnDestroy(): void {\n this._resetInterval.next(undefined)\n this._resetInterval.complete()\n }\n\n private _startInterval() {\n this._resetInterval.next(undefined)\n if (this.autoPlay) {\n interval(this.slideInterval)\n .pipe(\n takeUntil(this._resetInterval),\n tap(() => {\n this.pageCarousel(1)\n }),\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$\n .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 )\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\n 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 >\n <seam-icon [icon]=\"faAngleLeft\"></seam-icon>\n </button>\n\n <div\n *ngIf=\"activeSlide$ | async as slide\"\n [@fadeInOut]=\"slide.template\"\n class=\"flex-grow-1 d-flex align-items-center\"\n >\n <div\n class=\"carousel-content w-100 py-1 px-2\"\n [attr.data-slide-index]=\"activeIndex$ | async\"\n >\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 >\n <seam-icon [icon]=\"faAngleRight\"></seam-icon>\n </button>\n </div>\n\n <div\n class=\"carousel-pages d-flex flex-wrap justify-content-center mt-3 mx-auto\"\n *ngIf=\"showPager && slides.length > 1\"\n >\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)\"\n ></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 >\n <seam-icon\n [icon]=\"faPlay\"\n *ngIf=\"carouselStopped$ | async; else pauseButton\"\n ></seam-icon>\n <ng-template #pauseButton>\n <seam-icon [icon]=\"faPause\"></seam-icon>\n </ng-template>\n </button>\n </div>\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core'\n\nimport { TheSeamCarouselSlideDirective } from './carousel-slide.directive'\nimport { TheSeamCarouselComponent } from './carousel.component'\n\n@NgModule({\n imports: [TheSeamCarouselComponent, TheSeamCarouselSlideDirective],\n exports: [TheSeamCarouselComponent, TheSeamCarouselSlideDirective],\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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"}
|
|
@@ -327,13 +327,13 @@ class TheSeamCheckboxComponent extends _TheSeamCheckboxMixinBase {
|
|
|
327
327
|
nativeCheckbox.nativeElement.indeterminate = value;
|
|
328
328
|
}
|
|
329
329
|
}
|
|
330
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
331
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
330
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCheckboxComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: i0.NgZone }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
331
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: TheSeamCheckboxComponent, isStandalone: true, selector: "seam-checkbox", inputs: { tabIndex: "tabIndex", id: "id", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], required: "required", checked: "checked", disabled: "disabled", indeterminate: "indeterminate", name: "name", value: "value" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "attr.tabindex": "null" }, classAttribute: "custom-control custom-checkbox" }, providers: [THESEAM_CHECKBOX_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["input"], descendants: true, static: true }], exportAs: ["seamCheckbox"], usesInheritance: true, ngImport: i0, template: "<input\n #input\n type=\"checkbox\"\n class=\"custom-control-input\"\n [id]=\"inputId\"\n [required]=\"required\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n (change)=\"_onInteractionEvent($event)\"\n (click)=\"_onInputClick($event)\"\n/>\n<label\n #checkboxLabel\n class=\"custom-control-label\"\n [attr.for]=\"inputId\"\n (cdkObserveContent)=\"_onLabelTextChange()\"\n>\n <ng-content></ng-content>\n</label>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ObserversModule }, { kind: "directive", type: i2.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
332
332
|
}
|
|
333
333
|
__decorate([
|
|
334
334
|
InputBoolean()
|
|
335
335
|
], TheSeamCheckboxComponent.prototype, "required", void 0);
|
|
336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCheckboxComponent, decorators: [{
|
|
337
337
|
type: Component,
|
|
338
338
|
args: [{ selector: 'seam-checkbox', imports: [CommonModule, ObserversModule], exportAs: 'seamCheckbox', host: {
|
|
339
339
|
'[attr.tabindex]': 'null',
|
|
@@ -373,11 +373,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImpor
|
|
|
373
373
|
|
|
374
374
|
/** @deprecated */
|
|
375
375
|
class TheSeamCheckboxModule {
|
|
376
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
377
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
378
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
376
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
377
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCheckboxModule, imports: [TheSeamCheckboxComponent], exports: [TheSeamCheckboxComponent] });
|
|
378
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCheckboxModule, imports: [TheSeamCheckboxComponent] });
|
|
379
379
|
}
|
|
380
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamCheckboxModule, decorators: [{
|
|
381
381
|
type: NgModule,
|
|
382
382
|
args: [{
|
|
383
383
|
imports: [TheSeamCheckboxComponent],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-checkbox.mjs","sources":["../../../projects/ui-common/checkbox/testing/checkbox.harness.ts","../../../projects/ui-common/checkbox/checkbox.component.ts","../../../projects/ui-common/checkbox/checkbox.component.html","../../../projects/ui-common/checkbox/checkbox.module.ts","../../../projects/ui-common/checkbox/theseam-ui-common-checkbox.ts"],"sourcesContent":["import {\n BaseHarnessFilters,\n ComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing'\n\ninterface TheSeamCheckboxHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the id of the checkbox. */\n id?: number | string | RegExp\n\n /** Filters based on the name of the checkbox. */\n name?: string | RegExp\n}\n\nexport class TheSeamCheckboxHarness extends ComponentHarness {\n static hostSelector = 'seam-checkbox'\n\n /** Creates a `HarnessPredicate` used to locate a particular `MyMenuHarness`. */\n static with(\n options: TheSeamCheckboxHarnessFilters,\n ): HarnessPredicate<TheSeamCheckboxHarness> {\n return new HarnessPredicate(TheSeamCheckboxHarness, options)\n .addOption('checkbox id', options.id, (harness, index) =>\n HarnessPredicate.stringMatches(harness.getId(), `${index}`),\n )\n .addOption('checkbox name', options.name, (harness, name) =>\n HarnessPredicate.stringMatches(harness.getName(), name),\n )\n }\n\n public async getId(): Promise<string | null> {\n return (await this.getInputElement()).getAttribute('id')\n }\n\n public async getName(): Promise<string | null> {\n return (await this.getInputElement()).getAttribute('name')\n }\n\n /**\n * Returns the checked state of the checkbox.\n *\n * @returns true if the checkbox is checked, false if not\n */\n public async isChecked(): Promise<boolean> {\n return (await this.getInputElement()).getProperty('checked')\n }\n\n /**\n * Returns the indeterminate state of the checkbox.\n *\n * @returns true if the checkbox is indeterminate, false if not\n */\n public async isIndeterminate(): Promise<boolean> {\n return (await this.getInputElement()).getProperty('indeterminate')\n }\n\n /**\n * Returns the disabled state of the checkbox.\n *\n * @returns true if the checkbox is disabled, false if not\n */\n public async isDisabled(): Promise<boolean> {\n return (await this.getInputElement()).getProperty('disabled')\n }\n\n /**\n * Returns the required state of the checkbox.\n *\n * @returns true if the checkbox is required, false if not\n */\n public async isRequired(): Promise<boolean> {\n return (await this.getInputElement()).getProperty('required')\n }\n\n /**\n * Clicks the checkbox.\n */\n public async click() {\n return (await this.getInputElement()).click()\n }\n\n /**\n * Returns the input element of the checkbox.\n *\n * @returns the input element of the checkbox\n */\n public async getInputElement() {\n return this.locatorFor('input')()\n }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y'\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { ObserversModule } from '@angular/cdk/observers'\nimport { CommonModule } from '@angular/common'\nimport {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nimport {\n CanDisable,\n CanDisableCtor,\n HasTabIndex,\n HasTabIndexCtor,\n InputBoolean,\n mixinDisabled,\n mixinTabIndex,\n} from '@theseam/ui-common/core'\n\n// NOTE: Partially based on mat-checkbox: https://github.com/angular/components/blob/master/src/material/checkbox/checkbox.ts\n\n/** Change event object emitted by TheSeamCheckboxComponent. */\nexport class TheSeamCheckboxChange {\n /** The source TheSeamCheckboxComponent of the event. */\n public readonly source: TheSeamCheckboxComponent\n /** The new `checked` value of the checkbox. */\n public readonly checked: boolean\n\n constructor(\n private readonly _source: TheSeamCheckboxComponent,\n private readonly _checked: boolean,\n ) {\n this.source = _source\n this.checked = _checked\n }\n}\n\nexport const THESEAM_CHECKBOX_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TheSeamCheckboxComponent),\n multi: true,\n}\n\nclass TheSeamCheckboxComponentBase {\n constructor(public _elementRef: ElementRef) {}\n}\n\nconst _TheSeamCheckboxMixinBase: HasTabIndexCtor &\n CanDisableCtor &\n typeof TheSeamCheckboxComponentBase = mixinTabIndex(\n mixinDisabled(TheSeamCheckboxComponentBase),\n)\n\nlet _uid = 0\n\n/**\n * A Checkbox.\n */\n@Component({\n selector: 'seam-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n imports: [CommonModule, ObserversModule],\n exportAs: 'seamCheckbox',\n host: {\n '[attr.tabindex]': 'null',\n class: 'custom-control custom-checkbox',\n },\n providers: [THESEAM_CHECKBOX_CONTROL_VALUE_ACCESSOR],\n inputs: ['tabIndex'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TheSeamCheckboxComponent\n extends _TheSeamCheckboxMixinBase\n implements\n AfterViewInit,\n OnDestroy,\n ControlValueAccessor,\n CanDisable,\n HasTabIndex\n{\n static ngAcceptInputType_checked: BooleanInput\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_indeterminate: BooleanInput\n\n /** @ignore */\n private _uid = `seam-chk-${_uid++}`\n\n /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */\n @Input() id?: string = this._uid\n\n /** Returns the unique id for the input. */\n get inputId(): string {\n return `${this.id || this._uid}`\n }\n\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n @Input('aria-label') ariaLabel?: string = ''\n\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n @Input('aria-labelledby') ariaLabelledby?: string | null = null\n\n /** Whether the checkbox is required. */\n @Input() @InputBoolean() required = false\n\n /** Whether the checkbox is checked. */\n @Input()\n get checked(): boolean {\n return this._checked\n }\n set checked(value: boolean) {\n const newValue = coerceBooleanProperty(value)\n\n if (newValue !== this.checked) {\n this._checked = newValue\n this._changeDetectorRef.markForCheck()\n }\n }\n /** @ignore */\n private _checked = false\n\n /**\n * Whether the checkbox is disabled.\n */\n // This fully overrides the implementation provided by mixinDisabled, but the\n // mixin is still required because mixinTabIndex requires it.\n @Input()\n get disabled(): boolean {\n return this._disabled\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value)\n\n if (newValue !== this.disabled) {\n this._disabled = newValue\n this._changeDetectorRef.markForCheck()\n }\n }\n /** @ignore */\n private _disabled = false\n\n /**\n * Whether the checkbox is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n */\n @Input()\n get indeterminate(): boolean {\n return this._indeterminate\n }\n set indeterminate(value: boolean) {\n const changed = value !== this._indeterminate\n this._indeterminate = coerceBooleanProperty(value)\n\n if (changed) {\n this.indeterminateChange.emit(this._indeterminate)\n }\n\n this._syncIndeterminate(this._indeterminate)\n }\n /** @ignore */\n private _indeterminate = false\n\n /** Name value will be applied to the input element if present */\n @Input() name: string | undefined | null = null\n\n /** Event emitted when the checkbox's `checked` value changes. */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly change = new EventEmitter<TheSeamCheckboxChange>()\n\n /** Event emitted when the checkbox's `indeterminate` value changes. */\n @Output() readonly indeterminateChange: EventEmitter<boolean> =\n new EventEmitter<boolean>()\n\n /** The value attribute of the native input element */\n @Input() value: string | undefined | null\n\n /**\n * The native `<input type=\"checkbox\">` element\n * @ignore\n */\n @ViewChild('input', { static: true }) _inputElement:\n | ElementRef<HTMLInputElement>\n | undefined\n | null\n\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * @ignore\n */\n _onTouched: () => any = () => {}\n\n /** @ignore */\n private _controlValueAccessorChangeFn: (value: any) => void = () => {}\n\n constructor(\n elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusMonitor: FocusMonitor,\n private _ngZone: NgZone,\n @Attribute('tabindex') tabIndex: string,\n ) {\n super(elementRef)\n\n this.tabIndex = parseInt(tabIndex, 10) || 0\n\n this._focusMonitor.monitor(elementRef, true).subscribe((focusOrigin) => {\n if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched()\n _changeDetectorRef.markForCheck()\n })\n }\n })\n }\n\n /** @ignore */\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef)\n }\n\n /** @ignore */\n ngAfterViewInit() {\n this._syncIndeterminate(this._indeterminate)\n }\n\n /**\n * Method being called whenever the label text changes.\n * @ignore\n */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the checkbox\n // component will be only marked for check, but no actual change detection runs automatically.\n // Instead of going back into the zone in order to trigger a change detection which causes\n // *all* components to be checked (if explicitly marked or not using OnPush), we only trigger\n // an explicit change detection for the checkbox view and its children.\n this._changeDetectorRef.detectChanges()\n }\n\n // Implemented as part of ControlValueAccessor.\n /** @ignore */\n writeValue(value: any) {\n this.checked = !!value\n }\n\n // Implemented as part of ControlValueAccessor.\n /** @ignore */\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn\n }\n\n // Implemented as part of ControlValueAccessor.\n /** @ignore */\n registerOnTouched(fn: any) {\n this._onTouched = fn\n }\n\n // Implemented as part of ControlValueAccessor.\n /** @ignore */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled\n }\n\n /** @ignore */\n _getAriaChecked(): 'true' | 'false' | 'mixed' {\n return this.checked ? 'true' : this.indeterminate ? 'mixed' : 'false'\n }\n\n /** @ignore */\n private _emitChangeEvent() {\n const event = new TheSeamCheckboxChange(this, this.checked)\n\n this._controlValueAccessorChangeFn(this.checked)\n this.change.emit(event)\n }\n\n /** Toggles the `checked` state of the checkbox. */\n toggle(): void {\n this.checked = !this.checked\n }\n\n /**\n * Event handler for checkbox input element.\n * Toggles checked state if element is not disabled.\n * Do not toggle on (change) event since IE doesn't fire change event when\n * indeterminate checkbox is clicked.\n * @ignore\n */\n _onInputClick(event: Event) {\n // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n if (!this.disabled) {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate) {\n Promise.resolve().then(() => {\n this._indeterminate = false\n this.indeterminateChange.emit(this._indeterminate)\n })\n }\n\n this.toggle()\n\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this._emitChangeEvent()\n }\n }\n\n /** Focuses the checkbox. */\n focus(origin: FocusOrigin = 'keyboard', options?: FocusOptions): void {\n if (!this._inputElement) {\n return\n }\n this._focusMonitor.focusVia(this._inputElement, origin, options)\n }\n\n /** @ignore */\n _onInteractionEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation()\n }\n\n /**\n * Syncs the indeterminate value with the checkbox DOM node.\n *\n * We sync `indeterminate` directly on the DOM node, because in Ivy the check for whether a\n * property is supported on an element boils down to `if (propName in element)`. Domino's\n * HTMLInputElement doesn't have an `indeterminate` property so Ivy will warn during\n * server-side rendering.\n * @ignore\n */\n private _syncIndeterminate(value: boolean) {\n const nativeCheckbox = this._inputElement\n\n if (nativeCheckbox) {\n nativeCheckbox.nativeElement.indeterminate = value\n }\n }\n}\n","<input\n #input\n type=\"checkbox\"\n class=\"custom-control-input\"\n [id]=\"inputId\"\n [required]=\"required\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n (change)=\"_onInteractionEvent($event)\"\n (click)=\"_onInputClick($event)\"\n/>\n<label\n #checkboxLabel\n class=\"custom-control-label\"\n [attr.for]=\"inputId\"\n (cdkObserveContent)=\"_onLabelTextChange()\"\n>\n <ng-content></ng-content>\n</label>\n","import { ObserversModule } from '@angular/cdk/observers'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamCheckboxComponent } from './checkbox.component'\n\n/** @deprecated */\n@NgModule({\n imports: [TheSeamCheckboxComponent],\n exports: [TheSeamCheckboxComponent],\n})\nexport class TheSeamCheckboxModule {}\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-checkbox.mjs","sources":["../../../projects/ui-common/checkbox/testing/checkbox.harness.ts","../../../projects/ui-common/checkbox/checkbox.component.ts","../../../projects/ui-common/checkbox/checkbox.component.html","../../../projects/ui-common/checkbox/checkbox.module.ts","../../../projects/ui-common/checkbox/theseam-ui-common-checkbox.ts"],"sourcesContent":["import {\n BaseHarnessFilters,\n ComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing'\n\ninterface TheSeamCheckboxHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the id of the checkbox. */\n id?: number | string | RegExp\n\n /** Filters based on the name of the checkbox. */\n name?: string | RegExp\n}\n\nexport class TheSeamCheckboxHarness extends ComponentHarness {\n static hostSelector = 'seam-checkbox'\n\n /** Creates a `HarnessPredicate` used to locate a particular `MyMenuHarness`. */\n static with(\n options: TheSeamCheckboxHarnessFilters,\n ): HarnessPredicate<TheSeamCheckboxHarness> {\n return new HarnessPredicate(TheSeamCheckboxHarness, options)\n .addOption('checkbox id', options.id, (harness, index) =>\n HarnessPredicate.stringMatches(harness.getId(), `${index}`),\n )\n .addOption('checkbox name', options.name, (harness, name) =>\n HarnessPredicate.stringMatches(harness.getName(), name),\n )\n }\n\n public async getId(): Promise<string | null> {\n return (await this.getInputElement()).getAttribute('id')\n }\n\n public async getName(): Promise<string | null> {\n return (await this.getInputElement()).getAttribute('name')\n }\n\n /**\n * Returns the checked state of the checkbox.\n *\n * @returns true if the checkbox is checked, false if not\n */\n public async isChecked(): Promise<boolean> {\n return (await this.getInputElement()).getProperty('checked')\n }\n\n /**\n * Returns the indeterminate state of the checkbox.\n *\n * @returns true if the checkbox is indeterminate, false if not\n */\n public async isIndeterminate(): Promise<boolean> {\n return (await this.getInputElement()).getProperty('indeterminate')\n }\n\n /**\n * Returns the disabled state of the checkbox.\n *\n * @returns true if the checkbox is disabled, false if not\n */\n public async isDisabled(): Promise<boolean> {\n return (await this.getInputElement()).getProperty('disabled')\n }\n\n /**\n * Returns the required state of the checkbox.\n *\n * @returns true if the checkbox is required, false if not\n */\n public async isRequired(): Promise<boolean> {\n return (await this.getInputElement()).getProperty('required')\n }\n\n /**\n * Clicks the checkbox.\n */\n public async click() {\n return (await this.getInputElement()).click()\n }\n\n /**\n * Returns the input element of the checkbox.\n *\n * @returns the input element of the checkbox\n */\n public async getInputElement() {\n return this.locatorFor('input')()\n }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y'\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { ObserversModule } from '@angular/cdk/observers'\nimport { CommonModule } from '@angular/common'\nimport {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nimport {\n CanDisable,\n CanDisableCtor,\n HasTabIndex,\n HasTabIndexCtor,\n InputBoolean,\n mixinDisabled,\n mixinTabIndex,\n} from '@theseam/ui-common/core'\n\n// NOTE: Partially based on mat-checkbox: https://github.com/angular/components/blob/master/src/material/checkbox/checkbox.ts\n\n/** Change event object emitted by TheSeamCheckboxComponent. */\nexport class TheSeamCheckboxChange {\n /** The source TheSeamCheckboxComponent of the event. */\n public readonly source: TheSeamCheckboxComponent\n /** The new `checked` value of the checkbox. */\n public readonly checked: boolean\n\n constructor(\n private readonly _source: TheSeamCheckboxComponent,\n private readonly _checked: boolean,\n ) {\n this.source = _source\n this.checked = _checked\n }\n}\n\nexport const THESEAM_CHECKBOX_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TheSeamCheckboxComponent),\n multi: true,\n}\n\nclass TheSeamCheckboxComponentBase {\n constructor(public _elementRef: ElementRef) {}\n}\n\nconst _TheSeamCheckboxMixinBase: HasTabIndexCtor &\n CanDisableCtor &\n typeof TheSeamCheckboxComponentBase = mixinTabIndex(\n mixinDisabled(TheSeamCheckboxComponentBase),\n)\n\nlet _uid = 0\n\n/**\n * A Checkbox.\n */\n@Component({\n selector: 'seam-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n imports: [CommonModule, ObserversModule],\n exportAs: 'seamCheckbox',\n host: {\n '[attr.tabindex]': 'null',\n class: 'custom-control custom-checkbox',\n },\n providers: [THESEAM_CHECKBOX_CONTROL_VALUE_ACCESSOR],\n inputs: ['tabIndex'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TheSeamCheckboxComponent\n extends _TheSeamCheckboxMixinBase\n implements\n AfterViewInit,\n OnDestroy,\n ControlValueAccessor,\n CanDisable,\n HasTabIndex\n{\n static ngAcceptInputType_checked: BooleanInput\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_indeterminate: BooleanInput\n\n /** @ignore */\n private _uid = `seam-chk-${_uid++}`\n\n /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */\n @Input() id?: string = this._uid\n\n /** Returns the unique id for the input. */\n get inputId(): string {\n return `${this.id || this._uid}`\n }\n\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n @Input('aria-label') ariaLabel?: string = ''\n\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n @Input('aria-labelledby') ariaLabelledby?: string | null = null\n\n /** Whether the checkbox is required. */\n @Input() @InputBoolean() required = false\n\n /** Whether the checkbox is checked. */\n @Input()\n get checked(): boolean {\n return this._checked\n }\n set checked(value: boolean) {\n const newValue = coerceBooleanProperty(value)\n\n if (newValue !== this.checked) {\n this._checked = newValue\n this._changeDetectorRef.markForCheck()\n }\n }\n /** @ignore */\n private _checked = false\n\n /**\n * Whether the checkbox is disabled.\n */\n // This fully overrides the implementation provided by mixinDisabled, but the\n // mixin is still required because mixinTabIndex requires it.\n @Input()\n get disabled(): boolean {\n return this._disabled\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value)\n\n if (newValue !== this.disabled) {\n this._disabled = newValue\n this._changeDetectorRef.markForCheck()\n }\n }\n /** @ignore */\n private _disabled = false\n\n /**\n * Whether the checkbox is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n */\n @Input()\n get indeterminate(): boolean {\n return this._indeterminate\n }\n set indeterminate(value: boolean) {\n const changed = value !== this._indeterminate\n this._indeterminate = coerceBooleanProperty(value)\n\n if (changed) {\n this.indeterminateChange.emit(this._indeterminate)\n }\n\n this._syncIndeterminate(this._indeterminate)\n }\n /** @ignore */\n private _indeterminate = false\n\n /** Name value will be applied to the input element if present */\n @Input() name: string | undefined | null = null\n\n /** Event emitted when the checkbox's `checked` value changes. */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly change = new EventEmitter<TheSeamCheckboxChange>()\n\n /** Event emitted when the checkbox's `indeterminate` value changes. */\n @Output() readonly indeterminateChange: EventEmitter<boolean> =\n new EventEmitter<boolean>()\n\n /** The value attribute of the native input element */\n @Input() value: string | undefined | null\n\n /**\n * The native `<input type=\"checkbox\">` element\n * @ignore\n */\n @ViewChild('input', { static: true }) _inputElement:\n | ElementRef<HTMLInputElement>\n | undefined\n | null\n\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * @ignore\n */\n _onTouched: () => any = () => {}\n\n /** @ignore */\n private _controlValueAccessorChangeFn: (value: any) => void = () => {}\n\n constructor(\n elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusMonitor: FocusMonitor,\n private _ngZone: NgZone,\n @Attribute('tabindex') tabIndex: string,\n ) {\n super(elementRef)\n\n this.tabIndex = parseInt(tabIndex, 10) || 0\n\n this._focusMonitor.monitor(elementRef, true).subscribe((focusOrigin) => {\n if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched()\n _changeDetectorRef.markForCheck()\n })\n }\n })\n }\n\n /** @ignore */\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef)\n }\n\n /** @ignore */\n ngAfterViewInit() {\n this._syncIndeterminate(this._indeterminate)\n }\n\n /**\n * Method being called whenever the label text changes.\n * @ignore\n */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the checkbox\n // component will be only marked for check, but no actual change detection runs automatically.\n // Instead of going back into the zone in order to trigger a change detection which causes\n // *all* components to be checked (if explicitly marked or not using OnPush), we only trigger\n // an explicit change detection for the checkbox view and its children.\n this._changeDetectorRef.detectChanges()\n }\n\n // Implemented as part of ControlValueAccessor.\n /** @ignore */\n writeValue(value: any) {\n this.checked = !!value\n }\n\n // Implemented as part of ControlValueAccessor.\n /** @ignore */\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn\n }\n\n // Implemented as part of ControlValueAccessor.\n /** @ignore */\n registerOnTouched(fn: any) {\n this._onTouched = fn\n }\n\n // Implemented as part of ControlValueAccessor.\n /** @ignore */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled\n }\n\n /** @ignore */\n _getAriaChecked(): 'true' | 'false' | 'mixed' {\n return this.checked ? 'true' : this.indeterminate ? 'mixed' : 'false'\n }\n\n /** @ignore */\n private _emitChangeEvent() {\n const event = new TheSeamCheckboxChange(this, this.checked)\n\n this._controlValueAccessorChangeFn(this.checked)\n this.change.emit(event)\n }\n\n /** Toggles the `checked` state of the checkbox. */\n toggle(): void {\n this.checked = !this.checked\n }\n\n /**\n * Event handler for checkbox input element.\n * Toggles checked state if element is not disabled.\n * Do not toggle on (change) event since IE doesn't fire change event when\n * indeterminate checkbox is clicked.\n * @ignore\n */\n _onInputClick(event: Event) {\n // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n if (!this.disabled) {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate) {\n Promise.resolve().then(() => {\n this._indeterminate = false\n this.indeterminateChange.emit(this._indeterminate)\n })\n }\n\n this.toggle()\n\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this._emitChangeEvent()\n }\n }\n\n /** Focuses the checkbox. */\n focus(origin: FocusOrigin = 'keyboard', options?: FocusOptions): void {\n if (!this._inputElement) {\n return\n }\n this._focusMonitor.focusVia(this._inputElement, origin, options)\n }\n\n /** @ignore */\n _onInteractionEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation()\n }\n\n /**\n * Syncs the indeterminate value with the checkbox DOM node.\n *\n * We sync `indeterminate` directly on the DOM node, because in Ivy the check for whether a\n * property is supported on an element boils down to `if (propName in element)`. Domino's\n * HTMLInputElement doesn't have an `indeterminate` property so Ivy will warn during\n * server-side rendering.\n * @ignore\n */\n private _syncIndeterminate(value: boolean) {\n const nativeCheckbox = this._inputElement\n\n if (nativeCheckbox) {\n nativeCheckbox.nativeElement.indeterminate = value\n }\n }\n}\n","<input\n #input\n type=\"checkbox\"\n class=\"custom-control-input\"\n [id]=\"inputId\"\n [required]=\"required\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n (change)=\"_onInteractionEvent($event)\"\n (click)=\"_onInputClick($event)\"\n/>\n<label\n #checkboxLabel\n class=\"custom-control-label\"\n [attr.for]=\"inputId\"\n (cdkObserveContent)=\"_onLabelTextChange()\"\n>\n <ng-content></ng-content>\n</label>\n","import { ObserversModule } from '@angular/cdk/observers'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamCheckboxComponent } from './checkbox.component'\n\n/** @deprecated */\n@NgModule({\n imports: [TheSeamCheckboxComponent],\n exports: [TheSeamCheckboxComponent],\n})\nexport class TheSeamCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -24,10 +24,10 @@ class ConfirmDialogComponent {
|
|
|
24
24
|
}
|
|
25
25
|
return undefined;
|
|
26
26
|
}
|
|
27
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
28
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
27
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: ConfirmDialogComponent, isStandalone: true, selector: "seam-confirm-dialog", inputs: { message: "message", alertMessage: "alertMessage", alertType: "alertType", template: "template" }, ngImport: i0, template: "<seam-modal-body>\n <ng-container *ngIf=\"tpl; else messageTpl\">\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: tplContext }\"\n ></ng-container>\n </ng-container>\n\n <ng-template #messageTpl>\n <h5>{{ message }}</h5>\n\n <div\n *ngIf=\"alertMessage\"\n class=\"alert {{ alertType ? 'alert-' + alertType : '' }} mb-0\"\n >\n {{ alertMessage }}\n </div>\n </ng-template>\n</seam-modal-body>\n<seam-modal-footer>\n <button class=\"btn btn-primary\" seamModalClose=\"confirm\">Yes</button>\n <button\n class=\"btn btn-lightgray\"\n data-dismiss=\"modal\"\n seamModalClose=\"cancel\"\n seamAutoFocus\n >\n No\n </button>\n</seam-modal-footer>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TheSeamModalModule }, { kind: "component", type: i1.ModalBodyComponent, selector: "seam-modal-body" }, { kind: "component", type: i1.ModalFooterComponent, selector: "seam-modal-footer" }, { kind: "directive", type: i1.ModalCloseDirective, selector: "button[seamModalClose]", inputs: ["type", "aria-label", "seamModalClose", "seamModalNext", "seamModalNextConfig"], exportAs: ["seamModalClose"] }, { kind: "directive", type: TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }] });
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
32
|
args: [{ selector: 'seam-confirm-dialog', imports: [
|
|
33
33
|
NgIf,
|
|
@@ -77,10 +77,10 @@ class SeamConfirmDialogService {
|
|
|
77
77
|
}
|
|
78
78
|
return modalRef;
|
|
79
79
|
}
|
|
80
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
81
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
80
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SeamConfirmDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
81
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SeamConfirmDialogService, providedIn: 'root' });
|
|
82
82
|
}
|
|
83
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SeamConfirmDialogService, decorators: [{
|
|
84
84
|
type: Injectable,
|
|
85
85
|
args: [{ providedIn: 'root' }]
|
|
86
86
|
}] });
|
|
@@ -128,13 +128,13 @@ class ConfirmClickDirective {
|
|
|
128
128
|
this._modalRef.close();
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
132
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
131
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ConfirmClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
132
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: ConfirmClickDirective, isStandalone: true, selector: "[seamConfirmClick]", inputs: { seamConfirmMsg: "seamConfirmMsg", seamConfirmAlert: "seamConfirmAlert", seamConfirmTpl: "seamConfirmTpl", seamConfirmDisabled: "seamConfirmDisabled" }, outputs: { seamConfirmClick: "seamConfirmClick" }, host: { listeners: { "click": "_onClick($event)" }, properties: { "class.lib-confirm-click-active": "this._confirmClickActiveCss" } }, exportAs: ["seamConfirmClick"], ngImport: i0 });
|
|
133
133
|
}
|
|
134
134
|
__decorate([
|
|
135
135
|
InputBoolean()
|
|
136
136
|
], ConfirmClickDirective.prototype, "seamConfirmDisabled", void 0);
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ConfirmClickDirective, decorators: [{
|
|
138
138
|
type: Directive,
|
|
139
139
|
args: [{
|
|
140
140
|
selector: '[seamConfirmClick]',
|
|
@@ -159,11 +159,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImpor
|
|
|
159
159
|
}] } });
|
|
160
160
|
|
|
161
161
|
class TheSeamConfirmDialogModule {
|
|
162
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
163
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
164
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
162
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamConfirmDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
163
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: TheSeamConfirmDialogModule, imports: [ConfirmDialogComponent, ConfirmClickDirective], exports: [ConfirmDialogComponent, ConfirmClickDirective] });
|
|
164
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamConfirmDialogModule, imports: [ConfirmDialogComponent] });
|
|
165
165
|
}
|
|
166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamConfirmDialogModule, decorators: [{
|
|
167
167
|
type: NgModule,
|
|
168
168
|
args: [{
|
|
169
169
|
imports: [ConfirmDialogComponent, ConfirmClickDirective],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-confirm-dialog.mjs","sources":["../../../projects/ui-common/confirm-dialog/confirm-dialog.component.ts","../../../projects/ui-common/confirm-dialog/confirm-dialog.component.html","../../../projects/ui-common/confirm-dialog/confirm-dialog.service.ts","../../../projects/ui-common/confirm-dialog/confirm-click.directive.ts","../../../projects/ui-common/confirm-dialog/confirm-dialog.module.ts","../../../projects/ui-common/confirm-dialog/theseam-ui-common-confirm-dialog.ts"],"sourcesContent":["import { NgIf, NgTemplateOutlet } from '@angular/common'\nimport { Component, Input, TemplateRef } from '@angular/core'\n\nimport { TheSeamModalModule } from '@theseam/ui-common/modal'\nimport { ThemeTypes } from '@theseam/ui-common/models'\nimport { TheSeamAutoFocusDirective } from '@theseam/ui-common/shared'\n\n@Component({\n selector: 'seam-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n imports: [\n NgIf,\n NgTemplateOutlet,\n TheSeamModalModule,\n TheSeamAutoFocusDirective,\n ],\n})\nexport class ConfirmDialogComponent {\n @Input() message: string | undefined | null =\n 'Are you sure you want to continue?'\n @Input() alertMessage: string | undefined | null\n @Input() alertType: ThemeTypes | undefined | null = 'warning'\n @Input() template:\n | TemplateRef<any>\n | { template: TemplateRef<any>; context: any }\n | undefined\n | null\n\n get tpl(): TemplateRef<any> | null | undefined {\n if (this.template && 'template' in this.template) {\n return this.template.template\n }\n\n return this.template\n }\n\n get tplContext(): any {\n if (this.template && 'context' in this.template) {\n return this.template.context\n }\n\n return undefined\n }\n}\n","<seam-modal-body>\n <ng-container *ngIf=\"tpl; else messageTpl\">\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: tplContext }\"\n ></ng-container>\n </ng-container>\n\n <ng-template #messageTpl>\n <h5>{{ message }}</h5>\n\n <div\n *ngIf=\"alertMessage\"\n class=\"alert {{ alertType ? 'alert-' + alertType : '' }} mb-0\"\n >\n {{ alertMessage }}\n </div>\n </ng-template>\n</seam-modal-body>\n<seam-modal-footer>\n <button class=\"btn btn-primary\" seamModalClose=\"confirm\">Yes</button>\n <button\n class=\"btn btn-lightgray\"\n data-dismiss=\"modal\"\n seamModalClose=\"cancel\"\n seamAutoFocus\n >\n No\n </button>\n</seam-modal-footer>\n","import { inject, Injectable, TemplateRef } from '@angular/core'\n\nimport { Modal, ModalRef } from '@theseam/ui-common/modal'\nimport { ThemeTypes } from '@theseam/ui-common/models'\n\nimport { ConfirmDialogComponent } from './confirm-dialog.component'\n\n@Injectable({ providedIn: 'root' })\nexport class SeamConfirmDialogService {\n private readonly _modal = inject(Modal, { optional: true })\n\n public open(\n message?: string,\n alert?: string | { message: string; type: ThemeTypes },\n template?: TemplateRef<any> | { template: TemplateRef<any>; context: any },\n ): ModalRef<ConfirmDialogComponent, 'confirm' | undefined> {\n if (!this._modal) {\n // TODO: This shouldn't be necessary after refactoring modal service.\n throw new Error(\n 'Modal service not provided. Please import TheSeamModalModule in your application.',\n )\n }\n\n const modalRef = this._modal.openFromComponent(ConfirmDialogComponent)\n\n if (!modalRef.componentInstance) {\n throw new Error('ConfirmDialogComponent not created.')\n }\n\n const comp: ConfirmDialogComponent = modalRef.componentInstance\n\n if (message) {\n comp.message = message\n }\n\n if (alert) {\n if (typeof alert === 'string') {\n comp.alertMessage = alert\n } else if (alert.message && alert.type) {\n comp.alertMessage = alert.message\n comp.alertType = alert.type\n } else {\n throw new Error('Invalid alert argument.')\n }\n }\n\n if (template) {\n comp.template = template\n }\n\n return modalRef\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport {\n Directive,\n EventEmitter,\n HostBinding,\n HostListener,\n inject,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n} from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { ModalRef } from '@theseam/ui-common/modal'\nimport { ThemeTypes } from '@theseam/ui-common/models'\n\nimport { ConfirmDialogComponent } from './confirm-dialog.component'\nimport { SeamConfirmDialogService } from './confirm-dialog.service'\n\n@Directive({\n selector: '[seamConfirmClick]',\n exportAs: 'seamConfirmClick',\n})\nexport class ConfirmClickDirective implements OnDestroy {\n static ngAcceptInputType_seamConfirmDisabled: BooleanInput\n\n private readonly _confirmService = inject(SeamConfirmDialogService)\n\n private _modalRef:\n | ModalRef<ConfirmDialogComponent, 'confirm' | undefined>\n | undefined\n\n @Input() seamConfirmMsg: string | undefined | null\n @Input() seamConfirmAlert:\n | string\n | { message: string; type: ThemeTypes }\n | undefined\n | null\n @Input() seamConfirmTpl:\n | TemplateRef<any>\n | { template: TemplateRef<any>; context: any }\n | undefined\n | null\n @Input() @InputBoolean() seamConfirmDisabled = false\n\n @Output() seamConfirmClick = new EventEmitter<'confirm'>()\n\n @HostBinding('class.lib-confirm-click-active')\n get _confirmClickActiveCss() {\n return !!this._modalRef\n }\n\n @HostListener('click', ['$event'])\n _onClick(event: any) {\n if (this.seamConfirmDisabled) {\n if (this._modalRef) {\n this._modalRef.close()\n this._modalRef = undefined\n }\n }\n\n if (this._modalRef) {\n return\n }\n\n this._modalRef = this._confirmService.open(\n this.seamConfirmMsg || '',\n this.seamConfirmAlert || undefined,\n this.seamConfirmTpl || undefined,\n )\n\n this._modalRef.afterClosed().subscribe((result) => {\n if (result === 'confirm') {\n this.seamConfirmClick.emit(result)\n }\n\n this._modalRef = undefined\n })\n }\n\n ngOnDestroy() {\n if (this._modalRef) {\n this._modalRef.close()\n }\n }\n\n get modalRef() {\n return this._modalRef\n }\n\n public close() {\n if (this._modalRef) {\n this._modalRef.close()\n }\n }\n}\n","import { NgModule } from '@angular/core'\n\nimport { ConfirmClickDirective } from './confirm-click.directive'\nimport { ConfirmDialogComponent } from './confirm-dialog.component'\n\n@NgModule({\n imports: [ConfirmDialogComponent, ConfirmClickDirective],\n exports: [ConfirmDialogComponent, ConfirmClickDirective],\n})\nexport class TheSeamConfirmDialogModule {}\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-confirm-dialog.mjs","sources":["../../../projects/ui-common/confirm-dialog/confirm-dialog.component.ts","../../../projects/ui-common/confirm-dialog/confirm-dialog.component.html","../../../projects/ui-common/confirm-dialog/confirm-dialog.service.ts","../../../projects/ui-common/confirm-dialog/confirm-click.directive.ts","../../../projects/ui-common/confirm-dialog/confirm-dialog.module.ts","../../../projects/ui-common/confirm-dialog/theseam-ui-common-confirm-dialog.ts"],"sourcesContent":["import { NgIf, NgTemplateOutlet } from '@angular/common'\nimport { Component, Input, TemplateRef } from '@angular/core'\n\nimport { TheSeamModalModule } from '@theseam/ui-common/modal'\nimport { ThemeTypes } from '@theseam/ui-common/models'\nimport { TheSeamAutoFocusDirective } from '@theseam/ui-common/shared'\n\n@Component({\n selector: 'seam-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n imports: [\n NgIf,\n NgTemplateOutlet,\n TheSeamModalModule,\n TheSeamAutoFocusDirective,\n ],\n})\nexport class ConfirmDialogComponent {\n @Input() message: string | undefined | null =\n 'Are you sure you want to continue?'\n @Input() alertMessage: string | undefined | null\n @Input() alertType: ThemeTypes | undefined | null = 'warning'\n @Input() template:\n | TemplateRef<any>\n | { template: TemplateRef<any>; context: any }\n | undefined\n | null\n\n get tpl(): TemplateRef<any> | null | undefined {\n if (this.template && 'template' in this.template) {\n return this.template.template\n }\n\n return this.template\n }\n\n get tplContext(): any {\n if (this.template && 'context' in this.template) {\n return this.template.context\n }\n\n return undefined\n }\n}\n","<seam-modal-body>\n <ng-container *ngIf=\"tpl; else messageTpl\">\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: tplContext }\"\n ></ng-container>\n </ng-container>\n\n <ng-template #messageTpl>\n <h5>{{ message }}</h5>\n\n <div\n *ngIf=\"alertMessage\"\n class=\"alert {{ alertType ? 'alert-' + alertType : '' }} mb-0\"\n >\n {{ alertMessage }}\n </div>\n </ng-template>\n</seam-modal-body>\n<seam-modal-footer>\n <button class=\"btn btn-primary\" seamModalClose=\"confirm\">Yes</button>\n <button\n class=\"btn btn-lightgray\"\n data-dismiss=\"modal\"\n seamModalClose=\"cancel\"\n seamAutoFocus\n >\n No\n </button>\n</seam-modal-footer>\n","import { inject, Injectable, TemplateRef } from '@angular/core'\n\nimport { Modal, ModalRef } from '@theseam/ui-common/modal'\nimport { ThemeTypes } from '@theseam/ui-common/models'\n\nimport { ConfirmDialogComponent } from './confirm-dialog.component'\n\n@Injectable({ providedIn: 'root' })\nexport class SeamConfirmDialogService {\n private readonly _modal = inject(Modal, { optional: true })\n\n public open(\n message?: string,\n alert?: string | { message: string; type: ThemeTypes },\n template?: TemplateRef<any> | { template: TemplateRef<any>; context: any },\n ): ModalRef<ConfirmDialogComponent, 'confirm' | undefined> {\n if (!this._modal) {\n // TODO: This shouldn't be necessary after refactoring modal service.\n throw new Error(\n 'Modal service not provided. Please import TheSeamModalModule in your application.',\n )\n }\n\n const modalRef = this._modal.openFromComponent(ConfirmDialogComponent)\n\n if (!modalRef.componentInstance) {\n throw new Error('ConfirmDialogComponent not created.')\n }\n\n const comp: ConfirmDialogComponent = modalRef.componentInstance\n\n if (message) {\n comp.message = message\n }\n\n if (alert) {\n if (typeof alert === 'string') {\n comp.alertMessage = alert\n } else if (alert.message && alert.type) {\n comp.alertMessage = alert.message\n comp.alertType = alert.type\n } else {\n throw new Error('Invalid alert argument.')\n }\n }\n\n if (template) {\n comp.template = template\n }\n\n return modalRef\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport {\n Directive,\n EventEmitter,\n HostBinding,\n HostListener,\n inject,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n} from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { ModalRef } from '@theseam/ui-common/modal'\nimport { ThemeTypes } from '@theseam/ui-common/models'\n\nimport { ConfirmDialogComponent } from './confirm-dialog.component'\nimport { SeamConfirmDialogService } from './confirm-dialog.service'\n\n@Directive({\n selector: '[seamConfirmClick]',\n exportAs: 'seamConfirmClick',\n})\nexport class ConfirmClickDirective implements OnDestroy {\n static ngAcceptInputType_seamConfirmDisabled: BooleanInput\n\n private readonly _confirmService = inject(SeamConfirmDialogService)\n\n private _modalRef:\n | ModalRef<ConfirmDialogComponent, 'confirm' | undefined>\n | undefined\n\n @Input() seamConfirmMsg: string | undefined | null\n @Input() seamConfirmAlert:\n | string\n | { message: string; type: ThemeTypes }\n | undefined\n | null\n @Input() seamConfirmTpl:\n | TemplateRef<any>\n | { template: TemplateRef<any>; context: any }\n | undefined\n | null\n @Input() @InputBoolean() seamConfirmDisabled = false\n\n @Output() seamConfirmClick = new EventEmitter<'confirm'>()\n\n @HostBinding('class.lib-confirm-click-active')\n get _confirmClickActiveCss() {\n return !!this._modalRef\n }\n\n @HostListener('click', ['$event'])\n _onClick(event: any) {\n if (this.seamConfirmDisabled) {\n if (this._modalRef) {\n this._modalRef.close()\n this._modalRef = undefined\n }\n }\n\n if (this._modalRef) {\n return\n }\n\n this._modalRef = this._confirmService.open(\n this.seamConfirmMsg || '',\n this.seamConfirmAlert || undefined,\n this.seamConfirmTpl || undefined,\n )\n\n this._modalRef.afterClosed().subscribe((result) => {\n if (result === 'confirm') {\n this.seamConfirmClick.emit(result)\n }\n\n this._modalRef = undefined\n })\n }\n\n ngOnDestroy() {\n if (this._modalRef) {\n this._modalRef.close()\n }\n }\n\n get modalRef() {\n return this._modalRef\n }\n\n public close() {\n if (this._modalRef) {\n this._modalRef.close()\n }\n }\n}\n","import { NgModule } from '@angular/core'\n\nimport { ConfirmClickDirective } from './confirm-click.directive'\nimport { ConfirmDialogComponent } from './confirm-dialog.component'\n\n@NgModule({\n imports: [ConfirmDialogComponent, ConfirmClickDirective],\n exports: [ConfirmDialogComponent, ConfirmClickDirective],\n})\nexport class TheSeamConfirmDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -12,13 +12,31 @@ function exportOperator(exportFn) {
|
|
|
12
12
|
return (source$) => source$.pipe(switchMap(exportFn));
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
// TODO: We may be able to avoid this by getting the Storybook tsconfig and our
|
|
16
|
+
// apps Angular builds more in-sync or when Storybook updates the builder that
|
|
17
|
+
// it uses. For now, this should give a reliable ESM and CJS interop for the
|
|
18
|
+
// XLSX library.
|
|
19
|
+
/**
|
|
20
|
+
* Imports the XLSX library.
|
|
21
|
+
*
|
|
22
|
+
* This should be used instead of direct dynamic imports to ensure
|
|
23
|
+
* compatibility. It may be better to just import normally, but most datatables
|
|
24
|
+
* don't do client-side XLSX processing so dynamic imports are preferred.
|
|
25
|
+
*
|
|
26
|
+
* @returns The XLSX library.
|
|
27
|
+
*/
|
|
28
|
+
async function importXlsx() {
|
|
29
|
+
// TODO: Fix typing for the dynamic imports
|
|
30
|
+
const XLSX = await import('xlsx');
|
|
31
|
+
return XLSX.default ?? XLSX;
|
|
32
|
+
}
|
|
33
|
+
|
|
15
34
|
class CSVDataExporter {
|
|
16
35
|
name = 'exporter:csv';
|
|
17
36
|
label = 'CSV';
|
|
18
37
|
icon = faFileCsv;
|
|
19
38
|
export(data) {
|
|
20
|
-
|
|
21
|
-
return wrapIntoObservable(import('xlsx')).pipe(switchMap((XLSX) => {
|
|
39
|
+
return wrapIntoObservable(importXlsx()).pipe(switchMap((XLSX) => {
|
|
22
40
|
const ws = XLSX.utils.json_to_sheet(data);
|
|
23
41
|
const out = XLSX.utils.sheet_to_csv(ws);
|
|
24
42
|
// NOTE: `out` should not be passed as a string, but the fileDataFromBuffer
|
|
@@ -31,10 +49,10 @@ class CSVDataExporter {
|
|
|
31
49
|
}), mapTo(true)));
|
|
32
50
|
}));
|
|
33
51
|
}
|
|
34
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
35
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
52
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CSVDataExporter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
53
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CSVDataExporter });
|
|
36
54
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CSVDataExporter, decorators: [{
|
|
38
56
|
type: Injectable
|
|
39
57
|
}] });
|
|
40
58
|
|
|
@@ -43,8 +61,7 @@ class XLSXDataExporter {
|
|
|
43
61
|
label = 'XLSX';
|
|
44
62
|
icon = faFileExcel;
|
|
45
63
|
export(data) {
|
|
46
|
-
|
|
47
|
-
return wrapIntoObservable(import('xlsx')).pipe(switchMap((XLSX) => {
|
|
64
|
+
return wrapIntoObservable(importXlsx()).pipe(switchMap((XLSX) => {
|
|
48
65
|
const ws = XLSX.utils.json_to_sheet(data);
|
|
49
66
|
const wb = { Sheets: { data: ws }, SheetNames: ['data'] };
|
|
50
67
|
const excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
|
|
@@ -53,22 +70,22 @@ class XLSXDataExporter {
|
|
|
53
70
|
}), mapTo(true));
|
|
54
71
|
}));
|
|
55
72
|
}
|
|
56
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
57
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
73
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: XLSXDataExporter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
74
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: XLSXDataExporter });
|
|
58
75
|
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: XLSXDataExporter, decorators: [{
|
|
60
77
|
type: Injectable
|
|
61
78
|
}] });
|
|
62
79
|
|
|
63
80
|
class TheSeamDataExporterModule {
|
|
64
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
65
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
66
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
81
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamDataExporterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
82
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: TheSeamDataExporterModule });
|
|
83
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamDataExporterModule, providers: [
|
|
67
84
|
{ provide: THESEAM_DATA_EXPORTER, useClass: CSVDataExporter, multi: true },
|
|
68
85
|
{ provide: THESEAM_DATA_EXPORTER, useClass: XLSXDataExporter, multi: true },
|
|
69
86
|
] });
|
|
70
87
|
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamDataExporterModule, decorators: [{
|
|
72
89
|
type: NgModule,
|
|
73
90
|
args: [{
|
|
74
91
|
declarations: [],
|