@i-cell/ids-angular 0.1.10 → 0.1.12
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/breadcrumb/breadcrumb-defaults.d.ts +17 -0
- package/breadcrumb/breadcrumb.component.d.ts +35 -0
- package/breadcrumb/index.d.ts +5 -0
- package/breadcrumb/libs/breadcrumb-divider.component.d.ts +13 -0
- package/breadcrumb/libs/breadcrumb-link.directive.d.ts +10 -0
- package/breadcrumb/libs/breadcrumb-list.directive.d.ts +5 -0
- package/breadcrumb/libs/breadcrumb-page.directive.d.ts +5 -0
- package/breadcrumb/libs/breadcrumb-truncation.component.d.ts +15 -0
- package/breadcrumb/public-api.d.ts +5 -0
- package/breadcrumb/types/breadcrumb-divider.type.d.ts +5 -0
- package/breadcrumb/types/breadcrumb-hierarchy.type.d.ts +5 -0
- package/breadcrumb/types/breadcrumb-variant.type.d.ts +6 -0
- package/button/button.component.d.ts +7 -1
- package/fesm2022/i-cell-ids-angular-accordion.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-accordion.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-breadcrumb.mjs +313 -0
- package/fesm2022/i-cell-ids-angular-breadcrumb.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-button.mjs +40 -8
- package/fesm2022/i-cell-ids-angular-button.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-chip.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-chip.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-datepicker.mjs +2 -2
- package/fesm2022/i-cell-ids-angular-datepicker.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-dialog.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-dialog.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-forms.mjs +11 -9
- package/fesm2022/i-cell-ids-angular-forms.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-icon-button.mjs +40 -8
- package/fesm2022/i-cell-ids-angular-icon-button.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-notification.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-notification.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-select.mjs +12 -8
- package/fesm2022/i-cell-ids-angular-select.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-snackbar.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-snackbar.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-table.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-table.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-tooltip.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-tooltip.mjs.map +1 -1
- package/forms/components/form-field/form-field-control.d.ts +2 -3
- package/forms/components/input/input.directive.d.ts +2 -2
- package/icon-button/icon-button.component.d.ts +7 -1
- package/package.json +27 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i-cell-ids-angular-table.mjs","sources":["../../../projects/widgets/table/datasource/server-side-datasource.ts","../../../projects/widgets/table/directives/cell-renderer.ts","../../../projects/widgets/table/directives/cell-template.ts","../../../projects/widgets/table/types/table-appearance.type.ts","../../../projects/widgets/table/types/table-sort-direction.ts","../../../projects/widgets/table/types/table-sort-info.ts","../../../projects/widgets/table/types/table-variant.type.ts","../../../projects/widgets/table/table-defaults.ts","../../../projects/widgets/table/table-intl.ts","../../../projects/widgets/table/components/cell-content/cell-content.component.ts","../../../projects/widgets/table/components/cell-content/cell-content.component.html","../../../projects/widgets/table/directives/row-info-holder.ts","../../../projects/widgets/table/table.component.ts","../../../projects/widgets/table/table.component.html","../../../projects/widgets/table/i-cell-ids-angular-table.ts"],"sourcesContent":["import { IdsTablePaginationParams } from '../types/pagination-params';\nimport { IdsTableRequestFactory } from '../types/request-factory';\nimport { IdsTableRequestPaginationData } from '../types/request-pagination-data';\nimport { IdsTableSortInfo } from '../types/table-sort-info';\n\nimport { DataSource } from '@angular/cdk/collections';\nimport { DEFAULT_PAGE_SIZE, IdsPaginatorPageChangeEvent } from '@i-cell/ids-angular/paginator';\nimport { BehaviorSubject, catchError, debounceTime, finalize, map, merge, Observable, of, Subject, Subscription, switchMap, tap } from 'rxjs';\n\nexport const DEFAULT_DATA_LOAD_DEBOUNCE_TIME = 100;\n\nexport class ServerSideDataSource<D> implements DataSource<D> {\n private _dataSubject = new BehaviorSubject<D[]>([]);\n private _sortSubject = new BehaviorSubject<IdsTableSortInfo | null>(null);\n private _pageSubject = new BehaviorSubject<IdsTableRequestPaginationData | null>(null);\n private _pageInfoSubject = new BehaviorSubject<IdsTablePaginationParams | null>(null);\n private _loadDataTriggerSubject = new Subject<void>();\n private _loadingSubject = new BehaviorSubject<boolean>(false);\n\n private _loadDataSubscription?: Subscription;\n\n public data$ = this._dataSubject.asObservable();\n public isLoading$ = this._loadingSubject.asObservable();\n public pageInfo$ = this._pageInfoSubject.asObservable();\n public pageIndex$ = this.pageInfo$.pipe(map((pageInfo) => ((pageInfo?.page ?? 1) - 1)));\n\n get data(): D[] {\n return this._dataSubject.value;\n }\n\n set data(value: D[]) {\n this._dataSubject.next(value);\n }\n\n get pageInfo(): IdsTablePaginationParams | null {\n return this._pageInfoSubject.value;\n }\n\n set pageInfo(value: IdsTablePaginationParams | null) {\n this._pageInfoSubject.next(value);\n }\n\n get length(): number {\n return this.data.length;\n }\n\n constructor(\n private _requestFactory: IdsTableRequestFactory<D>,\n private _resetDataAndPagingOnError = false,\n ) {}\n\n public connect(): Observable<readonly D[]> {\n this._initDataLoading();\n this.refreshData();\n\n return this.data$;\n }\n\n public disconnect(): void {\n this._dataSubject.complete();\n this._sortSubject.complete();\n this._loadingSubject.complete();\n this._loadDataSubscription?.unsubscribe();\n }\n\n public sort(sortInfo?: IdsTableSortInfo | null): void {\n // sorting resets the \"page\" to 1 (TODO: config option?)\n this._pageSubject.next({\n page: 1,\n rows: this._pageSubject.value?.rows ?? DEFAULT_PAGE_SIZE,\n });\n this._sortSubject.next(sortInfo ?? null);\n }\n\n public page(pageEvent: IdsPaginatorPageChangeEvent): void {\n this._pageSubject.next(pageEvent ? {\n page: pageEvent.pageIndex + 1,\n rows: pageEvent.pageSize,\n } : null);\n }\n\n /**\n * Loads data from specified endpoint.\n */\n public refreshData(): void {\n this._loadDataTriggerSubject.next();\n }\n\n private _initDataLoading(): void {\n this._loadDataSubscription = merge(this._sortSubject, this._pageSubject, this._loadDataTriggerSubject)\n .pipe(\n debounceTime(DEFAULT_DATA_LOAD_DEBOUNCE_TIME),\n switchMap(() => {\n this._loadingSubject.next(true);\n\n const pageInfo = this.pageInfo;\n const paginationData = this._pageSubject.value;\n let requestPaginationData: IdsTableRequestPaginationData | null = null;\n\n if (pageInfo || paginationData) {\n requestPaginationData = {\n page: paginationData?.page ?? pageInfo?.page ?? 1,\n rows: paginationData?.rows ?? pageInfo?.rows ?? DEFAULT_PAGE_SIZE,\n };\n }\n\n const request$ = this._requestFactory(requestPaginationData, this._sortSubject.value);\n\n if (!(request$ instanceof Observable)) {\n throw new Error('The `requestFactory` should return an Observable!');\n }\n\n return request$.pipe(\n catchError(() => of(this._resetDataAndPagingOnError ?\n {\n resultList: [] as D[],\n paginationParams: {\n page: 1,\n totalRows: 0,\n rows: this.pageInfo?.rows ?? DEFAULT_PAGE_SIZE,\n },\n }\n :\n {\n resultList: this.data,\n paginationParams: this.pageInfo,\n },\n )),\n tap((response) => {\n this.data = response.resultList ?? [];\n this._pageInfoSubject.next(response.paginationParams);\n }),\n finalize(() => this._loadingSubject.next(false)),\n );\n }),\n ).subscribe();\n }\n}\n","import { IdsTableColumnDef } from '../types/table-column-def';\n\nimport { Directive, input, Type } from '@angular/core';\nimport { isString, isTypeDerivedFrom } from '@i-cell/ids-angular/core';\n\n@Directive()\nexport abstract class IdsTableCellRenderer<D> {\n private readonly _entities = [\n { rx: '&', entity: '&' },\n { rx: '<', entity: '<' },\n { rx: '>', entity: '>' },\n { rx: '\"', entity: '"' },\n { rx: '\\'', entity: ''' },\n { rx: '/', entity: '/' },\n ];\n\n public cellValue = input('', { transform: (value) => this._preSanitize(String(value ?? '')) });\n public colDef = input.required<IdsTableColumnDef<D>>();\n public rowData = input<D>();\n\n protected _isComponentCellRenderer<C>(cellRendererDef: string | Type<C> | undefined):\n cellRendererDef is Type<C> {\n return !!cellRendererDef && !isString(cellRendererDef) && isTypeDerivedFrom(cellRendererDef, IdsTableCellRenderer);\n }\n\n protected _preSanitize(input: string): string {\n if (!input) {\n return input;\n }\n\n // Convert & to &, Convert < to <, Convert > to >, Convert \" to ", Convert ' to ', Convert / to /\n return this._entities.reduce((result, item) => result.replaceAll(item.rx, item.entity), input);\n }\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[idsCellTemplate]',\n standalone: true,\n})\nexport class IdsTableCellTemplateDirective {\n public templateName = input.required<string>({ alias: 'idsCellTemplate' });\n public templateRef = inject(TemplateRef);\n}\n","export const IdsTableAppearance = {\n PLAIN: 'plain',\n LINE_DIVISION: 'line-division',\n ZEBRA: 'zebra',\n} as const;\n\nexport type IdsTableAppearanceType = (typeof IdsTableAppearance)[keyof typeof IdsTableAppearance];\n","export const IdsTableSortDirection = {\n NONE: '',\n ASC: 'asc',\n DESC: 'desc',\n} as const;\n\nexport type IdsTableSortDirectionType = (typeof IdsTableSortDirection)[keyof typeof IdsTableSortDirection];\n","import { IdsTableSortDirectionType } from './table-sort-direction';\n\nexport class IdsTableSortInfo {\n constructor(public sortBy: string, public direction: IdsTableSortDirectionType) {}\n}\n","export const IdsTableVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SURFACE: 'surface',\n} as const;\n\nexport type IdsTableVariantType = (typeof IdsTableVariant)[keyof typeof IdsTableVariant];\n\n","import { IdsTableAppearance, IdsTableAppearanceType } from './types/table-appearance.type';\nimport { IdsTableVariant, IdsTableVariantType } from './types/table-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport const DEFAULT_MASTER_DETAIL_TEMPLATE_NAME = 'detail';\n\nexport interface IdsTableDefaultConfig {\n appearance?: IdsTableAppearanceType,\n size?: IdsSizeType,\n variant?: IdsTableVariantType,\n fixedHeader?: boolean,\n enableSorting?: boolean,\n masterDetail?: boolean,\n detailTemplateName?: string,\n detailStickyColumns?: boolean,\n showDetailHeader?: boolean,\n enableRowSelection?: boolean,\n clearSelectionOnChange?: boolean,\n noRowsToShowOverlayBelow?: boolean,\n withBorder?: boolean,\n}\n\nexport const IDS_TABLE_DEFAULT_CONFIG = new InjectionToken<IdsTableDefaultConfig>(\n 'IDS_TABLE_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_TABLE_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_TABLE_DEFAULT_CONFIG_FACTORY(): Required<IdsTableDefaultConfig> {\n return {\n appearance: IdsTableAppearance.LINE_DIVISION,\n size: IdsSize.COMPACT,\n variant: IdsTableVariant.SURFACE,\n fixedHeader: false,\n enableSorting: false,\n masterDetail: false,\n detailTemplateName: DEFAULT_MASTER_DETAIL_TEMPLATE_NAME,\n detailStickyColumns: true,\n showDetailHeader: false,\n enableRowSelection: false,\n clearSelectionOnChange: true,\n noRowsToShowOverlayBelow: false,\n withBorder: false,\n };\n}\n\n","import { IdsTableColumnDef } from './types/table-column-def';\nimport { IdsTableSortDirection, IdsTableSortDirectionType } from './types/table-sort-direction';\n\nimport { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class IdsTableIntl<D> {\n public readonly changes: Subject<void> = new Subject<void>();\n\n public numberFormat = new Intl.NumberFormat();\n public headerSelectorAriaLabel = 'Select/deselect all rows';\n public rowSelectorAriaLabel = 'Select/deselect row';\n public detailHeaderLabel = 'Actions';\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getDetailExpandButtonAriaLabel(rowData: D): string {\n return 'Expand row details';\n }\n\n public getSortButtonAriaLabel(colDef: IdsTableColumnDef<D>, nextSortDirection: IdsTableSortDirectionType): string {\n const label = this.getColLabel(colDef);\n\n switch (nextSortDirection) {\n case IdsTableSortDirection.NONE:\n return `Unsort ${label}`;\n case IdsTableSortDirection.ASC:\n return `Sort ${label} ascending`;\n case IdsTableSortDirection.DESC:\n return `Sort ${label} descending`;\n }\n };\n\n public getColLabel(colDef: IdsTableColumnDef<D>): string {\n return colDef.label || '';\n }\n}\n\n/** @docs-private */\nexport function IDS_TABLE_INTL_PROVIDER_FACTORY<D>(parentIntl?: IdsTableIntl<D>): IdsTableIntl<D> {\n return parentIntl || new IdsTableIntl();\n}\n\n/** @docs-private */\nexport const IDS_TABLE_INTL_PROVIDER = {\n // If there is already an IdsTableIntl available, use that. Otherwise, provide a new one.\n provide: IdsTableIntl,\n deps: [\n [\n new Optional(),\n new SkipSelf(),\n IdsTableIntl,\n ],\n ],\n useFactory: IDS_TABLE_INTL_PROVIDER_FACTORY,\n};\n","import { IdsTableCellRenderer } from '../../directives/cell-renderer';\nimport { IdsTableIntl } from '../../table-intl';\n\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, ElementRef, inject, input, signal, TemplateRef } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { isString } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { map, startWith } from 'rxjs';\n\n/**\n * This component handles the rendering of a table cell based on the column definition and row data using internal or external cell renderer\n * templates or components.\n */\n@Component({\n selector: 'th[idsCellContent],td[idsCellContent],th[idsHeaderCellContent],td[idsHeaderCellContent]',\n templateUrl: './cell-content.component.html',\n imports: [\n IdsIconComponent,\n NgComponentOutlet,\n NgTemplateOutlet,\n ],\n})\nexport class IdsCellContentComponent<D> extends IdsTableCellRenderer<D> {\n private _elementRef = inject(ElementRef);\n private _intl = inject(IdsTableIntl);\n private _isHeader = (this._elementRef.nativeElement as Element).hasAttribute('idsHeaderCellContent');\n private _numberFormat = toSignal(this._intl.changes.pipe(map(() => this._intl.numberFormat), startWith(this._intl.numberFormat)));\n\n public externalCellTemplates = input<Map<string, TemplateRef<unknown>>>();\n\n private _cellRendererDef = computed(() => (this._isHeader ? this.colDef().headerCellRenderer : this.colDef().cellRenderer));\n private _updateCellContent = signal(true);\n\n protected _cellValue = computed(() => {\n // Forces recalculation of this computed signal\n this._updateCellContent();\n\n if (this._isHeader) {\n return this.colDef().label ?? '';\n }\n\n const rowData = this.rowData();\n\n if (!rowData) {\n return '';\n }\n\n const field = this.colDef().field ?? '';\n const valueFn = this.colDef().value ?? ((): string => '');\n\n const rawResult = field && Object.hasOwn(rowData, field) ? (rowData as Record<string, unknown>)[field] : valueFn(rowData);\n return isString(rawResult) ? this._preSanitize(rawResult) : rawResult;\n });\n\n protected _stringCellValue = computed(() => String(this._cellValue() ?? ''));\n\n protected _numericCellValue = computed(() => {\n const stringValue = this._stringCellValue();\n return this._numberFormat()?.format(parseFloat(stringValue)) ?? stringValue;\n });\n\n protected _cellRendererComp = computed(() => {\n const renderer = this._cellRendererDef();\n if (this._isComponentCellRenderer(renderer)) {\n return renderer;\n }\n\n return null;\n });\n\n protected _cellTemplateName = computed(() => {\n if (isString(this._cellRendererDef())) {\n return this._cellRendererDef() as string;\n }\n\n return undefined;\n });\n\n protected _cellTemplate = computed(() => {\n const templateName = this._cellTemplateName();\n const templates = this.externalCellTemplates();\n return isString(templateName) && templates?.has(templateName) ? templates.get(templateName) ?? null : null;\n });\n\n public updateValue(): void {\n this._updateCellContent.set(!this._updateCellContent());\n }\n}\n","<ng-content select=\"[colStart]\" />\r\n\r\n@if (_cellRendererComp()) {\r\n <ng-container *ngComponentOutlet=\"_cellRendererComp(); inputs: { rowData: rowData(), colDef: colDef(), cellValue: _cellValue() }\" />\r\n} @else {\r\n @switch (_cellTemplateName()) {\r\n @case ('strong') {\r\n <strong class=\"ids-cell-content ids-cell-content__strong\">{{ _cellValue() }}</strong>\r\n }\r\n @case ('numeric') {\r\n <div class=\"ids-cell-content ids-cell-content__numeric\">{{ _numericCellValue() }}</div>\r\n }\r\n @case ('icon') {\r\n <ids-icon\r\n class=\"ids-cell-content ids-cell-content__icon\"\r\n [fontIcon]=\"_stringCellValue()\"\r\n [aria-hidden]=\"true\"\r\n />\r\n }\r\n <!-- TODO: label-description template (needs further discussion) -->\r\n @default {\r\n @let template = _cellTemplate();\r\n @if (template) {\r\n <!-- external template ref -->\r\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: rowData(), colDef: colDef(), cellValue: _cellValue() }\" />\r\n } @else {\r\n <!-- default basic cell content -->\r\n <div class=\"ids-cell-content ids-cell-content__default\">{{ _cellValue() }}</div>\r\n }\r\n }\r\n }\r\n}\r\n\r\n<ng-content select=\"[colEnd]\" />\r\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[rowInfo]',\n standalone: true,\n})\nexport class RowInfoHolderDirective<D> {\n public rowInfo = input.required<{ rowData: D, index: number }>();\n}\n","import { IdsCellContentComponent } from './components/cell-content/cell-content.component';\nimport { IdsTableCellTemplateDirective } from './directives/cell-template';\nimport { RowInfoHolderDirective } from './directives/row-info-holder';\nimport { DEFAULT_MASTER_DETAIL_TEMPLATE_NAME, IDS_TABLE_DEFAULT_CONFIG, IDS_TABLE_DEFAULT_CONFIG_FACTORY, IdsTableDefaultConfig } from './table-defaults';\nimport { IdsTableIntl } from './table-intl';\nimport { IdsTableAppearance, IdsTableAppearanceType } from './types/table-appearance.type';\nimport { IdsTableCellClickEvent } from './types/table-cell-click-event';\nimport { IdsTableColumnDef } from './types/table-column-def';\nimport { IdsTableRowClickEvent } from './types/table-row-click-event';\nimport { IdsTableRowKeydownEvent } from './types/table-row-keydown-event';\nimport { IdsTableSortDirection, IdsTableSortDirectionType } from './types/table-sort-direction';\nimport { IdsTableSortInfo } from './types/table-sort-info';\nimport { IdsTableVariant, IdsTableVariantType } from './types/table-variant.type';\n\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkCell, CdkCellDef, CdkColumnDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRow, CdkRowDef, CdkTable, CdkTableDataSourceInput } from '@angular/cdk/table';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, contentChildren, inject, input, OnInit, output, signal, TemplateRef, viewChildren, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { IdsCheckboxComponent } from '@i-cell/ids-angular/checkbox';\nimport { coerceBooleanAttribute, ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IDS_ICON_BUTTON_PARENT, IdsIconButtonAppearance, IdsIconButtonAppearanceType, IdsIconButtonComponent, IdsIconButtonParent, IdsIconButtonVariant, IdsIconButtonVariantType } from '@i-cell/ids-angular/icon-button';\n\nconst defaultConfig = IDS_TABLE_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-table',\n imports: [\n IdsCellContentComponent,\n IdsCheckboxComponent,\n IdsIconComponent,\n IdsIconButtonComponent,\n IdsTableCellTemplateDirective,\n CdkCell,\n CdkCellDef,\n CdkColumnDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkNoDataRow,\n CdkRow,\n CdkRowDef,\n CdkTable,\n NgClass,\n NgTemplateOutlet,\n RowInfoHolderDirective,\n ],\n templateUrl: './table.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px', minHeight: '0', visibility: 'hidden' })),\n state('expanded', style({ height: '*', visibility: 'visible' })),\n transition('expanded <=> collapsed', animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n providers: [{ provide: IDS_ICON_BUTTON_PARENT, useExisting: IdsTableComponent }],\n exportAs: 'idsTable',\n})\nexport class IdsTableComponent<D>\n extends ComponentBaseWithDefaults<IdsTableDefaultConfig> implements IdsIconButtonParent, OnInit {\n\n private readonly _sortDirections: IdsTableSortDirectionType[] = [\n '',\n 'asc',\n 'desc',\n ];\n\n protected readonly _appearanceZebra = IdsTableAppearance.ZEBRA;\n protected readonly _defaultMasterDetailTemplateName = DEFAULT_MASTER_DETAIL_TEMPLATE_NAME;\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_TABLE_DEFAULT_CONFIG);\n\n private _cdRef = inject(ChangeDetectorRef);\n protected _intl = inject(IdsTableIntl);\n\n private _viewCellTemplates = viewChildren(IdsTableCellTemplateDirective);\n private _rowDataHolders = viewChildren(RowInfoHolderDirective<D>);\n private _selectorCheckboxes = viewChildren(IdsCheckboxComponent);\n private _cellContentRenderers = viewChildren(IdsCellContentComponent<D>);\n private _contentCellTemplates = contentChildren(IdsTableCellTemplateDirective);\n\n public columnDefs = input.required<IdsTableColumnDef<D>[]>();\n public dataSource = input.required<CdkTableDataSourceInput<D>>();\n /** Flag to have sticky header. */\n public fixedHeader = input<boolean, unknown>(this._defaultConfig.fixedHeader, { transform: coerceBooleanAttribute });\n /** Enable sorting feature */\n public enableSorting = input<boolean, unknown>(this._defaultConfig.enableSorting, { transform: coerceBooleanAttribute });\n /** Enable master-detail rows */\n public masterDetail = input<boolean, unknown>(this._defaultConfig.masterDetail, { transform: coerceBooleanAttribute });\n /** Name of the detail row renderer template */\n public detailTemplateName = input(this._defaultConfig.detailTemplateName);\n /** If true the detail cell will not span sticky and stickyEnd columns. If false the detail cell will span the table's full width */\n public detailStickyColumns = input<boolean, unknown>(this._defaultConfig.detailStickyColumns, { transform: coerceBooleanAttribute });\n /** Whether to show the master-detail column label or not. */\n public showDetailHeader = input<boolean, unknown>(this._defaultConfig.showDetailHeader, { transform: coerceBooleanAttribute });\n /** Predicate function to decide whether a data row has details or not */\n public hasDetailRow = input<(index: number, data: D) => boolean>(() => false);\n /** Enable row selection feature */\n public enableRowSelection = input<boolean, unknown>(this._defaultConfig.enableRowSelection, { transform: coerceBooleanAttribute });\n /** Clear row selection if the table's content changes */\n public clearSelectionOnChange = input<boolean, unknown>(this._defaultConfig.clearSelectionOnChange,\n { transform: coerceBooleanAttribute });\n\n /** Predicate function to decide whether a row can be selected or not */\n public isRowSelectable = input<(index: number, data: D) => boolean>(() => true);\n /** Render \"no rows to show\" overlay below the table instead of as a row */\n public noRowsToShowOverlayBelow = input<boolean, unknown>(this._defaultConfig.noRowsToShowOverlayBelow,\n { transform: coerceBooleanAttribute });\n /** Whether to show a border around the table or not. */\n\n public withBorder = input<boolean, unknown>(this._defaultConfig.withBorder, { transform: coerceBooleanAttribute });\n /**\n * The table's appearance type. Availabla options:\n * - \"line-division\": row backgrounds are uniformly colored and divided by thin border lines\n * - \"zebra\": the backgrounds of even and odd rows are different colors\n * - \"plain\": row backgrounds are uniformly colored without border lines\n */\n public appearance = input<IdsTableAppearanceType>(this._defaultConfig.appearance);\n /** The size type of the table. Affects paddings, margins, gaps, typography, etc. */\n public size = input<IdsSizeType>(this._defaultConfig.size);\n /** The color variant of the table. Availabla options: \"primary\", \"secondary\", \"surface\" */\n public variant = input<IdsTableVariantType>(this._defaultConfig.variant);\n\n /** Emits if the column sorting has changed */\n public sortChange = output<IdsTableSortInfo | null>();\n /** Emits if the user clicked a cell */\n public cellClick = output<IdsTableCellClickEvent<D>>();\n /** Emits if the user clicked a row */\n public rowClick = output<IdsTableRowClickEvent<D>>();\n /** Emits if the user hits a key while a row is in focus */\n public rowKeydown = output<IdsTableRowKeydownEvent<D>>();\n /** Emits if the table's contents have changed */\n public contentChanged = output<void>();\n\n //#region IdsIconButtonParent implementation\n public embeddedIconButtonVariant = computed<IdsIconButtonVariantType>(() => {\n const tableVariant = this.variant();\n switch (tableVariant) {\n case IdsTableVariant.PRIMARY:\n return IdsIconButtonVariant.SURFACE;\n default:\n return tableVariant;\n }\n });\n\n public embeddedIconButtonAppearance = signal<IdsIconButtonAppearanceType>(IdsIconButtonAppearance.STANDARD);\n public disabled = signal<boolean>(false);\n //#endregion\n\n /** Signal that holds the current table contents as an array of objects */\n public rowData = computed(() => {\n const dataHolders = this._rowDataHolders();\n\n if (!dataHolders?.length) {\n return [];\n }\n\n try {\n // try-catch for now to avoid \"NG0950: Input is required but no value is available yet. Find more at https://angular.dev/errors/NG0950\" at \"holder.rowInfo()\"\n return dataHolders\n .map((holder) => holder.rowInfo())\n .sort((data1, data2) => data1.index - data2.index)\n .map((data) => data.rowData);\n } catch {\n return [];\n }\n });\n\n /** The row selection model for the table */\n public rowSelection: SelectionModel<D> = new SelectionModel<D>(true, [], true);\n\n protected _expandedRows = new Set<D>();\n protected _allRowsExpanded = signal<boolean>(false);\n\n protected _sortState = signal<IdsTableSortInfo | null>(null);\n\n protected override get _hostName(): string {\n return 'table';\n }\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.appearance(),\n this.size(),\n this.variant(),\n (this.withBorder() ? 'with-border' : null),\n ]));\n\n protected _actualColumns = computed(() => {\n const cols = this.columnDefs()\n // Filter non-visible columns\n .filter((colDef) => (colDef.visible !== false))\n // Sort sticky columns to the beginning and stickyEnd columns to the end of the list\n .reduce<string[][]>(\n (acc, colDef) => {\n if (colDef.sticky) {\n // Sticky columns first\n acc[0].push(colDef.id);\n } else if (colDef.stickyEnd) {\n // StickyEnd columns last\n acc[2].push(colDef.id);\n } else {\n // The rest of the columns in between\n acc[1].push(colDef.id);\n }\n\n return acc;\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n }, [[], [], []])\n .flat();\n\n if (this.masterDetail()) {\n cols.push('$masterDetail');\n }\n\n if (this.enableRowSelection()) {\n cols.unshift('$selectBoxes');\n }\n\n return cols;\n });\n\n protected _hiddenColumns = computed(() =>\n this.columnDefs()\n .filter((colDef) => (colDef.visible === false))\n .map((colDef) => ({ ...colDef, visible: true })),\n );\n\n protected _detailRowTemplates = computed(() => {\n if (!this.detailStickyColumns()) {\n return ['$expandedDetail'];\n }\n\n return [\n ...(this.enableRowSelection() ? ['$empty'] : []),\n ...this.columnDefs().filter((colDef) => colDef.sticky).map(() => '$empty'),\n '$expandedDetail',\n ...this.columnDefs().filter((colDef) => colDef.stickyEnd).map(() => '$emptyEnd'),\n ...(this.masterDetail() ? ['$emptyEnd'] : []),\n ];\n });\n\n protected _detailColSpan = computed(() => {\n const colDefs = this.columnDefs();\n let detailColSpan = colDefs.length;\n\n if (this.detailStickyColumns()) {\n detailColSpan = colDefs.filter((def) => (!def.sticky && !def.stickyEnd && def.visible !== false)).length;\n }\n\n return detailColSpan;\n });\n\n protected _cellTemplatesByName = computed(() => {\n const templateMap = new Map<string, TemplateRef<unknown>>();\n\n for (const cellTemplate of this._viewCellTemplates()) {\n templateMap.set(cellTemplate.templateName(), cellTemplate.templateRef);\n }\n for (const cellTemplate of this._contentCellTemplates()) {\n templateMap.set(cellTemplate.templateName(), cellTemplate.templateRef);\n }\n\n return templateMap;\n });\n\n protected _defaulDetailTemplate = computed(() =>\n this._viewCellTemplates().find((cellTemplate) => cellTemplate.templateName() === this._defaultMasterDetailTemplateName)?.templateRef,\n );\n\n protected _detailTemplate = computed(() => this._cellTemplatesByName().get(this.detailTemplateName()));\n\n protected _hasNoRows = computed<boolean>(() => this.rowData().length === 0);\n\n protected _masterDetailEnabled = computed(() =>\n this.masterDetail() && this._cellTemplatesByName().has(this._defaultMasterDetailTemplateName),\n );\n\n protected _unselectableRows = computed(() => {\n const rows = this.rowData();\n\n return new Set<D>(rows.filter((rowData, index) => !this.isRowSelectable()(index, rowData)));\n });\n\n private _rowSelectorCheckboxes = computed(() => {\n const disabledRows = this._unselectableRows();\n\n return this._selectorCheckboxes().filter((component) => {\n const value = component.value() as D;\n return value && !disabledRows.has(value);\n });\n });\n\n private _selectableRowData = computed(() => this._rowSelectorCheckboxes().map((component) => component.value() as D));\n\n private _rowSelectionChange = toSignal(this.rowSelection.changed);\n\n protected _isAllSelected = computed(() => {\n const selectionChange = this._rowSelectionChange();\n const data = this._selectableRowData();\n const disabledRows = this._unselectableRows();\n\n if (!selectionChange || !data) {\n return false;\n }\n\n const numSelected = selectionChange.source.selected.length;\n const activeRowCount = data.filter((row) => !disabledRows.has(row)).length;\n return numSelected === activeRowCount;\n });\n\n protected _isSelectAllDisabled = computed(() => this._unselectableRows().size === this._selectableRowData().length);\n\n public ngOnInit(): void {\n this._intl.changes.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this._cdRef.markForCheck());\n }\n\n /**\n * Open up all row details.\n */\n public expandAll(): void {\n this.rowData().forEach((rowData, idx) => {\n if (!this._expandedRows.has(rowData) && this.hasDetailRow()(idx, rowData)) {\n this._expandedRows.add(rowData);\n }\n });\n this._cdRef.markForCheck();\n }\n\n /**\n * Closes all opened row details.\n */\n public collapseAll(): void {\n this._expandedRows.clear();\n this._cdRef.markForCheck();\n }\n\n /**\n * Refresh rendered cell values. Useful if for eg. the `value` getter function is not pure and the values need to be refreshed manually.\n */\n public updateCellContents(): void {\n this._cellContentRenderers().forEach((cellContent) => cellContent.updateValue());\n }\n\n protected _tableContentChanged(): void {\n this.contentChanged.emit();\n\n if (this.clearSelectionOnChange()) {\n this.rowSelection.clear();\n }\n }\n\n protected _getNextSortDirectionFor(colId: string): IdsTableSortDirectionType {\n const sortState = this._sortState();\n const nextIndex = sortState?.sortBy === colId ?\n (this._sortDirections.indexOf(sortState.direction) + 1) % this._sortDirections.length : 1;\n\n return this._sortDirections[nextIndex];\n }\n\n protected _handleSortClick(colId: string): void {\n const nextSortDirection = this._getNextSortDirectionFor(colId);\n\n this._sortState.set(nextSortDirection !== IdsTableSortDirection.NONE ? new IdsTableSortInfo(colId, nextSortDirection) : null);\n\n this.sortChange.emit(this._sortState());\n }\n\n protected _handleCellClick(event: MouseEvent, rowData: D, colDef: IdsTableColumnDef<D>): void {\n this.cellClick.emit({ event, colDef, rowData });\n }\n\n protected _handleRowClick(event: MouseEvent, rowData: D): void {\n this.rowClick.emit({ event, rowData });\n }\n\n protected _handleRowKeyDown(event: KeyboardEvent, rowData: D): void {\n this.rowKeydown.emit({ event, rowData });\n }\n\n protected _handleMasterDetailClick(rowData: D): void {\n if (this._expandedRows.has(rowData)) {\n this._expandedRows.delete(rowData);\n } else {\n this._expandedRows.add(rowData);\n }\n this._cdRef.markForCheck();\n }\n\n protected _masterToggle(): void {\n const data = this._selectableRowData();\n if (this._isAllSelected() || !data) {\n this.rowSelection.clear();\n return;\n }\n\n this.rowSelection.select(...data);\n }\n}\n","<!-- eslint-disable @angular-eslint/template/prefer-self-closing-tags -->\n\n<!-- Empty table message template -->\n<ng-template #noRowsToShow>\n <div class=\"ids-table__no-rows-to-show\">\n <ng-content select=\"[idsNoRowsToShow]\">No rows to show</ng-content>\n </div>\n</ng-template>\n\n<!-- Default detail cell template (a table showing the non-visible columns) -->\n<ng-template #defaultDetail let-row let-cols=\"cols\" [idsCellTemplate]=\"_defaultMasterDetailTemplateName\">\n <ids-table appearance=\"zebra\" [dataSource]=\"[row]\" [columnDefs]=\"cols\"></ids-table>\n</ng-template>\n\n<!-- TODO: Loading spinner -->\n\n<div class=\"ids-table__horizontal-scroll\">\n <table\n cdk-table\n cdkDropListGroup\n multiTemplateDataRows\n [id]=\"id()\"\n [dataSource]=\"dataSource()\"\n (contentChanged)=\"_tableContentChanged()\"\n >\n <caption><ng-content select=\"[idsTableCaption]\"></ng-content></caption>\n\n <!-- Column and row definitions for row selection -->\n <ng-container cdkColumnDef=\"$selectBoxes\" sticky>\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n scope=\"col\"\n role=\"cell\"\n class=\"ids-table__header-cell ids-table__header-cell--select-all-rows\"\n >\n @let isRowSelected = rowSelection.hasValue();\n @let isTableVariantPrimary = variant() === 'primary';\n <ids-checkbox\n [indeterminate]=\"isRowSelected && !_isAllSelected()\"\n [checked]=\"isRowSelected && _isAllSelected()\"\n [disabled]=\"_isSelectAllDisabled()\"\n [aria-label]=\"_intl.headerSelectorAriaLabel\"\n [variant]=\"isTableVariantPrimary && isRowSelected ? 'light' : 'surface'\"\n (change)=\"$event ? _masterToggle() : null\"\n >\n </ids-checkbox>\n </th>\n <td\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n class=\"ids-table__cell ids-table__cell--row-select\"\n >\n <ids-checkbox\n class=\"ids-table__checkbox--row-selector\"\n [disabled]=\"_unselectableRows().has(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n [value]=\"row\"\n [aria-label]=\"_intl.rowSelectorAriaLabel\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? rowSelection.toggle(row) : null\"\n >\n </ids-checkbox>\n </td>\n </ng-container>\n\n <!-- Column and row definitions for the master-detail toggle feature -->\n <ng-container cdkColumnDef=\"$masterDetail\" stickyEnd>\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n scope=\"col\"\n class=\"ids-table__header-cell ids-table__header-cell--master-detail-toggle\"\n [class.ids-table__header-cell--master-detail-toggle-expand]=\"showDetailHeader()\"\n >\n @if (showDetailHeader()) {\n <span>{{ _intl.detailHeaderLabel }}</span>\n }\n </th>\n <td\n *cdkCellDef=\"let row; let idx = $index\"\n cdk-cell\n class=\"ids-table__cell ids-table__cell--master-detail-toggle\"\n [class.ids-table__cell--master-detail-toggle-expand]=\"showDetailHeader()\"\n >\n @let hasDetail = hasDetailRow()(idx, row);\n @let rowExpanded = _expandedRows.has(row);\n @if (hasDetail) {\n <button\n type=\"button\"\n idsIconButton\n class=\"ids-table__button--master-detail\"\n [attr.aria-expanded]=\"rowExpanded || false\"\n [attr.aria-label]=\"_intl.getDetailExpandButtonAriaLabel(row) || null\"\n (click)=\"_handleMasterDetailClick(row)\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" [fontIcon]=\"rowExpanded ? 'chevron-up' : 'chevron-down'\" />\n </button>\n }\n </td>\n </ng-container>\n <!-- Column definition for the detail cells -->\n <ng-container cdkColumnDef=\"$expandedDetail\">\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell ids-table__detail-cell\" [attr.colspan]=\"_detailColSpan()\">\n <div class=\"ids-table__detail-cell--content-wrapper\" [@detailExpand]=\"_expandedRows.has(row) ? 'expanded' : 'collapsed'\">\n @let isDefaultTemplate = _detailTemplate() === _defaulDetailTemplate();\n @let context = isDefaultTemplate ? { $implicit: row, cols: _hiddenColumns() } : { $implicit: row };\n <ng-container *ngTemplateOutlet=\"_detailTemplate() ?? defaultDetail; context: context\"></ng-container>\n </div>\n </td>\n </ng-container>\n\n <!-- Column definitions for sticky empty cells -->\n <ng-container cdkColumnDef=\"$empty\" sticky>\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell\"></td>\n </ng-container>\n <ng-container cdkColumnDef=\"$emptyEnd\" stickyEnd>\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell\"></td>\n </ng-container>\n\n <!-- Column and row definitions for the actual data -->\n @for (col of columnDefs(); track col.id; let colIndex = $index; let isLast = $last ) {\n <ng-container\n [cdkColumnDef]=\"col.id\"\n [sticky]=\"col.sticky && !col.stickyEnd\"\n [stickyEnd]=\"col.stickyEnd && !col.sticky\"\n >\n @let colSortable = col.sortable && enableSorting();\n @let colNumeric = col.cellRenderer === 'numeric';\n @let orderName = col.orderName || col.field || col.id;\n @let sortDirection = colSortable && _sortState()?.sortBy === orderName ? _sortState()?.direction : null;\n @let nextSortDirection = _getNextSortDirectionFor(orderName);\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n class=\"ids-table__header-cell\"\n idsHeaderCellContent\n scope=\"col\"\n [class.ids-table__header-cell--sortable]=\"colSortable\"\n [class.ids-table__header-cell--numeric]=\"colNumeric\"\n [class]=\"col.columnClasses || ''\"\n [colDef]=\"col\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n [id]=\"id() + '-header-' + col.id\"\n >\n @if (colSortable) {\n <button\n type=\"button\"\n idsIconButton\n colEnd\n class=\"ids-table__header-cell--sort-button\"\n [attr.aria-label]=\"_intl.getSortButtonAriaLabel(col, nextSortDirection)\"\n (click)=\"_handleSortClick(orderName)\"\n >\n @switch (sortDirection) {\n @case ('asc') {\n <ids-icon [fontIcon]=\"'chevron-up'\"></ids-icon>\n }\n @case ('desc') {\n <ids-icon [fontIcon]=\"'chevron-down'\"></ids-icon>\n }\n @default {\n <ids-icon [fontIcon]=\"'adjustments-horizontal'\"></ids-icon>\n }\n }\n </button>\n }\n </th>\n\n @if (col.identifier) {\n <th\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n idsCellContent\n class=\"ids-table__cell ids-table__cell--identifier\"\n role=\"gridcell\"\n scope=\"row\"\n [class]=\"col.cellClasses || ''\"\n [colDef]=\"col\"\n [rowData]=\"row\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n (click)=\"_handleCellClick($event, row, col)\"\n ></th>\n } @else {\n <td\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n class=\"ids-table__cell\"\n idsCellContent\n [class]=\"col.cellClasses || ''\"\n [colDef]=\"col\"\n [rowData]=\"row\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n (click)=\"_handleCellClick($event, row, col)\"\n ></td>\n }\n </ng-container>\n }\n\n <!-- Header row render definition -->\n <tr *cdkHeaderRowDef=\"_actualColumns(); sticky: fixedHeader()\" cdk-header-row class=\"ids-table__header-row\"></tr>\n\n <!-- Row render definition -->\n <tr\n *cdkRowDef=\"let row; columns: _actualColumns(); let idx = dataIndex\"\n cdk-row\n class=\"ids-table__row\"\n [rowInfo]=\"{ rowData: row, index: idx }\"\n [ngClass]=\"(appearance() !== _appearanceZebra || idx % 2 === 0) ? 'ids-table__row--surface' : 'ids-table__row--secondary'\"\n (click)=\"_handleRowClick($event, row)\"\n (keydown)=\"_handleRowKeyDown($event, row)\"\n ></tr>\n\n <!-- Detail row render definition -->\n @if (masterDetail()) {\n <tr\n *cdkRowDef=\"let row; columns: _detailRowTemplates(); when: hasDetailRow()\"\n cdk-row\n class=\"ids-table__detail-row ids-table__row--surface\"\n [class.ids-table__detail-row--expanded]=\"_expandedRows.has(row) || _allRowsExpanded()\"\n ></tr>\n }\n\n <!-- Empty table message (inside the table) -->\n @if (!noRowsToShowOverlayBelow()) {\n <tr *cdkNoDataRow class=\"ids-table__row\">\n <td class=\"ids-table__cell\" [attr.colspan]=\"_actualColumns().length\">\n <ng-container [ngTemplateOutlet]=\"noRowsToShow\"></ng-container>\n </td>\n </tr>\n }\n </table>\n</div>\n<!-- Empty table message (outside the table) -->\n@if (noRowsToShowOverlayBelow() && _hasNoRows()) {\n <ng-container [ngTemplateOutlet]=\"noRowsToShow\"></ng-container>\n}\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":"i-cell-ids-angular-table.mjs","sources":["../../../projects/widgets/table/datasource/server-side-datasource.ts","../../../projects/widgets/table/directives/cell-renderer.ts","../../../projects/widgets/table/directives/cell-template.ts","../../../projects/widgets/table/types/table-appearance.type.ts","../../../projects/widgets/table/types/table-sort-direction.ts","../../../projects/widgets/table/types/table-sort-info.ts","../../../projects/widgets/table/types/table-variant.type.ts","../../../projects/widgets/table/table-defaults.ts","../../../projects/widgets/table/table-intl.ts","../../../projects/widgets/table/components/cell-content/cell-content.component.ts","../../../projects/widgets/table/components/cell-content/cell-content.component.html","../../../projects/widgets/table/directives/row-info-holder.ts","../../../projects/widgets/table/table.component.ts","../../../projects/widgets/table/table.component.html","../../../projects/widgets/table/i-cell-ids-angular-table.ts"],"sourcesContent":["import { IdsTablePaginationParams } from '../types/pagination-params';\nimport { IdsTableRequestFactory } from '../types/request-factory';\nimport { IdsTableRequestPaginationData } from '../types/request-pagination-data';\nimport { IdsTableSortInfo } from '../types/table-sort-info';\n\nimport { DataSource } from '@angular/cdk/collections';\nimport { DEFAULT_PAGE_SIZE, IdsPaginatorPageChangeEvent } from '@i-cell/ids-angular/paginator';\nimport { BehaviorSubject, catchError, debounceTime, finalize, map, merge, Observable, of, Subject, Subscription, switchMap, tap } from 'rxjs';\n\nexport const DEFAULT_DATA_LOAD_DEBOUNCE_TIME = 100;\n\nexport class ServerSideDataSource<D> implements DataSource<D> {\n private _dataSubject = new BehaviorSubject<D[]>([]);\n private _sortSubject = new BehaviorSubject<IdsTableSortInfo | null>(null);\n private _pageSubject = new BehaviorSubject<IdsTableRequestPaginationData | null>(null);\n private _pageInfoSubject = new BehaviorSubject<IdsTablePaginationParams | null>(null);\n private _loadDataTriggerSubject = new Subject<void>();\n private _loadingSubject = new BehaviorSubject<boolean>(false);\n\n private _loadDataSubscription?: Subscription;\n\n public data$ = this._dataSubject.asObservable();\n public isLoading$ = this._loadingSubject.asObservable();\n public pageInfo$ = this._pageInfoSubject.asObservable();\n public pageIndex$ = this.pageInfo$.pipe(map((pageInfo) => ((pageInfo?.page ?? 1) - 1)));\n\n get data(): D[] {\n return this._dataSubject.value;\n }\n\n set data(value: D[]) {\n this._dataSubject.next(value);\n }\n\n get pageInfo(): IdsTablePaginationParams | null {\n return this._pageInfoSubject.value;\n }\n\n set pageInfo(value: IdsTablePaginationParams | null) {\n this._pageInfoSubject.next(value);\n }\n\n get length(): number {\n return this.data.length;\n }\n\n constructor(\n private _requestFactory: IdsTableRequestFactory<D>,\n private _resetDataAndPagingOnError = false,\n ) {}\n\n public connect(): Observable<readonly D[]> {\n this._initDataLoading();\n this.refreshData();\n\n return this.data$;\n }\n\n public disconnect(): void {\n this._dataSubject.complete();\n this._sortSubject.complete();\n this._loadingSubject.complete();\n this._loadDataSubscription?.unsubscribe();\n }\n\n public sort(sortInfo?: IdsTableSortInfo | null): void {\n // sorting resets the \"page\" to 1 (TODO: config option?)\n this._pageSubject.next({\n page: 1,\n rows: this._pageSubject.value?.rows ?? DEFAULT_PAGE_SIZE,\n });\n this._sortSubject.next(sortInfo ?? null);\n }\n\n public page(pageEvent: IdsPaginatorPageChangeEvent): void {\n this._pageSubject.next(pageEvent ? {\n page: pageEvent.pageIndex + 1,\n rows: pageEvent.pageSize,\n } : null);\n }\n\n /**\n * Loads data from specified endpoint.\n */\n public refreshData(): void {\n this._loadDataTriggerSubject.next();\n }\n\n private _initDataLoading(): void {\n this._loadDataSubscription = merge(this._sortSubject, this._pageSubject, this._loadDataTriggerSubject)\n .pipe(\n debounceTime(DEFAULT_DATA_LOAD_DEBOUNCE_TIME),\n switchMap(() => {\n this._loadingSubject.next(true);\n\n const pageInfo = this.pageInfo;\n const paginationData = this._pageSubject.value;\n let requestPaginationData: IdsTableRequestPaginationData | null = null;\n\n if (pageInfo || paginationData) {\n requestPaginationData = {\n page: paginationData?.page ?? pageInfo?.page ?? 1,\n rows: paginationData?.rows ?? pageInfo?.rows ?? DEFAULT_PAGE_SIZE,\n };\n }\n\n const request$ = this._requestFactory(requestPaginationData, this._sortSubject.value);\n\n if (!(request$ instanceof Observable)) {\n throw new Error('The `requestFactory` should return an Observable!');\n }\n\n return request$.pipe(\n catchError(() => of(this._resetDataAndPagingOnError ?\n {\n resultList: [] as D[],\n paginationParams: {\n page: 1,\n totalRows: 0,\n rows: this.pageInfo?.rows ?? DEFAULT_PAGE_SIZE,\n },\n }\n :\n {\n resultList: this.data,\n paginationParams: this.pageInfo,\n },\n )),\n tap((response) => {\n this.data = response.resultList ?? [];\n this._pageInfoSubject.next(response.paginationParams);\n }),\n finalize(() => this._loadingSubject.next(false)),\n );\n }),\n ).subscribe();\n }\n}\n","import { IdsTableColumnDef } from '../types/table-column-def';\n\nimport { Directive, input, Type } from '@angular/core';\nimport { isString, isTypeDerivedFrom } from '@i-cell/ids-angular/core';\n\n@Directive()\nexport abstract class IdsTableCellRenderer<D> {\n private readonly _entities = [\n { rx: '&', entity: '&' },\n { rx: '<', entity: '<' },\n { rx: '>', entity: '>' },\n { rx: '\"', entity: '"' },\n { rx: '\\'', entity: ''' },\n { rx: '/', entity: '/' },\n ];\n\n public cellValue = input('', { transform: (value) => this._preSanitize(String(value ?? '')) });\n public colDef = input.required<IdsTableColumnDef<D>>();\n public rowData = input<D>();\n\n protected _isComponentCellRenderer<C>(cellRendererDef: string | Type<C> | undefined):\n cellRendererDef is Type<C> {\n return !!cellRendererDef && !isString(cellRendererDef) && isTypeDerivedFrom(cellRendererDef, IdsTableCellRenderer);\n }\n\n protected _preSanitize(input: string): string {\n if (!input) {\n return input;\n }\n\n // Convert & to &, Convert < to <, Convert > to >, Convert \" to ", Convert ' to ', Convert / to /\n return this._entities.reduce((result, item) => result.replaceAll(item.rx, item.entity), input);\n }\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[idsCellTemplate]',\n standalone: true,\n})\nexport class IdsTableCellTemplateDirective {\n public templateName = input.required<string>({ alias: 'idsCellTemplate' });\n public templateRef = inject(TemplateRef);\n}\n","export const IdsTableAppearance = {\n PLAIN: 'plain',\n LINE_DIVISION: 'line-division',\n ZEBRA: 'zebra',\n} as const;\n\nexport type IdsTableAppearanceType = (typeof IdsTableAppearance)[keyof typeof IdsTableAppearance];\n","export const IdsTableSortDirection = {\n NONE: '',\n ASC: 'asc',\n DESC: 'desc',\n} as const;\n\nexport type IdsTableSortDirectionType = (typeof IdsTableSortDirection)[keyof typeof IdsTableSortDirection];\n","import { IdsTableSortDirectionType } from './table-sort-direction';\n\nexport class IdsTableSortInfo {\n constructor(public sortBy: string, public direction: IdsTableSortDirectionType) {}\n}\n","export const IdsTableVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SURFACE: 'surface',\n} as const;\n\nexport type IdsTableVariantType = (typeof IdsTableVariant)[keyof typeof IdsTableVariant];\n\n","import { IdsTableAppearance, IdsTableAppearanceType } from './types/table-appearance.type';\nimport { IdsTableVariant, IdsTableVariantType } from './types/table-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport const DEFAULT_MASTER_DETAIL_TEMPLATE_NAME = 'detail';\n\nexport interface IdsTableDefaultConfig {\n appearance?: IdsTableAppearanceType,\n size?: IdsSizeType,\n variant?: IdsTableVariantType,\n fixedHeader?: boolean,\n enableSorting?: boolean,\n masterDetail?: boolean,\n detailTemplateName?: string,\n detailStickyColumns?: boolean,\n showDetailHeader?: boolean,\n enableRowSelection?: boolean,\n clearSelectionOnChange?: boolean,\n noRowsToShowOverlayBelow?: boolean,\n withBorder?: boolean,\n}\n\nexport const IDS_TABLE_DEFAULT_CONFIG = new InjectionToken<IdsTableDefaultConfig>(\n 'IDS_TABLE_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_TABLE_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_TABLE_DEFAULT_CONFIG_FACTORY(): Required<IdsTableDefaultConfig> {\n return {\n appearance: IdsTableAppearance.LINE_DIVISION,\n size: IdsSize.COMPACT,\n variant: IdsTableVariant.SURFACE,\n fixedHeader: false,\n enableSorting: false,\n masterDetail: false,\n detailTemplateName: DEFAULT_MASTER_DETAIL_TEMPLATE_NAME,\n detailStickyColumns: true,\n showDetailHeader: false,\n enableRowSelection: false,\n clearSelectionOnChange: true,\n noRowsToShowOverlayBelow: false,\n withBorder: false,\n };\n}\n\n","import { IdsTableColumnDef } from './types/table-column-def';\nimport { IdsTableSortDirection, IdsTableSortDirectionType } from './types/table-sort-direction';\n\nimport { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class IdsTableIntl<D> {\n public readonly changes: Subject<void> = new Subject<void>();\n\n public numberFormat = new Intl.NumberFormat();\n public headerSelectorAriaLabel = 'Select/deselect all rows';\n public rowSelectorAriaLabel = 'Select/deselect row';\n public detailHeaderLabel = 'Actions';\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getDetailExpandButtonAriaLabel(rowData: D): string {\n return 'Expand row details';\n }\n\n public getSortButtonAriaLabel(colDef: IdsTableColumnDef<D>, nextSortDirection: IdsTableSortDirectionType): string {\n const label = this.getColLabel(colDef);\n\n switch (nextSortDirection) {\n case IdsTableSortDirection.NONE:\n return `Unsort ${label}`;\n case IdsTableSortDirection.ASC:\n return `Sort ${label} ascending`;\n case IdsTableSortDirection.DESC:\n return `Sort ${label} descending`;\n }\n };\n\n public getColLabel(colDef: IdsTableColumnDef<D>): string {\n return colDef.label || '';\n }\n}\n\n/** @docs-private */\nexport function IDS_TABLE_INTL_PROVIDER_FACTORY<D>(parentIntl?: IdsTableIntl<D>): IdsTableIntl<D> {\n return parentIntl || new IdsTableIntl();\n}\n\n/** @docs-private */\nexport const IDS_TABLE_INTL_PROVIDER = {\n // If there is already an IdsTableIntl available, use that. Otherwise, provide a new one.\n provide: IdsTableIntl,\n deps: [\n [\n new Optional(),\n new SkipSelf(),\n IdsTableIntl,\n ],\n ],\n useFactory: IDS_TABLE_INTL_PROVIDER_FACTORY,\n};\n","import { IdsTableCellRenderer } from '../../directives/cell-renderer';\nimport { IdsTableIntl } from '../../table-intl';\n\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, ElementRef, inject, input, signal, TemplateRef } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { isString } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { map, startWith } from 'rxjs';\n\n/**\n * This component handles the rendering of a table cell based on the column definition and row data using internal or external cell renderer\n * templates or components.\n */\n@Component({\n selector: 'th[idsCellContent],td[idsCellContent],th[idsHeaderCellContent],td[idsHeaderCellContent]',\n templateUrl: './cell-content.component.html',\n imports: [\n IdsIconComponent,\n NgComponentOutlet,\n NgTemplateOutlet,\n ],\n})\nexport class IdsCellContentComponent<D> extends IdsTableCellRenderer<D> {\n private _elementRef = inject(ElementRef);\n private _intl = inject(IdsTableIntl);\n private _isHeader = (this._elementRef.nativeElement as Element).hasAttribute('idsHeaderCellContent');\n private _numberFormat = toSignal(this._intl.changes.pipe(map(() => this._intl.numberFormat), startWith(this._intl.numberFormat)));\n\n public externalCellTemplates = input<Map<string, TemplateRef<unknown>>>();\n\n private _cellRendererDef = computed(() => (this._isHeader ? this.colDef().headerCellRenderer : this.colDef().cellRenderer));\n private _updateCellContent = signal(true);\n\n protected _cellValue = computed(() => {\n // Forces recalculation of this computed signal\n this._updateCellContent();\n\n if (this._isHeader) {\n return this.colDef().label ?? '';\n }\n\n const rowData = this.rowData();\n\n if (!rowData) {\n return '';\n }\n\n const field = this.colDef().field ?? '';\n const valueFn = this.colDef().value ?? ((): string => '');\n\n const rawResult = field && Object.hasOwn(rowData, field) ? (rowData as Record<string, unknown>)[field] : valueFn(rowData);\n return isString(rawResult) ? this._preSanitize(rawResult) : rawResult;\n });\n\n protected _stringCellValue = computed(() => String(this._cellValue() ?? ''));\n\n protected _numericCellValue = computed(() => {\n const stringValue = this._stringCellValue();\n return this._numberFormat()?.format(parseFloat(stringValue)) ?? stringValue;\n });\n\n protected _cellRendererComp = computed(() => {\n const renderer = this._cellRendererDef();\n if (this._isComponentCellRenderer(renderer)) {\n return renderer;\n }\n\n return null;\n });\n\n protected _cellTemplateName = computed(() => {\n if (isString(this._cellRendererDef())) {\n return this._cellRendererDef() as string;\n }\n\n return undefined;\n });\n\n protected _cellTemplate = computed(() => {\n const templateName = this._cellTemplateName();\n const templates = this.externalCellTemplates();\n return isString(templateName) && templates?.has(templateName) ? templates.get(templateName) ?? null : null;\n });\n\n public updateValue(): void {\n this._updateCellContent.set(!this._updateCellContent());\n }\n}\n","<ng-content select=\"[colStart]\" />\r\n\r\n@if (_cellRendererComp()) {\r\n <ng-container *ngComponentOutlet=\"_cellRendererComp(); inputs: { rowData: rowData(), colDef: colDef(), cellValue: _cellValue() }\" />\r\n} @else {\r\n @switch (_cellTemplateName()) {\r\n @case ('strong') {\r\n <strong class=\"ids-cell-content ids-cell-content__strong\">{{ _cellValue() }}</strong>\r\n }\r\n @case ('numeric') {\r\n <div class=\"ids-cell-content ids-cell-content__numeric\">{{ _numericCellValue() }}</div>\r\n }\r\n @case ('icon') {\r\n <ids-icon\r\n class=\"ids-cell-content ids-cell-content__icon\"\r\n [fontIcon]=\"_stringCellValue()\"\r\n [aria-hidden]=\"true\"\r\n />\r\n }\r\n <!-- TODO: label-description template (needs further discussion) -->\r\n @default {\r\n @let template = _cellTemplate();\r\n @if (template) {\r\n <!-- external template ref -->\r\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: rowData(), colDef: colDef(), cellValue: _cellValue() }\" />\r\n } @else {\r\n <!-- default basic cell content -->\r\n <div class=\"ids-cell-content ids-cell-content__default\">{{ _cellValue() }}</div>\r\n }\r\n }\r\n }\r\n}\r\n\r\n<ng-content select=\"[colEnd]\" />\r\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[rowInfo]',\n standalone: true,\n})\nexport class RowInfoHolderDirective<D> {\n public rowInfo = input.required<{ rowData: D, index: number }>();\n}\n","import { IdsCellContentComponent } from './components/cell-content/cell-content.component';\nimport { IdsTableCellTemplateDirective } from './directives/cell-template';\nimport { RowInfoHolderDirective } from './directives/row-info-holder';\nimport { DEFAULT_MASTER_DETAIL_TEMPLATE_NAME, IDS_TABLE_DEFAULT_CONFIG, IDS_TABLE_DEFAULT_CONFIG_FACTORY, IdsTableDefaultConfig } from './table-defaults';\nimport { IdsTableIntl } from './table-intl';\nimport { IdsTableAppearance, IdsTableAppearanceType } from './types/table-appearance.type';\nimport { IdsTableCellClickEvent } from './types/table-cell-click-event';\nimport { IdsTableColumnDef } from './types/table-column-def';\nimport { IdsTableRowClickEvent } from './types/table-row-click-event';\nimport { IdsTableRowKeydownEvent } from './types/table-row-keydown-event';\nimport { IdsTableSortDirection, IdsTableSortDirectionType } from './types/table-sort-direction';\nimport { IdsTableSortInfo } from './types/table-sort-info';\nimport { IdsTableVariant, IdsTableVariantType } from './types/table-variant.type';\n\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkCell, CdkCellDef, CdkColumnDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRow, CdkRowDef, CdkTable, CdkTableDataSourceInput } from '@angular/cdk/table';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, contentChildren, inject, input, OnInit, output, signal, TemplateRef, viewChildren, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { IdsCheckboxComponent } from '@i-cell/ids-angular/checkbox';\nimport { coerceBooleanAttribute, ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IDS_ICON_BUTTON_PARENT, IdsIconButtonAppearance, IdsIconButtonAppearanceType, IdsIconButtonComponent, IdsIconButtonParent, IdsIconButtonVariant, IdsIconButtonVariantType } from '@i-cell/ids-angular/icon-button';\n\nconst defaultConfig = IDS_TABLE_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-table',\n imports: [\n IdsCellContentComponent,\n IdsCheckboxComponent,\n IdsIconComponent,\n IdsIconButtonComponent,\n IdsTableCellTemplateDirective,\n CdkCell,\n CdkCellDef,\n CdkColumnDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkNoDataRow,\n CdkRow,\n CdkRowDef,\n CdkTable,\n NgClass,\n NgTemplateOutlet,\n RowInfoHolderDirective,\n ],\n templateUrl: './table.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px', minHeight: '0', visibility: 'hidden' })),\n state('expanded', style({ height: '*', visibility: 'visible' })),\n transition('expanded <=> collapsed', animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n providers: [{ provide: IDS_ICON_BUTTON_PARENT, useExisting: IdsTableComponent }],\n exportAs: 'idsTable',\n})\nexport class IdsTableComponent<D>\n extends ComponentBaseWithDefaults<IdsTableDefaultConfig> implements IdsIconButtonParent, OnInit {\n\n private readonly _sortDirections: IdsTableSortDirectionType[] = [\n '',\n 'asc',\n 'desc',\n ];\n\n protected readonly _appearanceZebra = IdsTableAppearance.ZEBRA;\n protected readonly _defaultMasterDetailTemplateName = DEFAULT_MASTER_DETAIL_TEMPLATE_NAME;\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_TABLE_DEFAULT_CONFIG);\n\n private _cdRef = inject(ChangeDetectorRef);\n protected _intl = inject(IdsTableIntl);\n\n private _viewCellTemplates = viewChildren(IdsTableCellTemplateDirective);\n private _rowDataHolders = viewChildren(RowInfoHolderDirective<D>);\n private _selectorCheckboxes = viewChildren(IdsCheckboxComponent);\n private _cellContentRenderers = viewChildren(IdsCellContentComponent<D>);\n private _contentCellTemplates = contentChildren(IdsTableCellTemplateDirective);\n\n public columnDefs = input.required<IdsTableColumnDef<D>[]>();\n public dataSource = input.required<CdkTableDataSourceInput<D>>();\n /** Flag to have sticky header. */\n public fixedHeader = input<boolean, unknown>(this._defaultConfig.fixedHeader, { transform: coerceBooleanAttribute });\n /** Enable sorting feature */\n public enableSorting = input<boolean, unknown>(this._defaultConfig.enableSorting, { transform: coerceBooleanAttribute });\n /** Enable master-detail rows */\n public masterDetail = input<boolean, unknown>(this._defaultConfig.masterDetail, { transform: coerceBooleanAttribute });\n /** Name of the detail row renderer template */\n public detailTemplateName = input(this._defaultConfig.detailTemplateName);\n /** If true the detail cell will not span sticky and stickyEnd columns. If false the detail cell will span the table's full width */\n public detailStickyColumns = input<boolean, unknown>(this._defaultConfig.detailStickyColumns, { transform: coerceBooleanAttribute });\n /** Whether to show the master-detail column label or not. */\n public showDetailHeader = input<boolean, unknown>(this._defaultConfig.showDetailHeader, { transform: coerceBooleanAttribute });\n /** Predicate function to decide whether a data row has details or not */\n public hasDetailRow = input<(index: number, data: D) => boolean>(() => false);\n /** Enable row selection feature */\n public enableRowSelection = input<boolean, unknown>(this._defaultConfig.enableRowSelection, { transform: coerceBooleanAttribute });\n /** Clear row selection if the table's content changes */\n public clearSelectionOnChange = input<boolean, unknown>(this._defaultConfig.clearSelectionOnChange,\n { transform: coerceBooleanAttribute });\n\n /** Predicate function to decide whether a row can be selected or not */\n public isRowSelectable = input<(index: number, data: D) => boolean>(() => true);\n /** Render \"no rows to show\" overlay below the table instead of as a row */\n public noRowsToShowOverlayBelow = input<boolean, unknown>(this._defaultConfig.noRowsToShowOverlayBelow,\n { transform: coerceBooleanAttribute });\n /** Whether to show a border around the table or not. */\n\n public withBorder = input<boolean, unknown>(this._defaultConfig.withBorder, { transform: coerceBooleanAttribute });\n /**\n * The table's appearance type. Availabla options:\n * - \"line-division\": row backgrounds are uniformly colored and divided by thin border lines\n * - \"zebra\": the backgrounds of even and odd rows are different colors\n * - \"plain\": row backgrounds are uniformly colored without border lines\n */\n public appearance = input<IdsTableAppearanceType>(this._defaultConfig.appearance);\n /** The size type of the table. Affects paddings, margins, gaps, typography, etc. */\n public size = input<IdsSizeType>(this._defaultConfig.size);\n /** The color variant of the table. Availabla options: \"primary\", \"secondary\", \"surface\" */\n public variant = input<IdsTableVariantType>(this._defaultConfig.variant);\n\n /** Emits if the column sorting has changed */\n public sortChange = output<IdsTableSortInfo | null>();\n /** Emits if the user clicked a cell */\n public cellClick = output<IdsTableCellClickEvent<D>>();\n /** Emits if the user clicked a row */\n public rowClick = output<IdsTableRowClickEvent<D>>();\n /** Emits if the user hits a key while a row is in focus */\n public rowKeydown = output<IdsTableRowKeydownEvent<D>>();\n /** Emits if the table's contents have changed */\n public contentChanged = output<void>();\n\n //#region IdsIconButtonParent implementation\n public embeddedIconButtonVariant = computed<IdsIconButtonVariantType>(() => {\n const tableVariant = this.variant();\n switch (tableVariant) {\n case IdsTableVariant.PRIMARY:\n return IdsIconButtonVariant.SURFACE;\n default:\n return tableVariant;\n }\n });\n\n public embeddedIconButtonAppearance = signal<IdsIconButtonAppearanceType>(IdsIconButtonAppearance.STANDARD);\n public disabled = signal<boolean>(false);\n //#endregion\n\n /** Signal that holds the current table contents as an array of objects */\n public rowData = computed(() => {\n const dataHolders = this._rowDataHolders();\n\n if (!dataHolders?.length) {\n return [];\n }\n\n try {\n // try-catch for now to avoid \"NG0950: Input is required but no value is available yet. Find more at https://angular.dev/errors/NG0950\" at \"holder.rowInfo()\"\n return dataHolders\n .map((holder) => holder.rowInfo())\n .sort((data1, data2) => data1.index - data2.index)\n .map((data) => data.rowData);\n } catch {\n return [];\n }\n });\n\n /** The row selection model for the table */\n public rowSelection: SelectionModel<D> = new SelectionModel<D>(true, [], true);\n\n protected _expandedRows = new Set<D>();\n protected _allRowsExpanded = signal<boolean>(false);\n\n protected _sortState = signal<IdsTableSortInfo | null>(null);\n\n protected override get _hostName(): string {\n return 'table';\n }\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.appearance(),\n this.size(),\n this.variant(),\n (this.withBorder() ? 'with-border' : null),\n ]));\n\n protected _actualColumns = computed(() => {\n const cols = this.columnDefs()\n // Filter non-visible columns\n .filter((colDef) => (colDef.visible !== false))\n // Sort sticky columns to the beginning and stickyEnd columns to the end of the list\n .reduce<string[][]>(\n (acc, colDef) => {\n if (colDef.sticky) {\n // Sticky columns first\n acc[0].push(colDef.id);\n } else if (colDef.stickyEnd) {\n // StickyEnd columns last\n acc[2].push(colDef.id);\n } else {\n // The rest of the columns in between\n acc[1].push(colDef.id);\n }\n\n return acc;\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n }, [[], [], []])\n .flat();\n\n if (this.masterDetail()) {\n cols.push('$masterDetail');\n }\n\n if (this.enableRowSelection()) {\n cols.unshift('$selectBoxes');\n }\n\n return cols;\n });\n\n protected _hiddenColumns = computed(() =>\n this.columnDefs()\n .filter((colDef) => (colDef.visible === false))\n .map((colDef) => ({ ...colDef, visible: true })),\n );\n\n protected _detailRowTemplates = computed(() => {\n if (!this.detailStickyColumns()) {\n return ['$expandedDetail'];\n }\n\n return [\n ...(this.enableRowSelection() ? ['$empty'] : []),\n ...this.columnDefs().filter((colDef) => colDef.sticky).map(() => '$empty'),\n '$expandedDetail',\n ...this.columnDefs().filter((colDef) => colDef.stickyEnd).map(() => '$emptyEnd'),\n ...(this.masterDetail() ? ['$emptyEnd'] : []),\n ];\n });\n\n protected _detailColSpan = computed(() => {\n const colDefs = this.columnDefs();\n let detailColSpan = colDefs.length;\n\n if (this.detailStickyColumns()) {\n detailColSpan = colDefs.filter((def) => (!def.sticky && !def.stickyEnd && def.visible !== false)).length;\n }\n\n return detailColSpan;\n });\n\n protected _cellTemplatesByName = computed(() => {\n const templateMap = new Map<string, TemplateRef<unknown>>();\n\n for (const cellTemplate of this._viewCellTemplates()) {\n templateMap.set(cellTemplate.templateName(), cellTemplate.templateRef);\n }\n for (const cellTemplate of this._contentCellTemplates()) {\n templateMap.set(cellTemplate.templateName(), cellTemplate.templateRef);\n }\n\n return templateMap;\n });\n\n protected _defaulDetailTemplate = computed(() =>\n this._viewCellTemplates().find((cellTemplate) => cellTemplate.templateName() === this._defaultMasterDetailTemplateName)?.templateRef,\n );\n\n protected _detailTemplate = computed(() => this._cellTemplatesByName().get(this.detailTemplateName()));\n\n protected _hasNoRows = computed<boolean>(() => this.rowData().length === 0);\n\n protected _masterDetailEnabled = computed(() =>\n this.masterDetail() && this._cellTemplatesByName().has(this._defaultMasterDetailTemplateName),\n );\n\n protected _unselectableRows = computed(() => {\n const rows = this.rowData();\n\n return new Set<D>(rows.filter((rowData, index) => !this.isRowSelectable()(index, rowData)));\n });\n\n private _rowSelectorCheckboxes = computed(() => {\n const disabledRows = this._unselectableRows();\n\n return this._selectorCheckboxes().filter((component) => {\n const value = component.value() as D;\n return value && !disabledRows.has(value);\n });\n });\n\n private _selectableRowData = computed(() => this._rowSelectorCheckboxes().map((component) => component.value() as D));\n\n private _rowSelectionChange = toSignal(this.rowSelection.changed);\n\n protected _isAllSelected = computed(() => {\n const selectionChange = this._rowSelectionChange();\n const data = this._selectableRowData();\n const disabledRows = this._unselectableRows();\n\n if (!selectionChange || !data) {\n return false;\n }\n\n const numSelected = selectionChange.source.selected.length;\n const activeRowCount = data.filter((row) => !disabledRows.has(row)).length;\n return numSelected === activeRowCount;\n });\n\n protected _isSelectAllDisabled = computed(() => this._unselectableRows().size === this._selectableRowData().length);\n\n public ngOnInit(): void {\n this._intl.changes.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this._cdRef.markForCheck());\n }\n\n /**\n * Open up all row details.\n */\n public expandAll(): void {\n this.rowData().forEach((rowData, idx) => {\n if (!this._expandedRows.has(rowData) && this.hasDetailRow()(idx, rowData)) {\n this._expandedRows.add(rowData);\n }\n });\n this._cdRef.markForCheck();\n }\n\n /**\n * Closes all opened row details.\n */\n public collapseAll(): void {\n this._expandedRows.clear();\n this._cdRef.markForCheck();\n }\n\n /**\n * Refresh rendered cell values. Useful if for eg. the `value` getter function is not pure and the values need to be refreshed manually.\n */\n public updateCellContents(): void {\n this._cellContentRenderers().forEach((cellContent) => cellContent.updateValue());\n }\n\n protected _tableContentChanged(): void {\n this.contentChanged.emit();\n\n if (this.clearSelectionOnChange()) {\n this.rowSelection.clear();\n }\n }\n\n protected _getNextSortDirectionFor(colId: string): IdsTableSortDirectionType {\n const sortState = this._sortState();\n const nextIndex = sortState?.sortBy === colId ?\n (this._sortDirections.indexOf(sortState.direction) + 1) % this._sortDirections.length : 1;\n\n return this._sortDirections[nextIndex];\n }\n\n protected _handleSortClick(colId: string): void {\n const nextSortDirection = this._getNextSortDirectionFor(colId);\n\n this._sortState.set(nextSortDirection !== IdsTableSortDirection.NONE ? new IdsTableSortInfo(colId, nextSortDirection) : null);\n\n this.sortChange.emit(this._sortState());\n }\n\n protected _handleCellClick(event: MouseEvent, rowData: D, colDef: IdsTableColumnDef<D>): void {\n this.cellClick.emit({ event, colDef, rowData });\n }\n\n protected _handleRowClick(event: MouseEvent, rowData: D): void {\n this.rowClick.emit({ event, rowData });\n }\n\n protected _handleRowKeyDown(event: KeyboardEvent, rowData: D): void {\n this.rowKeydown.emit({ event, rowData });\n }\n\n protected _handleMasterDetailClick(rowData: D): void {\n if (this._expandedRows.has(rowData)) {\n this._expandedRows.delete(rowData);\n } else {\n this._expandedRows.add(rowData);\n }\n this._cdRef.markForCheck();\n }\n\n protected _masterToggle(): void {\n const data = this._selectableRowData();\n if (this._isAllSelected() || !data) {\n this.rowSelection.clear();\n return;\n }\n\n this.rowSelection.select(...data);\n }\n}\n","<!-- eslint-disable @angular-eslint/template/prefer-self-closing-tags -->\n\n<!-- Empty table message template -->\n<ng-template #noRowsToShow>\n <div class=\"ids-table__no-rows-to-show\">\n <ng-content select=\"[idsNoRowsToShow]\">No rows to show</ng-content>\n </div>\n</ng-template>\n\n<!-- Default detail cell template (a table showing the non-visible columns) -->\n<ng-template #defaultDetail let-row let-cols=\"cols\" [idsCellTemplate]=\"_defaultMasterDetailTemplateName\">\n <ids-table appearance=\"zebra\" [dataSource]=\"[row]\" [columnDefs]=\"cols\"></ids-table>\n</ng-template>\n\n<!-- TODO: Loading spinner -->\n\n<div class=\"ids-table__horizontal-scroll\">\n <table\n cdk-table\n cdkDropListGroup\n multiTemplateDataRows\n [id]=\"id()\"\n [dataSource]=\"dataSource()\"\n (contentChanged)=\"_tableContentChanged()\"\n >\n <caption><ng-content select=\"[idsTableCaption]\"></ng-content></caption>\n\n <!-- Column and row definitions for row selection -->\n <ng-container cdkColumnDef=\"$selectBoxes\" sticky>\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n scope=\"col\"\n role=\"cell\"\n class=\"ids-table__header-cell ids-table__header-cell--select-all-rows\"\n >\n @let isRowSelected = rowSelection.hasValue();\n @let isTableVariantPrimary = variant() === 'primary';\n <ids-checkbox\n [indeterminate]=\"isRowSelected && !_isAllSelected()\"\n [checked]=\"isRowSelected && _isAllSelected()\"\n [disabled]=\"_isSelectAllDisabled()\"\n [aria-label]=\"_intl.headerSelectorAriaLabel\"\n [variant]=\"isTableVariantPrimary && isRowSelected ? 'light' : 'surface'\"\n (change)=\"$event ? _masterToggle() : null\"\n >\n </ids-checkbox>\n </th>\n <td\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n class=\"ids-table__cell ids-table__cell--row-select\"\n >\n <ids-checkbox\n class=\"ids-table__checkbox--row-selector\"\n [disabled]=\"_unselectableRows().has(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n [value]=\"row\"\n [aria-label]=\"_intl.rowSelectorAriaLabel\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? rowSelection.toggle(row) : null\"\n >\n </ids-checkbox>\n </td>\n </ng-container>\n\n <!-- Column and row definitions for the master-detail toggle feature -->\n <ng-container cdkColumnDef=\"$masterDetail\" stickyEnd>\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n scope=\"col\"\n class=\"ids-table__header-cell ids-table__header-cell--master-detail-toggle\"\n [class.ids-table__header-cell--master-detail-toggle-expand]=\"showDetailHeader()\"\n >\n @if (showDetailHeader()) {\n <span>{{ _intl.detailHeaderLabel }}</span>\n }\n </th>\n <td\n *cdkCellDef=\"let row; let idx = $index\"\n cdk-cell\n class=\"ids-table__cell ids-table__cell--master-detail-toggle\"\n [class.ids-table__cell--master-detail-toggle-expand]=\"showDetailHeader()\"\n >\n @let hasDetail = hasDetailRow()(idx, row);\n @let rowExpanded = _expandedRows.has(row);\n @if (hasDetail) {\n <button\n type=\"button\"\n idsIconButton\n class=\"ids-table__button--master-detail\"\n [attr.aria-expanded]=\"rowExpanded || false\"\n [attr.aria-label]=\"_intl.getDetailExpandButtonAriaLabel(row) || null\"\n (click)=\"_handleMasterDetailClick(row)\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" [fontIcon]=\"rowExpanded ? 'chevron-up' : 'chevron-down'\" />\n </button>\n }\n </td>\n </ng-container>\n <!-- Column definition for the detail cells -->\n <ng-container cdkColumnDef=\"$expandedDetail\">\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell ids-table__detail-cell\" [attr.colspan]=\"_detailColSpan()\">\n <div class=\"ids-table__detail-cell--content-wrapper\" [@detailExpand]=\"_expandedRows.has(row) ? 'expanded' : 'collapsed'\">\n @let isDefaultTemplate = _detailTemplate() === _defaulDetailTemplate();\n @let context = isDefaultTemplate ? { $implicit: row, cols: _hiddenColumns() } : { $implicit: row };\n <ng-container *ngTemplateOutlet=\"_detailTemplate() ?? defaultDetail; context: context\"></ng-container>\n </div>\n </td>\n </ng-container>\n\n <!-- Column definitions for sticky empty cells -->\n <ng-container cdkColumnDef=\"$empty\" sticky>\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell\"></td>\n </ng-container>\n <ng-container cdkColumnDef=\"$emptyEnd\" stickyEnd>\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell\"></td>\n </ng-container>\n\n <!-- Column and row definitions for the actual data -->\n @for (col of columnDefs(); track col.id; let colIndex = $index; let isLast = $last ) {\n <ng-container\n [cdkColumnDef]=\"col.id\"\n [sticky]=\"col.sticky && !col.stickyEnd\"\n [stickyEnd]=\"col.stickyEnd && !col.sticky\"\n >\n @let colSortable = col.sortable && enableSorting();\n @let colNumeric = col.cellRenderer === 'numeric';\n @let orderName = col.orderName || col.field || col.id;\n @let sortDirection = colSortable && _sortState()?.sortBy === orderName ? _sortState()?.direction : null;\n @let nextSortDirection = _getNextSortDirectionFor(orderName);\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n class=\"ids-table__header-cell\"\n idsHeaderCellContent\n scope=\"col\"\n [class.ids-table__header-cell--sortable]=\"colSortable\"\n [class.ids-table__header-cell--numeric]=\"colNumeric\"\n [class]=\"col.columnClasses || ''\"\n [colDef]=\"col\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n [id]=\"id() + '-header-' + col.id\"\n >\n @if (colSortable) {\n <button\n type=\"button\"\n idsIconButton\n colEnd\n class=\"ids-table__header-cell--sort-button\"\n [attr.aria-label]=\"_intl.getSortButtonAriaLabel(col, nextSortDirection)\"\n (click)=\"_handleSortClick(orderName)\"\n >\n @switch (sortDirection) {\n @case ('asc') {\n <ids-icon [fontIcon]=\"'chevron-up'\"></ids-icon>\n }\n @case ('desc') {\n <ids-icon [fontIcon]=\"'chevron-down'\"></ids-icon>\n }\n @default {\n <ids-icon [fontIcon]=\"'adjustments-horizontal'\"></ids-icon>\n }\n }\n </button>\n }\n </th>\n\n @if (col.identifier) {\n <th\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n idsCellContent\n class=\"ids-table__cell ids-table__cell--identifier\"\n role=\"gridcell\"\n scope=\"row\"\n [class]=\"col.cellClasses || ''\"\n [colDef]=\"col\"\n [rowData]=\"row\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n (click)=\"_handleCellClick($event, row, col)\"\n ></th>\n } @else {\n <td\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n class=\"ids-table__cell\"\n idsCellContent\n [class]=\"col.cellClasses || ''\"\n [colDef]=\"col\"\n [rowData]=\"row\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n (click)=\"_handleCellClick($event, row, col)\"\n ></td>\n }\n </ng-container>\n }\n\n <!-- Header row render definition -->\n <tr *cdkHeaderRowDef=\"_actualColumns(); sticky: fixedHeader()\" cdk-header-row class=\"ids-table__header-row\"></tr>\n\n <!-- Row render definition -->\n <tr\n *cdkRowDef=\"let row; columns: _actualColumns(); let idx = dataIndex\"\n cdk-row\n class=\"ids-table__row\"\n [rowInfo]=\"{ rowData: row, index: idx }\"\n [ngClass]=\"(appearance() !== _appearanceZebra || idx % 2 === 0) ? 'ids-table__row--surface' : 'ids-table__row--secondary'\"\n (click)=\"_handleRowClick($event, row)\"\n (keydown)=\"_handleRowKeyDown($event, row)\"\n ></tr>\n\n <!-- Detail row render definition -->\n @if (masterDetail()) {\n <tr\n *cdkRowDef=\"let row; columns: _detailRowTemplates(); when: hasDetailRow()\"\n cdk-row\n class=\"ids-table__detail-row ids-table__row--surface\"\n [class.ids-table__detail-row--expanded]=\"_expandedRows.has(row) || _allRowsExpanded()\"\n ></tr>\n }\n\n <!-- Empty table message (inside the table) -->\n @if (!noRowsToShowOverlayBelow()) {\n <tr *cdkNoDataRow class=\"ids-table__row\">\n <td class=\"ids-table__cell\" [attr.colspan]=\"_actualColumns().length\">\n <ng-container [ngTemplateOutlet]=\"noRowsToShow\"></ng-container>\n </td>\n </tr>\n }\n </table>\n</div>\n<!-- Empty table message (outside the table) -->\n@if (noRowsToShowOverlayBelow() && _hasNoRows()) {\n <ng-container [ngTemplateOutlet]=\"noRowsToShow\"></ng-container>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -464,7 +464,7 @@ class IdsTooltipDirective extends DirectiveBaseWithDefaults {
|
|
|
464
464
|
}
|
|
465
465
|
}
|
|
466
466
|
_setupPointerEnterEventsIfNeeded() {
|
|
467
|
-
if (
|
|
467
|
+
if (!this.message() || this._passiveListeners.length) {
|
|
468
468
|
return;
|
|
469
469
|
}
|
|
470
470
|
if (this._platformSupportsMouseEvents()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i-cell-ids-angular-tooltip.mjs","sources":["../../../projects/widgets/tooltip/types/tooltip-position.type.ts","../../../projects/widgets/tooltip/types/tooltip-variant.type.ts","../../../projects/widgets/tooltip/tooltip-defaults.ts","../../../projects/widgets/tooltip/tooltip-position-strategies.ts","../../../projects/widgets/tooltip/tooltip.component.ts","../../../projects/widgets/tooltip/tooltip.component.html","../../../projects/widgets/tooltip/utils/tooltip-converters.ts","../../../projects/widgets/tooltip/tooltip.directive.ts","../../../projects/widgets/tooltip/i-cell-ids-angular-tooltip.ts"],"sourcesContent":["export const IdsTooltipPosition = {\n NORTH: 'north',\n NORTHEAST: 'northeast',\n EAST: 'east',\n SOUTHEAST: 'southeast',\n SOUTH: 'south',\n SOUTHWEST: 'southwest',\n WEST: 'west',\n NORTHWEST: 'northwest',\n} as const;\n\nexport type IdsTooltipPositionType = (typeof IdsTooltipPosition)[keyof typeof IdsTooltipPosition];\n","export const IdsTooltipVariant = {\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport type IdsTooltipVariantType = (typeof IdsTooltipVariant)[keyof typeof IdsTooltipVariant];\n","import { IdsTooltipPosition, IdsTooltipPositionType } from './types/tooltip-position.type';\nimport { IdsTooltipVariant, IdsTooltipVariantType } from './types/tooltip-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSizeType, IdsSize } from '@i-cell/ids-angular/core';\n\nconst DEFAULT_SHOW_DELAY = 1_000;\nconst DEFAULT_HIDE_DELAY = 1_000;\nconst DEFAULT_VIEWPORT_MARGIN = 8;\nconst DEFAULT_LONGPRESS_DELAY = 500;\nconst DEFAULT_TOUCHEND_HIDE_DELAY = 1500;\nconst DEFAULT_SCROLL_DEBOUNCE_TIME = 20;\n\nexport interface IdsTooltipDefaultConfig {\n position?: IdsTooltipPositionType\n size?: IdsSizeType\n variant?: IdsTooltipVariantType\n showPointer?: boolean\n showDelay?: number\n hideDelay?: number\n touchLongPressShowDelay?: number\n viewPortMargin?: number\n touchendHideDelay?: number\n scrollDebounceTime?: number\n}\n\nexport const IDS_TOOLTIP_DEFAULT_CONFIG = new InjectionToken<IdsTooltipDefaultConfig>(\n 'IDS_TOOLTIP_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_TOOLTIP_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_TOOLTIP_DEFAULT_CONFIG_FACTORY(): Required<IdsTooltipDefaultConfig> {\n return {\n position: IdsTooltipPosition.NORTH,\n size: IdsSize.COMPACT,\n variant: IdsTooltipVariant.DARK,\n showPointer: true,\n showDelay: DEFAULT_SHOW_DELAY,\n hideDelay: DEFAULT_HIDE_DELAY,\n touchLongPressShowDelay: DEFAULT_LONGPRESS_DELAY,\n viewPortMargin: DEFAULT_VIEWPORT_MARGIN,\n touchendHideDelay: DEFAULT_TOUCHEND_HIDE_DELAY,\n scrollDebounceTime: DEFAULT_SCROLL_DEBOUNCE_TIME,\n };\n}\n","import { IdsTooltipPosition, IdsTooltipPositionType } from './types/tooltip-position.type';\n\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy } from '@angular/cdk/overlay';\n\nexport function setTooltipFlexibleConnectedPositionStrategy(\n connectedTo: FlexibleConnectedPositionStrategy,\n tooltipPosition: IdsTooltipPositionType,\n): FlexibleConnectedPositionStrategy {\n switch (tooltipPosition) {\n case IdsTooltipPosition.NORTH:\n return connectedTo.withPositions([\n connectedPosition.north,\n connectedPosition.northwest,\n connectedPosition.northeast,\n connectedPosition.south,\n connectedPosition.southwest,\n connectedPosition.southeast,\n ]);\n case IdsTooltipPosition.NORTHEAST:\n return connectedTo.withPositions([\n connectedPosition.northeast,\n connectedPosition.southeast,\n connectedPosition.northwest,\n connectedPosition.southwest,\n ]);\n case IdsTooltipPosition.EAST:\n return connectedTo.withPositions([\n connectedPosition.east,\n connectedPosition.northeast,\n connectedPosition.southeast,\n connectedPosition.west,\n connectedPosition.northwest,\n connectedPosition.southwest,\n ]);\n case IdsTooltipPosition.SOUTHEAST:\n return connectedTo.withPositions([\n connectedPosition.southeast,\n connectedPosition.southwest,\n connectedPosition.northeast,\n connectedPosition.northwest,\n ]);\n case IdsTooltipPosition.SOUTH:\n return connectedTo.withPositions([\n connectedPosition.south,\n connectedPosition.southwest,\n connectedPosition.southeast,\n connectedPosition.north,\n connectedPosition.northwest,\n connectedPosition.northeast,\n ]);\n case IdsTooltipPosition.SOUTHWEST:\n return connectedTo.withPositions([\n connectedPosition.southwest,\n connectedPosition.northwest,\n connectedPosition.southeast,\n connectedPosition.northeast,\n ]);\n case IdsTooltipPosition.WEST:\n return connectedTo.withPositions([\n connectedPosition.west,\n connectedPosition.northwest,\n connectedPosition.southwest,\n connectedPosition.east,\n connectedPosition.northeast,\n connectedPosition.southeast,\n ]);\n case IdsTooltipPosition.NORTHWEST:\n return connectedTo.withPositions([\n connectedPosition.northwest,\n connectedPosition.southwest,\n connectedPosition.northeast,\n connectedPosition.southeast,\n ]);\n }\n}\n\nconst connectedPosition: Record<IdsTooltipPositionType, ConnectedPosition> = {\n north: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n },\n northeast: {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n east: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n },\n southeast: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n south: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n southwest: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n west: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n },\n northwest: {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n};\n","import { IdsTooltipPositionType } from './types/tooltip-position.type';\nimport { IdsTooltipVariantType } from './types/tooltip-variant.type';\nimport { IdsTooltipTextAlign } from './types/tooltip.type';\n\nimport { ChangeDetectionStrategy, Component, computed, input, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { IdsSizeType, ComponentBase } from '@i-cell/ids-angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Component({\n selector: 'ids-tooltip',\n imports: [],\n templateUrl: './tooltip.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(mouseenter)': '_handleMouseEnter()',\n '(mouseleave)': '_handleMouseLeave($event)',\n 'aria-hidden': 'true',\n '[class]': 'tooltipClass()',\n },\n})\nexport class IdsTooltipComponent extends ComponentBase implements OnDestroy {\n protected override get _hostName(): string {\n return 'tooltip';\n }\n\n private readonly _onHide = new Subject<void>();\n\n public message = input<string>();\n public position = input<IdsTooltipPositionType>();\n public size = input<IdsSizeType>();\n public variant = input<IdsTooltipVariantType>();\n public textAlign = input<IdsTooltipTextAlign>();\n public mouseLeaveHideDelay = input<number>(0);\n public tooltipClass = input<string>();\n public showPointer = input<boolean>();\n\n public triggerElement?: HTMLElement;\n private _hideTimeout?: ReturnType<typeof setTimeout>;\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.variant(),\n [\n 'position',\n this.position(),\n ],\n [\n 'text-align',\n this.textAlign(),\n ],\n this.showPointer() ? 'pointered' : null,\n ]));\n\n public get isHideTimerTicking(): boolean {\n return Boolean(this._hideTimeout);\n }\n\n public hide(delay: number): void {\n this._hideTimeout = setTimeout(() => {\n this._hideTimeout = undefined;\n this._onHide.next();\n }, delay);\n }\n\n public afterHidden(): Observable<void> {\n return this._onHide;\n }\n\n public abortHide(): void {\n clearTimeout(this._hideTimeout);\n this._hideTimeout = undefined;\n }\n\n private _handleMouseEnter(): void {\n if (this._hideTimeout) {\n this.abortHide();\n }\n }\n\n private _handleMouseLeave({ relatedTarget }: MouseEvent): void {\n if (!relatedTarget || !this.triggerElement?.contains(relatedTarget as Node)) {\n this.hide(this.mouseLeaveHideDelay());\n }\n }\n\n public ngOnDestroy(): void {\n this._onHide.complete();\n }\n}\n","<div class=\"ids-tooltip__content\">\n <span>{{ message() }}</span>\n</div>\n","import { IdsTooltipPosition, IdsTooltipPositionType } from '../types/tooltip-position.type';\n\nimport { ConnectionPositionPair } from '@angular/cdk/overlay';\n\nexport function connectedPositionPairToTooltipPosition(positionPair: ConnectionPositionPair): IdsTooltipPositionType {\n const { originX, originY, overlayX, overlayY } = positionPair;\n\n if (\n originX=== 'center' &&\n originY === 'top' &&\n overlayX === 'center' &&\n overlayY === 'bottom'\n ) {\n return IdsTooltipPosition.NORTH;\n }\n if (\n originX === 'end' &&\n originY === 'top' &&\n overlayX === 'start' &&\n overlayY === 'bottom'\n ) {\n return IdsTooltipPosition.NORTHEAST;\n }\n if (\n originX === 'end' &&\n originY === 'center' &&\n overlayX === 'start' &&\n overlayY === 'center'\n ) {\n return IdsTooltipPosition.EAST;\n }\n if (\n originX === 'end' &&\n originY === 'bottom' &&\n overlayX === 'start' &&\n overlayY === 'top'\n ) {\n return IdsTooltipPosition.SOUTHEAST;\n }\n if (\n originX === 'center' &&\n originY === 'bottom' &&\n overlayX === 'center' &&\n overlayY === 'top'\n ) {\n return IdsTooltipPosition.SOUTH;\n }\n if (\n originX === 'start' &&\n originY === 'bottom' &&\n overlayX === 'end' &&\n overlayY === 'top'\n ) {\n return IdsTooltipPosition.SOUTHWEST;\n }\n if (\n originX === 'start' &&\n originY === 'center' &&\n overlayX === 'end' &&\n overlayY === 'center'\n ) {\n return IdsTooltipPosition.WEST;\n }\n if (\n originX === 'start' &&\n originY === 'top' &&\n overlayX === 'end' &&\n overlayY === 'bottom'\n ) {\n return IdsTooltipPosition.NORTHWEST;\n }\n\n return IdsTooltipPosition.EAST;\n}\n","import { IDS_TOOLTIP_DEFAULT_CONFIG, IDS_TOOLTIP_DEFAULT_CONFIG_FACTORY, IdsTooltipDefaultConfig } from './tooltip-defaults';\nimport { setTooltipFlexibleConnectedPositionStrategy } from './tooltip-position-strategies';\nimport { IdsTooltipComponent } from './tooltip.component';\nimport { IdsTooltipPositionType } from './types/tooltip-position.type';\nimport { IdsTooltipVariantType } from './types/tooltip-variant.type';\nimport { IdsTooltipTextAlign, IdsTooltipTouchGestures } from './types/tooltip.type';\nimport { connectedPositionPairToTooltipPosition } from './utils/tooltip-converters';\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { ConnectionPositionPair, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions, Platform } from '@angular/cdk/platform';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ComponentRef, computed, Directive, effect, ElementRef, inject, input, NgZone, OnDestroy, signal, ViewContainerRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { coerceStringAttribute, DirectiveBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_TOOLTIP_DEFAULT_CONFIG_FACTORY();\nconst passiveListenerOptions = normalizePassiveListenerOptions({ passive: true });\n\n@Directive({\n selector: '[idsTooltip]',\n standalone: true,\n})\nexport class IdsTooltipDirective extends DirectiveBaseWithDefaults<IdsTooltipDefaultConfig> implements AfterViewInit, OnDestroy {\n protected override get _hostName(): string {\n return 'tooltip-trigger';\n }\n\n private readonly _focusMonitor = inject(FocusMonitor);\n private readonly _platform = inject(Platform);\n private readonly _ngZone = inject(NgZone);\n private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _scrollDispatcher = inject(ScrollDispatcher);\n private readonly _overlay = inject(Overlay);\n private readonly _document = inject(DOCUMENT);\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_TOOLTIP_DEFAULT_CONFIG);\n\n private readonly _passiveListeners: (readonly [string, EventListenerOrEventListenerObject])[] = [];\n\n private _overlayRef: OverlayRef | null = null;\n private _portal?: ComponentPortal<IdsTooltipComponent>;\n private _componentRef?: ComponentRef<IdsTooltipComponent> | null;\n private _tooltipInstance: IdsTooltipComponent | null = null;\n private _touchstartTimeout?: ReturnType<typeof setTimeout>;\n private _showTimeout?: ReturnType<typeof setTimeout>;\n private _pointerExitEventsInitialized = false;\n private _viewportMargin = this._defaultConfig.viewPortMargin;\n private _currentPosition = signal<IdsTooltipPositionType | null>(null);\n\n public message = input<string, string>('', { alias: 'idsTooltip', transform: coerceStringAttribute });\n public position = input<IdsTooltipPositionType>(this._defaultConfig.position, { alias: 'idsTooltipPosition' });\n public size = input<IdsSizeType>(this._defaultConfig.size, { alias: 'idsTooltipSize' });\n public variant = input<IdsTooltipVariantType>(this._defaultConfig.variant, { alias: 'idsTooltipVariant' });\n public showDelay = input<number>(this._defaultConfig.showDelay, { alias: 'idsTooltipShowDelay' });\n public hideDelay = input<number>(this._defaultConfig.hideDelay, { alias: 'idsTooltipHideDelay' });\n public disabled = input<boolean>(false, { alias: 'idsTooltipDisabled' });\n public touchGestures = input<IdsTooltipTouchGestures>('auto', { alias: 'idsTooltipTouchGestures' });\n public textAlign = input<IdsTooltipTextAlign>('auto', { alias: 'idsTooltipTextAlign' });\n public tooltipClass = input<string | undefined>(undefined, { alias: 'idsTooltipClass' });\n public showPointer = input<boolean>(this._defaultConfig.showPointer, { alias: 'idsTooltipShowPointer' });\n\n protected _hostClasses = computed(() => this._getHostClasses([]));\n\n private _tooltipClassEffect = effect(() => {\n this._setTooltipInputs(\n this.message(),\n this._currentPosition() ?? this.position(),\n this.size(),\n this.variant(),\n this.textAlign(),\n this.hideDelay(),\n this.tooltipClass(),\n this.showPointer(),\n );\n });\n\n public ngAfterViewInit(): void {\n this._setupPointerEnterEventsIfNeeded();\n\n this._focusMonitor\n .monitor(this._elementRef)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((origin) => {\n if (!origin) {\n this._ngZone.run(() => this.hide(0));\n } else if (origin === 'keyboard') {\n this._ngZone.run(() => this.show());\n }\n });\n }\n\n public show(): void {\n if (this.disabled() || !this.message() || this._tooltipInstance) {\n this._tooltipInstance?.abortHide();\n return;\n }\n\n const overlayRef = this._createOverlay();\n this._portal =\n this._portal || new ComponentPortal(IdsTooltipComponent, this._viewContainerRef);\n this._componentRef = overlayRef.attach(this._portal);\n this._tooltipInstance = this._componentRef.instance;\n const instance = this._tooltipInstance;\n instance.triggerElement = this._elementRef.nativeElement;\n this._setTooltipInputs(\n this.message(),\n this._currentPosition() ?? this.position(),\n this.size(),\n this.variant(),\n this.textAlign(),\n this.hideDelay(),\n this.tooltipClass(),\n this.showPointer(),\n );\n instance\n .afterHidden()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._detach();\n });\n }\n\n public hide(delay: number = this.hideDelay()): void {\n if (this._showTimeout) {\n clearTimeout(this._showTimeout);\n this._showTimeout = undefined;\n return;\n }\n\n const instance = this._tooltipInstance;\n if (instance?.isHideTimerTicking) {\n return;\n }\n\n if (instance) {\n instance.hide(delay);\n }\n }\n\n public toggle(): void {\n this._tooltipInstance ? this.hide() : this.show();\n }\n\n private _createOverlay(): OverlayRef {\n if (this._overlayRef) {\n this._detach();\n }\n\n const scrollableAncestors = this._scrollDispatcher.getAncestorScrollContainers(\n this._elementRef,\n );\n\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .withFlexibleDimensions(false)\n .withViewportMargin(this._viewportMargin)\n .withScrollableContainers(scrollableAncestors);\n\n strategy.positionChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((change) => {\n this._updateCurrentPositionClass(change.connectionPair);\n\n if (change.scrollableViewProperties.isOverlayClipped && this._tooltipInstance) {\n this._ngZone.run(() => this.hide(0));\n }\n });\n\n this._overlayRef = this._overlay.create({\n positionStrategy: strategy,\n panelClass: 'ids-tooltip-panel',\n scrollStrategy: this._overlay.scrollStrategies.reposition({ scrollThrottle: this._defaultConfig.scrollDebounceTime }),\n });\n\n this._updatePosition(this._overlayRef);\n\n this._overlayRef\n .detachments()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._detach());\n\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._tooltipInstance?.hide(0));\n\n this._overlayRef\n .keydownEvents()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event) => {\n if (this._tooltipInstance && event.key === 'Escape' && !hasModifierKey(event)) {\n event.preventDefault();\n event.stopPropagation();\n this._ngZone.run(() => this.hide(0));\n }\n });\n\n return this._overlayRef;\n }\n\n private _detach(): void {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n }\n this._componentRef?.destroy();\n this._tooltipInstance = null;\n }\n\n private _updatePosition(overlayRef: OverlayRef): void {\n const position = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n setTooltipFlexibleConnectedPositionStrategy(position, this.position());\n }\n\n private _updateCurrentPositionClass(connectionPair: ConnectionPositionPair): void {\n const newPosition: IdsTooltipPositionType = connectedPositionPairToTooltipPosition(connectionPair);\n\n if (newPosition !== this._currentPosition()) {\n const overlayRef = this._overlayRef;\n\n if (overlayRef) {\n const positionClassPrefix = 'is-tooltip-panel-position-';\n overlayRef.removePanelClass(positionClassPrefix + this._currentPosition());\n overlayRef.addPanelClass(positionClassPrefix + newPosition);\n }\n\n this._currentPosition.set(newPosition);\n }\n }\n\n private _setTooltipInputs(\n message: string,\n position: IdsTooltipPositionType,\n size: IdsSizeType,\n variant: IdsTooltipVariantType,\n textAlign: IdsTooltipTextAlign,\n hideDelay: number,\n tooltipClass: string | undefined,\n showPointer: boolean,\n ): void {\n if (this._tooltipInstance) {\n this._componentRef?.setInput('message', message);\n this._componentRef?.setInput('position', position);\n this._componentRef?.setInput('size', size);\n this._componentRef?.setInput('variant', variant);\n this._componentRef?.setInput('textAlign', textAlign);\n this._componentRef?.setInput('mouseLeaveHideDelay', hideDelay);\n this._componentRef?.setInput('tooltipClass', tooltipClass);\n this._componentRef?.setInput('showPointer', showPointer);\n }\n }\n\n private _setupPointerEnterEventsIfNeeded(): void {\n if (\n this.disabled() || !this.message() || this._passiveListeners.length\n ) {\n return;\n }\n\n if (this._platformSupportsMouseEvents()) {\n this._passiveListeners.push([\n 'mouseenter',\n (): void => {\n this._setupPointerExitEventsIfNeeded();\n this._showTimeout = setTimeout(() => {\n this._showTimeout = undefined;\n this.show();\n }, this.showDelay());\n },\n ]);\n } else if (this.touchGestures() !== 'off') {\n this._disableNativeGesturesIfNecessary();\n\n this._passiveListeners.push([\n 'touchstart',\n (): void => {\n this._setupPointerExitEventsIfNeeded();\n clearTimeout(this._touchstartTimeout);\n\n this._touchstartTimeout = setTimeout(\n () => this.show(),\n this._defaultConfig.touchLongPressShowDelay,\n );\n },\n ]);\n }\n\n this._addListeners(this._passiveListeners);\n }\n\n private _wheelListener(event: WheelEvent): void {\n if (this._tooltipInstance) {\n const elementUnderPointer = this._document.elementFromPoint(event.clientX, event.clientY);\n const element = this._elementRef.nativeElement;\n\n if (elementUnderPointer !== element && !element.contains(elementUnderPointer)) {\n this.hide();\n }\n }\n }\n\n private _setupPointerExitEventsIfNeeded(): void {\n if (this._pointerExitEventsInitialized) {\n return;\n }\n this._pointerExitEventsInitialized = true;\n\n const exitListeners: (readonly [string, EventListenerOrEventListenerObject])[] = [];\n if (this._platformSupportsMouseEvents()) {\n exitListeners.push(\n [\n 'mouseleave',\n (): void => {\n this.hide();\n },\n ],\n [\n 'wheel',\n (event): void => {\n this._wheelListener(event as WheelEvent);\n },\n ],\n );\n } else if (this.touchGestures() !== 'off') {\n this._disableNativeGesturesIfNecessary();\n const touchendListener = (): void => {\n clearTimeout(this._touchstartTimeout);\n this.hide(this._defaultConfig.touchendHideDelay);\n };\n\n exitListeners.push([\n 'touchend',\n touchendListener,\n ], [\n 'touchcancel',\n touchendListener,\n ]);\n }\n\n this._addListeners(exitListeners);\n this._passiveListeners.push(...exitListeners);\n }\n\n private _addListeners(listeners: (readonly [string, EventListenerOrEventListenerObject])[]): void {\n listeners.forEach(([\n event,\n listener,\n ]) => {\n this._elementRef.nativeElement.addEventListener(event, listener, passiveListenerOptions);\n });\n }\n\n private _disableNativeGesturesIfNecessary(): void {\n const gestures = this.touchGestures();\n\n if (gestures !== 'off') {\n const element = this._elementRef.nativeElement;\n const style = element.style;\n\n if (gestures === 'on' || (element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA')) {\n style.userSelect = 'none';\n }\n\n style.touchAction = 'none';\n }\n }\n\n private _platformSupportsMouseEvents(): boolean {\n return !this._platform.IOS && !this._platform.ANDROID;\n }\n\n public ngOnDestroy(): void {\n const nativeElement = this._elementRef.nativeElement;\n\n clearTimeout(this._touchstartTimeout);\n\n if (this._componentRef) {\n this._tooltipInstance = null;\n }\n\n this._passiveListeners.forEach(([\n event,\n listener,\n ]) => {\n nativeElement.removeEventListener(event, listener, passiveListenerOptions);\n });\n this._passiveListeners.length = 0;\n\n this._focusMonitor.stopMonitoring(nativeElement);\n }\n}\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":"i-cell-ids-angular-tooltip.mjs","sources":["../../../projects/widgets/tooltip/types/tooltip-position.type.ts","../../../projects/widgets/tooltip/types/tooltip-variant.type.ts","../../../projects/widgets/tooltip/tooltip-defaults.ts","../../../projects/widgets/tooltip/tooltip-position-strategies.ts","../../../projects/widgets/tooltip/tooltip.component.ts","../../../projects/widgets/tooltip/tooltip.component.html","../../../projects/widgets/tooltip/utils/tooltip-converters.ts","../../../projects/widgets/tooltip/tooltip.directive.ts","../../../projects/widgets/tooltip/i-cell-ids-angular-tooltip.ts"],"sourcesContent":["export const IdsTooltipPosition = {\n NORTH: 'north',\n NORTHEAST: 'northeast',\n EAST: 'east',\n SOUTHEAST: 'southeast',\n SOUTH: 'south',\n SOUTHWEST: 'southwest',\n WEST: 'west',\n NORTHWEST: 'northwest',\n} as const;\n\nexport type IdsTooltipPositionType = (typeof IdsTooltipPosition)[keyof typeof IdsTooltipPosition];\n","export const IdsTooltipVariant = {\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport type IdsTooltipVariantType = (typeof IdsTooltipVariant)[keyof typeof IdsTooltipVariant];\n","import { IdsTooltipPosition, IdsTooltipPositionType } from './types/tooltip-position.type';\nimport { IdsTooltipVariant, IdsTooltipVariantType } from './types/tooltip-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSizeType, IdsSize } from '@i-cell/ids-angular/core';\n\nconst DEFAULT_SHOW_DELAY = 1_000;\nconst DEFAULT_HIDE_DELAY = 1_000;\nconst DEFAULT_VIEWPORT_MARGIN = 8;\nconst DEFAULT_LONGPRESS_DELAY = 500;\nconst DEFAULT_TOUCHEND_HIDE_DELAY = 1500;\nconst DEFAULT_SCROLL_DEBOUNCE_TIME = 20;\n\nexport interface IdsTooltipDefaultConfig {\n position?: IdsTooltipPositionType\n size?: IdsSizeType\n variant?: IdsTooltipVariantType\n showPointer?: boolean\n showDelay?: number\n hideDelay?: number\n touchLongPressShowDelay?: number\n viewPortMargin?: number\n touchendHideDelay?: number\n scrollDebounceTime?: number\n}\n\nexport const IDS_TOOLTIP_DEFAULT_CONFIG = new InjectionToken<IdsTooltipDefaultConfig>(\n 'IDS_TOOLTIP_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_TOOLTIP_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_TOOLTIP_DEFAULT_CONFIG_FACTORY(): Required<IdsTooltipDefaultConfig> {\n return {\n position: IdsTooltipPosition.NORTH,\n size: IdsSize.COMPACT,\n variant: IdsTooltipVariant.DARK,\n showPointer: true,\n showDelay: DEFAULT_SHOW_DELAY,\n hideDelay: DEFAULT_HIDE_DELAY,\n touchLongPressShowDelay: DEFAULT_LONGPRESS_DELAY,\n viewPortMargin: DEFAULT_VIEWPORT_MARGIN,\n touchendHideDelay: DEFAULT_TOUCHEND_HIDE_DELAY,\n scrollDebounceTime: DEFAULT_SCROLL_DEBOUNCE_TIME,\n };\n}\n","import { IdsTooltipPosition, IdsTooltipPositionType } from './types/tooltip-position.type';\n\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy } from '@angular/cdk/overlay';\n\nexport function setTooltipFlexibleConnectedPositionStrategy(\n connectedTo: FlexibleConnectedPositionStrategy,\n tooltipPosition: IdsTooltipPositionType,\n): FlexibleConnectedPositionStrategy {\n switch (tooltipPosition) {\n case IdsTooltipPosition.NORTH:\n return connectedTo.withPositions([\n connectedPosition.north,\n connectedPosition.northwest,\n connectedPosition.northeast,\n connectedPosition.south,\n connectedPosition.southwest,\n connectedPosition.southeast,\n ]);\n case IdsTooltipPosition.NORTHEAST:\n return connectedTo.withPositions([\n connectedPosition.northeast,\n connectedPosition.southeast,\n connectedPosition.northwest,\n connectedPosition.southwest,\n ]);\n case IdsTooltipPosition.EAST:\n return connectedTo.withPositions([\n connectedPosition.east,\n connectedPosition.northeast,\n connectedPosition.southeast,\n connectedPosition.west,\n connectedPosition.northwest,\n connectedPosition.southwest,\n ]);\n case IdsTooltipPosition.SOUTHEAST:\n return connectedTo.withPositions([\n connectedPosition.southeast,\n connectedPosition.southwest,\n connectedPosition.northeast,\n connectedPosition.northwest,\n ]);\n case IdsTooltipPosition.SOUTH:\n return connectedTo.withPositions([\n connectedPosition.south,\n connectedPosition.southwest,\n connectedPosition.southeast,\n connectedPosition.north,\n connectedPosition.northwest,\n connectedPosition.northeast,\n ]);\n case IdsTooltipPosition.SOUTHWEST:\n return connectedTo.withPositions([\n connectedPosition.southwest,\n connectedPosition.northwest,\n connectedPosition.southeast,\n connectedPosition.northeast,\n ]);\n case IdsTooltipPosition.WEST:\n return connectedTo.withPositions([\n connectedPosition.west,\n connectedPosition.northwest,\n connectedPosition.southwest,\n connectedPosition.east,\n connectedPosition.northeast,\n connectedPosition.southeast,\n ]);\n case IdsTooltipPosition.NORTHWEST:\n return connectedTo.withPositions([\n connectedPosition.northwest,\n connectedPosition.southwest,\n connectedPosition.northeast,\n connectedPosition.southeast,\n ]);\n }\n}\n\nconst connectedPosition: Record<IdsTooltipPositionType, ConnectedPosition> = {\n north: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n },\n northeast: {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n east: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n },\n southeast: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n south: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n southwest: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n west: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n },\n northwest: {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n};\n","import { IdsTooltipPositionType } from './types/tooltip-position.type';\nimport { IdsTooltipVariantType } from './types/tooltip-variant.type';\nimport { IdsTooltipTextAlign } from './types/tooltip.type';\n\nimport { ChangeDetectionStrategy, Component, computed, input, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { IdsSizeType, ComponentBase } from '@i-cell/ids-angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Component({\n selector: 'ids-tooltip',\n imports: [],\n templateUrl: './tooltip.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(mouseenter)': '_handleMouseEnter()',\n '(mouseleave)': '_handleMouseLeave($event)',\n 'aria-hidden': 'true',\n '[class]': 'tooltipClass()',\n },\n})\nexport class IdsTooltipComponent extends ComponentBase implements OnDestroy {\n protected override get _hostName(): string {\n return 'tooltip';\n }\n\n private readonly _onHide = new Subject<void>();\n\n public message = input<string>();\n public position = input<IdsTooltipPositionType>();\n public size = input<IdsSizeType>();\n public variant = input<IdsTooltipVariantType>();\n public textAlign = input<IdsTooltipTextAlign>();\n public mouseLeaveHideDelay = input<number>(0);\n public tooltipClass = input<string>();\n public showPointer = input<boolean>();\n\n public triggerElement?: HTMLElement;\n private _hideTimeout?: ReturnType<typeof setTimeout>;\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.variant(),\n [\n 'position',\n this.position(),\n ],\n [\n 'text-align',\n this.textAlign(),\n ],\n this.showPointer() ? 'pointered' : null,\n ]));\n\n public get isHideTimerTicking(): boolean {\n return Boolean(this._hideTimeout);\n }\n\n public hide(delay: number): void {\n this._hideTimeout = setTimeout(() => {\n this._hideTimeout = undefined;\n this._onHide.next();\n }, delay);\n }\n\n public afterHidden(): Observable<void> {\n return this._onHide;\n }\n\n public abortHide(): void {\n clearTimeout(this._hideTimeout);\n this._hideTimeout = undefined;\n }\n\n private _handleMouseEnter(): void {\n if (this._hideTimeout) {\n this.abortHide();\n }\n }\n\n private _handleMouseLeave({ relatedTarget }: MouseEvent): void {\n if (!relatedTarget || !this.triggerElement?.contains(relatedTarget as Node)) {\n this.hide(this.mouseLeaveHideDelay());\n }\n }\n\n public ngOnDestroy(): void {\n this._onHide.complete();\n }\n}\n","<div class=\"ids-tooltip__content\">\n <span>{{ message() }}</span>\n</div>\n","import { IdsTooltipPosition, IdsTooltipPositionType } from '../types/tooltip-position.type';\n\nimport { ConnectionPositionPair } from '@angular/cdk/overlay';\n\nexport function connectedPositionPairToTooltipPosition(positionPair: ConnectionPositionPair): IdsTooltipPositionType {\n const { originX, originY, overlayX, overlayY } = positionPair;\n\n if (\n originX=== 'center' &&\n originY === 'top' &&\n overlayX === 'center' &&\n overlayY === 'bottom'\n ) {\n return IdsTooltipPosition.NORTH;\n }\n if (\n originX === 'end' &&\n originY === 'top' &&\n overlayX === 'start' &&\n overlayY === 'bottom'\n ) {\n return IdsTooltipPosition.NORTHEAST;\n }\n if (\n originX === 'end' &&\n originY === 'center' &&\n overlayX === 'start' &&\n overlayY === 'center'\n ) {\n return IdsTooltipPosition.EAST;\n }\n if (\n originX === 'end' &&\n originY === 'bottom' &&\n overlayX === 'start' &&\n overlayY === 'top'\n ) {\n return IdsTooltipPosition.SOUTHEAST;\n }\n if (\n originX === 'center' &&\n originY === 'bottom' &&\n overlayX === 'center' &&\n overlayY === 'top'\n ) {\n return IdsTooltipPosition.SOUTH;\n }\n if (\n originX === 'start' &&\n originY === 'bottom' &&\n overlayX === 'end' &&\n overlayY === 'top'\n ) {\n return IdsTooltipPosition.SOUTHWEST;\n }\n if (\n originX === 'start' &&\n originY === 'center' &&\n overlayX === 'end' &&\n overlayY === 'center'\n ) {\n return IdsTooltipPosition.WEST;\n }\n if (\n originX === 'start' &&\n originY === 'top' &&\n overlayX === 'end' &&\n overlayY === 'bottom'\n ) {\n return IdsTooltipPosition.NORTHWEST;\n }\n\n return IdsTooltipPosition.EAST;\n}\n","import { IDS_TOOLTIP_DEFAULT_CONFIG, IDS_TOOLTIP_DEFAULT_CONFIG_FACTORY, IdsTooltipDefaultConfig } from './tooltip-defaults';\nimport { setTooltipFlexibleConnectedPositionStrategy } from './tooltip-position-strategies';\nimport { IdsTooltipComponent } from './tooltip.component';\nimport { IdsTooltipPositionType } from './types/tooltip-position.type';\nimport { IdsTooltipVariantType } from './types/tooltip-variant.type';\nimport { IdsTooltipTextAlign, IdsTooltipTouchGestures } from './types/tooltip.type';\nimport { connectedPositionPairToTooltipPosition } from './utils/tooltip-converters';\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { ConnectionPositionPair, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions, Platform } from '@angular/cdk/platform';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ComponentRef, computed, Directive, effect, ElementRef, inject, input, NgZone, OnDestroy, signal, ViewContainerRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { coerceStringAttribute, DirectiveBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_TOOLTIP_DEFAULT_CONFIG_FACTORY();\nconst passiveListenerOptions = normalizePassiveListenerOptions({ passive: true });\n\n@Directive({\n selector: '[idsTooltip]',\n standalone: true,\n})\nexport class IdsTooltipDirective extends DirectiveBaseWithDefaults<IdsTooltipDefaultConfig> implements AfterViewInit, OnDestroy {\n protected override get _hostName(): string {\n return 'tooltip-trigger';\n }\n\n private readonly _focusMonitor = inject(FocusMonitor);\n private readonly _platform = inject(Platform);\n private readonly _ngZone = inject(NgZone);\n private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _scrollDispatcher = inject(ScrollDispatcher);\n private readonly _overlay = inject(Overlay);\n private readonly _document = inject(DOCUMENT);\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_TOOLTIP_DEFAULT_CONFIG);\n\n private readonly _passiveListeners: (readonly [string, EventListenerOrEventListenerObject])[] = [];\n\n private _overlayRef: OverlayRef | null = null;\n private _portal?: ComponentPortal<IdsTooltipComponent>;\n private _componentRef?: ComponentRef<IdsTooltipComponent> | null;\n private _tooltipInstance: IdsTooltipComponent | null = null;\n private _touchstartTimeout?: ReturnType<typeof setTimeout>;\n private _showTimeout?: ReturnType<typeof setTimeout>;\n private _pointerExitEventsInitialized = false;\n private _viewportMargin = this._defaultConfig.viewPortMargin;\n private _currentPosition = signal<IdsTooltipPositionType | null>(null);\n\n public message = input<string, string>('', { alias: 'idsTooltip', transform: coerceStringAttribute });\n public position = input<IdsTooltipPositionType>(this._defaultConfig.position, { alias: 'idsTooltipPosition' });\n public size = input<IdsSizeType>(this._defaultConfig.size, { alias: 'idsTooltipSize' });\n public variant = input<IdsTooltipVariantType>(this._defaultConfig.variant, { alias: 'idsTooltipVariant' });\n public showDelay = input<number>(this._defaultConfig.showDelay, { alias: 'idsTooltipShowDelay' });\n public hideDelay = input<number>(this._defaultConfig.hideDelay, { alias: 'idsTooltipHideDelay' });\n public disabled = input<boolean>(false, { alias: 'idsTooltipDisabled' });\n public touchGestures = input<IdsTooltipTouchGestures>('auto', { alias: 'idsTooltipTouchGestures' });\n public textAlign = input<IdsTooltipTextAlign>('auto', { alias: 'idsTooltipTextAlign' });\n public tooltipClass = input<string | undefined>(undefined, { alias: 'idsTooltipClass' });\n public showPointer = input<boolean>(this._defaultConfig.showPointer, { alias: 'idsTooltipShowPointer' });\n\n protected _hostClasses = computed(() => this._getHostClasses([]));\n\n private _tooltipClassEffect = effect(() => {\n this._setTooltipInputs(\n this.message(),\n this._currentPosition() ?? this.position(),\n this.size(),\n this.variant(),\n this.textAlign(),\n this.hideDelay(),\n this.tooltipClass(),\n this.showPointer(),\n );\n });\n\n public ngAfterViewInit(): void {\n this._setupPointerEnterEventsIfNeeded();\n\n this._focusMonitor\n .monitor(this._elementRef)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((origin) => {\n if (!origin) {\n this._ngZone.run(() => this.hide(0));\n } else if (origin === 'keyboard') {\n this._ngZone.run(() => this.show());\n }\n });\n }\n\n public show(): void {\n if (this.disabled() || !this.message() || this._tooltipInstance) {\n this._tooltipInstance?.abortHide();\n return;\n }\n\n const overlayRef = this._createOverlay();\n this._portal =\n this._portal || new ComponentPortal(IdsTooltipComponent, this._viewContainerRef);\n this._componentRef = overlayRef.attach(this._portal);\n this._tooltipInstance = this._componentRef.instance;\n const instance = this._tooltipInstance;\n instance.triggerElement = this._elementRef.nativeElement;\n this._setTooltipInputs(\n this.message(),\n this._currentPosition() ?? this.position(),\n this.size(),\n this.variant(),\n this.textAlign(),\n this.hideDelay(),\n this.tooltipClass(),\n this.showPointer(),\n );\n instance\n .afterHidden()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._detach();\n });\n }\n\n public hide(delay: number = this.hideDelay()): void {\n if (this._showTimeout) {\n clearTimeout(this._showTimeout);\n this._showTimeout = undefined;\n return;\n }\n\n const instance = this._tooltipInstance;\n if (instance?.isHideTimerTicking) {\n return;\n }\n\n if (instance) {\n instance.hide(delay);\n }\n }\n\n public toggle(): void {\n this._tooltipInstance ? this.hide() : this.show();\n }\n\n private _createOverlay(): OverlayRef {\n if (this._overlayRef) {\n this._detach();\n }\n\n const scrollableAncestors = this._scrollDispatcher.getAncestorScrollContainers(\n this._elementRef,\n );\n\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .withFlexibleDimensions(false)\n .withViewportMargin(this._viewportMargin)\n .withScrollableContainers(scrollableAncestors);\n\n strategy.positionChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((change) => {\n this._updateCurrentPositionClass(change.connectionPair);\n\n if (change.scrollableViewProperties.isOverlayClipped && this._tooltipInstance) {\n this._ngZone.run(() => this.hide(0));\n }\n });\n\n this._overlayRef = this._overlay.create({\n positionStrategy: strategy,\n panelClass: 'ids-tooltip-panel',\n scrollStrategy: this._overlay.scrollStrategies.reposition({ scrollThrottle: this._defaultConfig.scrollDebounceTime }),\n });\n\n this._updatePosition(this._overlayRef);\n\n this._overlayRef\n .detachments()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._detach());\n\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._tooltipInstance?.hide(0));\n\n this._overlayRef\n .keydownEvents()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event) => {\n if (this._tooltipInstance && event.key === 'Escape' && !hasModifierKey(event)) {\n event.preventDefault();\n event.stopPropagation();\n this._ngZone.run(() => this.hide(0));\n }\n });\n\n return this._overlayRef;\n }\n\n private _detach(): void {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n }\n this._componentRef?.destroy();\n this._tooltipInstance = null;\n }\n\n private _updatePosition(overlayRef: OverlayRef): void {\n const position = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n setTooltipFlexibleConnectedPositionStrategy(position, this.position());\n }\n\n private _updateCurrentPositionClass(connectionPair: ConnectionPositionPair): void {\n const newPosition: IdsTooltipPositionType = connectedPositionPairToTooltipPosition(connectionPair);\n\n if (newPosition !== this._currentPosition()) {\n const overlayRef = this._overlayRef;\n\n if (overlayRef) {\n const positionClassPrefix = 'is-tooltip-panel-position-';\n overlayRef.removePanelClass(positionClassPrefix + this._currentPosition());\n overlayRef.addPanelClass(positionClassPrefix + newPosition);\n }\n\n this._currentPosition.set(newPosition);\n }\n }\n\n private _setTooltipInputs(\n message: string,\n position: IdsTooltipPositionType,\n size: IdsSizeType,\n variant: IdsTooltipVariantType,\n textAlign: IdsTooltipTextAlign,\n hideDelay: number,\n tooltipClass: string | undefined,\n showPointer: boolean,\n ): void {\n if (this._tooltipInstance) {\n this._componentRef?.setInput('message', message);\n this._componentRef?.setInput('position', position);\n this._componentRef?.setInput('size', size);\n this._componentRef?.setInput('variant', variant);\n this._componentRef?.setInput('textAlign', textAlign);\n this._componentRef?.setInput('mouseLeaveHideDelay', hideDelay);\n this._componentRef?.setInput('tooltipClass', tooltipClass);\n this._componentRef?.setInput('showPointer', showPointer);\n }\n }\n\n private _setupPointerEnterEventsIfNeeded(): void {\n if (!this.message() || this._passiveListeners.length) {\n return;\n }\n\n if (this._platformSupportsMouseEvents()) {\n this._passiveListeners.push([\n 'mouseenter',\n (): void => {\n this._setupPointerExitEventsIfNeeded();\n this._showTimeout = setTimeout(() => {\n this._showTimeout = undefined;\n this.show();\n }, this.showDelay());\n },\n ]);\n } else if (this.touchGestures() !== 'off') {\n this._disableNativeGesturesIfNecessary();\n\n this._passiveListeners.push([\n 'touchstart',\n (): void => {\n this._setupPointerExitEventsIfNeeded();\n clearTimeout(this._touchstartTimeout);\n\n this._touchstartTimeout = setTimeout(\n () => this.show(),\n this._defaultConfig.touchLongPressShowDelay,\n );\n },\n ]);\n }\n\n this._addListeners(this._passiveListeners);\n }\n\n private _wheelListener(event: WheelEvent): void {\n if (this._tooltipInstance) {\n const elementUnderPointer = this._document.elementFromPoint(event.clientX, event.clientY);\n const element = this._elementRef.nativeElement;\n\n if (elementUnderPointer !== element && !element.contains(elementUnderPointer)) {\n this.hide();\n }\n }\n }\n\n private _setupPointerExitEventsIfNeeded(): void {\n if (this._pointerExitEventsInitialized) {\n return;\n }\n this._pointerExitEventsInitialized = true;\n\n const exitListeners: (readonly [string, EventListenerOrEventListenerObject])[] = [];\n if (this._platformSupportsMouseEvents()) {\n exitListeners.push(\n [\n 'mouseleave',\n (): void => {\n this.hide();\n },\n ],\n [\n 'wheel',\n (event): void => {\n this._wheelListener(event as WheelEvent);\n },\n ],\n );\n } else if (this.touchGestures() !== 'off') {\n this._disableNativeGesturesIfNecessary();\n const touchendListener = (): void => {\n clearTimeout(this._touchstartTimeout);\n this.hide(this._defaultConfig.touchendHideDelay);\n };\n\n exitListeners.push([\n 'touchend',\n touchendListener,\n ], [\n 'touchcancel',\n touchendListener,\n ]);\n }\n\n this._addListeners(exitListeners);\n this._passiveListeners.push(...exitListeners);\n }\n\n private _addListeners(listeners: (readonly [string, EventListenerOrEventListenerObject])[]): void {\n listeners.forEach(([\n event,\n listener,\n ]) => {\n this._elementRef.nativeElement.addEventListener(event, listener, passiveListenerOptions);\n });\n }\n\n private _disableNativeGesturesIfNecessary(): void {\n const gestures = this.touchGestures();\n\n if (gestures !== 'off') {\n const element = this._elementRef.nativeElement;\n const style = element.style;\n\n if (gestures === 'on' || (element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA')) {\n style.userSelect = 'none';\n }\n\n style.touchAction = 'none';\n }\n }\n\n private _platformSupportsMouseEvents(): boolean {\n return !this._platform.IOS && !this._platform.ANDROID;\n }\n\n public ngOnDestroy(): void {\n const nativeElement = this._elementRef.nativeElement;\n\n clearTimeout(this._touchstartTimeout);\n\n if (this._componentRef) {\n this._tooltipInstance = null;\n }\n\n this._passiveListeners.forEach(([\n event,\n listener,\n ]) => {\n nativeElement.removeEventListener(event, listener, passiveListenerOptions);\n });\n this._passiveListeners.length = 0;\n\n this._focusMonitor.stopMonitoring(nativeElement);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|