@theseam/ui-common 1.0.0-beta.0 → 1.0.0-beta.10
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/breadcrumbs/index.d.ts +1 -2
- package/buttons/index.d.ts +20 -13
- package/datatable/index.d.ts +77 -39
- package/dynamic/index.d.ts +5 -5
- package/fesm2022/theseam-ui-common-asset-reader.mjs +28 -29
- package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs +25 -31
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-buttons.mjs +108 -66
- package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-card.mjs +21 -21
- package/fesm2022/theseam-ui-common-card.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-carousel.mjs +28 -30
- package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-checkbox.mjs +27 -27
- package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs +23 -27
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-core.mjs +31 -11
- package/fesm2022/theseam-ui-common-core.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-data-exporter.mjs +18 -19
- package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-data-filters.mjs +80 -64
- package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +51 -49
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +145 -112
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable.mjs +727 -420
- package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +12 -14
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-dynamic.mjs +60 -48
- package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-footer-bar.mjs +9 -15
- package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-form-field-error.mjs +60 -43
- package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-form-field.mjs +129 -76
- package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-framework.mjs +669 -543
- package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-google-maps.mjs +206 -149
- package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-graphql.mjs +311 -254
- package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-icon.mjs +125 -89
- package/fesm2022/theseam-ui-common-icon.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-layout.mjs +18 -26
- package/fesm2022/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-loading.mjs +19 -28
- package/fesm2022/theseam-ui-common-loading.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-menu.mjs +124 -95
- package/fesm2022/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-modal.mjs +178 -129
- package/fesm2022/theseam-ui-common-modal.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-models.mjs +3 -3
- package/fesm2022/theseam-ui-common-models.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-navigation-reload.mjs +13 -11
- package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-popover.mjs +81 -88
- package/fesm2022/theseam-ui-common-popover.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-progress.mjs +15 -19
- package/fesm2022/theseam-ui-common-progress.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-rich-text.mjs +65 -52
- package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-scrollbar.mjs +12 -9
- package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-services.mjs +41 -26
- package/fesm2022/theseam-ui-common-services.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-shared.mjs +149 -159
- package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-storage.mjs +9 -6
- package/fesm2022/theseam-ui-common-storage.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-story-helpers.mjs +148 -86
- package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tabbed.mjs +43 -39
- package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table-cell-type.mjs +63 -39
- package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table-cell-types.mjs +182 -144
- package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table.mjs +62 -41
- package/fesm2022/theseam-ui-common-table.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tel-input.mjs +98 -63
- package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-testing.mjs +13 -10
- package/fesm2022/theseam-ui-common-testing.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tiled-select.mjs +54 -50
- package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-toggle-edit.mjs +41 -37
- package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-toggle-group.mjs +30 -31
- package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tooltip.mjs +225 -66
- package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +14 -12
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-utils.mjs +113 -77
- package/fesm2022/theseam-ui-common-utils.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-validators.mjs +10 -9
- package/fesm2022/theseam-ui-common-validators.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +39 -17
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-viewers.mjs +80 -53
- package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-widget.mjs +288 -314
- package/fesm2022/theseam-ui-common-widget.mjs.map +1 -1
- package/form-field/index.d.ts +1 -1
- package/framework/base-layout/base-layout.component.scss +9 -4
- package/framework/base-layout/styles/_variables.scss +4 -9
- package/framework/dashboard/dashboard-widgets/dashboard-widgets.component.scss +6 -4
- package/framework/index.d.ts +6 -6
- package/framework/nav/nav-item/nav-item.component.scss +7 -6
- package/framework/nav/styles/_themes/light/_variables.scss +21 -5
- package/framework/nav/styles/_themes/primary/_variables.scss +21 -5
- package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -2
- package/framework/side-nav/styles/_themes/light/_variables.scss +5 -1
- package/framework/side-nav/styles/_themes/primary/_variables.scss +25 -5
- package/graphql/index.d.ts +49 -7
- package/modal/README.md +5 -5
- package/modal/index.d.ts +1 -1
- package/models/index.d.ts +1 -1
- package/package.json +59 -60
- package/popover/index.d.ts +0 -2
- package/progress/progress-circle/styles/_variables.scss +15 -3
- package/shared/index.d.ts +0 -13
- package/story-helpers/index.d.ts +11 -1
- package/styles/bootstrap/_bootstrap.scss +34 -34
- package/styles/bootstrap/_bs-styles.scss +4 -8
- package/styles/bootstrap/_bs-utilities.scss +4 -4
- package/styles/bootstrap/_bs-variables.scss +65 -70
- package/styles/common/_forms.scss +9 -10
- package/styles/common/_global.scss +0 -1
- package/styles/common/_hacks.scss +1 -1
- package/styles/common/_table.scss +0 -1
- package/styles/common/_text.scss +3 -1
- package/styles/theme.scss +1 -1
- package/styles/vendor/ng-select/_ng-select-bs4.scss +292 -294
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +63 -32
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +37 -10
- package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +3 -1
- package/styles/vendor/quill/_quill.scss +15 -9
- package/table/index.d.ts +4 -1
- package/table-cell-type/index.d.ts +27 -2
- package/tel-input/README.md +27 -27
- package/utils/index.d.ts +3 -3
- package/viewers/index.d.ts +9 -2
- package/widget/_widget-theme.scss +1 -1
- package/widget/styles/_variables.scss +2 -2
- package/widget/widget/widget.component.scss +0 -2
- package/widget/widget-content-components/widget-tile/widget-tile.component.scss +1 -3
- package/widget/widget-footer/widget-footer.component.scss +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-toggle-group.mjs","sources":["../../../projects/ui-common/toggle-group/toggle-group-option.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.module.ts","../../../projects/ui-common/toggle-group/theseam-ui-common-toggle-group.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { ChangeDetectorRef, Directive, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core'\n\n@Directive({\n selector: '[seamToggleGroupOption]',\n exportAs: 'seamToggleGroupOption',\n})\nexport class ToggleGroupOptionDirective {\n\n private readonly _cdr = inject(ChangeDetectorRef)\n\n @Input() seamToggleGroupOption: string | undefined | null\n\n @Input()\n get selected(): boolean { return this._selected }\n set selected(value: boolean) {\n if (!this._canUnselect && !value) { return }\n this._selected = coerceBooleanProperty(value)\n this.selectionChange.emit(this._selected)\n this._cdr.markForCheck()\n }\n private _selected = false\n\n /** Internal use only for now. */\n _canUnselect = true\n\n @Output() selectionChange = new EventEmitter<boolean>()\n\n @HostBinding('class.lib-toggle-group-option-selected') get _checkioSelectedClass() {\n return this._selected\n }\n\n get value(): string | undefined | null {\n return this.seamToggleGroupOption\n }\n\n}\n","import { BooleanInput, coerceArray } from '@angular/cdk/coercion'\nimport { AfterViewInit, ContentChildren, Directive, EventEmitter, forwardRef, Input, OnDestroy, Output, QueryList } from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { combineLatest, from, Observable, of, Subject } from 'rxjs'\nimport { filter, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\n\nexport const TOGGLE_GROUP_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleGroupDirective),\n multi: true,\n}\n\n@Directive({\n selector: '[seamToggleGroup]',\n exportAs: 'seamToggleGroup',\n providers: [ TOGGLE_GROUP_VALUE_ACCESSOR ],\n})\nexport class ToggleGroupDirective implements OnDestroy, AfterViewInit, ControlValueAccessor {\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_multiple: BooleanInput\n static ngAcceptInputType_selectionToggleable: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value') val: string | string[] | undefined | null\n\n @Input() @InputBoolean() disabled = false\n @Input() @InputBoolean() multiple = false\n @Input() @InputBoolean() selectionToggleable = true\n\n // TODO: Add min/max selected inputs to make toggling better for multi select\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly change = new EventEmitter<string | string[] | undefined | null>()\n\n @ContentChildren(ToggleGroupOptionDirective) optionDirectives?: QueryList<ToggleGroupOptionDirective>\n\n public options?: Observable<ToggleGroupOptionDirective[]>\n\n onChange: any\n onTouched: any\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this._updateDirectiveStates()\n\n if (this.optionDirectives) {\n this.options = this.optionDirectives.changes.pipe(\n startWith(this.optionDirectives),\n map(v => v.toArray() as ToggleGroupOptionDirective[]),\n takeUntil(this._ngUnsubscribe),\n )\n\n this.options.pipe(\n switchMap(opts => {\n const _tmp = of(undefined)\n if (opts) {\n const _v: Observable<boolean>[] = []\n for (const opt of opts) {\n _v.push(opt.selectionChange.pipe(\n filter(v => opt.selected !== this.isSelected(opt.value)),\n tap(v => {\n if (this.isSelected(opt.value)) {\n this.unselectValue(opt.value)\n } else {\n this.selectValue(opt.value)\n }\n })\n ))\n }\n return combineLatest(_v)\n }\n return _tmp\n }),\n takeUntil(this._ngUnsubscribe),\n ).subscribe()\n }\n\n this.change.pipe(\n switchMap(_ => from(this.optionDirectives?.toArray() || []).pipe(\n tap(opt => { this._updateDirectiveState(opt) }),\n )),\n takeUntil(this._ngUnsubscribe),\n ).subscribe()\n })\n\n this.optionDirectives?.changes.subscribe(() => this._updateDirectiveStates())\n }\n\n get value(): string | string[] | undefined | null {\n return this.val\n }\n\n set value(value: string | string[] | undefined | null) {\n const _value = this.multiple\n ? value !== null && value !== undefined\n ? coerceArray(value)\n : value\n : value\n\n this.val = (this.multiple) ? [ ...(_value as string[] || []) ] : _value || ''\n this.change.emit(this.val)\n if (this.onChange) { this.onChange(_value) }\n if (this.onTouched) { this.onTouched() }\n }\n\n writeValue(value: any): void {\n this.value = value\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled\n }\n\n isSelected(value: string | undefined | null) {\n if (this.multiple) {\n const idx = (this.value as string[] || []).findIndex(v => v === value)\n return idx !== -1\n } else {\n // TODO: Clean this up when the directive no longer allows array value type when multiple is false\n const v = Array.isArray(this.value) && this.value.length === 1\n ? this.value[0]\n : this.value\n return v === value\n }\n }\n\n unselectValue(value: string | undefined | null) {\n if (this.multiple) {\n this.value = (this.value as string[] || []).filter(v => v !== value)\n } else {\n this.value = undefined\n }\n }\n\n selectValue(value: string | undefined | null) {\n if (this.multiple) {\n const _value = [ ...(this.value as string[] || []) ]\n this.value = value ? [ ..._value, value ] : _value\n } else {\n this.value = value\n }\n }\n\n getOptionDirectiveByValue(value: string) {\n if (!this.optionDirectives || this.optionDirectives.length < 1) {\n return null\n }\n\n return this.optionDirectives.toArray()\n .find(opt => opt.value === value)\n }\n\n private _updateDirectiveStates(): void {\n if (this.optionDirectives) {\n for (const opt of this.optionDirectives.toArray()) {\n this._updateDirectiveState(opt)\n }\n }\n }\n\n private _updateDirectiveState(opt: ToggleGroupOptionDirective): void {\n const selected = this.isSelected(opt.value)\n if (opt.selected !== selected) {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n opt.selected = selected\n }\n if (!this.selectionToggleable) {\n if (!this.multiple || (this.value && this.value.length <= 1)) {\n if (opt.selected) {\n if (opt._canUnselect) {\n opt._canUnselect = false\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n }\n }\n\n}\n","import { NgModule } from '@angular/core'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\nimport { ToggleGroupDirective } from './toggle-group.directive'\n\n@NgModule({\n imports: [\n ToggleGroupDirective,\n ToggleGroupOptionDirective\n ],\n exports: [\n ToggleGroupDirective,\n ToggleGroupOptionDirective\n ]\n})\nexport class TheSeamToggleGroupModule { }\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-toggle-group.mjs","sources":["../../../projects/ui-common/toggle-group/toggle-group-option.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.module.ts","../../../projects/ui-common/toggle-group/theseam-ui-common-toggle-group.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport {\n ChangeDetectorRef,\n Directive,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n Output,\n} from '@angular/core'\n\n@Directive({\n selector: '[seamToggleGroupOption]',\n exportAs: 'seamToggleGroupOption',\n})\nexport class ToggleGroupOptionDirective {\n private readonly _cdr = inject(ChangeDetectorRef)\n\n @Input() seamToggleGroupOption: string | undefined | null\n\n @Input()\n get selected(): boolean {\n return this._selected\n }\n set selected(value: boolean) {\n if (!this._canUnselect && !value) {\n return\n }\n this._selected = coerceBooleanProperty(value)\n this.selectionChange.emit(this._selected)\n this._cdr.markForCheck()\n }\n private _selected = false\n\n /** Internal use only for now. */\n _canUnselect = true\n\n @Output() selectionChange = new EventEmitter<boolean>()\n\n @HostBinding('class.lib-toggle-group-option-selected')\n get _checkioSelectedClass() {\n return this._selected\n }\n\n get value(): string | undefined | null {\n return this.seamToggleGroupOption\n }\n}\n","import { BooleanInput, coerceArray } from '@angular/cdk/coercion'\nimport {\n AfterViewInit,\n ContentChildren,\n Directive,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n QueryList,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { combineLatest, from, Observable, of, Subject } from 'rxjs'\nimport {\n filter,\n map,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\n\nexport const TOGGLE_GROUP_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleGroupDirective),\n multi: true,\n}\n\n@Directive({\n selector: '[seamToggleGroup]',\n exportAs: 'seamToggleGroup',\n providers: [TOGGLE_GROUP_VALUE_ACCESSOR],\n})\nexport class ToggleGroupDirective\n implements OnDestroy, AfterViewInit, ControlValueAccessor\n{\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_multiple: BooleanInput\n static ngAcceptInputType_selectionToggleable: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value') val: string | string[] | undefined | null\n\n @Input() @InputBoolean() disabled = false\n @Input() @InputBoolean() multiple = false\n @Input() @InputBoolean() selectionToggleable = true\n\n // TODO: Add min/max selected inputs to make toggling better for multi select\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly change = new EventEmitter<\n string | string[] | undefined | null\n >()\n\n @ContentChildren(ToggleGroupOptionDirective)\n optionDirectives?: QueryList<ToggleGroupOptionDirective>\n\n public options?: Observable<ToggleGroupOptionDirective[]>\n\n onChange: any\n onTouched: any\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this._updateDirectiveStates()\n\n if (this.optionDirectives) {\n this.options = this.optionDirectives.changes.pipe(\n startWith(this.optionDirectives),\n map((v) => v.toArray() as ToggleGroupOptionDirective[]),\n takeUntil(this._ngUnsubscribe),\n )\n\n this.options\n .pipe(\n switchMap((opts) => {\n const _tmp = of(undefined)\n if (opts) {\n const _v: Observable<boolean>[] = []\n for (const opt of opts) {\n _v.push(\n opt.selectionChange.pipe(\n filter(\n (v) => opt.selected !== this.isSelected(opt.value),\n ),\n tap((v) => {\n if (this.isSelected(opt.value)) {\n this.unselectValue(opt.value)\n } else {\n this.selectValue(opt.value)\n }\n }),\n ),\n )\n }\n return combineLatest(_v)\n }\n return _tmp\n }),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n }\n\n this.change\n .pipe(\n switchMap((_) =>\n from(this.optionDirectives?.toArray() || []).pipe(\n tap((opt) => {\n this._updateDirectiveState(opt)\n }),\n ),\n ),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n })\n\n this.optionDirectives?.changes.subscribe(() =>\n this._updateDirectiveStates(),\n )\n }\n\n get value(): string | string[] | undefined | null {\n return this.val\n }\n\n set value(value: string | string[] | undefined | null) {\n const _value = this.multiple\n ? value !== null && value !== undefined\n ? coerceArray(value)\n : value\n : value\n\n this.val = this.multiple ? [...((_value as string[]) || [])] : _value || ''\n this.change.emit(this.val)\n if (this.onChange) {\n this.onChange(_value)\n }\n if (this.onTouched) {\n this.onTouched()\n }\n }\n\n writeValue(value: any): void {\n this.value = value\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled\n }\n\n isSelected(value: string | undefined | null) {\n if (this.multiple) {\n const idx = ((this.value as string[]) || []).findIndex((v) => v === value)\n return idx !== -1\n } else {\n // TODO: Clean this up when the directive no longer allows array value type when multiple is false\n const v =\n Array.isArray(this.value) && this.value.length === 1\n ? this.value[0]\n : this.value\n return v === value\n }\n }\n\n unselectValue(value: string | undefined | null) {\n if (this.multiple) {\n this.value = ((this.value as string[]) || []).filter((v) => v !== value)\n } else {\n this.value = undefined\n }\n }\n\n selectValue(value: string | undefined | null) {\n if (this.multiple) {\n const _value = [...((this.value as string[]) || [])]\n this.value = value ? [..._value, value] : _value\n } else {\n this.value = value\n }\n }\n\n getOptionDirectiveByValue(value: string) {\n if (!this.optionDirectives || this.optionDirectives.length < 1) {\n return null\n }\n\n return this.optionDirectives.toArray().find((opt) => opt.value === value)\n }\n\n private _updateDirectiveStates(): void {\n if (this.optionDirectives) {\n for (const opt of this.optionDirectives.toArray()) {\n this._updateDirectiveState(opt)\n }\n }\n }\n\n private _updateDirectiveState(opt: ToggleGroupOptionDirective): void {\n const selected = this.isSelected(opt.value)\n if (opt.selected !== selected) {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n opt.selected = selected\n }\n if (!this.selectionToggleable) {\n if (!this.multiple || (this.value && this.value.length <= 1)) {\n if (opt.selected) {\n if (opt._canUnselect) {\n opt._canUnselect = false\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n }\n }\n}\n","import { NgModule } from '@angular/core'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\nimport { ToggleGroupDirective } from './toggle-group.directive'\n\n@NgModule({\n imports: [ToggleGroupDirective, ToggleGroupOptionDirective],\n exports: [ToggleGroupDirective, ToggleGroupOptionDirective],\n})\nexport class TheSeamToggleGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -80,8 +80,13 @@ class TheSeamTooltipComponent {
|
|
|
80
80
|
const tooltipRect = this.innerElement.nativeElement.getBoundingClientRect();
|
|
81
81
|
const arrowRect = this.arrowElement.nativeElement.getBoundingClientRect();
|
|
82
82
|
// Default arrow offset (8px padding + half arrow size)
|
|
83
|
-
const defaultArrowOffset = paddingOffset +
|
|
84
|
-
|
|
83
|
+
const defaultArrowOffset = paddingOffset +
|
|
84
|
+
(effectivePlacement.startsWith('top') ||
|
|
85
|
+
effectivePlacement.startsWith('bottom')
|
|
86
|
+
? arrowRect.width / 2
|
|
87
|
+
: arrowRect.height / 2);
|
|
88
|
+
if (effectivePlacement.startsWith('top') ||
|
|
89
|
+
effectivePlacement.startsWith('bottom')) {
|
|
85
90
|
// Check if tooltip is too narrow for trigger-aligned positioning
|
|
86
91
|
if (tooltipRect.width < minDimension) {
|
|
87
92
|
const arrowLeft = (tooltipRect.width - arrowRect.width) / 2;
|
|
@@ -98,11 +103,12 @@ class TheSeamTooltipComponent {
|
|
|
98
103
|
return;
|
|
99
104
|
}
|
|
100
105
|
// Ensure arrow's left is within rounded corner bounds
|
|
101
|
-
const maxArrowLeft =
|
|
106
|
+
const maxArrowLeft = tooltipRect.width - arrowRect.width - defaultArrowOffset;
|
|
102
107
|
const arrowLeft = Math.min(maxArrowLeft, Math.max(defaultArrowOffset, adjustedArrowLeft));
|
|
103
108
|
this.arrowElement.nativeElement.style.left = `${arrowLeft}px`;
|
|
104
109
|
}
|
|
105
|
-
else if (effectivePlacement.startsWith('left') ||
|
|
110
|
+
else if (effectivePlacement.startsWith('left') ||
|
|
111
|
+
effectivePlacement.startsWith('right')) {
|
|
106
112
|
// Check if tooltip is too short for trigger-aligned positioning
|
|
107
113
|
if (tooltipRect.height < minDimension) {
|
|
108
114
|
const arrowTop = (tooltipRect.height - arrowRect.height) / 2;
|
|
@@ -119,7 +125,7 @@ class TheSeamTooltipComponent {
|
|
|
119
125
|
return;
|
|
120
126
|
}
|
|
121
127
|
// Ensure arrow's top is within rounded corner bounds
|
|
122
|
-
const maxArrowTop =
|
|
128
|
+
const maxArrowTop = tooltipRect.height - arrowRect.height - defaultArrowOffset;
|
|
123
129
|
const arrowTop = Math.min(maxArrowTop, Math.max(defaultArrowOffset, adjustedArrowTop));
|
|
124
130
|
this.arrowElement.nativeElement.style.top = `${arrowTop}px`;
|
|
125
131
|
}
|
|
@@ -139,8 +145,8 @@ class TheSeamTooltipComponent {
|
|
|
139
145
|
this._afterEnter.complete();
|
|
140
146
|
}
|
|
141
147
|
}
|
|
142
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
143
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
148
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
149
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamTooltipComponent, isStandalone: true, selector: "seam-tooltip", inputs: { content: "content", tooltipClass: "tooltipClass", context: "context", placement: "placement", actualPlacement: "actualPlacement", tooltipId: "tooltipId", triggerElement: "triggerElement" }, host: { listeners: { "@fadeInOut.start": "_onAnimationStart($event)", "@fadeInOut.done": "_onAnimationDone($event)" }, properties: { "id": "tooltipId", "@fadeInOut": "", "class": "this.hostClasses" }, classAttribute: "tooltip show" }, viewQueries: [{ propertyName: "innerElement", first: true, predicate: ["inner"], descendants: true, static: true }, { propertyName: "arrowElement", first: true, predicate: ["arrow"], descendants: true, static: true }], ngImport: i0, template: "<div #inner class=\"tooltip-inner\" [ngClass]=\"tooltipClass\">\n <!-- String content -->\n <span *ngIf=\"isStringContent\">{{ content }}</span>\n\n <!-- Template content -->\n <ng-container *ngIf=\"isTemplateContent\">\n <ng-container\n *ngTemplateOutlet=\"templateContent; context: context\"\n ></ng-container>\n </ng-container>\n</div>\n<div #arrow class=\"arrow\"></div>\n", styles: ["::ng-deep .cdk-overlay-pane .tooltip{position:relative}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
|
|
144
150
|
trigger('fadeInOut', [
|
|
145
151
|
transition(':enter', [
|
|
146
152
|
style({ opacity: 0 }),
|
|
@@ -153,7 +159,7 @@ class TheSeamTooltipComponent {
|
|
|
153
159
|
]),
|
|
154
160
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
155
161
|
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTooltipComponent, decorators: [{
|
|
157
163
|
type: Component,
|
|
158
164
|
args: [{ selector: 'seam-tooltip', animations: [
|
|
159
165
|
trigger('fadeInOut', [
|
|
@@ -172,11 +178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
172
178
|
'[@fadeInOut]': '',
|
|
173
179
|
'(@fadeInOut.start)': '_onAnimationStart($event)',
|
|
174
180
|
'(@fadeInOut.done)': '_onAnimationDone($event)',
|
|
175
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
176
|
-
NgIf,
|
|
177
|
-
NgClass,
|
|
178
|
-
NgTemplateOutlet,
|
|
179
|
-
], template: "<div #inner class=\"tooltip-inner\" [ngClass]=\"tooltipClass\">\n <!-- String content -->\n <span *ngIf=\"isStringContent\">{{ content }}</span>\n\n <!-- Template content -->\n <ng-container *ngIf=\"isTemplateContent\">\n <ng-container *ngTemplateOutlet=\"templateContent; context: context\"></ng-container>\n </ng-container>\n</div>\n<div #arrow class=\"arrow\"></div>\n", styles: ["::ng-deep .cdk-overlay-pane .tooltip{position:relative}\n"] }]
|
|
181
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIf, NgClass, NgTemplateOutlet], template: "<div #inner class=\"tooltip-inner\" [ngClass]=\"tooltipClass\">\n <!-- String content -->\n <span *ngIf=\"isStringContent\">{{ content }}</span>\n\n <!-- Template content -->\n <ng-container *ngIf=\"isTemplateContent\">\n <ng-container\n *ngTemplateOutlet=\"templateContent; context: context\"\n ></ng-container>\n </ng-container>\n</div>\n<div #arrow class=\"arrow\"></div>\n", styles: ["::ng-deep .cdk-overlay-pane .tooltip{position:relative}\n"] }]
|
|
180
182
|
}], propDecorators: { content: [{
|
|
181
183
|
type: Input
|
|
182
184
|
}], tooltipClass: [{
|
|
@@ -234,14 +236,26 @@ class TheSeamTooltipDirective {
|
|
|
234
236
|
tooltipClass;
|
|
235
237
|
placement = 'top';
|
|
236
238
|
container;
|
|
237
|
-
get disableTooltip() {
|
|
238
|
-
|
|
239
|
+
get disableTooltip() {
|
|
240
|
+
return this._disableTooltip.value;
|
|
241
|
+
}
|
|
242
|
+
set disableTooltip(val) {
|
|
243
|
+
this._disableTooltip.next(coerceBooleanProperty(val));
|
|
244
|
+
}
|
|
239
245
|
_disableTooltip = new BehaviorSubject(false);
|
|
240
|
-
get showDelay() {
|
|
241
|
-
|
|
246
|
+
get showDelay() {
|
|
247
|
+
return this._showDelay.value;
|
|
248
|
+
}
|
|
249
|
+
set showDelay(val) {
|
|
250
|
+
this._showDelay.next(coerceNumberProperty(val, 500));
|
|
251
|
+
}
|
|
242
252
|
_showDelay = new BehaviorSubject(500);
|
|
243
|
-
get hideDelay() {
|
|
244
|
-
|
|
253
|
+
get hideDelay() {
|
|
254
|
+
return this._hideDelay.value;
|
|
255
|
+
}
|
|
256
|
+
set hideDelay(val) {
|
|
257
|
+
this._hideDelay.next(coerceNumberProperty(val, 0));
|
|
258
|
+
}
|
|
245
259
|
_hideDelay = new BehaviorSubject(0);
|
|
246
260
|
trigger = 'both';
|
|
247
261
|
_active = false;
|
|
@@ -283,13 +297,21 @@ class TheSeamTooltipDirective {
|
|
|
283
297
|
const element = this._elementRef.nativeElement;
|
|
284
298
|
// Mouse events for hover trigger
|
|
285
299
|
if (this.trigger === 'hover' || this.trigger === 'both') {
|
|
286
|
-
fromEvent(element, 'mouseenter')
|
|
287
|
-
|
|
300
|
+
fromEvent(element, 'mouseenter')
|
|
301
|
+
.pipe(filter(() => !this._disableTooltip.value && !!this.seamTooltip), takeUntil(this._eventListenersSubject))
|
|
302
|
+
.subscribe(() => this._scheduleShow());
|
|
303
|
+
fromEvent(element, 'mouseleave')
|
|
304
|
+
.pipe(takeUntil(this._eventListenersSubject))
|
|
305
|
+
.subscribe(() => this._scheduleHide());
|
|
288
306
|
}
|
|
289
307
|
// Focus events for focus trigger
|
|
290
308
|
if (this.trigger === 'focus' || this.trigger === 'both') {
|
|
291
|
-
fromEvent(element, 'focus')
|
|
292
|
-
|
|
309
|
+
fromEvent(element, 'focus')
|
|
310
|
+
.pipe(filter(() => !this._disableTooltip.value && !!this.seamTooltip), takeUntil(this._eventListenersSubject))
|
|
311
|
+
.subscribe(() => this._scheduleShow());
|
|
312
|
+
fromEvent(element, 'blur')
|
|
313
|
+
.pipe(takeUntil(this._eventListenersSubject))
|
|
314
|
+
.subscribe(() => this._scheduleHide());
|
|
293
315
|
}
|
|
294
316
|
}
|
|
295
317
|
_scheduleShow() {
|
|
@@ -340,7 +362,9 @@ class TheSeamTooltipDirective {
|
|
|
340
362
|
this._compRef.instance.triggerElement = this._elementRef.nativeElement;
|
|
341
363
|
this._compRef.changeDetectorRef.markForCheck();
|
|
342
364
|
// Listen for position changes to update placement class
|
|
343
|
-
positionStrategy.positionChanges
|
|
365
|
+
positionStrategy.positionChanges
|
|
366
|
+
.pipe(takeUntil(this._ngUnsubscribe))
|
|
367
|
+
.subscribe((positionChange) => {
|
|
344
368
|
if (this._compRef && positionChange.connectionPair) {
|
|
345
369
|
const actualPlacement = this._getPlacementFromConnectionPair(positionChange.connectionPair);
|
|
346
370
|
this._compRef.instance.actualPlacement = actualPlacement;
|
|
@@ -348,7 +372,9 @@ class TheSeamTooltipDirective {
|
|
|
348
372
|
}
|
|
349
373
|
});
|
|
350
374
|
// Listen for tooltip exit animation
|
|
351
|
-
this._compRef.instance._afterExit
|
|
375
|
+
this._compRef.instance._afterExit
|
|
376
|
+
.pipe(takeUntil(this._ngUnsubscribe))
|
|
377
|
+
.subscribe(() => {
|
|
352
378
|
// Only detach if still attached (defensive check since _closeTooltip may have already detached)
|
|
353
379
|
if (this._overlayRef?.hasAttached()) {
|
|
354
380
|
this._overlayRef.detach();
|
|
@@ -367,10 +393,12 @@ class TheSeamTooltipDirective {
|
|
|
367
393
|
this._documentKeydownSubject.complete();
|
|
368
394
|
this._documentKeydownSubject = new Subject();
|
|
369
395
|
// Set up document-level Escape key listener
|
|
370
|
-
fromEvent(document, 'keydown')
|
|
396
|
+
fromEvent(document, 'keydown')
|
|
397
|
+
.pipe(filter((event) => {
|
|
371
398
|
// Check both keyCode and key for better compatibility
|
|
372
|
-
return (event.keyCode === ESCAPE || event.key === 'Escape') && this._active;
|
|
373
|
-
}), takeUntil(this._documentKeydownSubject), takeUntil(this._ngUnsubscribe))
|
|
399
|
+
return ((event.keyCode === ESCAPE || event.key === 'Escape') && this._active);
|
|
400
|
+
}), takeUntil(this._documentKeydownSubject), takeUntil(this._ngUnsubscribe))
|
|
401
|
+
.subscribe(() => this._closeTooltip());
|
|
374
402
|
}
|
|
375
403
|
_closeTooltip() {
|
|
376
404
|
if (!this._active || !this._compRef) {
|
|
@@ -408,27 +436,36 @@ class TheSeamTooltipDirective {
|
|
|
408
436
|
return ['auto'];
|
|
409
437
|
}
|
|
410
438
|
// Parse space-delimited string
|
|
411
|
-
const placements = placement.split(/\s+/).filter(p => p.trim());
|
|
412
|
-
return placements.filter(p => this._isValidPlacement(p));
|
|
439
|
+
const placements = placement.split(/\s+/).filter((p) => p.trim());
|
|
440
|
+
return placements.filter((p) => this._isValidPlacement(p));
|
|
413
441
|
}
|
|
414
442
|
if (Array.isArray(placement)) {
|
|
415
|
-
return placement.filter(p => this._isValidPlacement(p));
|
|
443
|
+
return placement.filter((p) => this._isValidPlacement(p));
|
|
416
444
|
}
|
|
417
445
|
return [placement];
|
|
418
446
|
}
|
|
419
447
|
_isValidPlacement(placement) {
|
|
420
448
|
const validPlacements = [
|
|
421
|
-
'top',
|
|
422
|
-
'
|
|
423
|
-
'
|
|
424
|
-
'
|
|
449
|
+
'top',
|
|
450
|
+
'top-left',
|
|
451
|
+
'top-right',
|
|
452
|
+
'bottom',
|
|
453
|
+
'bottom-left',
|
|
454
|
+
'bottom-right',
|
|
455
|
+
'left',
|
|
456
|
+
'left-top',
|
|
457
|
+
'left-bottom',
|
|
458
|
+
'right',
|
|
459
|
+
'right-top',
|
|
460
|
+
'right-bottom',
|
|
425
461
|
'auto',
|
|
426
462
|
];
|
|
427
463
|
return validPlacements.includes(placement);
|
|
428
464
|
}
|
|
429
465
|
_getOverlayPosition() {
|
|
430
466
|
const positions = this._getPositions();
|
|
431
|
-
return this._overlay
|
|
467
|
+
return this._overlay
|
|
468
|
+
.position()
|
|
432
469
|
.flexibleConnectedTo(this._elementRef)
|
|
433
470
|
.withPositions(positions)
|
|
434
471
|
.withFlexibleDimensions(false)
|
|
@@ -439,10 +476,30 @@ class TheSeamTooltipDirective {
|
|
|
439
476
|
// If 'auto' is specified or no valid placements, return all positions
|
|
440
477
|
if (parsedPlacements.includes('auto') || parsedPlacements.length === 0) {
|
|
441
478
|
return [
|
|
442
|
-
{
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
479
|
+
{
|
|
480
|
+
originX: 'center',
|
|
481
|
+
originY: 'top',
|
|
482
|
+
overlayX: 'center',
|
|
483
|
+
overlayY: 'bottom',
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
originX: 'center',
|
|
487
|
+
originY: 'bottom',
|
|
488
|
+
overlayX: 'center',
|
|
489
|
+
overlayY: 'top',
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
originX: 'end',
|
|
493
|
+
originY: 'center',
|
|
494
|
+
overlayX: 'start',
|
|
495
|
+
overlayY: 'center',
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
originX: 'start',
|
|
499
|
+
originY: 'center',
|
|
500
|
+
overlayX: 'end',
|
|
501
|
+
overlayY: 'center',
|
|
502
|
+
},
|
|
446
503
|
];
|
|
447
504
|
}
|
|
448
505
|
// Return positions for specified placements only
|
|
@@ -456,36 +513,140 @@ class TheSeamTooltipDirective {
|
|
|
456
513
|
_getPositionForPlacement(placement) {
|
|
457
514
|
switch (placement) {
|
|
458
515
|
case 'top':
|
|
459
|
-
return [
|
|
516
|
+
return [
|
|
517
|
+
{
|
|
518
|
+
originX: 'center',
|
|
519
|
+
originY: 'top',
|
|
520
|
+
overlayX: 'center',
|
|
521
|
+
overlayY: 'bottom',
|
|
522
|
+
},
|
|
523
|
+
];
|
|
460
524
|
case 'top-left':
|
|
461
|
-
return [
|
|
525
|
+
return [
|
|
526
|
+
{
|
|
527
|
+
originX: 'start',
|
|
528
|
+
originY: 'top',
|
|
529
|
+
overlayX: 'start',
|
|
530
|
+
overlayY: 'bottom',
|
|
531
|
+
},
|
|
532
|
+
];
|
|
462
533
|
case 'top-right':
|
|
463
|
-
return [
|
|
534
|
+
return [
|
|
535
|
+
{
|
|
536
|
+
originX: 'end',
|
|
537
|
+
originY: 'top',
|
|
538
|
+
overlayX: 'end',
|
|
539
|
+
overlayY: 'bottom',
|
|
540
|
+
},
|
|
541
|
+
];
|
|
464
542
|
case 'bottom':
|
|
465
|
-
return [
|
|
543
|
+
return [
|
|
544
|
+
{
|
|
545
|
+
originX: 'center',
|
|
546
|
+
originY: 'bottom',
|
|
547
|
+
overlayX: 'center',
|
|
548
|
+
overlayY: 'top',
|
|
549
|
+
},
|
|
550
|
+
];
|
|
466
551
|
case 'bottom-left':
|
|
467
|
-
return [
|
|
552
|
+
return [
|
|
553
|
+
{
|
|
554
|
+
originX: 'start',
|
|
555
|
+
originY: 'bottom',
|
|
556
|
+
overlayX: 'start',
|
|
557
|
+
overlayY: 'top',
|
|
558
|
+
},
|
|
559
|
+
];
|
|
468
560
|
case 'bottom-right':
|
|
469
|
-
return [
|
|
561
|
+
return [
|
|
562
|
+
{
|
|
563
|
+
originX: 'end',
|
|
564
|
+
originY: 'bottom',
|
|
565
|
+
overlayX: 'end',
|
|
566
|
+
overlayY: 'top',
|
|
567
|
+
},
|
|
568
|
+
];
|
|
470
569
|
case 'left':
|
|
471
|
-
return [
|
|
570
|
+
return [
|
|
571
|
+
{
|
|
572
|
+
originX: 'start',
|
|
573
|
+
originY: 'center',
|
|
574
|
+
overlayX: 'end',
|
|
575
|
+
overlayY: 'center',
|
|
576
|
+
},
|
|
577
|
+
];
|
|
472
578
|
case 'left-top':
|
|
473
|
-
return [
|
|
579
|
+
return [
|
|
580
|
+
{
|
|
581
|
+
originX: 'start',
|
|
582
|
+
originY: 'top',
|
|
583
|
+
overlayX: 'end',
|
|
584
|
+
overlayY: 'top',
|
|
585
|
+
},
|
|
586
|
+
];
|
|
474
587
|
case 'left-bottom':
|
|
475
|
-
return [
|
|
588
|
+
return [
|
|
589
|
+
{
|
|
590
|
+
originX: 'start',
|
|
591
|
+
originY: 'bottom',
|
|
592
|
+
overlayX: 'end',
|
|
593
|
+
overlayY: 'bottom',
|
|
594
|
+
},
|
|
595
|
+
];
|
|
476
596
|
case 'right':
|
|
477
|
-
return [
|
|
597
|
+
return [
|
|
598
|
+
{
|
|
599
|
+
originX: 'end',
|
|
600
|
+
originY: 'center',
|
|
601
|
+
overlayX: 'start',
|
|
602
|
+
overlayY: 'center',
|
|
603
|
+
},
|
|
604
|
+
];
|
|
478
605
|
case 'right-top':
|
|
479
|
-
return [
|
|
606
|
+
return [
|
|
607
|
+
{
|
|
608
|
+
originX: 'end',
|
|
609
|
+
originY: 'top',
|
|
610
|
+
overlayX: 'start',
|
|
611
|
+
overlayY: 'top',
|
|
612
|
+
},
|
|
613
|
+
];
|
|
480
614
|
case 'right-bottom':
|
|
481
|
-
return [
|
|
615
|
+
return [
|
|
616
|
+
{
|
|
617
|
+
originX: 'end',
|
|
618
|
+
originY: 'bottom',
|
|
619
|
+
overlayX: 'start',
|
|
620
|
+
overlayY: 'bottom',
|
|
621
|
+
},
|
|
622
|
+
];
|
|
482
623
|
case 'auto':
|
|
483
624
|
default:
|
|
484
625
|
return [
|
|
485
|
-
{
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
626
|
+
{
|
|
627
|
+
originX: 'center',
|
|
628
|
+
originY: 'top',
|
|
629
|
+
overlayX: 'center',
|
|
630
|
+
overlayY: 'bottom',
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
originX: 'center',
|
|
634
|
+
originY: 'bottom',
|
|
635
|
+
overlayX: 'center',
|
|
636
|
+
overlayY: 'top',
|
|
637
|
+
},
|
|
638
|
+
{
|
|
639
|
+
originX: 'end',
|
|
640
|
+
originY: 'center',
|
|
641
|
+
overlayX: 'start',
|
|
642
|
+
overlayY: 'center',
|
|
643
|
+
},
|
|
644
|
+
{
|
|
645
|
+
originX: 'start',
|
|
646
|
+
originY: 'center',
|
|
647
|
+
overlayX: 'end',
|
|
648
|
+
overlayY: 'center',
|
|
649
|
+
},
|
|
489
650
|
];
|
|
490
651
|
}
|
|
491
652
|
}
|
|
@@ -530,10 +691,10 @@ class TheSeamTooltipDirective {
|
|
|
530
691
|
// Default fallback
|
|
531
692
|
return 'top';
|
|
532
693
|
}
|
|
533
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
534
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
694
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
695
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamTooltipDirective, isStandalone: true, selector: "[seamTooltip]", inputs: { seamTooltip: "seamTooltip", tooltipClass: "tooltipClass", placement: "placement", container: "container", disableTooltip: "disableTooltip", showDelay: "showDelay", hideDelay: "hideDelay", trigger: "trigger" }, host: { properties: { "attr.aria-describedby": "tooltipOpen() ? _tooltipId : null" } }, exportAs: ["seamTooltip"], usesOnChanges: true, ngImport: i0 });
|
|
535
696
|
}
|
|
536
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
697
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTooltipDirective, decorators: [{
|
|
537
698
|
type: Directive,
|
|
538
699
|
args: [{
|
|
539
700
|
selector: '[seamTooltip]',
|
|
@@ -561,15 +722,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
561
722
|
}] } });
|
|
562
723
|
|
|
563
724
|
class TheSeamTooltipModule {
|
|
564
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
565
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
725
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
726
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTooltipModule, imports: [CommonModule,
|
|
566
727
|
OverlayModule,
|
|
567
728
|
TheSeamTooltipComponent,
|
|
568
729
|
TheSeamTooltipDirective], exports: [TheSeamTooltipDirective] });
|
|
569
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
730
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTooltipModule, imports: [CommonModule,
|
|
570
731
|
OverlayModule] });
|
|
571
732
|
}
|
|
572
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
733
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTooltipModule, decorators: [{
|
|
573
734
|
type: NgModule,
|
|
574
735
|
args: [{
|
|
575
736
|
imports: [
|
|
@@ -578,9 +739,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
578
739
|
TheSeamTooltipComponent,
|
|
579
740
|
TheSeamTooltipDirective,
|
|
580
741
|
],
|
|
581
|
-
exports: [
|
|
582
|
-
TheSeamTooltipDirective,
|
|
583
|
-
],
|
|
742
|
+
exports: [TheSeamTooltipDirective],
|
|
584
743
|
}]
|
|
585
744
|
}] });
|
|
586
745
|
|