@skyux/ag-grid 14.3.7 → 14.3.9

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.
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-ag-grid.mjs","sources":["../../../../../libs/components/ag-grid/src/lib/modules/shared/sky-ag-grid-resources.module.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-event-utils.ts","../../../../../libs/components/ag-grid/src/lib/styles/ag-grid-theme.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-adapter.service.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-type.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-wrapper.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-wrapper.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete-context.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete.directive.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid.module.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/apply-lookup-properties-defaults.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-editor-initial-action.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-editor-utils.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-template/cell-renderer-template.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/column-filters/column-filter-datepicker/column-filter-datepicker.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/column-filters/column-filter-datepicker/column-filter-datepicker.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-group-info.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-group.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-group.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-row-selector/header-row-selector.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-row-selector/header-row-selector.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-info.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/icons/icon-map.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/loading/loading.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/loading/loading.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-class.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-class.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid.service.ts","../../../../../libs/components/ag-grid/src/index.ts","../../../../../libs/components/ag-grid/src/skyux-ag-grid.ts"],"sourcesContent":["/* istanbul ignore file */\n\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-ag-grid' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Row selector for row {0}',\n },\n sky_ag_grid_row_selector_column_heading: { message: 'Row selection' },\n sky_ag_grid_cell_editor_datepicker_aria_label: {\n message: 'Editable date {0} for row {1}',\n },\n sky_ag_grid_cell_editor_datepicker_hint_text: {\n message: 'Use the format {0}.',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Editable number {0} for row {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Editable text {0} for row {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Editable autocomplete {0} for row {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Enter a valid number.',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Enter a valid currency.',\n },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n sky_ag_grid_cell_editor_currency_aria_label: {\n message: 'Editable currency {0} for row {1}',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_asc: {\n message: 'Sort column {0}, currently ascending',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_desc: {\n message: 'Sort column {0}, currently descending',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted: {\n message: 'Sort column {0}, not currently sorted',\n },\n sky_ag_grid_column_group_header_expand_aria_label: {\n message: 'Expand column group {0}',\n },\n sky_ag_grid_column_group_header_collapse_aria_label: {\n message: 'Collapse column group {0}',\n },\n },\n 'FR-CA': {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Sélecteur de ligne pour la ligne {0}',\n },\n sky_ag_grid_row_selector_column_heading: {\n message: 'Sélection d’une ligne',\n },\n sky_ag_grid_cell_editor_datepicker_aria_label: {\n message: 'Date modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_datepicker_hint_text: {\n message: 'Utilisez le format {0}.',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Numéro modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Texte modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Saisie automatique modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Entrez un numéro valide.',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Entrez une devise valide.',\n },\n skyux_lookup_tokens_summary: { message: '{0} articles sélectionnés' },\n sky_ag_grid_cell_editor_currency_aria_label: {\n message: 'Devise modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_asc: {\n message: 'Trier la colonne {0}, actuellement en ordre croissant',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_desc: {\n message: 'Trier la colonne {0}, actuellement en ordre décroissant',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted: {\n message: 'Trier la colonne {0}, actuellement non triée',\n },\n sky_ag_grid_column_group_header_expand_aria_label: {\n message: 'Agrandir le groupe de colonnes {0}',\n },\n sky_ag_grid_column_group_header_collapse_aria_label: {\n message: 'Réduire le groupe de colonnes {0}',\n },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyAgGridResourcesModule {}\n","import {\n AgEventListener,\n AgEventTypeParams,\n AgPublicEventType,\n GridApi,\n} from 'ag-grid-community';\nimport { Observable } from 'rxjs';\n\nexport function fromGridEvent<\n TEventType extends AgPublicEventType,\n TData = unknown,\n TContext = unknown,\n>(\n target: Pick<GridApi, 'addEventListener' | 'removeEventListener'>,\n eventType: TEventType,\n): Observable<AgEventTypeParams<TData, TContext>[TEventType]> {\n return new Observable<AgEventTypeParams<TData, TContext>[TEventType]>(\n (subscriber) => {\n const handler: AgEventListener<TData, TContext, TEventType> = (\n event: AgEventTypeParams<TData, TContext>[TEventType],\n ): void => subscriber.next(event);\n target.addEventListener(eventType, handler);\n\n return () => {\n target.removeEventListener(eventType, handler);\n };\n },\n );\n}\n","import { SkyThemeSettings } from '@skyux/theme';\n\nimport {\n Theme,\n ThemeDefaultParams,\n colorSchemeLight,\n themeQuartz,\n} from 'ag-grid-community';\n\nconst defaultsForAllThemes: Partial<ThemeDefaultParams> = {\n backgroundColor:\n 'var(--sky-override-ag-grid-background-color, var(--sky-color-background-row-base))',\n borderColor:\n 'var(--sky-override-ag-grid-border-color, var(--sky-color-border-separator-row))',\n borderRadius:\n 'var(--sky-override-ag-grid-border-radius, var(--sky-border-radius-s))',\n cardShadow: 'none',\n cellHorizontalPadding:\n 'var(--sky-override-ag-grid-cell-horizontal-padding, var(--sky-comp-grid-cell-space-inset-left))',\n cellEditingBorder:\n 'var(--sky-override-ag-grid-cell-focus-border-width, var(--sky-border-width-input-focus)) solid var(--sky-override-ag-grid-cell-focus-border-color, var(--sky-color-border-input-focus))',\n checkboxCheckedBorderColor: { ref: 'checkboxCheckedShapeColor' },\n checkboxCheckedShapeColor:\n 'var(--sky-override-switch-checked-color, var(--sky-color-icon-inverse, var(--sky-text-color-default)))',\n checkboxIndeterminateBackgroundColor:\n 'var(--sky-override-switch-checked-color, var(--sky-color-background-selected-switch-base))',\n checkboxIndeterminateBorderColor: { ref: 'checkboxCheckedBorderColor' },\n checkboxIndeterminateShapeColor:\n 'var(--sky-override-switch-checked-color, var(--sky-color-icon-inverse, var(--sky-text-color-default)))',\n checkboxIndeterminateShapeImage: {\n svg: `<svg width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2 4.5A2.5 2.5 0 0 1 4.5 2h7A2.5 2.5 0 0 1 14 4.5v7a2.5 2.5 0 0 1-2.5 2.5h-7A2.5 2.5 0 0 1 2 11.5v-7Z\" fill=\"#212121\"/></svg>`,\n },\n checkboxUncheckedBackgroundColor:\n 'var(--sky-override-ag-grid-checkbox-unchecked-background-color, var(--sky-color-background-input-base))',\n checkboxUncheckedBorderColor: `var(\n --sky-override-ag-grid-checkbox-unchecked-border-color,\n var(--sky-color-border-switch-base)\n )`,\n checkboxCheckedShapeImage: {\n svg: `<svg width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13.9884 3.54756C13.6244 3.16685 13.0164 3.1491 12.6302 3.50792L5.62682 10.0157L3.64517 8.03282C3.27275 7.66016 2.66443 7.65572 2.28646 8.0229C1.90848 8.39007 1.90397 8.98983 2.2764 9.36248L4.85162 11.9393C5.25487 12.3428 5.91121 12.3548 6.32932 11.9663L13.9482 4.88659C14.3343 4.52777 14.3523 3.92827 13.9884 3.54756Z\" fill=\"#212121\"/></svg>`,\n },\n fontFamily:\n 'var(--sky-override-ag-grid-font-family, var(--sky-font-family-primary))',\n fontSize:\n 'var(--sky-override-ag-grid-font-size, var(--sky-font-size-body-m))',\n foregroundColor:\n 'var(--sky-override-ag-grid-foreground-color, var(--sky-color-text-default))',\n headerBackgroundColor:\n 'var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default))',\n headerColumnBorder:\n 'var(--sky-override-ag-grid-border-width, var(--sky-border-width-divider)) var(--sky-override-ag-grid-border-style, var(--sky-border-style-divider)) var(--sky-override-ag-grid-border-color, transparent)',\n headerColumnBorderHeight: '100%',\n headerColumnResizeHandleColor:\n 'var(--sky-override-ag-grid-column-divider-color, var(--sky-color-border-column_divider))',\n headerColumnResizeHandleHeight:\n 'var(--sky-override-ag-grid-header-resize-height, calc(var(--sky-font-line_height-body-m) * var(--sky-font-size-body-m)))',\n headerColumnResizeHandleWidth:\n 'var(--sky-override-ag-grid-header-divider-width, var(--sky-border-width-divider))',\n headerFontFamily: { ref: 'fontFamily' },\n headerHeight:\n 'var(--sky-override-ag-grid-header-height, calc(calc(var(--sky-font-line_height-body-m) * var(--sky-font-size-body-m)) + calc(var(--sky-comp-grid-cell-space-inset-top) + var(--sky-comp-grid-cell-space-inset-bottom))))',\n headerRowBorder:\n 'var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-separator-row)) var(--sky-override-ag-grid-header-row-border-style, var(--sky-border-style-separator-row)) var(--sky-override-ag-grid-border-color, var(--sky-color-border-separator-row))',\n iconSize: 12,\n inputDisabledBackgroundColor: 'transparent',\n inputFocusBorder: 'transparent',\n inputFocusShadow: 'none',\n invalidColor:\n 'var(--sky-override-ag-grid-invalid-color, var(--sky-color-background-action-danger-base))',\n listItemHeight: { ref: 'rowHeight' },\n oddRowBackgroundColor:\n 'var(--sky-override-ag-grid-odd-row-background-color, var(--sky-color-background-row-base))',\n pickerListBackgroundColor: { ref: 'backgroundColor' },\n popupShadow:\n 'var(--sky-override-ag-grid-popup-shadow, var(--sky-elevation-overlay-300))',\n rangeSelectionBorderColor:\n 'var(--sky-override-ag-grid-range-selection-border-color, var(--sky-color-border-input-focus))',\n rowBorder:\n 'var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-separator-row)) var(--sky-override-ag-grid-row-border-style, var(--sky-border-style-separator-row)) var(--sky-override-ag-grid-border-color, var(--sky-color-border-separator-row))',\n rowHeight:\n 'var(--sky-override-ag-grid-row-height, calc(calc(var(--sky-font-line_height-body-m) * var(--sky-font-size-body-m)) + calc(var(--sky-comp-grid-cell-space-inset-top) + var(--sky-comp-grid-cell-space-inset-bottom))))',\n rowHoverColor: 'transparent',\n selectedRowBackgroundColor:\n 'var(--sky-override-ag-grid-row-selected-color, var(--sky-color-background-selected-soft))',\n // TODO: investigate removing this in 13. Does not appear to be impacting anything, but it could be used by features we have not tested so major version removal is safest.\n spacing: 4,\n textColor:\n 'var(--sky-override-ag-grid-text-color, var(--sky-color-text-default))',\n tooltipBackgroundColor:\n 'var(--sky-override-ag-grid-tooltip-background-color, var(--sky-color-background-container-base))',\n wrapperBorderRadius: 0,\n};\n\nconst defaultsForDataEntryGrid = {\n columnBorder:\n 'var(--sky-override-ag-grid-column-border, var(--sky-border-width-separator-row) solid var(--sky-color-border-separator-row))',\n popupShadow: 'none',\n rowBorder:\n 'var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-separator-row)) solid var(--sky-override-ag-grid-border-color, var(--sky-color-border-separator-row))',\n headerRowBorder:\n 'var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-emphasized)) solid var(--sky-override-ag-grid-border-color, var(--sky-color-border-separator-row))',\n};\n\nconst SkyAgGridDataGrid = themeQuartz\n .withoutPart('iconSet')\n .withPart(colorSchemeLight)\n .withParams(defaultsForAllThemes);\n\nconst SkyAgGridDataEntryGrid = SkyAgGridDataGrid.withParams(\n defaultsForDataEntryGrid,\n);\n\nexport function getSkyAgGridTheme(\n grid: 'data-entry-grid' | 'data-grid',\n): Theme {\n if (grid === 'data-grid') {\n return SkyAgGridDataGrid;\n } else {\n return SkyAgGridDataEntryGrid;\n }\n}\n\ntype SkyAgGridThemeType =\n `ag-theme-sky-${'data-entry-grid' | 'data-grid'}-${'default' | 'modern-light' | 'modern-light-compact'}`;\n\nexport function agGridThemeIsCompact(\n themeSettings: SkyThemeSettings | undefined,\n compactLayout: boolean,\n): boolean {\n return (\n themeSettings?.theme.name === 'modern' &&\n (compactLayout || themeSettings?.spacing.name === 'compact')\n );\n}\n\nexport function getSkyAgGridThemeClassName(\n editable: boolean,\n themeSettings: SkyThemeSettings | undefined,\n compactLayout: boolean,\n): SkyAgGridThemeType {\n let theme = `ag-theme-sky-${editable ? 'data-entry-grid' : 'data-grid'}-`;\n if (themeSettings?.theme.name === 'modern') {\n theme += `modern-${themeSettings.mode.name}`;\n if (agGridThemeIsCompact(themeSettings, compactLayout)) {\n theme += `-compact`;\n }\n } else {\n theme += 'default';\n }\n return theme as SkyAgGridThemeType;\n}\n","import { Injectable } from '@angular/core';\nimport { SkyCoreAdapterService } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridAdapterService {\n #skyAdapterService: SkyCoreAdapterService;\n\n constructor(skyAdapterService: SkyCoreAdapterService) {\n this.#skyAdapterService = skyAdapterService;\n }\n\n public getElementOrParentWithClass(\n element: HTMLElement,\n className: string,\n ): HTMLElement | undefined {\n if (element && element.classList.contains(className)) {\n return element;\n } else if (element.parentElement) {\n return this.getElementOrParentWithClass(element.parentElement, className);\n }\n\n return undefined;\n }\n\n public setFocusedElementById(parentEl: HTMLElement, selector: string): void {\n const element = parentEl.querySelector(`#${selector}`) as HTMLElement;\n\n /* istanbul ignore else */\n if (element) {\n element.focus();\n }\n }\n\n public getFocusedElement(): HTMLElement {\n return document.activeElement as HTMLElement;\n }\n\n public getNextFocusableElement(\n currentEl: HTMLElement,\n parentEl?: HTMLElement,\n moveFocusLeft?: boolean,\n ): HTMLElement | undefined {\n if (parentEl) {\n const focusableChildren =\n this.#skyAdapterService.getFocusableChildren(parentEl);\n const currentElementIndex = focusableChildren.indexOf(currentEl);\n const nextIndex = moveFocusLeft\n ? currentElementIndex - 1\n : currentElementIndex + 1;\n\n if (\n (!moveFocusLeft && focusableChildren.length >= nextIndex) ||\n (moveFocusLeft && nextIndex >= 0)\n ) {\n return focusableChildren[nextIndex];\n }\n }\n\n return undefined;\n }\n\n public focusOnFocusableChildren(element: HTMLElement): void {\n const [focusChild] = this.#skyAdapterService.getFocusableChildren(element);\n\n if (focusChild?.offsetParent) {\n focusChild.focus();\n }\n }\n}\n","/**\n * These column types can be used by setting the AG Grid [column definition `type`](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing) to one of the following values.\n * Any [SKY UX component](https://developer.blackbaud.com/skyux/components) can be made into a [cell editor](https://www.ag-grid.com/angular-data-grid/cell-editors/) or [cell renderer](https://www.ag-grid.com/angular-data-grid/component-cell-renderer/) component. If you would like to use a component that does not have a column definition yet, please consider [contributing it](https://github.com/blackbaud/skyux/blob/main/CONTRIBUTING.md) to the SKY UX data entry grid module.\n */\nexport enum SkyCellType {\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX autocomplete components](https://developer.blackbaud.com/skyux/components/autocomplete). You can set any of the autocomplete component's properties by passing `SkyCellEditorAutocompleteParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/angular-data-grid/cell-editing/) based on other cell values. See the demo for an example. Text can be entered and a value selected from the provided list.\n *\n * **Read-only mode**\n *\n * Cells the column will display the currently selected value's name property by default. If the autocomplete needs to show a different property or needs to be formatted in any way, you can [define a `valueFormatter`](https://www.ag-grid.com/angular-data-grid/value-formatters/) on the column definition.\n */\n Autocomplete = 'skyCellAutocomplete',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as a currency amount.\n *\n * **Read-only mode**\n *\n * Formats the display as currency using [SKY UX numeric components](https://developer.blackbaud.com/skyux/components/numeric).\n */\n Currency = 'skyCellCurrency',\n /**\n * **Edit and read-only modes**\n *\n * Combines SkyCellType.Currency and SkyCellType.Validator, where the value is displayed as a currency and passed to a validator function.\n */\n CurrencyValidator = 'skyCellCurrencyValidator',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX datepicker components](https://developer.blackbaud.com/skyux/components/datepicker). You can set any of the datepicker component's properties by passing `SkyCellEditorDatepickerParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/angular-data-grid/cell-editing/) based on other cell values. See the demo for an example. Date values can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will display the currently selected date formatted as `MM-DD-YYYY`, or the date format of the locale passed to `getGridOptions()`. If you would like to overwrite this format, you can [define a `valueFormatter`](https://www.ag-grid.com/angular-data-grid/value-formatters/) on the column definition. See the demo for an example.\n */\n Date = 'skyCellDate',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX lookup components](https://developer.blackbaud.com/skyux-v5/components/lookup). You can set any of the lookup component's properties by passing `SkyCellEditorLookupParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/angular-data-grid/cell-editing/) based on other cell values. See the demo for an example. Text can be entered and a value selected from the provided list.\n *\n * **Read-only mode**\n *\n * Cells the column will display, by default, either: the name(s) of the selected value(s) if there are less than 6, or a summary count of the values if there are more than 5. If the lookup needs to show a different property or needs to be formatted in any way, you can [define a `valueFormatter`](https://www.ag-grid.com/angular-data-grid/value-formatters/) on the column definition.\n */\n Lookup = 'skyCellLookup',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as HTML number `inputs`. Only numbers can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will render as the number value.\n */\n Number = 'skyCellNumber',\n /**\n * **Edit and read-only modes**\n *\n * Combines SkyCellType.Number and SkyCellType.Validator, where the value is displayed as a number and passed to a validator function.\n */\n NumberValidator = 'skyCellNumberValidator',\n /**\n * **Edit and read-only modes**\n *\n * The header and cells in the column will render right aligned.\n */\n RightAligned = 'skyCellRightAligned',\n /**\n * **Edit and read-only modes**\n *\n * Cells in the column will render as [SKY UX checkbox components](https://developer.blackbaud.com/skyux/components/checkbox). It allows the user to select multiple rows, and adds a highlight to selected rows. The [Ag Grid `rowNode`](https://www.ag-grid.com/angular-data-grid/row-object/) will be updated to reflect the selected state.\n */\n RowSelector = 'skyCellRowSelector',\n /**\n * **Read-only mode**\n *\n * Cells in the column will render in a `TemplateRef` passed in the column definition's `cellRendererParams.template` property, with `value` and `row` context. See the demo for an example.\n */\n Template = 'skyCellTemplate',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as HTML text `inputs`. Any characters can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will render as their string value.\n */\n Text = 'skyCellText',\n /**\n * **Edit and read-only modes**\n *\n * Cells in the column will be passed to a validator function that flags erroneous entries. You can set the validator function and message by passing a `SkyAgGridValidatorProperties` object as `skyComponentProperties` to [column definition's `cellRendererParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing), like `skyComponentProperties.validator` and `skyComponentProperties.validatorMessage`. SkyCellType.Validator can be combined with other cell types, such as SkyCellType.Autocomplete or SkyCellType.Date, by using the array syntax for the [column definition's `type` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing).\n */\n Validator = 'skyCellValidator',\n}\n","import { NgClass } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DOCUMENT,\n DestroyRef,\n ElementRef,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n numberAttribute,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n SkyIdModule,\n SkyMutationObserverService,\n SkyViewkeeperModule,\n} from '@skyux/core';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport {\n CellEditingStartedEvent,\n CellFocusedEvent,\n HeaderFocusedEvent,\n} from 'ag-grid-community';\nimport { EMPTY, merge } from 'rxjs';\n\nimport {\n getSkyAgGridTheme,\n getSkyAgGridThemeClassName,\n} from '../../styles/ag-grid-theme';\n\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\nimport { SkyCellType } from './types/cell-type';\n\nlet idIndex = 0;\n\n@Component({\n selector: 'sky-ag-grid-wrapper',\n templateUrl: './ag-grid-wrapper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, SkyIdModule, SkyViewkeeperModule],\n host: {\n '[class.sky-ag-grid-layout-normal]': 'isNormalLayout()',\n },\n})\nexport class SkyAgGridWrapperComponent\n implements AfterContentInit, AfterViewInit\n{\n @ContentChild(AgGridAngular, {\n static: true,\n })\n public agGrid: AgGridAngular | undefined;\n\n protected readonly isNormalLayout = signal(false);\n\n /**\n * Enable a compact layout for the grid when using modern theme. Compact layout uses\n * a smaller font size and row height to display more data in a smaller space.\n */\n public readonly compact = input(false, { transform: booleanAttribute });\n\n /**\n * The minimum height of the grid in pixels. The default value is `50`.\n */\n public readonly minHeight = input<number, unknown>(50, {\n transform: numberAttribute,\n });\n\n public afterAnchorId: string;\n public beforeAnchorId: string;\n public gridId: string;\n\n /**\n * @internal\n */\n public readonly viewkeeperClasses = signal<string[]>([]);\n\n get #isInEditMode(): boolean {\n if (this.agGrid && this.agGrid.api) {\n const primaryGridEditing = this.agGrid.api.getEditingCells().length > 0;\n if (primaryGridEditing) {\n return true;\n } else if (this.agGrid.api.getGridOption('masterDetail')) {\n let innerEditing = false;\n this.agGrid.api.forEachDetailGridInfo((detailGrid) => {\n if (detailGrid?.api && detailGrid.api.getEditingCells().length > 0) {\n innerEditing = true;\n }\n });\n\n return innerEditing;\n }\n }\n return false;\n }\n\n protected readonly skyAgGridDiv =\n viewChild<ElementRef<HTMLElement>>('skyAgGridDiv');\n\n readonly #destroyRef = inject(DestroyRef);\n readonly #themeSvc = inject(SkyThemeService, {\n optional: true,\n });\n readonly #themeSettings = toSignal(this.#themeSvc?.settingsChange ?? EMPTY);\n readonly #adapterService = inject(SkyAgGridAdapterService);\n readonly #elementRef = inject(ElementRef<HTMLElement>);\n readonly #document = inject(DOCUMENT);\n readonly #mutationObserverService = inject(SkyMutationObserverService);\n readonly #hasEditableClass = signal(false);\n readonly #cellEditingClasses = signal<string[]>([]);\n\n public readonly wrapperClasses = computed(() => {\n const hasEditableClass = this.#hasEditableClass();\n const isCompact = this.compact();\n const themeSettings = this.#themeSettings()?.currentSettings;\n const cellEditingClasses = this.#cellEditingClasses();\n\n const skyAgGridThemeClassName = getSkyAgGridThemeClassName(\n hasEditableClass,\n themeSettings,\n isCompact,\n );\n\n const classes = [skyAgGridThemeClassName, ...cellEditingClasses];\n\n if (this.#getTextSelection(hasEditableClass)) {\n classes.push('sky-ag-grid-text-selection');\n }\n\n return [...new Set(classes)];\n });\n\n #agGridClassObserver: MutationObserver | undefined;\n\n constructor() {\n idIndex++;\n this.afterAnchorId = 'sky-ag-grid-nav-anchor-after-' + idIndex;\n this.beforeAnchorId = 'sky-ag-grid-nav-anchor-before-' + idIndex;\n this.gridId = 'sky-ag-grid-' + idIndex;\n\n effect(() => {\n const minHeight = this.minHeight();\n const skyAgGridDiv = this.skyAgGridDiv()?.nativeElement;\n skyAgGridDiv?.style.setProperty(\n '--sky-ag-grid-min-height',\n `${minHeight}px`,\n );\n });\n\n effect(() => {\n const hasEditableClass = this.#hasEditableClass();\n const skyAgGridTheme = getSkyAgGridTheme(\n hasEditableClass ? 'data-entry-grid' : 'data-grid',\n );\n this.agGrid?.api?.setGridOption('theme', skyAgGridTheme);\n });\n\n this.#destroyRef.onDestroy(() => {\n this.#agGridClassObserver?.disconnect();\n });\n }\n\n public ngAfterContentInit(): void {\n if (this.agGrid) {\n const domLayout = this.agGrid.gridOptions?.domLayout;\n if (domLayout === 'autoHeight') {\n if (this.agGrid.gridOptions?.context?.enableTopScroll) {\n this.viewkeeperClasses.update((prev) => [\n ...prev,\n '.ag-header',\n '.ag-body-horizontal-scroll',\n ]);\n } else {\n this.viewkeeperClasses.update((prev) => [...prev, '.ag-header']);\n }\n } else if (domLayout === 'normal') {\n this.isNormalLayout.set(true);\n }\n\n merge(\n this.agGrid.gridReady,\n this.agGrid.firstDataRendered,\n this.agGrid.rowDataUpdated,\n )\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => this.#moveHorizontalScroll());\n\n this.agGrid.cellEditingStarted\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((params: CellEditingStartedEvent) => {\n if (params.colDef.type) {\n const types = Array.isArray(params.colDef.type)\n ? params.colDef.type\n : [params.colDef.type];\n const addClasses = types.map(\n (t) => `sky-ag-grid-cell-editing-${t}`,\n );\n this.#cellEditingClasses.update((prev) => [...prev, ...addClasses]);\n if (\n types.includes(SkyCellType.Template) &&\n params.rowIndex !== null\n ) {\n this.agGrid?.api.setFocusedCell(params.rowIndex, params.column);\n }\n }\n });\n this.agGrid.cellEditingStopped\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => {\n this.#cellEditingClasses.set([]);\n });\n this.agGrid.cellFocused\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((event: CellFocusedEvent) => {\n const context = event.context || {};\n\n context['lastFocusedCell'] = {\n rowIndex: event.rowIndex,\n column:\n typeof event.column === 'object'\n ? event.column?.getColId()\n : `${event.column}`,\n };\n\n event.api?.setGridOption('context', context);\n });\n\n this.agGrid.headerFocused\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((event: HeaderFocusedEvent) => {\n const context = event.context || {};\n\n context['lastFocusedCell'] = {\n rowIndex: null,\n column: event.column?.getUniqueId\n ? event.column.getUniqueId()\n : `${event.column}`,\n };\n\n event.api?.setGridOption('context', context);\n });\n }\n }\n\n public ngAfterViewInit(): void {\n const agGridElement: HTMLElement | undefined =\n this.#elementRef.nativeElement.querySelector('ag-grid-angular') ??\n undefined;\n const callback = (): void => {\n this.#hasEditableClass.set(\n !!agGridElement?.classList.contains('sky-ag-grid-editable'),\n );\n };\n if (agGridElement) {\n this.#agGridClassObserver =\n this.#mutationObserverService.create(callback);\n this.#agGridClassObserver.observe(agGridElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n callback();\n }\n\n /**\n * Prevent closing a modal when focused in AG Grid.\n */\n public onKeyUpEscape($event: Event): void {\n $event.stopPropagation();\n this.agGrid?.api.stopEditing(true);\n }\n\n public onGridKeydown(event: KeyboardEvent): void {\n if (this.agGrid && !this.#isInEditMode && event.key === 'Tab') {\n const idToFocus = event.shiftKey\n ? this.beforeAnchorId\n : this.afterAnchorId;\n this.#adapterService.setFocusedElementById(\n this.#elementRef.nativeElement,\n idToFocus,\n );\n }\n }\n\n public onAnchorFocus(event: FocusEvent): void {\n const relatedTarget = event.relatedTarget as HTMLElement | undefined;\n const previousWasGrid =\n relatedTarget && this.#elementRef.nativeElement.contains(relatedTarget);\n\n if (this.agGrid && !previousWasGrid) {\n this.#elementRef.nativeElement\n .querySelector('.ag-tab-guard.ag-tab-guard-top')\n ?.focus();\n }\n }\n\n #moveHorizontalScroll(): void {\n const toTop = !!this.agGrid?.gridOptions?.context?.enableTopScroll;\n const root = this.#elementRef.nativeElement.querySelector('.ag-root');\n const header = root?.querySelector('.ag-header');\n const floatingBottom = root?.querySelector('.ag-floating-bottom');\n const scrollbar = root?.querySelector('.ag-body-horizontal-scroll');\n if (root && header && floatingBottom && scrollbar) {\n if (\n scrollbar.style.height !==\n scrollbar.style.getPropertyValue(\n '--sky-ag-body-horizontal-scroll-width',\n )\n ) {\n scrollbar.style.setProperty(\n '--sky-ag-body-horizontal-scroll-width',\n scrollbar.style.height,\n );\n }\n const isTop = root.children[1].matches('.ag-body-horizontal-scroll');\n if (toTop && !isTop) {\n const fragment = this.#document.createDocumentFragment();\n fragment.appendChild(scrollbar);\n header.after(fragment);\n } else if (!toTop && isTop) {\n const fragment = this.#document.createDocumentFragment();\n fragment.appendChild(scrollbar);\n floatingBottom.after(fragment);\n }\n }\n }\n\n #getTextSelection(hasEditableClass: boolean): boolean {\n if (this.agGrid?.gridOptions?.context?.enableCellTextSelection) {\n return !hasEditableClass;\n } else {\n return false;\n }\n }\n}\n","<span\n class=\"nav-anchor\"\n tabindex=\"0\"\n [id]=\"beforeAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n<div\n #skyAgGridDiv\n class=\"sky-ag-grid\"\n skyViewkeeperOmitShadow=\".ag-body-horizontal-scroll\"\n tabindex=\"0\"\n [class.sky-ag-grid-top-scrollbar]=\"\n agGrid?.gridOptions?.context &&\n agGrid?.gridOptions?.context['enableTopScroll']\n \"\n [ngClass]=\"wrapperClasses()\"\n [id]=\"gridId\"\n [skyViewkeeper]=\"viewkeeperClasses()\"\n (keydown)=\"onGridKeydown($event)\"\n (keyup.escape)=\"onKeyUpEscape($event)\"\n>\n <ng-content />\n</div>\n<span\n tabindex=\"0\"\n class=\"nav-anchor\"\n [id]=\"afterAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n","import {\n ChangeDetectorRef,\n Directive,\n OnDestroy,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n linkedSignal,\n signal,\n untracked,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { SkyBreakpoint, SkyMediaQueryService } from '@skyux/core';\nimport {\n SkyDataManagerColumnPickerOption,\n SkyDataManagerService,\n SkyDataManagerState,\n SkyDataViewColumnWidths,\n SkyDataViewState,\n} from '@skyux/data-manager';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport {\n ColumnMovedEvent,\n ColumnResizedEvent,\n ColumnState,\n DragStoppedEvent,\n GridApi,\n IColumnLimit,\n RowSelectedEvent,\n} from 'ag-grid-community';\nimport { Subject, filter, map, of, switchMap, takeUntil } from 'rxjs';\n\nimport { fromGridEvent } from './ag-grid-event-utils';\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\nfunction toColumnWidthName(breakpoint: SkyBreakpoint): 'xs' | 'sm' {\n return breakpoint === 'xs' ? 'xs' : 'sm';\n}\n\n/**\n * Connects `SkyAgGridWrapperComponent` with a `SkyDataViewComponent` to control the grid using a `SkyDataManagerService` instance.\n */\n@Directive({ selector: '[skyAgGridDataManagerAdapter]' })\nexport class SkyAgGridDataManagerAdapterDirective implements OnDestroy {\n public readonly viewId = input<string>();\n\n public readonly agGridList = contentChildren<AgGridAngular>(AgGridAngular, {\n descendants: true,\n });\n\n public skyAgGridWrapperList = contentChildren(SkyAgGridWrapperComponent, {\n descendants: true,\n });\n\n readonly #currentAgGrid = signal<AgGridAngular | undefined>(undefined);\n readonly #isAgGridReady = linkedSignal(\n computed(() => {\n this.#currentAgGrid();\n return false;\n }),\n );\n readonly #currentAgGridReady = computed(() => {\n const agGrid = this.#currentAgGrid();\n if (this.#isAgGridReady()) {\n return agGrid;\n }\n return undefined;\n });\n #currentDataState: SkyDataManagerState | undefined;\n #currentSkyAgGridWrapper: SkyAgGridWrapperComponent | undefined;\n readonly #ngUnsubscribe = new Subject<void>();\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dataManagerSvc = inject(SkyDataManagerService);\n readonly #viewConfigs = toSignal(this.#dataManagerSvc.getDataViewsUpdates(), {\n initialValue: [],\n });\n readonly #viewConfig = computed(() => {\n const viewId = this.viewId();\n return this.#viewConfigs().find((vc) => vc.id === viewId);\n });\n readonly #activeView = toSignal(\n this.#dataManagerSvc.getActiveViewIdUpdates(),\n );\n readonly #isActiveView = computed(() => {\n const activeViewId = this.#activeView();\n const viewId = this.viewId();\n return activeViewId === viewId;\n });\n\n readonly #breakpoint = toSignal(\n inject(SkyMediaQueryService).breakpointChange.pipe(map(toColumnWidthName)),\n );\n\n constructor() {\n effect(() => {\n const list = this.agGridList();\n\n this.#checkForAgGrid(list);\n });\n\n effect(() => {\n const list = this.skyAgGridWrapperList();\n\n this.#checkForSkyAgGridWrapper(list);\n });\n\n effect(() => {\n const breakpoint = this.#breakpoint();\n\n if (breakpoint) {\n this.#applyColumnWidths(breakpoint);\n }\n });\n\n effect(() => {\n const viewId = this.viewId();\n const agGridApi = this.#currentAgGridReady()?.api;\n if (viewId && agGridApi) {\n if (agGridApi.getGridOption('context')?.enableTopScroll) {\n this.#dataManagerSvc.setViewkeeperClasses(viewId, [\n '.ag-header',\n '.ag-body-horizontal-scroll',\n ]);\n } else {\n this.#dataManagerSvc.setViewkeeperClasses(viewId, ['.ag-header']);\n }\n }\n });\n\n effect(() => {\n const isActiveView = this.#isActiveView();\n const agGrid = untracked(this.#currentAgGridReady);\n if (isActiveView) {\n agGrid?.api?.refreshCells();\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.#unregisterAgGrid();\n this.#ngUnsubscribe.complete();\n }\n\n #checkForAgGrid(agGridList: readonly AgGridAngular[]): void {\n const agGrid = agGridList[0];\n const agGridCount = agGridList.length;\n\n if (agGrid) {\n if (agGrid !== this.#currentAgGrid()) {\n this.#registerAgGrid(agGrid);\n }\n\n if (agGridCount > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.',\n );\n }\n }\n }\n\n #checkForSkyAgGridWrapper(\n wrappers: readonly SkyAgGridWrapperComponent[],\n ): void {\n const count = wrappers.length;\n const wrapper = wrappers[0];\n\n /* istanbul ignore else */\n if (wrapper !== this.#currentSkyAgGridWrapper) {\n this.#registerSkyAgGridWrapper(wrapper);\n }\n\n if (count > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.',\n );\n }\n }\n\n #unregisterAgGrid(): void {\n this.#ngUnsubscribe.next();\n this.#currentAgGrid.set(undefined);\n }\n\n #unregisterSkyAgGridWrapper(): void {\n this.#currentSkyAgGridWrapper = undefined;\n }\n\n #registerSkyAgGridWrapper(wrapper: SkyAgGridWrapperComponent): void {\n this.#unregisterSkyAgGridWrapper();\n this.#currentSkyAgGridWrapper = wrapper;\n\n setTimeout(() => {\n if (this.#currentSkyAgGridWrapper) {\n this.#currentSkyAgGridWrapper.viewkeeperClasses.set([]);\n }\n });\n }\n\n #registerAgGrid(agGrid: AgGridAngular): void {\n this.#unregisterAgGrid();\n\n this.#currentAgGrid.set(agGrid);\n\n if (agGrid) {\n agGrid.gridReady\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n switchMap(() => {\n let viewConfig = this.#viewConfig();\n if (viewConfig) {\n viewConfig = {\n ...viewConfig,\n onSelectAllClick: (): void => {\n if (!agGrid.api.isDestroyed()) {\n agGrid.api.selectAll();\n }\n },\n onClearAllClick: (): void => {\n if (!agGrid.api.isDestroyed()) {\n agGrid.api.deselectAll();\n }\n },\n };\n if (viewConfig.columnPickerEnabled && !viewConfig.columnOptions) {\n viewConfig.columnOptions = this.#readColumnOptionsFromGrid(\n agGrid.api,\n );\n }\n this.#dataManagerSvc.updateViewConfig(viewConfig);\n\n this.#applyColumnWidths();\n return this.#dataManagerSvc.getDataStateUpdates(viewConfig.id);\n }\n /* istanbul ignore next */\n return of(undefined);\n }),\n filter(Boolean),\n )\n .subscribe((dataState: SkyDataManagerState) => {\n this.#currentDataState = dataState;\n this.#displayColumns(dataState);\n this.#applySort(dataState);\n this.#isAgGridReady.set(true);\n });\n\n agGrid.gridReady\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n switchMap(() => fromGridEvent(agGrid.api, 'gridPreDestroyed')),\n )\n .subscribe(() => {\n this.#unregisterAgGrid();\n });\n\n agGrid.columnMoved\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n filter(\n (event: ColumnMovedEvent) =>\n ![\n 'gridInitializing',\n 'uiColumnResized',\n 'uiColumnDragged',\n 'api',\n ].includes(event.source),\n ),\n )\n .subscribe((value: ColumnMovedEvent) => {\n this.#updateColumnsInCurrentDataState(value.api);\n });\n\n agGrid.columnResized\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n filter(\n (event: ColumnResizedEvent) => event.source === 'uiColumnResized',\n ),\n )\n .subscribe((event: ColumnResizedEvent) => {\n const colId = event.column?.getColId();\n const width = event.column?.getActualWidth();\n const breakpoint = this.#breakpoint();\n\n if (colId && width && breakpoint) {\n this.#updateColumnWidth(colId, width, breakpoint);\n }\n });\n\n agGrid.dragStopped\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value: DragStoppedEvent) => {\n this.#updateColumnsInCurrentDataState(value.api);\n });\n\n agGrid.rowSelected\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event: RowSelectedEvent) => {\n const viewConfig = this.#viewConfig();\n if (viewConfig && this.#currentDataState) {\n const row = event.node;\n const selectedIds = [...(this.#currentDataState.selectedIds || [])];\n const rowIndex = selectedIds.indexOf(row.data.id);\n\n if (row.isSelected() && rowIndex === -1) {\n selectedIds.push(row.data.id);\n } else if (!row.isSelected() && rowIndex !== -1) {\n selectedIds.splice(rowIndex, 1);\n }\n\n const newState = new SkyDataManagerState(\n this.#currentDataState.getStateOptions(),\n );\n newState.selectedIds = selectedIds;\n this.#currentDataState = newState;\n this.#dataManagerSvc.updateDataState(newState, viewConfig.id);\n\n this.#changeDetector.markForCheck();\n }\n });\n\n agGrid.sortChanged.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n const gridColumnStates: ColumnState[] = agGrid.api.getColumnState();\n const viewConfig = this.#viewConfig();\n\n const activeSortColumnState =\n gridColumnStates?.find(\n (aGridColumnState) => aGridColumnState.sortIndex === 0,\n ) ??\n gridColumnStates?.find((aGridColumnState) => aGridColumnState.sort);\n\n if (viewConfig && this.#currentDataState) {\n const newState = new SkyDataManagerState(\n this.#currentDataState.getStateOptions(),\n );\n if (activeSortColumnState) {\n const activeSortColumnDef = agGrid.api.getColumnDef(\n activeSortColumnState.colId,\n );\n newState.activeSortOption = {\n descending: activeSortColumnState.sort === 'desc',\n id: activeSortColumnState.colId,\n propertyName: activeSortColumnDef?.field || '',\n label: activeSortColumnDef?.headerName || '',\n };\n } else {\n newState.activeSortOption = undefined;\n }\n this.#currentDataState = newState;\n this.#dataManagerSvc.updateDataState(newState, viewConfig.id);\n }\n });\n }\n }\n\n #updateColumnsInCurrentDataState(api: GridApi): void {\n const viewConfig = this.#viewConfig();\n if (viewConfig && this.#currentDataState) {\n const columnOrder = this.#getColumnOrder(api);\n\n const viewState = this.#currentDataState.getViewStateById(viewConfig.id);\n\n if (\n viewState &&\n (viewState.displayedColumnIds.length !== columnOrder.length ||\n viewState.displayedColumnIds.some((col, i) => col !== columnOrder[i]))\n ) {\n const updatedViewState = new SkyDataViewState(\n viewState.getViewStateOptions(),\n );\n updatedViewState.displayedColumnIds = columnOrder;\n\n const newDataState = this.#currentDataState.addOrUpdateView(\n viewConfig.id,\n updatedViewState,\n );\n this.#currentDataState = newDataState;\n this.#dataManagerSvc.updateDataState(newDataState, viewConfig.id);\n }\n }\n }\n\n #getColumnOrder(api: GridApi | undefined): string[] {\n /* istanbul ignore next */\n return (api?.getColumnState() ?? [])\n .filter((state) => !state.hide)\n .map((state) => state.colId);\n }\n\n #displayColumns(dataState: SkyDataManagerState): void {\n const agGrid = this.#currentAgGrid();\n const viewConfig = this.#viewConfig();\n\n if (agGrid && viewConfig) {\n const viewState = dataState.getViewStateById(viewConfig.id);\n let displayedColumnIds: string[] = [];\n\n /*istanbul ignore else*/\n if (viewState?.displayedColumnIds) {\n displayedColumnIds = viewState.displayedColumnIds;\n }\n\n const columnOrder = this.#getColumnOrder(agGrid.api);\n\n if (\n (displayedColumnIds.length !== columnOrder.length ||\n displayedColumnIds.some((col, i) => col !== columnOrder[i])) &&\n agGrid.api\n ) {\n const hideColumns = agGrid.api\n .getColumnState()\n .map((col) => col.colId)\n .filter((colId) => !displayedColumnIds.includes(colId));\n\n agGrid.api.setColumnsVisible(hideColumns, false);\n agGrid.api.setColumnsVisible(displayedColumnIds, true);\n agGrid.api.moveColumns(displayedColumnIds, 0);\n this.#removeColumnWidths(hideColumns);\n }\n }\n }\n\n #applySort(dataState: SkyDataManagerState): void {\n const agGridApi = this.#currentAgGrid()?.api;\n const activeSort = dataState.activeSortOption;\n\n if (agGridApi && activeSort) {\n agGridApi.applyColumnState({\n state: [\n {\n colId: activeSort.id,\n sort: activeSort.descending ? 'desc' : 'asc',\n },\n ],\n defaultState: { sort: null },\n });\n }\n }\n\n #updateColumnWidth(\n colId: string,\n width: number,\n breakpoint: SkyBreakpoint,\n ): void {\n const viewId = this.viewId();\n const viewState =\n viewId && this.#currentDataState?.getViewStateById(viewId);\n if (viewState && viewId && this.#currentDataState) {\n const updatedViewState = new SkyDataViewState(\n viewState.getViewStateOptions(),\n );\n\n updatedViewState.columnWidths[toColumnWidthName(breakpoint)][colId] =\n width;\n\n const newDataState = this.#currentDataState.addOrUpdateView(\n viewId,\n updatedViewState,\n );\n this.#currentDataState = newDataState;\n this.#dataManagerSvc.updateDataState(newDataState, viewId);\n }\n }\n\n #removeColumnWidths(colIds: string[]): void {\n const viewId = this.viewId();\n const viewState =\n viewId && this.#currentDataState?.getViewStateById(viewId);\n\n if (viewState && viewId && this.#currentDataState) {\n const updatedViewState = new SkyDataViewState(\n viewState.getViewStateOptions(),\n );\n\n for (const colId of colIds) {\n delete updatedViewState.columnWidths['xs'][colId];\n delete updatedViewState.columnWidths['sm'][colId];\n }\n\n const newDataState = this.#currentDataState.addOrUpdateView(\n viewId,\n updatedViewState,\n );\n this.#currentDataState = newDataState;\n this.#dataManagerSvc.updateDataState(newDataState, viewId);\n }\n }\n\n #applyColumnWidths(breakpoint?: SkyBreakpoint): void {\n breakpoint ??= this.#breakpoint();\n const currentAgGridApi = this.#currentAgGridReady()?.api;\n const viewId = this.viewId();\n\n if (breakpoint && currentAgGridApi) {\n const viewState =\n viewId && this.#currentDataState?.getViewStateById(viewId);\n\n if (viewState && viewState.columnWidths && viewState.displayedColumnIds) {\n const columnLimits = this.#getGridColumnLimits(\n viewState.displayedColumnIds,\n viewState.columnWidths,\n toColumnWidthName(breakpoint),\n );\n\n currentAgGridApi.sizeColumnsToFit({ columnLimits });\n }\n }\n }\n\n #getGridColumnLimits(\n displayedColumns: string[],\n currentWidths: SkyDataViewColumnWidths,\n breakpointName: keyof SkyDataViewColumnWidths,\n ): IColumnLimit[] {\n const gridColumnLimits: IColumnLimit[] = [];\n\n for (const column of displayedColumns) {\n const columnWidth = currentWidths[breakpointName][column];\n\n if (columnWidth) {\n gridColumnLimits.push({\n key: column,\n minWidth: columnWidth,\n maxWidth: columnWidth,\n });\n }\n }\n return gridColumnLimits;\n }\n\n #readColumnOptionsFromGrid(api: GridApi): SkyDataManagerColumnPickerOption[] {\n // Technically `api.getColumns()` can return null but it's not testable.\n /* istanbul ignore next */\n const columns = api.getColumns() ?? [];\n return columns.map((col) => {\n const colDef = col.getColDef();\n return {\n id: col.getColId(),\n initialHide: colDef.initialHide,\n label: `${colDef.headerName ?? ''}`,\n alwaysDisplayed:\n colDef.lockVisible || !colDef.headerName || col.isPinned(),\n };\n });\n }\n}\n","import {\n ElementRef,\n InjectionToken,\n Signal,\n WritableSignal,\n} from '@angular/core';\n\nimport { GridApi } from 'ag-grid-community';\nimport { Subject, Subscription } from 'rxjs';\n\n/**\n * @internal\n */\nexport const SKY_AG_GRID_ROW_DELETE_CONTEXT =\n new InjectionToken<SkyAgGridRowDeleteContext>('SkyAgGridRowDeleteContext');\n\n/**\n * Used to provide dependencies to the `SkyAgGridRowDeleteComponent` overlay.\n * @internal\n */\nexport class SkyAgGridRowDeleteContext {\n public readonly cancelRowDelete = new Subject<string>();\n public readonly confirmRowDelete = new Subject<string>();\n public readonly subscription = new Subscription();\n\n constructor(\n public readonly rows: Signal<string[]>,\n public readonly gridElement: Signal<ElementRef<HTMLElement>[] | undefined>,\n public readonly gridApi: WritableSignal<GridApi | undefined>,\n ) {\n this.subscription.add(() => {\n this.cancelRowDelete.complete();\n this.confirmRowDelete.complete();\n });\n }\n}\n","import { Component, ElementRef, computed, inject, signal } from '@angular/core';\nimport {\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport { SkyAffixModule, SkyResizeObserverService } from '@skyux/core';\nimport { SkyInlineDeleteModule } from '@skyux/layout';\n\nimport { GridApi } from 'ag-grid-community';\nimport {\n filter,\n map,\n merge,\n of,\n scan,\n startWith,\n switchMap,\n takeUntil,\n} from 'rxjs';\n\nimport { fromGridEvent } from './ag-grid-event-utils';\nimport { SKY_AG_GRID_ROW_DELETE_CONTEXT } from './ag-grid-row-delete-context';\n\n/**\n * Component for rendering the inline delete template in the overlay.\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-row-delete',\n templateUrl: './ag-grid-row-delete.component.html',\n styleUrl: './ag-grid-row-delete.component.css',\n imports: [SkyInlineDeleteModule, SkyAffixModule],\n host: {\n '[style]': '\"--table-width: \" + tableWidthStyle()',\n },\n})\nexport class SkyAgGridRowDeleteComponent {\n public readonly service = inject(SKY_AG_GRID_ROW_DELETE_CONTEXT);\n\n protected tableWidthStyle = computed(() => {\n const tableWidth = this.tableWidth();\n if (tableWidth > 0) {\n return `${tableWidth}px`;\n }\n return 'auto';\n });\n\n protected rowsWithElements = computed(\n (): { rowId: string; increment: string; element: HTMLElement | null }[] => {\n const rows = this.service.rows();\n const gridElement = this.service.gridElement();\n const gridApi = this.service.gridApi();\n const increment = this.gridChanges();\n if (!gridElement || !gridApi) {\n return [];\n }\n return rows\n .filter((rowId) => !!rowId && !!gridApi.getRowNode(rowId))\n .map((rowId) => {\n const element = gridElement[0]?.nativeElement\n .querySelector<HTMLElement>(`\n [row-id=\"${rowId}\"] div[aria-colindex],\n .ag-row.sky-ag-grid-row-${rowId} div[aria-colindex]\n `);\n return { rowId, element, increment: `${rowId}-${increment}` };\n });\n },\n );\n\n protected readonly pending = signal<string[]>([]);\n protected readonly tableWidth = signal<number>(0);\n\n // Force redrawing overlays when the grid changes by incrementing a number.\n protected readonly gridChanges = toSignal(\n toObservable(this.service.gridApi).pipe(\n switchMap((gridApi) =>\n gridApi\n ? merge(\n fromGridEvent(gridApi, 'componentStateChanged'),\n fromGridEvent(gridApi, 'firstDataRendered'),\n fromGridEvent(gridApi, 'gridSizeChanged'),\n fromGridEvent(gridApi, 'modelUpdated'),\n fromGridEvent(gridApi, 'rowDataUpdated'),\n ).pipe(takeUntil(fromGridEvent(gridApi, 'gridPreDestroyed')))\n : of(undefined),\n ),\n startWith(1),\n map(() => 1),\n scan((acc, val) => acc + val),\n ),\n { initialValue: 0 },\n );\n\n readonly #resizeObserverSvc = inject(SkyResizeObserverService);\n\n constructor() {\n // Maintain table width when the grid is resized.\n toObservable(this.service.gridElement)\n .pipe(\n filter(\n (el): el is ElementRef<HTMLElement>[] => Array.isArray(el) && !!el[0],\n ),\n switchMap((gridElement) =>\n this.#resizeObserverSvc\n .observe(gridElement[0])\n .pipe(map(() => gridElement[0].nativeElement.offsetWidth)),\n ),\n takeUntilDestroyed(),\n )\n .subscribe((tableWidth) => {\n this.tableWidth.set(tableWidth);\n });\n\n // Clean up pending rows when the grid data is updated.\n toObservable(this.service.gridApi)\n .pipe(\n filter((gridApi): gridApi is GridApi => !!gridApi),\n switchMap((gridApi) =>\n fromGridEvent(gridApi, 'rowDataUpdated').pipe(\n takeUntil(fromGridEvent(gridApi, 'gridPreDestroyed')),\n map(() => gridApi),\n ),\n ),\n takeUntilDestroyed(),\n )\n .subscribe((gridApi) => {\n this.pending.update((pending) =>\n pending.filter((rowId) => !!gridApi.getRowNode(rowId)),\n );\n });\n }\n\n protected cancelDelete(rowId: string): void {\n this.service.cancelRowDelete.next(rowId);\n }\n\n protected confirmDelete(rowId: string): void {\n this.pending.update((pending) => pending.concat(rowId));\n this.service.confirmRowDelete.next(rowId);\n }\n}\n","@for (row of rowsWithElements(); track row.increment) {\n @if (row.element?.offsetParent && row.element; as element) {\n <div\n class=\"sky-ag-grid-row-delete\"\n affixPlacement=\"above\"\n affixVerticalAlignment=\"top\"\n affixHorizontalAlignment=\"left\"\n [id]=\"'row-delete-ref-' + row.rowId\"\n [style.height]=\"element.offsetHeight + 'px'\"\n [skyAffixTo]=\"element\"\n [affixIsSticky]=\"true\"\n >\n <sky-inline-delete\n [pending]=\"pending().includes(row.rowId ?? '')\"\n (cancelTriggered)=\"cancelDelete(row.rowId)\"\n (deleteTriggered)=\"confirmDelete(row.rowId)\"\n />\n </div>\n }\n}\n","import {\n Directive,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n afterNextRender,\n contentChild,\n inject,\n linkedSignal,\n model,\n output,\n signal,\n} from '@angular/core';\nimport {\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport {\n SKY_STACKING_CONTEXT,\n SkyOverlayInstance,\n SkyOverlayService,\n SkyScrollableHostService,\n} from '@skyux/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport { GridApi } from 'ag-grid-community';\nimport {\n BehaviorSubject,\n Subject,\n distinctUntilChanged,\n filter,\n switchMap,\n take,\n takeUntil,\n} from 'rxjs';\n\nimport {\n SKY_AG_GRID_ROW_DELETE_CONTEXT,\n SkyAgGridRowDeleteContext,\n} from './ag-grid-row-delete-context';\nimport { SkyAgGridRowDeleteComponent } from './ag-grid-row-delete.component';\nimport { SkyAgGridRowDeleteCancelArgs } from './types/ag-grid-row-delete-cancel-args';\nimport { SkyAgGridRowDeleteConfirmArgs } from './types/ag-grid-row-delete-confirm-args';\n\n/**\n * Enables inline row delete functionality for an AG Grid when included\n * on the `SkyAgGridWrapperComponent` element. The directive uses\n * `rowDeleteIds` to determine which rows to add inline delete options to.\n */\n@Directive({\n selector: '[skyAgGridRowDelete]',\n})\nexport class SkyAgGridRowDeleteDirective implements OnDestroy {\n /**\n * The IDs of the data in the rows where the inline delete appears.\n */\n public readonly rowDeleteIds = model<string[]>([]);\n\n /**\n * Emits a `SkyAgGridRowDeleteCancelArgs` object when a row's inline delete is cancelled.\n */\n public rowDeleteCancel = output<SkyAgGridRowDeleteCancelArgs>();\n\n /**\n * Emits a `SkyAgGridRowDeleteConfirmArgs` object when a row's inline delete is confirmed.\n */\n public rowDeleteConfirm = output<SkyAgGridRowDeleteConfirmArgs>();\n\n protected readonly agGrid = contentChild(AgGridAngular);\n\n readonly #agGridRootElement = new BehaviorSubject<\n ElementRef<HTMLDivElement>[]\n >([]);\n readonly #agGridBodyClipElements = new BehaviorSubject<\n ElementRef<HTMLDivElement>[]\n >([]);\n readonly #ngUnsubscribe = new Subject<void>();\n readonly #rowDeleteIdsInternal = linkedSignal<unknown[], string[]>({\n source: this.rowDeleteIds,\n computation: (value) =>\n [...new Set(value)]\n .filter(Boolean)\n .map(String)\n .sort((a, b) => a.localeCompare(b)),\n equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]),\n });\n readonly #clipPath = new BehaviorSubject<string | undefined>(undefined);\n readonly #zIndex = new BehaviorSubject(998);\n readonly #elementRef = inject(ElementRef<HTMLElement>);\n readonly #environmentInjector = inject(EnvironmentInjector);\n readonly #overlayService = inject(SkyOverlayService);\n #overlay: SkyOverlayInstance | undefined;\n readonly #rowDeleteSvc: SkyAgGridRowDeleteContext;\n readonly #scrollableHostService = inject(SkyScrollableHostService);\n readonly #stackingContext = inject(SKY_STACKING_CONTEXT, { optional: true });\n\n constructor() {\n if (this.#stackingContext) {\n this.#stackingContext.zIndex\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((zIndex) => {\n this.#zIndex.next(zIndex);\n });\n }\n\n this.#rowDeleteSvc = new SkyAgGridRowDeleteContext(\n this.#rowDeleteIdsInternal.asReadonly(),\n toSignal(this.#agGridRootElement),\n signal<GridApi | undefined>(undefined),\n );\n\n this.#rowDeleteSvc.cancelRowDelete\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((rowId) => {\n if (rowId) {\n this.rowDeleteIds.update((rowIds) =>\n rowIds.filter((id) => id !== rowId),\n );\n this.rowDeleteCancel.emit({ id: rowId });\n }\n });\n\n this.#rowDeleteSvc.confirmRowDelete\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((rowId) => {\n if (rowId) {\n this.rowDeleteConfirm.emit({ id: rowId });\n }\n });\n\n const agGrid = toObservable(this.agGrid);\n const agGridReady = agGrid.pipe(\n filter((agGrid) => !!agGrid),\n switchMap((agGrid: AgGridAngular) => agGrid.gridReady),\n take(1),\n takeUntil(this.#ngUnsubscribe),\n );\n agGridReady.subscribe((ready) => {\n const rootWrapper = this.#elementRef.nativeElement.querySelector(\n 'div.ag-root-wrapper',\n );\n if (rootWrapper) {\n this.#agGridRootElement.next([\n new ElementRef(rootWrapper as HTMLDivElement),\n ]);\n }\n this.#rowDeleteSvc.gridApi.set(ready.api);\n });\n this.#agGridRootElement\n .pipe(takeUntilDestroyed())\n .subscribe((el) => this.#agGridBodyClipElements.next(el));\n\n agGrid\n .pipe(\n filter((agGrid) => !!agGrid),\n switchMap((agGrid: AgGridAngular) => agGrid.rowDataUpdated),\n takeUntil(this.#ngUnsubscribe),\n )\n .subscribe((evt) => {\n this.rowDeleteIds.update((rowIds) =>\n (rowIds ?? []).filter((id) => !!evt.api.getRowNode(id)),\n );\n });\n\n afterNextRender(() => {\n this.#overlay = this.#overlayService.create({\n enableScroll: true,\n environmentInjector: this.#environmentInjector,\n showBackdrop: false,\n closeOnNavigation: false,\n enableClose: false,\n enablePointerEvents: true,\n });\n\n this.#overlay.attachComponent(SkyAgGridRowDeleteComponent, [\n {\n provide: SKY_AG_GRID_ROW_DELETE_CONTEXT,\n useValue: this.#rowDeleteSvc,\n },\n ]);\n this.#zIndex\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n takeUntil(this.#overlay.closed),\n distinctUntilChanged(),\n )\n .subscribe((zIndex) => {\n if (this.#overlay) {\n this.#overlay.componentRef.instance.zIndex = zIndex.toString(10);\n }\n });\n this.#clipPath\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n takeUntil(this.#overlay.closed),\n distinctUntilChanged(),\n )\n .subscribe((clipPath) => {\n this.#overlay?.componentRef.instance.updateClipPath(clipPath);\n });\n\n this.#scrollableHostService\n .watchScrollableHostClipPathChanges(\n this.#elementRef,\n this.#agGridBodyClipElements.asObservable(),\n )\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((clipPath) => {\n this.#clipPath.next(clipPath);\n });\n });\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#rowDeleteSvc.subscription.unsubscribe();\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\n\nimport { SkyAgGridResourcesModule } from '../shared/sky-ag-grid-resources.module';\n\nimport { SkyAgGridDataManagerAdapterDirective } from './ag-grid-data-manager-adapter.directive';\nimport { SkyAgGridRowDeleteDirective } from './ag-grid-row-delete.directive';\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\n/**\n * Provides `SkyAgGridWrapperComponent` and `SkyAgGridRowDeleteDirective`, but to use\n * AG Grid in your application, you must also load `AgGridAngular` from `ag-grid-angular` and\n * `ModuleRegistry` from `ag-grid-community`. For more information, see\n * [AG Grid modules](https://www.ag-grid.com/angular-data-grid/modules/).\n *\n * @example\n * ```typescript\n * ModuleRegistry.registerModules([AllCommunityModule]);\n * ```\n */\n@NgModule({\n imports: [\n AgGridAngular,\n CommonModule,\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridResourcesModule,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n exports: [\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n})\nexport class SkyAgGridModule {}\n","import { SkyAgGridLookupProperties } from './types/lookup-properties';\n\n/**\n * @internal\n */\nexport function applySkyLookupPropertiesDefaults(\n skyLookupProperties: SkyAgGridLookupProperties | undefined,\n): SkyAgGridLookupProperties {\n /* istanbul ignore if */\n if (!skyLookupProperties) {\n return {};\n }\n\n return {\n addClick: skyLookupProperties.addClick,\n ariaLabel: skyLookupProperties.ariaLabel || '',\n autocompleteAttribute: skyLookupProperties.autocompleteAttribute || 'off',\n data: skyLookupProperties.data || [],\n debounceTime: skyLookupProperties.debounceTime || 0,\n descriptorProperty: skyLookupProperties.descriptorProperty || 'name',\n disabled: skyLookupProperties.disabled || false,\n enableShowMore: skyLookupProperties.enableShowMore || false,\n idProperty: skyLookupProperties.idProperty,\n placeholderText: skyLookupProperties.placeholderText || '',\n propertiesToSearch: skyLookupProperties.propertiesToSearch,\n search: skyLookupProperties.search,\n searchAsync: skyLookupProperties.searchAsync,\n searchFilters: skyLookupProperties.searchFilters || [],\n searchResultsLimit: skyLookupProperties.searchResultsLimit,\n searchResultTemplate: skyLookupProperties.searchResultTemplate,\n searchTextMinimumCharacters:\n skyLookupProperties.searchTextMinimumCharacters || 1,\n selectMode: skyLookupProperties.selectMode,\n showAddButton: skyLookupProperties.showAddButton || false,\n showMoreConfig: skyLookupProperties.showMoreConfig || {},\n wrapperClass: 'ag-custom-component-popup',\n };\n}\n","/** The initial action that a cell editor should take when initialized. */\nexport enum SkyAgGridCellEditorInitialAction {\n /** The cell should be cleared. */\n Delete = 0,\n /** The cell value should be highlighted. */\n Highlighted = 1,\n /** The cell value should be replaced with the initializing value. */\n Replace = 2,\n /** The cell should not be modified and the cursor is placed at the end of the value. */\n Untouched = 3,\n}\n","import { ICellEditorParams, KeyCode } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from './cell-editor-initial-action';\n\nexport class SkyAgGridCellEditorUtils {\n /**\n * Gets the initial action that a cell editor should take when initialized.\n * @param params The editor's initializing parameters.\n */\n public static getEditorInitialAction(\n params: ICellEditorParams | undefined,\n ): SkyAgGridCellEditorInitialAction {\n if (params?.cellStartedEdit) {\n if (\n params.eventKey === KeyCode.BACKSPACE ||\n params.eventKey === KeyCode.DELETE\n ) {\n return SkyAgGridCellEditorInitialAction.Delete;\n } else if (params.eventKey?.length === 1) {\n return SkyAgGridCellEditorInitialAction.Replace;\n } else {\n if (params.eventKey !== KeyCode.F2) {\n return SkyAgGridCellEditorInitialAction.Highlighted;\n } else {\n return SkyAgGridCellEditorInitialAction.Untouched;\n }\n }\n } else {\n return SkyAgGridCellEditorInitialAction.Untouched;\n }\n }\n\n /**\n * Returns the difference between the minuend and subtrahend. If the minuend is not defined, returns 0.\n * @param minuend The number from which another number is subtracted.\n * @param subtrahend The number that is subtracted from the minuend.\n */\n public static subtractOrZero(\n minuend: number | null | undefined,\n subtrahend: number,\n ): number {\n // Swapping minuend with subtrahend when minuend is null or undefined results in\n // the subtrahend being subtracted from itself, which will always be 0.\n return (minuend ?? subtrahend) - subtrahend;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyAutocompleteModule } from '@skyux/lookup';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyAgGridAutocompleteProperties } from '../../types/autocomplete-properties';\nimport { SkyCellEditorAutocompleteParams } from '../../types/cell-editor-autocomplete-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-autocomplete',\n templateUrl: './cell-editor-autocomplete.component.html',\n styleUrls: ['./cell-editor-autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorAutocompleteComponent implements ICellEditorAngularComp {\n public columnHeader: string | undefined;\n public editorForm = new UntypedFormGroup({\n selection: new UntypedFormControl(),\n });\n public rowNumber: number | undefined;\n public skyComponentProperties: SkyAgGridAutocompleteProperties = {};\n\n #autocompleteOpen = false;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n #params: SkyCellEditorAutocompleteParams | undefined;\n #elementRef = inject(ElementRef) as ElementRef<HTMLElement>;\n\n @ViewChild('skyCellEditorAutocomplete', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onBlur(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else {\n this.#stopEditingOnBlur();\n }\n }\n\n public agInit(params: SkyCellEditorAutocompleteParams): void {\n this.#params = params;\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('selection');\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = (this.#params.node?.rowIndex ?? 0) + 1;\n this.skyComponentProperties = this.#params.skyComponentProperties || {};\n }\n\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n const charPress = this.#params?.eventKey as string;\n\n this.input.nativeElement.select();\n this.input.nativeElement.setRangeText(charPress);\n // Ensure the cursor is at the end of the text.\n this.input.nativeElement.setSelectionRange(\n charPress.length,\n charPress.length,\n );\n this.input.nativeElement.dispatchEvent(new Event('input'));\n }\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n public getValue(): any | undefined {\n const val = this.editorForm.get('selection')?.value;\n return val !== undefined && val !== null ? val : undefined;\n }\n\n public onAutocompleteOpenChange($event: boolean): void {\n this.#autocompleteOpen = $event;\n this.#stopEditingOnBlur();\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#autocompleteOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<div class=\"sky-ag-grid-cell-editor-autocomplete\" [formGroup]=\"editorForm\">\n <sky-autocomplete\n [allowAnyValue]=\"skyComponentProperties.allowAnyValue\"\n [data]=\"skyComponentProperties.data\"\n [debounceTime]=\"skyComponentProperties.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties.descriptorProperty\"\n [highlightSearchText]=\"skyComponentProperties.highlightSearchText ?? true\"\n [propertiesToSearch]=\"skyComponentProperties.propertiesToSearch\"\n [search]=\"skyComponentProperties.search\"\n [searchFilters]=\"skyComponentProperties.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties.searchTextMinimumCharacters\n \"\n (selectionChange)=\"\n skyComponentProperties.selectionChange &&\n skyComponentProperties.selectionChange($event)\n \"\n (openChange)=\"onAutocompleteOpenChange($event)\"\n >\n <input\n #skyCellEditorAutocomplete\n formControlName=\"selection\"\n skyAutocomplete\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_autocomplete_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n />\n </sky-autocomplete>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyAutonumericModule } from '@skyux/autonumeric';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellEditorCurrencyParams } from '../../types/cell-editor-currency-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridCurrencyProperties } from '../../types/currency-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-currency',\n templateUrl: './cell-editor-currency.component.html',\n styleUrls: ['./cell-editor-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyAutonumericModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorCurrencyComponent implements ICellEditorAngularComp {\n public skyComponentProperties: SkyAgGridCurrencyProperties & {\n isCancellable: boolean;\n } = {\n isCancellable: false,\n };\n public columnHeader: string | undefined;\n public currency = new UntypedFormControl();\n public editorForm = new UntypedFormGroup({\n currency: this.currency,\n });\n public params: SkyCellEditorCurrencyParams | undefined;\n public rowNumber: number | undefined;\n\n @ViewChild('skyCellEditorCurrency', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (event.relatedTarget && event.relatedTarget === this.params?.eGridCell) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (event.target === this.input?.nativeElement) {\n this.#stopEditingOnBlur();\n }\n }\n\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n readonly #changeDetector = inject(ChangeDetectorRef);\n #initialized = false;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorCurrencyParams): void {\n this.params = params;\n this.columnHeader = this.params.api.getDisplayNameForColumn(\n this.params.column,\n 'header',\n );\n this.rowNumber = this.params.rowIndex + 1;\n this.skyComponentProperties = {\n ...(this.params.skyComponentProperties || {\n decimalPlaces: 2,\n currencySymbol: '$',\n }),\n isCancellable: false,\n };\n }\n\n public refresh(params: SkyCellEditorCurrencyParams): void {\n this.agInit(params);\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n this.input?.nativeElement.focus();\n\n // This setup is in `afterGuiAttached` due to the lifecycle of autonumeric which will highlight the initial value if it is in place when it renders.\n // Since we don't want that, we set the initial value after autonumeric initializes.\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(\n this.params,\n );\n const control = this.currency;\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(\n parseFloat(String(this.params?.eventKey)) || undefined,\n );\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(parseFloat(String(this.params?.value)));\n break;\n }\n }\n\n this.#changeDetector.markForCheck();\n\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted &&\n (this.params?.value ?? '') !== ''\n ) {\n this.input?.nativeElement.select();\n }\n\n // When the cell is initialized with the Enter key, we need to suppress the first `onPressEnter`.\n this.#initialized = this.params?.eventKey !== 'Enter';\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number | undefined {\n return this.currency.value ?? undefined;\n }\n\n /**\n * The autoNumeric library's event handler suppresses the escape key event. This additional handler re-enables AG Grid's default functionality.\n */\n public onPressEscape(): void {\n if (this.params) {\n this.params.api.stopEditing(true);\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.column);\n }\n }\n\n public onPressEnter(): void {\n if (this.params && this.#initialized) {\n this.params.stopEditing();\n }\n this.#initialized = true;\n }\n\n #stopEditingOnBlur(): void {\n if (this.params?.api.getGridOption('stopEditingWhenCellsLoseFocus')) {\n this.params?.api.stopEditing();\n }\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorCurrency\n type=\"text\"\n [formControl]=\"currency\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_currency_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [skyAutonumeric]=\"skyComponentProperties\"\n [skyAutonumericFormChangesUnformatted]=\"params?.eventKey?.length === 1\"\n (keyup.enter)=\"onPressEnter()\"\n (keyup.escape)=\"onPressEscape()\"\n />\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n HostListener,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyDatepickerModule } from '@skyux/datetime';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { first, fromEvent } from 'rxjs';\n\nimport { SkyCellEditorDatepickerParams } from '../../types/cell-editor-datepicker-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridDatepickerProperties } from '../../types/datepicker-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-datepicker',\n templateUrl: './cell-editor-datepicker.component.html',\n styleUrls: ['./cell-editor-datepicker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyDatepickerModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorDatepickerComponent implements ICellEditorAngularComp {\n public columnHeader: string | undefined;\n public columnWidth: number | undefined;\n public columnWidthWithoutBorders: number | undefined;\n public editorForm = new UntypedFormGroup({\n date: new UntypedFormControl(),\n });\n public rowHeightWithoutBorders: number | null | undefined;\n public rowNumber: number | undefined;\n public skyComponentProperties: SkyAgGridDatepickerProperties = {};\n\n @ViewChild('skyCellEditorDatepickerInput', { read: ElementRef })\n public datepickerInput: ElementRef | undefined;\n\n protected resolvedDateFormat = '';\n\n #calendarOpen = false;\n #params: SkyCellEditorDatepickerParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n readonly #elementRef = inject(ElementRef) as ElementRef<HTMLElement>;\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #destroyRef = inject(DestroyRef);\n readonly #themeSvc = inject(SkyThemeService, { optional: true }) || undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the datepicker input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (event.target === this.datepickerInput?.nativeElement) {\n this.#stopEditingOnBlur();\n }\n }\n\n public onCalendarOpenChange(isOpen: boolean): void {\n this.#calendarOpen = isOpen;\n this.#stopEditingOnBlur();\n }\n\n public onDateFormatChange(dateFormat: string): void {\n this.resolvedDateFormat = dateFormat;\n this.#changeDetector.markForCheck();\n }\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorDatepickerParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('date');\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(params.eventKey);\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n if (this.#params.skyComponentProperties?.disabled) {\n control.disable();\n }\n }\n this.#changeDetector.markForCheck();\n\n this.skyComponentProperties = this.#params.skyComponentProperties || {};\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.columnWidth = this.#params.column.getActualWidth();\n this.columnWidthWithoutBorders = this.columnWidth - 2;\n this.rowHeightWithoutBorders = (this.#params.node.rowHeight as number) - 3;\n this.rowNumber = this.#params.rowIndex + 1;\n\n this.#themeSvc?.settingsChange\n ?.pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((themeSettings) => {\n if (themeSettings.currentSettings.theme.name === 'modern') {\n this.columnWidthWithoutBorders = this.columnWidth;\n this.rowHeightWithoutBorders = this.#params?.node?.rowHeight;\n } else {\n this.columnWidthWithoutBorders =\n this.columnWidth === undefined ? undefined : this.columnWidth - 2;\n this.rowHeightWithoutBorders =\n SkyAgGridCellEditorUtils.subtractOrZero(\n this.#params?.node.rowHeight,\n 3,\n );\n }\n this.#changeDetector.markForCheck();\n });\n }\n\n public isPopup(): boolean {\n return true;\n }\n\n public getPopupPosition(): 'over' | 'under' | undefined {\n return 'over';\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n const datepickerInputEl = this.datepickerInput?.nativeElement as\n | HTMLInputElement\n | undefined;\n\n if (datepickerInputEl) {\n datepickerInputEl.focus();\n\n // programmatically set the value of in the input; however, do not do this via the form control so that the value is not formatted when editing starts.\n // Watch for the first blur and fire a 'change' event as programmatic changes won't queue a change event, but we need to do this so that formatting happens if the user tabs to the calendar button.\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n fromEvent(datepickerInputEl, 'blur')\n .pipe(first())\n .subscribe(() => {\n datepickerInputEl.dispatchEvent(new Event('change'));\n });\n datepickerInputEl.select();\n\n const charPress = this.#params?.eventKey as string;\n\n if (charPress) {\n datepickerInputEl.setRangeText(charPress);\n // Ensure the cursor is at the end of the text.\n datepickerInputEl.setSelectionRange(\n charPress.length,\n charPress.length,\n );\n }\n }\n\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n datepickerInputEl.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): Date {\n this.datepickerInput?.nativeElement.blur();\n return this.editorForm.get('date')?.value;\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#calendarOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<div\n class=\"sky-ag-grid-cell-editor-datepicker\"\n [formGroup]=\"editorForm\"\n [style.width.px]=\"columnWidthWithoutBorders\"\n>\n <sky-datepicker\n data-sky-id=\"cell-datepicker\"\n pickerClass=\"ag-custom-component-popup\"\n (dateFormatChange)=\"onDateFormatChange($event)\"\n (openChange)=\"onCalendarOpenChange($event)\"\n >\n <input\n #skyCellEditorDatepickerInput\n formControlName=\"date\"\n skyDatepickerInput\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_datepicker_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [attr.title]=\"\n resolvedDateFormat\n ? ('skyux_datepicker_format_hint_text'\n | skyLibResources: resolvedDateFormat)\n : null\n \"\n [minDate]=\"skyComponentProperties.minDate\"\n [maxDate]=\"skyComponentProperties.maxDate\"\n [dateFormat]=\"skyComponentProperties.dateFormat\"\n [startingDay]=\"skyComponentProperties.startingDay\"\n [skyDatepickerNoValidate]=\"skyComponentProperties.skyDatepickerNoValidate\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n />\n </sky-datepicker>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyLookupModule } from '@skyux/lookup';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ColumnResizedEvent } from 'ag-grid-community';\n\nimport { applySkyLookupPropertiesDefaults } from '../../apply-lookup-properties-defaults';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorLookupParams } from '../../types/cell-editor-lookup-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridLookupProperties } from '../../types/lookup-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-lookup',\n templateUrl: './cell-editor-lookup.component.html',\n styleUrls: ['./cell-editor-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SkyInputBoxModule,\n FormsModule,\n ReactiveFormsModule,\n SkyLookupModule,\n SkyIdModule,\n ],\n})\nexport class SkyAgGridCellEditorLookupComponent implements ICellEditorAngularComp {\n @HostBinding('style.width.px')\n public width: number | undefined;\n\n public skyComponentProperties?: SkyAgGridLookupProperties;\n public isAlive = false;\n public editorForm = new UntypedFormGroup({\n selection: new UntypedFormControl({\n value: [],\n disabled: false,\n }),\n });\n public useAsyncSearch = false;\n\n protected labelText: string | undefined = undefined;\n\n #lookupOpen = false;\n #selectionModalOpen = false;\n #params: SkyCellEditorLookupParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n #changeDetector = inject(ChangeDetectorRef);\n #elementRef = inject(ElementRef<HTMLElement>);\n\n @HostListener('focusout', ['$event'])\n public onBlur(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (\n !(event.target as HTMLElement | null)?.matches(\n '.ag-custom-component-popup *',\n )\n ) {\n this.#stopEditingOnBlur();\n }\n }\n\n public agInit(params: SkyCellEditorLookupParams): void {\n this.#params = params;\n if (!Array.isArray(this.#params.value)) {\n throw new Error(`Lookup value must be an array`);\n }\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('selection');\n this.labelText = params.skyComponentProperties?.ariaLabelledBy\n ? undefined\n : params.skyComponentProperties?.ariaLabel ||\n params.colDef.headerName ||\n params.colDef.headerTooltip ||\n params.colDef.field ||\n params.colDef.colId;\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue([]);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n\n if (this.#params.skyComponentProperties?.disabled) {\n control.disable();\n } else {\n control.enable();\n }\n }\n\n this.skyComponentProperties = this.#updateComponentProperties(this.#params);\n this.useAsyncSearch =\n typeof this.skyComponentProperties.searchAsync === 'function';\n this.isAlive = true;\n this.width = this.#params.column.getActualWidth();\n this.#params.api.addEventListener(\n 'columnResized',\n (event: ColumnResizedEvent) => {\n if (event.column?.getColId() === this.#params?.column.getColId()) {\n this.width = event.column?.getActualWidth();\n this.#changeDetector.markForCheck();\n }\n },\n );\n this.#changeDetector.markForCheck();\n }\n\n public isCancelAfterEnd(): boolean {\n // Shut down components to commit values before final value syncs to grid.\n this.isAlive = false;\n return false;\n }\n\n public getGui(): HTMLElement {\n return this.#elementRef.nativeElement;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getValue(): any[] {\n return this.editorForm.get('selection')?.value;\n }\n\n public isPopup(): boolean {\n return true;\n }\n\n public getPopupPosition(): 'over' | 'under' | undefined {\n return 'over';\n }\n\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n const lookupInput: HTMLTextAreaElement =\n this.#elementRef.nativeElement.querySelector('.sky-lookup-input');\n lookupInput.focus();\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n lookupInput.setRangeText(`${this.#params?.eventKey}`);\n // Ensure the cursor is at the end of the text.\n lookupInput.setSelectionRange(\n lookupInput.value.length,\n lookupInput.value.length,\n );\n lookupInput.dispatchEvent(new Event('input'));\n } else if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Untouched\n ) {\n // Ensure the cursor is at the end of the text.\n lookupInput.setSelectionRange(\n lookupInput.value.length,\n lookupInput.value.length,\n );\n }\n });\n }\n\n public onLookupOpenChange(isOpen: boolean): void {\n this.#lookupOpen = isOpen;\n this.#stopEditingOnBlur();\n }\n\n public onSelectionModalOpenChange(isOpen: boolean): void {\n this.#selectionModalOpen = isOpen;\n this.#stopEditingOnBlur();\n }\n\n #updateComponentProperties(\n params: SkyCellEditorLookupParams,\n ): SkyAgGridLookupProperties {\n const skyLookupProperties = params.skyComponentProperties;\n return applySkyLookupPropertiesDefaults(skyLookupProperties);\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#lookupOpen &&\n !this.#selectionModalOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","@if (isAlive && useAsyncSearch) {\n <sky-input-box\n [disabled]=\"skyComponentProperties?.disabled\"\n [formGroup]=\"editorForm\"\n >\n <sky-lookup\n formControlName=\"selection\"\n [ariaLabelledBy]=\"\n skyComponentProperties?.ariaLabelledBy ?? screenReaderLabel.id\n \"\n [autocompleteAttribute]=\"skyComponentProperties?.autocompleteAttribute\"\n [data]=\"skyComponentProperties?.data\"\n [debounceTime]=\"skyComponentProperties?.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties?.descriptorProperty\"\n [enableShowMore]=\"skyComponentProperties?.enableShowMore\"\n [idProperty]=\"skyComponentProperties?.idProperty\"\n [placeholderText]=\"skyComponentProperties?.placeholderText\"\n [propertiesToSearch]=\"skyComponentProperties?.propertiesToSearch\"\n [search]=\"skyComponentProperties?.search\"\n [searchFilters]=\"skyComponentProperties?.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties?.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties?.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties?.searchTextMinimumCharacters\n \"\n [selectMode]=\"skyComponentProperties?.selectMode\"\n [showAddButton]=\"skyComponentProperties?.showAddButton\"\n [showMoreConfig]=\"skyComponentProperties?.showMoreConfig\"\n [wrapperClass]=\"skyComponentProperties?.wrapperClass\"\n (searchAsync)=\"skyComponentProperties?.searchAsync?.($event)\"\n (addClick)=\"skyComponentProperties?.addClick?.($event)\"\n (openChange)=\"onLookupOpenChange($event)\"\n (selectionModalOpenChange)=\"onSelectionModalOpenChange($event)\"\n />\n </sky-input-box>\n}\n@if (isAlive && !useAsyncSearch) {\n <sky-input-box\n [disabled]=\"skyComponentProperties?.disabled\"\n [formGroup]=\"editorForm\"\n >\n <sky-lookup\n formControlName=\"selection\"\n [ariaLabelledBy]=\"\n skyComponentProperties?.ariaLabelledBy ?? screenReaderLabel.id\n \"\n [autocompleteAttribute]=\"skyComponentProperties?.autocompleteAttribute\"\n [data]=\"skyComponentProperties?.data\"\n [debounceTime]=\"skyComponentProperties?.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties?.descriptorProperty\"\n [enableShowMore]=\"skyComponentProperties?.enableShowMore\"\n [idProperty]=\"skyComponentProperties?.idProperty\"\n [placeholderText]=\"skyComponentProperties?.placeholderText\"\n [propertiesToSearch]=\"skyComponentProperties?.propertiesToSearch\"\n [search]=\"skyComponentProperties?.search\"\n [searchFilters]=\"skyComponentProperties?.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties?.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties?.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties?.searchTextMinimumCharacters\n \"\n [selectMode]=\"skyComponentProperties?.selectMode\"\n [showAddButton]=\"skyComponentProperties?.showAddButton\"\n [showMoreConfig]=\"skyComponentProperties?.showMoreConfig\"\n [wrapperClass]=\"skyComponentProperties?.wrapperClass\"\n (addClick)=\"skyComponentProperties?.addClick?.($event)\"\n (openChange)=\"onLookupOpenChange($event)\"\n (selectionModalOpenChange)=\"onSelectionModalOpenChange($event)\"\n />\n </sky-input-box>\n}\n<div #screenReaderLabel=\"skyId\" class=\"sky-screen-reader-only\" skyId>\n {{ labelText }}\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ICellEditorParams } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorNumberParams } from '../../types/cell-editor-number-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-number',\n templateUrl: './cell-editor-number.component.html',\n styleUrls: ['./cell-editor-number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule, SkyI18nModule],\n})\nexport class SkyAgGridCellEditorNumberComponent implements ICellEditorAngularComp {\n public columnHeader: string | undefined;\n public columnWidth: number | undefined;\n public editorForm = new UntypedFormGroup({\n number: new UntypedFormControl(),\n });\n public rowHeightWithoutBorders: number | undefined;\n public rowNumber: number | undefined;\n public max: number | undefined;\n public min: number | undefined;\n\n @ViewChild('skyCellEditorNumber', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (event.target === this.input?.nativeElement) {\n this.#stopEditingOnBlur();\n }\n }\n\n #params: ICellEditorParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorNumberParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('number');\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(\n parseFloat(this.#params?.eventKey as string) || undefined,\n );\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.max = params.skyComponentProperties?.max;\n this.min = params.skyComponentProperties?.min;\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = this.#params.rowIndex + 1;\n this.columnWidth = this.#params.column.getActualWidth();\n this.rowHeightWithoutBorders = (this.#params.node.rowHeight as number) - 4;\n }\n\n public refresh(params: SkyCellEditorNumberParams): void {\n this.agInit(params);\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number | undefined {\n const val = this.editorForm.get('number')?.value;\n return val !== undefined && val !== null ? val : undefined;\n }\n\n #stopEditingOnBlur(): void {\n if (this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus')) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorNumber\n formControlName=\"number\"\n type=\"number\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_number_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [max]=\"max ?? null\"\n [min]=\"min ?? null\"\n />\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ICellEditorParams } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorTextParams } from '../../types/cell-editor-text-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-text',\n templateUrl: './cell-editor-text.component.html',\n styleUrls: ['./cell-editor-text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule, SkyI18nModule],\n})\nexport class SkyAgGridCellEditorTextComponent implements ICellEditorAngularComp {\n public columnHeader: string | undefined;\n public editorForm = new UntypedFormGroup({\n text: new UntypedFormControl(),\n });\n public rowNumber: number | undefined;\n public maxlength: number | undefined;\n\n @ViewChild('skyCellEditorText', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (event.target === this.input?.nativeElement) {\n this.#stopEditingOnBlur();\n }\n }\n\n #params: ICellEditorParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorTextParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('text');\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(params.eventKey);\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.maxlength = params.skyComponentProperties?.maxlength;\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = this.#params.rowIndex + 1;\n }\n\n public refresh(params: SkyCellEditorTextParams): void {\n this.agInit(params);\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): string | undefined {\n return this.editorForm.get('text')?.value || undefined;\n }\n\n #stopEditingOnBlur(): void {\n if (this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus')) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorText\n formControlName=\"text\"\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_text_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [maxlength]=\"maxlength ?? null\"\n />\n</ng-container>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n isSignal,\n} from '@angular/core';\nimport { SkyStatusIndicatorModule } from '@skyux/indicators';\nimport {\n SkyPopoverMessage,\n SkyPopoverMessageType,\n SkyPopoverModule,\n} from '@skyux/popovers';\n\nimport { AgColumn, CellFocusedEvent } from 'ag-grid-community';\nimport { Subject } from 'rxjs';\n\nimport { SkyCellRendererValidatorParams } from '../types/cell-renderer-validator-params';\nimport { SkyAgGridValidatorProperties } from '../types/validator-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-validator-tooltip',\n styleUrls: ['ag-grid-cell-validator-tooltip.component.scss'],\n templateUrl: 'ag-grid-cell-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, SkyPopoverModule, SkyStatusIndicatorModule],\n})\nexport class SkyAgGridCellValidatorTooltipComponent {\n public readonly params = input<SkyCellRendererValidatorParams>();\n\n protected readonly popoverMessageStream = new Subject<SkyPopoverMessage>();\n protected readonly validatorProperties = computed<\n SkyAgGridValidatorProperties | undefined\n >(\n () =>\n this.params()?.skyComponentProperties as\n | SkyAgGridValidatorProperties\n | undefined,\n );\n protected readonly validatorMessage = computed((): string => {\n const params = this.params();\n const validatorProperties = this.validatorProperties();\n const validatorMessage = validatorProperties?.validatorMessage;\n if (!validatorMessage || !params) {\n return '';\n }\n if (isSignal(validatorMessage)) {\n return validatorMessage();\n }\n if (typeof validatorMessage === 'function') {\n return validatorMessage(\n params.value,\n params.data,\n params?.node?.rowIndex,\n );\n }\n return validatorMessage;\n });\n protected readonly showValidatorMessage = computed(() => {\n const validatorMessage = this.validatorMessage();\n const validatorProperties = this.validatorProperties();\n const params = this.params();\n if (!validatorMessage || !validatorProperties || !params) {\n return false;\n }\n const validator = validatorProperties.validator;\n if (typeof validator === 'function') {\n return !validator(params.value, params.data, params.node?.rowIndex);\n }\n return true;\n });\n\n readonly #keyupHandler = (event: KeyboardEvent): void => {\n if (\n ['ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowUp'].includes(event.key)\n ) {\n this.#showPopover();\n }\n };\n readonly #focusHandler = (): void => this.#showPopover();\n readonly #cellFocusHandler = (eventParams: CellFocusedEvent): void => {\n const params = this.params();\n if (\n (eventParams.column as AgColumn).getColId() ===\n params?.column?.getColId() &&\n eventParams.rowIndex === params?.node?.rowIndex\n ) {\n this.#showPopover();\n } else {\n this.#hidePopover();\n }\n };\n readonly #blurHandler = (): void => this.#hidePopover();\n\n constructor() {\n effect((onCleanup) => {\n const value = this.params();\n if (value?.api) {\n value.api.addEventListener('cellFocused', this.#cellFocusHandler);\n value.api.addEventListener('cellEditingStarted', this.#blurHandler);\n value.eGridCell?.addEventListener('keyup', this.#keyupHandler);\n value.eGridCell?.addEventListener('mouseenter', this.#focusHandler);\n value.eGridCell?.addEventListener('mouseleave', this.#blurHandler);\n\n onCleanup(() => {\n if (!value.api.isDestroyed || !value.api.isDestroyed()) {\n value.api.removeEventListener(\n 'cellFocused',\n this.#cellFocusHandler,\n );\n value.api.removeEventListener(\n 'cellEditingStarted',\n this.#blurHandler,\n );\n }\n if (value.eGridCell) {\n value.eGridCell.removeEventListener('keyup', this.#keyupHandler);\n value.eGridCell.removeEventListener(\n 'mouseenter',\n this.#focusHandler,\n );\n value.eGridCell.removeEventListener(\n 'mouseleave',\n this.#blurHandler,\n );\n }\n });\n }\n });\n }\n\n #hidePopover(): void {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Close });\n }\n\n #showPopover(): void {\n if (this.#shouldShowPopover()) {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Open });\n }\n }\n\n #shouldShowPopover(): boolean {\n if (!this.showValidatorMessage()) {\n return false;\n }\n const editingCells = this.params()?.api.getEditingCells() ?? [];\n return editingCells.length === 0;\n }\n}\n","<ng-template #displayValue>\n <ng-content />\n</ng-template>\n\n@if (showValidatorMessage()) {\n <div\n skyPopoverTrigger=\"mouseenter\"\n class=\"sky-validator-cell\"\n [skyPopover]=\"validatorPopover\"\n [skyPopoverMessageStream]=\"popoverMessageStream\"\n >\n <ng-container *ngTemplateOutlet=\"displayValue\" />\n <sky-status-indicator\n descriptionType=\"none\"\n indicatorType=\"danger\"\n class=\"sky-pull-right\"\n />\n </div>\n <sky-popover\n #validatorPopover\n data-sky-id=\"validatorPopover\"\n popoverType=\"danger\"\n >\n {{ validatorMessage() }}\n </sky-popover>\n} @else {\n <ng-container *ngTemplateOutlet=\"displayValue\" />\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { SkyNumericModule, SkyNumericOptions } from '@skyux/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\nimport { SkyAgGridValidatorProperties } from '../../types/validator-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency',\n templateUrl: './cell-renderer-currency.component.html',\n styleUrls: ['./cell-renderer-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyNumericModule],\n})\nexport class SkyAgGridCellRendererCurrencyComponent implements ICellRendererAngularComp {\n @Input()\n public set params(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n public columnWidth: number | undefined;\n public rowHeightWithoutBorders: number | undefined;\n public skyComponentProperties: SkyNumericOptions &\n SkyAgGridValidatorProperties = {};\n public numericOptions: SkyNumericOptions = {};\n public value: number | undefined;\n\n /**\n * agInit is called by AG Grid once after the renderer is created and provides the renderer with the information it needs.\n */\n public agInit(params: SkyCellRendererCurrencyParams): void {\n this.#updateProperties(params);\n }\n\n /**\n * refresh is called by AG Grid to update the cell without destroying and recreating the component.\n */\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n this.agInit(params);\n return false;\n }\n\n #updateProperties(params: SkyCellRendererCurrencyParams): void {\n this.value = params.value;\n this.skyComponentProperties = params.skyComponentProperties || {};\n this.skyComponentProperties.format = 'currency';\n this.skyComponentProperties.minDigits ??= 2;\n this.skyComponentProperties.truncate ??= false;\n }\n}\n","{{\n value === undefined ? undefined : (value | skyNumeric: skyComponentProperties)\n}}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyAgGridCellValidatorTooltipComponent } from '../../cell-validator/ag-grid-cell-validator-tooltip.component';\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\n\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderer-currency.component';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency-validator',\n styles: `\n :host {\n display: contents;\n }\n `,\n templateUrl: 'cell-renderer-currency-validator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SkyAgGridCellValidatorTooltipComponent,\n SkyAgGridCellRendererCurrencyComponent,\n ],\n})\nexport class SkyAgGridCellRendererCurrencyValidatorComponent implements ICellRendererAngularComp {\n @Input()\n public set parameters(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n protected cellRendererParams: SkyCellRendererCurrencyParams | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(changeDetector: ChangeDetectorRef) {\n this.#changeDetector = changeDetector;\n }\n\n /**\n * agInit is called by agGrid once after the renderer is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellRendererCurrencyParams): void {\n this.cellRendererParams = params;\n this.#changeDetector.markForCheck();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public isNumeric(value: any): boolean {\n return !isNaN(parseFloat(value));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n return false;\n }\n}\n","@if (cellRendererParams) {\n <sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n @if (isNumeric(cellRendererParams.value)) {\n <sky-ag-grid-cell-renderer-currency [params]=\"cellRendererParams\" />\n } @else {\n {{ cellRendererParams.value }}\n }\n </sky-ag-grid-cell-validator-tooltip>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererLookupParams } from '../../types/cell-renderer-lookup-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-cell-renderer-lookup',\n templateUrl: './cell-renderer-lookup.component.html',\n styleUrls: ['./cell-renderer-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyI18nModule],\n})\nexport class SkyAgGridCellRendererLookupComponent implements ICellRendererAngularComp {\n protected value = '';\n protected summaryCount = 0;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(changeDetector: ChangeDetectorRef) {\n this.#changeDetector = changeDetector;\n }\n\n public agInit(params: SkyCellRendererLookupParams): void {\n this.summaryCount = params.value?.length || 0;\n this.value = `${params.valueFormatted}`;\n this.#changeDetector.markForCheck();\n }\n\n public refresh(params: SkyCellRendererLookupParams): boolean {\n this.agInit(params);\n return true;\n }\n}\n","@if (summaryCount > 5) {\n {{ 'skyux_lookup_tokens_summary' | skyLibResources: summaryCount }}\n} @else {\n {{ value }}\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport {\n ICellRendererParams,\n IRowNode,\n RowNodeSelectedEvent,\n} from 'ag-grid-community';\nimport { BehaviorSubject, Subscription, isObservable } from 'rxjs';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-row-selector',\n templateUrl: './cell-renderer-row-selector.component.html',\n styleUrls: ['./cell-renderer-row-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [SkyCheckboxModule, AsyncPipe],\n})\nexport class SkyAgGridCellRendererRowSelectorComponent\n implements ICellRendererAngularComp, OnDestroy\n{\n public dataField: string | undefined;\n public rowNode: IRowNode | undefined;\n public rowNumber: number | undefined;\n\n protected checked = new BehaviorSubject(false);\n protected readonly disabled = new BehaviorSubject(false);\n protected readonly label = new BehaviorSubject('');\n\n readonly #labelResourceKey = 'sky_ag_grid_row_selector_aria_label';\n #params: ICellRendererParams | undefined;\n readonly #resources = inject(SkyLibResourcesService);\n #subscription = new Subscription();\n\n constructor() {\n this.#setLabel();\n }\n\n public ngOnDestroy(): void {\n this.#subscription.unsubscribe();\n }\n\n /**\n * agInit is called by agGrid once after the cell is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: ICellRendererParams): void {\n this.#setParameters(params);\n }\n\n /**\n * Used by agGrid to update cell value after a user triggers a refresh.\n * Returning true tells agGrid that the refresh was successful.\n */\n public refresh(params: ICellRendererParams): boolean {\n this.#setParameters(params);\n return true;\n }\n\n public updateRow(rowChecked: boolean): void {\n this.checked.next(rowChecked);\n if (this.rowNode) {\n const rowSelected = this.rowNode.isSelected();\n if (rowSelected !== rowChecked) {\n this.rowNode.setSelected(rowChecked, undefined, 'checkboxSelected');\n }\n if (this.dataField) {\n this.rowNode.data[this.dataField] = this.checked.value;\n }\n }\n }\n\n #setParameters(params: ICellRendererParams): void {\n this.#params = params;\n this.disabled.next(this.#params?.node?.selectable === false);\n this.dataField = this.#params?.colDef?.field;\n this.rowNode = this.#params?.node as IRowNode | undefined;\n const rowIndex = this.rowNode?.rowIndex ?? NaN;\n this.rowNumber = Number.isNaN(rowIndex) ? undefined : rowIndex + 1;\n\n this.#subscription.unsubscribe();\n this.#subscription = new Subscription();\n this.#setLabel();\n\n const rowSelected = !!this.#params?.node?.isSelected();\n\n if (this.dataField) {\n this.checked.next(!!this.#params?.value);\n if (rowSelected !== this.checked.value) {\n this.rowNode?.setSelected(this.checked.value);\n }\n } else {\n this.checked.next(rowSelected);\n }\n\n const node = this.rowNode;\n const handler = (event: RowNodeSelectedEvent): void =>\n this.#rowSelectedListener(event);\n node?.addEventListener('rowSelected', handler);\n this.#subscription.add(() =>\n node?.removeEventListener('rowSelected', handler),\n );\n }\n\n #setLabel(): void {\n const cellRendererParamLabel =\n this.#params?.colDef?.cellRendererParams?.label;\n if (this.#params?.colDef && typeof cellRendererParamLabel === 'string') {\n this.label.next(this.#params.colDef.cellRendererParams.label);\n } else if (\n this.#params?.colDef &&\n typeof cellRendererParamLabel === 'function'\n ) {\n const label = this.#params.colDef.cellRendererParams.label(\n this.#params.data,\n );\n if (isObservable(label)) {\n this.#subscription.add(\n label.subscribe((value: unknown) => this.label.next(String(value))),\n );\n } else {\n this.label.next(label);\n }\n } else {\n this.#subscription.add(\n this.#resources\n .getString(this.#labelResourceKey, this.rowNumber ?? '')\n .subscribe((value) => this.label.next(value)),\n );\n }\n }\n\n #rowSelectedListener(event: RowNodeSelectedEvent): void {\n this.checked.next(!!event.node.isSelected());\n if (this.rowNode && this.dataField) {\n this.rowNode.data[this.dataField] = this.checked.value;\n }\n }\n}\n","<sky-checkbox\n data-sky-id=\"row-checkbox\"\n class=\"sky-ag-grid-row-selector\"\n [disabled]=\"(disabled | async) || false\"\n [tabindex]=\"0\"\n [labelHidden]=\"true\"\n [labelText]=\"(label | async) || ''\"\n [checked]=\"(checked | async) || false\"\n (change)=\"updateRow(!!$event.checked)\"\n/>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, Signal, TemplateRef, isSignal } from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-community';\n\nimport { CellRendererTemplateContext } from './cell-renderer-template-context.type';\n\ntype CellState =\n | {\n hasTemplate: true;\n template: TemplateRef<CellRendererTemplateContext>;\n context: CellRendererTemplateContext;\n }\n | {\n hasTemplate: 'signal';\n template: Signal<TemplateRef<CellRendererTemplateContext>>;\n context: CellRendererTemplateContext;\n }\n | {\n hasTemplate: false;\n template: undefined;\n context?: unknown;\n };\n\n@Component({\n selector: 'sky-ag-grid-cell-renderer-template',\n template: `@if (state.hasTemplate === 'signal') {\n <ng-container\n *ngTemplateOutlet=\"state.template(); context: state.context\"\n />\n } @else if (state.hasTemplate) {\n <ng-container\n *ngTemplateOutlet=\"state.template; context: state.context\"\n />\n }`,\n imports: [NgTemplateOutlet],\n})\nexport class SkyAgGridCellRendererTemplateComponent implements ICellRendererAngularComp {\n protected state: CellState = {\n hasTemplate: false,\n template: undefined,\n context: { value: undefined, data: undefined },\n };\n\n public agInit(params: ICellRendererParams): void {\n const hasTemplate = !!(\n params.colDef?.cellRendererParams &&\n 'template' in params.colDef.cellRendererParams &&\n params.colDef.cellRendererParams.template\n );\n const template:\n | TemplateRef<CellRendererTemplateContext>\n | Signal<TemplateRef<CellRendererTemplateContext>>\n | undefined = hasTemplate\n ? (params.colDef?.cellRendererParams.template as\n | TemplateRef<CellRendererTemplateContext>\n | Signal<TemplateRef<CellRendererTemplateContext>>)\n : undefined;\n this.state = {\n hasTemplate: isSignal(template) ? 'signal' : hasTemplate,\n template,\n context: { value: params.value, row: params.data },\n } as CellState;\n }\n\n public refresh(params: ICellRendererParams): boolean {\n this.agInit(params);\n return false;\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n effect,\n inject,\n input,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { SkyAgGridCellValidatorTooltipComponent } from '../../cell-validator/ag-grid-cell-validator-tooltip.component';\nimport { SkyCellRendererValidatorParams } from '../../types/cell-renderer-validator-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-validator-tooltip',\n templateUrl: 'cell-renderer-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyAgGridCellValidatorTooltipComponent, AsyncPipe],\n})\nexport class SkyAgGridCellRendererValidatorTooltipComponent\n implements ICellRendererAngularComp, OnDestroy\n{\n public readonly params = input<SkyCellRendererValidatorParams>();\n\n protected cellRendererParams: SkyCellRendererValidatorParams | undefined;\n protected valueObservable = new BehaviorSubject('');\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n #valueSubscription: Subscription | undefined;\n\n constructor() {\n effect(() => {\n const params = this.params();\n if (params) {\n this.agInit(params);\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.#valueSubscription?.unsubscribe();\n this.valueObservable.complete();\n }\n\n public agInit(params: SkyCellRendererValidatorParams): void {\n this.cellRendererParams = params;\n this.#valueSubscription?.unsubscribe();\n this.#valueSubscription = new Subscription();\n if (\n typeof params.skyComponentProperties?.valueResourceObservable ===\n 'function'\n ) {\n this.#valueSubscription.add(\n params.skyComponentProperties\n .valueResourceObservable(\n params.value,\n params.data,\n params.node?.rowIndex,\n )\n .subscribe((result) => {\n this.valueObservable.next(result);\n }),\n );\n } else {\n this.valueObservable.next(params.valueFormatted ?? params.value);\n }\n this.#changeDetector.markForCheck();\n }\n\n public refresh(params: SkyCellRendererValidatorParams): boolean {\n this.agInit(params);\n return false;\n }\n}\n","<sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n {{ valueObservable | async }}\n</sky-ag-grid-cell-validator-tooltip>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n linkedSignal,\n signal,\n untracked,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { SkyDatepickerModule } from '@skyux/datetime';\n\nimport { IDateAngularComp } from 'ag-grid-angular';\nimport { IDateParams } from 'ag-grid-community';\n\n/** @internal */\n@Component({\n selector: 'sky-ag-grid-date-picker',\n imports: [SkyDatepickerModule, ReactiveFormsModule],\n templateUrl: './column-filter-datepicker.component.html',\n styleUrls: [\n '../../cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.scss',\n './column-filter-datepicker.component.scss',\n ],\n host: {\n '[class.sky-ag-grid-cell-editor-datepicker]': 'isHeaderFilter()',\n '(focusin)': 'focused()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridColumnFilterDatepickerComponent implements IDateAngularComp {\n protected readonly dateControl = new FormControl<string | null>(null);\n protected readonly params = signal<IDateParams | undefined>(undefined);\n protected readonly isHeaderFilter = computed(\n () => this.params()?.location === 'filter',\n );\n protected readonly label = signal<string>('');\n protected readonly maxDate = computed(() => {\n const maxValidDate = this.params()?.filterParams?.maxValidDate;\n if (maxValidDate && maxValidDate instanceof Date) {\n return Number.isNaN(maxValidDate.getTime()) ? undefined : maxValidDate;\n }\n if (maxValidDate) {\n const parsed = new Date(maxValidDate);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n return undefined;\n });\n protected readonly minDate = computed(() => {\n const minValidDate = this.params()?.filterParams?.minValidDate;\n if (minValidDate && minValidDate instanceof Date) {\n return Number.isNaN(minValidDate.getTime()) ? undefined : minValidDate;\n }\n if (minValidDate) {\n const parsed = new Date(minValidDate);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n return undefined;\n });\n readonly #formValue = toSignal(this.dateControl.valueChanges, {\n initialValue: null,\n });\n readonly #dateValue = linkedSignal(\n () => {\n const value = this.#formValue();\n if (!value) {\n return null;\n }\n const parsed = new Date(value);\n return Number.isNaN(parsed.getTime()) ? null : parsed;\n },\n {\n equal: (a, b) => {\n if (!!a !== !!b) {\n return false;\n }\n return a?.getTime() === b?.getTime();\n },\n },\n );\n readonly #dateValueString = computed(\n () => this.#dateValue()?.toISOString() ?? '',\n );\n // Does not emit on the initial value, only tracks if a value has ever been set after initialization. This is used to determine whether to call onDateChanged.\n readonly #hadValue = linkedSignal({\n source: () => !!this.#formValue(),\n computation: (_hasValue, previous) =>\n !!previous?.source || !!previous?.value,\n });\n\n constructor() {\n effect(() => {\n const hasValue = this.#hadValue();\n const params = untracked(() => this.params());\n const onDateChanged = params?.onDateChanged;\n if (onDateChanged && hasValue) {\n onDateChanged();\n }\n });\n }\n\n public agInit(params: IDateParams): void {\n this.params.set(params);\n }\n\n public getDate(): Date | null {\n return this.#dateValue();\n }\n\n public refresh(params: IDateParams): void {\n this.agInit(params);\n }\n\n public setDate(date: Date | null): void {\n const currentDate = this.#dateValueString();\n const newDate =\n date && !Number.isNaN(date.getTime()) ? date.toISOString() : '';\n if (newDate !== currentDate) {\n this.dateControl.setValue(newDate || null);\n }\n }\n\n public setInputAriaLabel(placeholder: string): void {\n this.label.set(placeholder);\n }\n\n public setDisabled(disabled: boolean): void {\n if (disabled) {\n this.dateControl.disable();\n } else {\n this.dateControl.enable();\n }\n }\n\n protected focused(): void {\n this.params()?.onFocusIn?.();\n }\n\n protected openChange($event: boolean): void {\n if ($event) {\n this.focused();\n }\n }\n\n protected dateChange(): void {\n this.params()?.onDateChanged?.();\n }\n}\n","<sky-datepicker\n data-sky-id=\"column-filter-datepicker\"\n pickerClass=\"ag-custom-component-popup\"\n (calendarDateChange)=\"dateChange()\"\n (openChange)=\"openChange($event)\"\n>\n <input\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"label()\"\n [formControl]=\"dateControl\"\n [maxDate]=\"maxDate()\"\n [minDate]=\"minDate()\"\n />\n</sky-datepicker>\n","import { Injectable } from '@angular/core';\n\nimport { ColumnGroup } from 'ag-grid-community';\n\n/**\n * To display a help button beside the column group header, create a component containing\n * [`sky-help-inline`](https://developer.blackbaud.com/skyux/components/help-inline),\n * and inject SkyAgGridHeaderGroupInfo to access the column group\n * information, such as display name.\n * Add the component to the `headerGroupComponentParams.inlineHelpComponent`\n * property of the [column group definition](https://www.ag-grid.com/angular-data-grid/column-groups/).\n * @see SkyAgGridHeaderGroupParams\n */\n@Injectable()\nexport class SkyAgGridHeaderGroupInfo {\n /**\n * [Column group information from AG Grid](https://www.ag-grid.com/angular-data-grid/column-object-group/).\n */\n public columnGroup: ColumnGroup | undefined;\n /**\n * Display name of the column group.\n */\n public displayName: string | undefined;\n /**\n * AG Grid's [`context` field](https://www.ag-grid.com/angular-data-grid/context/).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public context: any;\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n SkyDynamicComponentLocation,\n SkyDynamicComponentService,\n} from '@skyux/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { IHeaderGroupAngularComp } from 'ag-grid-angular';\nimport { ProvidedColumnGroup } from 'ag-grid-community';\nimport { BehaviorSubject, Observable, Subscription, takeUntil } from 'rxjs';\n\nimport { fromGridEvent } from '../ag-grid-event-utils';\nimport { SkyAgGridHeaderGroupInfo } from '../types/header-group-info';\nimport { SkyAgGridHeaderGroupParams } from '../types/header-group-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-header-group',\n templateUrl: './header-group.component.html',\n styleUrls: ['./header-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyThemeModule, SkyIconModule, AsyncPipe, SkyI18nModule],\n})\nexport class SkyAgGridHeaderGroupComponent\n implements IHeaderGroupAngularComp, OnDestroy, AfterViewInit\n{\n @ViewChild('inlineHelpContainer', { read: ElementRef, static: true })\n public inlineHelpContainer: ElementRef | undefined;\n\n protected params: SkyAgGridHeaderGroupParams | undefined = undefined;\n protected isExpandable$: Observable<boolean>;\n protected isExpanded$: Observable<boolean>;\n\n #columnGroup: ProvidedColumnGroup | undefined = undefined;\n #isExpandableSubject = new BehaviorSubject<boolean>(false);\n #isExpandedSubject = new BehaviorSubject<boolean>(false);\n #subscriptions = new Subscription();\n #viewInitialized = false;\n #agInitialized = false;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dynamicComponentService = inject(SkyDynamicComponentService);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n constructor() {\n this.isExpandable$ = this.#isExpandableSubject.asObservable();\n this.isExpanded$ = this.#isExpandedSubject.asObservable();\n }\n\n public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public ngOnDestroy(): void {\n this.#subscriptions.unsubscribe();\n }\n\n public agInit(params: SkyAgGridHeaderGroupParams | undefined): void {\n this.#agInitialized = true;\n this.params = params;\n this.#subscriptions.unsubscribe();\n if (!params) {\n return;\n }\n this.#subscriptions = new Subscription();\n this.#columnGroup = params.columnGroup.getProvidedColumnGroup();\n this.#isExpandableSubject.next(!!this.#columnGroup?.isExpandable());\n if (this.#isExpandableSubject.getValue()) {\n this.#subscriptions.add(\n fromGridEvent(params.api, 'columnGroupOpened')\n .pipe(takeUntil(fromGridEvent(params.api, 'gridPreDestroyed')))\n .subscribe((event) => {\n if (\n this.#columnGroup &&\n event.columnGroups.includes(this.#columnGroup)\n ) {\n this.#isExpandedSubject.next(this.#columnGroup.isExpanded());\n }\n }),\n );\n }\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public setExpanded($event: boolean): void {\n this.params?.setExpanded($event);\n }\n\n #updateInlineHelp(): void {\n if (!this.#viewInitialized || !this.#agInitialized) {\n return;\n }\n\n const colGroupDef = this.params?.columnGroup?.getColGroupDef();\n const inlineHelpComponent =\n colGroupDef?.headerGroupComponentParams?.inlineHelpComponent;\n\n if (inlineHelpComponent) {\n const headerGroupInfo = new SkyAgGridHeaderGroupInfo();\n headerGroupInfo.columnGroup = this.params?.columnGroup;\n headerGroupInfo.context = this.params?.context;\n headerGroupInfo.displayName = this.params?.displayName;\n\n this.#dynamicComponentService.createComponent(inlineHelpComponent, {\n providers: [\n {\n provide: SkyAgGridHeaderGroupInfo,\n useValue: headerGroupInfo,\n },\n ],\n environmentInjector: this.#environmentInjector,\n referenceEl: this.inlineHelpContainer?.nativeElement,\n location: SkyDynamicComponentLocation.ElementBottom,\n });\n }\n }\n}\n","@if (params?.displayName) {\n <span\n class=\"header-group-text\"\n role=\"presentation\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ params?.displayName }}</span\n >\n}\n@if (isExpandable$ | async) {\n @if (isExpanded$ | async) {\n <button\n class=\"sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n [attr.aria-label]=\"\n 'sky_ag_grid_column_group_header_collapse_aria_label'\n | skyLibResources: params?.displayName\n \"\n (click)=\"setExpanded(false)\"\n >\n <sky-icon iconName=\"chevron-double-left\" />\n </button>\n } @else {\n <button\n class=\"sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n [attr.aria-label]=\"\n 'sky_ag_grid_column_group_header_expand_aria_label'\n | skyLibResources: params?.displayName\n \"\n (click)=\"setExpanded(true)\"\n >\n <sky-icon iconName=\"chevron-double-right\" />\n </button>\n }\n}\n<span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n RendererFactory2,\n computed,\n inject,\n model,\n signal,\n} from '@angular/core';\nimport { SkyCheckboxChange, SkyCheckboxModule } from '@skyux/forms';\n\nimport { IHeaderAngularComp } from 'ag-grid-angular';\nimport { GridApi, IHeaderParams } from 'ag-grid-community';\nimport { Subscription } from 'rxjs';\n\nimport { fromGridEvent } from '../../ag-grid-event-utils';\n\n@Component({\n selector: 'sky-ag-grid-row-selector-header',\n imports: [SkyCheckboxModule],\n templateUrl: './header-row-selector.component.html',\n styleUrl: './header-row-selector.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.title]': 'label()',\n '[attr.role]': '\"note\"',\n },\n})\nexport class SkyAgGridHeaderRowSelectorComponent implements IHeaderAngularComp {\n protected readonly checked = model(false);\n protected readonly indeterminate = signal(false);\n protected readonly multiSelect = signal(false);\n protected readonly params = signal<IHeaderParams | undefined>(undefined);\n protected readonly label = computed(() => {\n const params = this.params();\n return params?.displayName || params?.column.getColDef().field;\n });\n\n #api: GridApi<unknown> | undefined;\n #subscriptions = new Subscription();\n readonly #renderer = inject(RendererFactory2).createRenderer(undefined, null);\n\n constructor() {\n inject(DestroyRef).onDestroy(() => this.#subscriptions.unsubscribe());\n }\n\n public agInit(params: IHeaderParams): void {\n this.params.set(params);\n this.#api = params.api;\n this.#subscriptions.unsubscribe();\n this.#subscriptions = new Subscription();\n\n // Row selection behavior can only be set when the grid is created.\n // It only changes if the grid is recreated.\n const rowSelection = params.api.getGridOption('rowSelection');\n this.multiSelect.set(\n rowSelection === 'multiple' ||\n (typeof rowSelection === 'object' && rowSelection?.mode === 'multiRow'),\n );\n\n if (this.multiSelect()) {\n this.#subscriptions.add(\n fromGridEvent(params.api, 'selectionChanged').subscribe((change) => {\n if (change.source.match(/selectall/i)) {\n // Either select all or clear selection.\n this.indeterminate.set(false);\n this.checked.set(!!change.selectedNodes?.length);\n } else {\n this.indeterminate.set(!!change.selectedNodes?.length);\n this.checked.set(false);\n }\n }),\n );\n\n this.#subscriptions.add(\n fromGridEvent(params.api, 'rowDataUpdated').subscribe(() => {\n this.indeterminate.set(!!this.#api?.getSelectedNodes().length);\n this.checked.set(false);\n }),\n );\n\n const el = params.eGridHeader;\n if (el) {\n this.#renderer.setAttribute(el, 'aria-keyshortcuts', 'Enter Space');\n this.#subscriptions.add(\n this.#renderer.listen(el, 'keydown', (evt: KeyboardEvent) => {\n if (!['Enter', ' '].includes(evt.key) || evt.repeat) {\n return;\n }\n if (evt.key === ' ') {\n evt.preventDefault();\n }\n if (this.checked()) {\n this.#api?.deselectAll();\n } else {\n this.#api?.selectAll();\n }\n }),\n );\n }\n }\n }\n\n public refresh(): boolean {\n return false;\n }\n\n protected toggleCheckbox($event: SkyCheckboxChange): void {\n if ($event.checked) {\n this.#api?.selectAll();\n } else {\n this.#api?.deselectAll();\n }\n }\n}\n","@if (multiSelect()) {\n <sky-checkbox\n labelHidden\n data-sky-id=\"header-row-selector\"\n [checked]=\"checked()\"\n [labelText]=\"label()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"toggleCheckbox($event)\"\n />\n}\n","import { Injectable } from '@angular/core';\n\nimport { Column } from 'ag-grid-community';\n\n/**\n * To display a help button beside the column header, create a component containing\n * [`sky-help-inline`](https://developer.blackbaud.com/skyux/components/help-inline),\n * and inject SkyAgGridHeaderInfo to access the column information, such\n * as display name.\n * Add the component to the `headerComponentParams.inlineHelpComponent`\n * property of the [column definition](https://www.ag-grid.com/angular-data-grid/column-definitions/).\n * @see SkyAgGridHeaderParams\n */\n@Injectable()\nexport class SkyAgGridHeaderInfo {\n /**\n * [Column information from AG Grid](https://www.ag-grid.com/angular-data-grid/column-object/).\n */\n public column: Column | undefined;\n /**\n * Display name of the column.\n */\n public displayName: string | undefined;\n /**\n * AG Grid's [`context` field](https://www.ag-grid.com/angular-data-grid/context/).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public context: any;\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n ViewChild,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport {\n SkyDynamicComponentLocation,\n SkyDynamicComponentService,\n} from '@skyux/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { IHeaderAngularComp } from 'ag-grid-angular';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { fromGridEvent } from '../ag-grid-event-utils';\nimport { SkyAgGridHeaderInfo } from '../types/header-info';\nimport { SkyAgGridHeaderParams } from '../types/header-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.title]': 'accessibleHeaderText()',\n '[attr.aria-label]': 'displayName() || accessibleHeaderText()',\n '[attr.role]': '\"note\"',\n },\n imports: [SkyIconModule, SkyThemeModule, AsyncPipe, SkyI18nModule],\n})\nexport class SkyAgGridHeaderComponent\n implements IHeaderAngularComp, OnDestroy, AfterViewInit\n{\n public readonly filterEnabled$ = new BehaviorSubject<boolean>(false);\n\n // For accessibility, we need to set the title attribute on the header element if there is no visible header text.\n // https://dequeuniversity.com/rules/axe/4.5/empty-table-header?application=axeAPI\n protected readonly accessibleHeaderText = computed(() => {\n const params = this.params();\n if (\n params?.displayName &&\n !params?.column.getColDef().headerComponentParams?.headerHidden\n ) {\n return undefined;\n } else {\n return params?.displayName || params?.column.getColDef().field;\n }\n });\n\n @ViewChild('inlineHelpContainer', { read: ElementRef, static: true })\n protected inlineHelpContainer: ElementRef | undefined;\n\n protected readonly params = signal<SkyAgGridHeaderParams | undefined>(\n undefined,\n );\n protected sorted = '';\n protected readonly sortOrder$ = new BehaviorSubject<\n 'asc' | 'desc' | undefined\n >(undefined);\n protected readonly sortIndexDisplay$ = new BehaviorSubject<string>('');\n\n protected displayName = computed<string | undefined>(() => {\n const params = this.params();\n if (\n params?.displayName &&\n !params?.column.getColDef().headerComponentParams?.headerHidden\n ) {\n return params.displayName;\n } else {\n return undefined;\n }\n });\n\n #subscriptions = new Subscription();\n #inlineHelpComponentRef: ComponentRef<unknown> | undefined;\n #viewInitialized = false;\n #agInitialized = false;\n #leftPosition = 0;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dynamicComponentService = inject(SkyDynamicComponentService);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n }\n\n public ngOnDestroy(): void {\n this.#subscriptions.unsubscribe();\n }\n\n public agInit(params: SkyAgGridHeaderParams | undefined): void {\n this.#agInitialized = true;\n this.params.set(params);\n this.#subscriptions.unsubscribe();\n if (!params) {\n return;\n }\n this.#leftPosition = params.column.getLeft() ?? 0;\n this.#subscriptions = new Subscription();\n if (params.column.isFilterAllowed()) {\n const handler = (): void => {\n const isFilterActive = params.column.isFilterActive();\n if (isFilterActive !== this.filterEnabled$.getValue()) {\n this.filterEnabled$.next(isFilterActive);\n }\n };\n params.column.addEventListener('filterChanged', handler);\n this.#subscriptions.add(() =>\n params.column.removeEventListener('filterChanged', handler),\n );\n }\n if (params.enableSorting) {\n // Column sort state changes\n const handler = (): void => this.#updateSort();\n params.column.addEventListener('sortChanged', handler);\n this.#subscriptions.add(() =>\n params.column.removeEventListener('sortChanged', handler),\n );\n // Other column sort state changes, for multi-column sorting\n this.#subscriptions.add(\n fromGridEvent(params.api, 'sortChanged').subscribe(() =>\n this.#updateSortIndex(),\n ),\n );\n this.#updateSort();\n this.#updateSortIndex();\n }\n\n // When the column is moved left via the keyboard, the element is detached\n // and reattached to the DOM to maintain DOM order, and its focus is lost.\n this.#subscriptions.add(\n fromGridEvent(params.api, 'columnMoved').subscribe((event) => {\n const left = event.column?.getLeft() ?? 0;\n const oldLeft = this.#leftPosition;\n if (\n event.column === params.column &&\n event.source === 'uiColumnMoved' &&\n left < oldLeft\n ) {\n params.eGridHeader.focus();\n }\n this.#leftPosition = left;\n }),\n );\n\n this.#subscriptions.add(\n fromGridEvent(params.api, 'gridPreDestroyed').subscribe(() =>\n this.#subscriptions.unsubscribe(),\n ),\n );\n\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public onMenuClick($event: Event): void {\n this.params()?.showColumnMenu($event.target as HTMLElement);\n }\n\n public onSortRequested(event: MouseEvent): void {\n if (this.params()?.enableSorting) {\n this.params()?.progressSort(event.shiftKey);\n }\n }\n\n public refresh(params: SkyAgGridHeaderParams): boolean {\n this.agInit(params);\n return false;\n }\n\n #updateInlineHelp(): void {\n if (!this.#viewInitialized || !this.#agInitialized) {\n return;\n }\n\n const inlineHelpComponent = this.params()?.inlineHelpComponent;\n\n if (\n inlineHelpComponent &&\n (!this.#inlineHelpComponentRef ||\n this.#inlineHelpComponentRef.componentType !== inlineHelpComponent)\n ) {\n this.#dynamicComponentService.removeComponent(\n this.#inlineHelpComponentRef,\n );\n\n const headerInfo = new SkyAgGridHeaderInfo();\n headerInfo.column = this.params()?.column;\n headerInfo.context = this.params()?.context;\n headerInfo.displayName = this.params()?.displayName;\n\n this.#inlineHelpComponentRef =\n this.#dynamicComponentService.createComponent(inlineHelpComponent, {\n providers: [\n {\n provide: SkyAgGridHeaderInfo,\n useValue: headerInfo,\n },\n ],\n environmentInjector: this.#environmentInjector,\n referenceEl: this.inlineHelpContainer?.nativeElement,\n location: SkyDynamicComponentLocation.ElementBottom,\n });\n } else if (!inlineHelpComponent) {\n this.#dynamicComponentService.removeComponent(\n this.#inlineHelpComponentRef,\n );\n }\n }\n\n #updateSort(): void {\n this.sortOrder$.next(this.params()?.column.getSort() || undefined);\n }\n\n #updateSortIndex(): void {\n const sortIndex = this.params()?.column.getSortIndex();\n const otherSortColumns = this.params()\n ?.api?.getColumns()\n ?.some(\n (column) =>\n column.getColId() !== this.params()?.column.getColId() &&\n !!column.getSort(),\n );\n if (sortIndex !== undefined && sortIndex !== null && otherSortColumns) {\n this.sortIndexDisplay$.next(`${sortIndex + 1}`);\n } else {\n this.sortIndexDisplay$.next('');\n }\n }\n}\n","<div class=\"ag-cell-label-container\" role=\"presentation\">\n @if (params()?.enableMenu) {\n <span\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon iconName=\"more-actions\" />\n </span>\n }\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <span class=\"ag-header-cell-label-and-icons\">\n @if (params()?.enableSorting) {\n <button\n aria-hidden=\"true\"\n class=\"ag-header-cell-text ag-header-cell-label-sortable sky-btn-link-inline\"\n tabindex=\"-1\"\n type=\"button\"\n [attr.aria-label]=\"accessibleHeaderText()\"\n [innerText]=\"displayName() ?? ''\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n (click)=\"onSortRequested($event)\"\n ></button>\n } @else if (displayName()) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-cell-text\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ displayName() }}</span\n >\n }\n @if (filterEnabled$ | async) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n ><sky-icon iconName=\"filter\"\n /></span>\n }\n @if (params()?.enableSorting) {\n @if (sortOrder$ | async; as sortDirection) {\n <button\n class=\"ag-sort-indicator-container sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n (click)=\"onSortRequested($event)\"\n >\n @if (sortDirection === 'desc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon iconName=\"chevron-down\" iconSize=\"s\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_desc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n @if (sortDirection === 'asc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon iconName=\"chevron-up\" iconSize=\"s\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_asc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n\n @if (sortIndexDisplay$ | async; as sortIndexDisplay) {\n <span\n aria-hidden=\"true\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n >{{ sortIndexDisplay }}</span\n >\n }\n </button>\n } @else {\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span>\n }\n }\n </span>\n <span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n </div>\n</div>\n","export const iconMap: Record<\n string,\n {\n name: string;\n size: number;\n }\n> = {\n // header column group shown when expanded (click to contract)\n columnGroupOpened: {\n name: 'chevron-double-left',\n size: 16,\n },\n\n // header column group shown when contracted (click to expand)\n columnGroupClosed: {\n name: 'chevron-double-right',\n size: 16,\n },\n\n // column tool panel column group contracted (click to expand)\n columnSelectClosed: {\n name: 'chevron-right',\n size: 24,\n },\n\n // column tool panel column group expanded (click to contract)\n columnSelectOpen: {\n name: 'chevron-down',\n size: 24,\n },\n\n // column tool panel header expand/collapse all button, shown\n // when some children are expanded and others are collapsed\n columnSelectIndeterminate: {\n name: 'subtract',\n size: 16,\n },\n\n // accordion open (filter tool panel group, charts group)\n accordionOpen: {\n name: 'chevron-down',\n size: 24,\n },\n\n // accordion closed (filter tool panel group, charts group)\n accordionClosed: {\n name: 'chevron-right',\n size: 24,\n },\n\n // accordion indeterminate - shown when some children are expanded and\n // others are collapsed (filter tool panel group, charts group)\n accordionIndeterminate: {\n name: 'subtract',\n size: 16,\n },\n\n // shown on drag and drop image component icon while dragging\n // column to the side of the grid to pin\n columnMovePin: {\n name: 'arrow-move',\n size: 20,\n },\n\n // shown on drag and drop image component icon while dragging over\n // part of the page that is not a drop zone\n columnMoveHide: {\n name: 'eye-off',\n size: 16,\n },\n\n // shown on drag and drop image component icon while dragging\n // columns to reorder\n columnMoveMove: {\n name: 'arrow-move',\n size: 20,\n },\n\n // animating icon shown when dragging a column to the right of\n // the grid causes horizontal scrolling\n columnMoveLeft: {\n name: 'arrow-move',\n size: 20,\n },\n\n // animating icon shown when dragging a column to the left of\n // the grid causes horizontal scrolling\n columnMoveRight: {\n name: 'arrow-move',\n size: 20,\n },\n\n // shown on drag and drop image component icon while dragging\n // over Row Groups drop zone\n columnMoveGroup: {\n name: 'group',\n size: 20,\n },\n\n // shown on drag and drop image component icon while dragging\n // over Values drop zone\n columnMoveValue: {\n name: 'calculator',\n size: 16,\n },\n\n // shown on drag and drop image component icon while dragging\n // over pivot drop zone\n columnMovePivot: {\n name: 'table-freeze-column',\n size: 16,\n },\n\n // shown on drag and drop image component icon while dragging\n // over drop zone that doesn't support it, e.g.\n // string column over aggregation drop zone\n dropNotAllowed: {\n name: 'prohibited',\n size: 16,\n },\n\n // shown on row group when contracted (click to expand)\n groupContracted: {\n name: 'chevron-right',\n size: 24,\n },\n\n // shown on row group when expanded (click to contract)\n groupExpanded: {\n name: 'chevron-down',\n size: 24,\n },\n\n // set filter tree list group contracted (click to expand)\n setFilterGroupClosed: {\n name: 'chevron-right',\n size: 24,\n },\n\n // set filter tree list group expanded (click to contract)\n setFilterGroupOpen: {\n name: 'chevron-down',\n size: 24,\n },\n\n // set filter tree list expand/collapse all button, shown when\n // some children are expanded and\n // others are collapsed\n setFilterGroupIndeterminate: {\n name: 'subtract',\n size: 16,\n },\n\n // set filter async values loading\n setFilterLoading: {\n name: 'spinner-ios',\n size: 16,\n },\n\n // context menu chart item\n chart: {\n name: 'data-bar-vertical-ascending',\n size: 16,\n },\n\n // dialog title bar\n close: {\n name: 'close',\n size: 24,\n },\n\n // X (remove) on column 'pill' after adding it to a drop zone list\n cancel: {\n name: 'close',\n size: 24,\n },\n\n // indicates the currently active pin state in the \"Pin column\"\n // sub-menu of the column menu\n check: {\n name: 'checkmark',\n size: 20,\n },\n\n // \"go to first\" button in pagination controls\n first: {\n name: 'arrow-previous',\n size: 16,\n },\n\n // \"go to previous\" button in pagination controls\n previous: {\n name: 'chevron-left',\n size: 24,\n },\n\n // \"go to next\" button in pagination controls\n next: {\n name: 'chevron-right',\n size: 24,\n },\n\n // \"go to last\" button in pagination controls\n last: {\n name: 'arrow-next',\n size: 16,\n },\n\n // shown on top right of chart when chart is linked to range\n // data (click to unlink)\n linked: {\n name: 'link-dismiss',\n size: 16,\n },\n\n // shown on top right of chart when chart is not linked to\n // range data (click to link)\n unlinked: {\n name: 'link',\n size: 16,\n },\n\n // rotating spinner shown by the loading cell renderer\n groupLoading: {\n name: 'spinner-ios',\n size: 16,\n },\n\n // button to launch legacy column menu\n menu: {\n name: 'more-actions',\n size: 24,\n },\n\n // button to launch new enterprise column menu\n menuAlt: {\n name: 'more-actions',\n size: 24,\n },\n\n // menu tab icon in legacy tabbed enterprise column menu\n legacyMenu: {\n name: 'more-actions',\n size: 24,\n },\n\n // open filter button - header, floating filter, menu\n filter: {\n name: 'filter',\n size: 16,\n },\n\n // filter is applied - header (legacy column menu), filter tool panel\n filterActive: {\n name: 'filter',\n size: 16,\n },\n\n // filter tab icon in legacy tabbed enterprise column menu\n filterTab: {\n name: 'filter',\n size: 16,\n },\n\n // filter tool panel tab\n filtersToolPanel: {\n name: 'filter',\n size: 16,\n },\n\n // columns in menu (column chooser / columns tab)\n columns: {\n name: 'layout-column-three',\n size: 16,\n },\n\n // column tool panel tab\n columnsToolPanel: {\n name: 'layout-column-three',\n size: 16,\n },\n\n // button in chart regular size window title bar (click to maximise)\n maximize: {\n name: 'arrow-maximize',\n size: 16,\n },\n\n // button in chart maximised window title bar (click to make regular size)\n minimize: {\n name: 'arrow-minimize',\n size: 16,\n },\n\n // \"Pin column\" item in column header menu\n menuPin: {\n name: 'pin',\n size: 16,\n },\n\n // \"Value aggregation\" column menu item (shown on numeric\n // columns when grouping is active)\"\n menuValue: {\n name: 'calculator',\n size: 16,\n },\n\n // \"Group by {column-name}\" item in column header menu\n menuAddRowGroup: {\n name: 'arrow-collapse-all',\n size: 16,\n },\n\n // \"Un-Group by {column-name}\" item in column header menu\n menuRemoveRowGroup: {\n name: 'arrow-collapse-all',\n size: 16,\n },\n\n // context menu copy item\n clipboardCopy: {\n name: 'copy',\n size: 16,\n },\n\n // context menu cut item\n clipboardCut: {\n name: 'cut',\n size: 16,\n },\n\n // context menu paste item\n clipboardPaste: {\n name: 'clipboard-arrow-right',\n size: 16,\n },\n\n // identifies the pivot drop zone\n pivotPanel: {\n name: 'pivot',\n size: 16,\n },\n\n // \"Row groups\" drop zone in column tool panel\n rowGroupPanel: {\n name: 'group',\n size: 20,\n },\n\n // columns tool panel Values drop zone\n valuePanel: {\n name: 'calculator',\n size: 16,\n },\n\n // drag handle used to pick up draggable columns\n columnDrag: {\n name: 're-order-dots-vertical',\n size: 16,\n },\n\n // drag handle used to pick up draggable rows\n rowDrag: {\n name: 'arrow-bidirectional-up-down',\n size: 16,\n },\n\n // context menu export item\n save: {\n name: 'arrow-download',\n size: 16,\n },\n\n // csv export\n csvExport: {\n name: 'document-text',\n size: 16,\n },\n\n // excel export\n excelExport: {\n name: 'document-xls',\n size: 16,\n },\n\n // icon on select dropdowns (select cell editor, charts tool panels)\n selectOpen: {\n name: 'chevron-down',\n size: 24,\n },\n\n // open icon for rich select editor\n richSelectOpen: {\n name: 'chevron-down',\n size: 24,\n },\n\n // remove for rich select editor pills\n richSelectRemove: {\n name: 'close',\n size: 24,\n },\n\n // icon for sub menu item\n subMenuOpen: {\n name: 'arrow-right',\n size: 16,\n },\n\n // version of subMenuOpen used in RTL mode\n subMenuOpenRtl: {\n name: 'arrow-left',\n size: 16,\n },\n\n // separator between column 'pills' when you add multiple\n // columns to the header drop zone\n panelDelimiter: {\n name: 'chevron-right',\n size: 16,\n },\n\n // version of panelDelimiter used in RTL mode\n panelDelimiterRtl: {\n name: 'arrow-left',\n size: 16,\n },\n\n // show on column header when column is sorted ascending\n sortAscending: {\n name: 'chevron-up',\n size: 16,\n },\n\n // show on column header when column is sorted descending\n sortDescending: {\n name: 'chevron-down',\n size: 16,\n },\n\n // show on column header when column has no sort, only when\n // enabled with colDef.unSortIcon=true\n sortUnSort: {\n name: 'subtract',\n size: 16,\n },\n\n // Builder button in Advanced Filter\n advancedFilterBuilder: {\n name: 'group',\n size: 20,\n },\n\n // drag handle used to pick up Advanced Filter Builder rows\n advancedFilterBuilderDrag: {\n name: 're-order-dots-vertical',\n size: 16,\n },\n\n // Advanced Filter Builder row validation error\n advancedFilterBuilderInvalid: {\n name: 'prohibited',\n size: 16,\n },\n\n // shown on Advanced Filter Builder rows to move them up\n advancedFilterBuilderMoveUp: {\n name: 'chevron-up',\n size: 24,\n },\n\n // shown on Advanced Filter Builder rows to move them down\n advancedFilterBuilderMoveDown: {\n name: 'chevron-down',\n size: 24,\n },\n\n // shown on Advanced Filter Builder rows to add new rows\n advancedFilterBuilderAdd: {\n name: 'add-circle',\n size: 24,\n },\n\n // shown on Advanced Filter Builder rows to remove row\n advancedFilterBuilderRemove: {\n name: 'subtract-circle',\n size: 16,\n },\n\n // shown on Advanced Filter Builder selection pills\n advancedFilterBuilderSelect: {\n name: 'chevron-down',\n size: 24,\n },\n\n // icon to open charts menu\n chartsMenu: {\n name: 'more-actions',\n size: 24,\n },\n\n // Edit Chart menu item shown in Integrated Charts menu\n chartsMenuEdit: {\n name: 'data-bar-vertical-ascending',\n size: 16,\n },\n\n // Advanced Settings menu item shown in Integrated Charts menu\n chartsMenuAdvancedSettings: {\n name: 'settings',\n size: 16,\n },\n\n // shown in Integrated Charts menu add fields\n chartsMenuAdd: {\n name: 'add',\n size: 24,\n },\n\n // shown in Integrated Charts tool panel color picker\n chartsColorPicker: {\n name: 'chevron-down',\n size: 24,\n },\n\n // previous in Integrated Charts settings tool panel theme switcher\n chartsThemePrevious: {\n name: 'chevron-left',\n size: 24,\n },\n\n // next in Integrated Charts settings tool panel theme switcher\n chartsThemeNext: {\n name: 'chevron-right',\n size: 24,\n },\n\n // download chart\n chartsDownload: {\n name: 'arrow-download',\n size: 16,\n },\n};\nexport type IconMapType = typeof iconMap;\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { SkyWaitModule } from '@skyux/indicators';\n\nimport { ILoadingOverlayAngularComp } from 'ag-grid-angular';\nimport { ILoadingOverlayParams } from 'ag-grid-community';\n\n@Component({\n selector: 'sky-ag-grid-loading',\n imports: [SkyWaitModule],\n templateUrl: './loading.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridLoadingComponent implements ILoadingOverlayAngularComp {\n public agInit(_params: ILoadingOverlayParams): void {\n // Do nothing.\n }\n\n public refresh(_params: ILoadingOverlayParams): void {\n // Do nothing.\n }\n}\n","<sky-wait [isWaiting]=\"true\" />\n","/**\n * @internal\n */\nexport enum SkyCellClass {\n Autocomplete = 'sky-ag-grid-cell-autocomplete',\n Currency = 'sky-ag-grid-cell-currency',\n Date = 'sky-ag-grid-cell-date',\n Editable = 'sky-ag-grid-cell-editable',\n Invalid = 'sky-ag-grid-cell-invalid',\n Lookup = 'sky-ag-grid-cell-lookup',\n Number = 'sky-ag-grid-cell-number',\n RightAligned = 'sky-ag-grid-cell-right-aligned',\n RowSelector = 'sky-ag-grid-cell-row-selector',\n Template = 'sky-ag-grid-cell-template',\n Text = 'sky-ag-grid-cell-text',\n Uneditable = 'sky-ag-grid-cell-uneditable',\n Validator = 'sky-ag-grid-cell-validator',\n}\n","/**\n * @internal\n */\nexport enum SkyHeaderClass {\n Resizable = 'sky-ag-grid-header-resizable',\n RightAligned = 'sky-ag-grid-header-right-aligned',\n}\n","import { CSP_NONCE, DOCUMENT, Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { SkyLogService } from '@skyux/core';\nimport { SkyDateService } from '@skyux/datetime';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport {\n AgColumn,\n CellClassParams,\n CellFocusedEvent,\n CellRendererSelectorFunc,\n CellRendererSelectorResult,\n ColDef,\n EditableCallbackParams,\n GridOptions,\n HeaderClassParams,\n ICellRendererParams,\n RowClassParams,\n RowNode,\n RowSelectionOptions,\n SuppressHeaderKeyboardEventParams,\n SuppressKeyboardEventParams,\n ValueFormatterParams,\n} from 'ag-grid-community';\nimport { EMPTY, map, of } from 'rxjs';\n\nimport { getSkyAgGridTheme } from '../../styles/ag-grid-theme';\n\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\nimport { applySkyLookupPropertiesDefaults } from './apply-lookup-properties-defaults';\nimport { SkyAgGridCellEditorAutocompleteComponent } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\nimport { SkyAgGridCellEditorCurrencyComponent } from './cell-editors/cell-editor-currency/cell-editor-currency.component';\nimport { SkyAgGridCellEditorDatepickerComponent } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\nimport { SkyAgGridCellEditorLookupComponent } from './cell-editors/cell-editor-lookup/cell-editor-lookup.component';\nimport { SkyAgGridCellEditorNumberComponent } from './cell-editors/cell-editor-number/cell-editor-number.component';\nimport { SkyAgGridCellEditorTextComponent } from './cell-editors/cell-editor-text/cell-editor-text.component';\nimport { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\nimport { SkyAgGridCellRendererLookupComponent } from './cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';\nimport { SkyAgGridCellRendererRowSelectorComponent } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\nimport { SkyAgGridCellRendererTemplateComponent } from './cell-renderers/cell-renderer-template/cell-renderer-template.component';\nimport { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\nimport { SkyAgGridColumnFilterDatepickerComponent } from './column-filters/column-filter-datepicker/column-filter-datepicker.component';\nimport { SkyAgGridHeaderGroupComponent } from './header/header-group.component';\nimport { SkyAgGridHeaderRowSelectorComponent } from './header/header-row-selector/header-row-selector.component';\nimport { SkyAgGridHeaderComponent } from './header/header.component';\nimport { IconMapType, iconMap } from './icons/icon-map';\nimport { SkyAgGridLoadingComponent } from './loading/loading.component';\nimport { SkyCellClass } from './types/cell-class';\nimport { SkyCellType } from './types/cell-type';\nimport { SkyHeaderClass } from './types/header-class';\nimport { LastFocusedCell } from './types/last-focused.cell';\nimport { SkyGetGridOptionsArgs } from './types/sky-grid-options';\n\nfunction autocompleteComparator(\n value1: { name: string },\n value2: { name: string },\n): number {\n if (value1 && value2) {\n if (value1.name > value2.name) {\n return 1;\n }\n\n if (value1.name < value2.name) {\n return -1;\n }\n\n return 0;\n }\n\n return value1 ? 1 : -1;\n}\n\nfunction autocompleteFormatter(params: ValueFormatterParams): string {\n return params.value && params.value.name;\n}\n\nfunction dateComparator(date1: Date | string, date2: Date | string): number {\n let date1value = date1;\n let date2value = date2;\n\n if (typeof date1value === 'string') {\n date1value = new Date(date1);\n }\n\n if (typeof date2value === 'string') {\n date2value = new Date(date2);\n }\n\n if (date1value && date2value) {\n if (date1value > date2value) {\n return 1;\n }\n\n if (date1value < date2value) {\n return -1;\n }\n\n return 0;\n }\n\n return date1value ? 1 : -1;\n}\n\nfunction getValidatorCellRendererSelector(\n component: string,\n fallback?: CellRendererSelectorResult,\n): CellRendererSelectorFunc {\n return (params: ICellRendererParams) => {\n if (\n params.colDef &&\n typeof params.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n if (\n params.column?.isCellEditable(params.node) ||\n !params.colDef.cellRendererParams.skyComponentProperties.validator(\n params.value,\n params.data,\n params?.node?.rowIndex,\n )\n ) {\n return {\n component,\n params: {\n ...params.colDef.cellRendererParams,\n },\n };\n }\n }\n return fallback;\n };\n}\n\nlet rowNodeId = -1;\n\n/**\n * `SkyAgGridService` provides methods to get AG Grid `gridOptions` to ensure grids match SKY UX functionality. The `gridOptions` can be overridden, and include registered SKY UX column types.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridService {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #keyMap = new WeakMap<any, string>();\n readonly #agGridAdapterService = inject(SkyAgGridAdapterService);\n readonly #resources = inject(SkyLibResourcesService, { optional: true });\n readonly #dateService = inject(SkyDateService);\n readonly #logService = inject(SkyLogService);\n readonly #cspNonce = inject(CSP_NONCE, { optional: true });\n readonly #doc = inject(DOCUMENT);\n readonly #currentTheme = toSignal(\n inject(SkyThemeService, { optional: true })?.settingsChange.pipe(\n map((settingsChange) => settingsChange.currentSettings),\n ) ?? EMPTY,\n { initialValue: undefined },\n );\n readonly #currencyValidatorMsg = toSignal(\n this.#resources?.getString(\n 'sky_ag_grid_cell_renderer_currency_validator_message',\n ) ?? of('Please enter a valid currency'),\n { initialValue: 'Please enter a valid currency' },\n );\n readonly #numberValidatorMsg = toSignal(\n this.#resources?.getString(\n 'sky_ag_grid_cell_renderer_number_validator_message',\n ) ?? of('Please enter a valid number'),\n { initialValue: 'Please enter a valid number' },\n );\n readonly #rowSelectorHeading = toSignal(\n this.#resources?.getString('sky_ag_grid_row_selector_column_heading') ??\n of('Row selection'),\n { initialValue: 'Row selection' },\n );\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/angular-data-grid/grid-options/) with default SKY UX options, styling, and cell renderers registered for read-only grids.\n * @param args\n * @returns\n */\n public getGridOptions<T = any>(\n args: SkyGetGridOptionsArgs<T>,\n ): GridOptions<T> {\n const defaultGridOptions = this.#getDefaultGridOptions(args);\n const mergedGridOptions = this.#mergeGridOptions(\n defaultGridOptions,\n args.gridOptions,\n );\n\n return mergedGridOptions;\n }\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/angular-data-grid/grid-options/) with default SKY UX options, styling, and cell editors registered for editable grids.\n * @param args\n * @returns\n */\n public getEditableGridOptions<T = any>(\n args: SkyGetGridOptionsArgs<T>,\n ): GridOptions<T> {\n const defaultGridOptions = this.#getDefaultEditableGridOptions(args);\n const mergedGridOptions = this.#mergeGridOptions<T>(\n defaultGridOptions,\n args.gridOptions,\n );\n\n return mergedGridOptions;\n }\n\n #mergeGridOptions<T>(\n defaultGridOptions: GridOptions<T> & {\n getRowClass: (params: RowClassParams) => string[];\n },\n providedGridOptions: GridOptions<T>,\n ): GridOptions<T> {\n if ('enableRangeSelection' in providedGridOptions) {\n if (providedGridOptions.enableRangeSelection) {\n providedGridOptions.cellSelection = true;\n }\n delete providedGridOptions.enableRangeSelection;\n }\n if (\n providedGridOptions.rowSelection === 'single' ||\n providedGridOptions.rowSelection === 'multiple'\n ) {\n const rowSelectionOptions: Record<string, RowSelectionOptions> = {\n single: { mode: 'singleRow', checkboxes: false },\n multiple: { mode: 'multiRow', checkboxes: false },\n };\n providedGridOptions.rowSelection =\n rowSelectionOptions[providedGridOptions.rowSelection];\n }\n if (providedGridOptions.rowSelection?.mode) {\n providedGridOptions.rowSelection = {\n ...((defaultGridOptions.rowSelection as RowSelectionOptions) ?? {\n checkboxes: false,\n }),\n ...providedGridOptions.rowSelection,\n } as RowSelectionOptions;\n }\n if ('enableCellChangeFlash' in providedGridOptions) {\n providedGridOptions.defaultColDef ??= {};\n providedGridOptions.defaultColDef.enableCellChangeFlash ??=\n !!providedGridOptions.enableCellChangeFlash;\n delete providedGridOptions.enableCellChangeFlash;\n }\n\n const mergedGridOptions: GridOptions = {\n ...defaultGridOptions,\n ...providedGridOptions,\n components: {\n ...providedGridOptions.components,\n // Apply default components last to prevent consumers from overwriting our component types.\n ...defaultGridOptions.components,\n },\n context: {\n ...defaultGridOptions.context,\n ...providedGridOptions.context,\n },\n columnTypes: {\n ...providedGridOptions.columnTypes,\n // apply default second to prevent consumers from overwriting our default column types\n ...defaultGridOptions.columnTypes,\n },\n defaultColDef: {\n ...defaultGridOptions.defaultColDef,\n ...providedGridOptions.defaultColDef,\n // allow consumers to override all defaultColDef properties except cellClassRules, which we reserve for styling\n cellClassRules: defaultGridOptions.defaultColDef?.cellClassRules,\n headerClass: defaultGridOptions.defaultColDef?.headerClass,\n },\n defaultColGroupDef: {\n ...defaultGridOptions.defaultColGroupDef,\n ...providedGridOptions.defaultColGroupDef,\n headerClass: defaultGridOptions.defaultColGroupDef?.headerClass,\n },\n getRowClass: (params): string[] => {\n const defaultClasses = defaultGridOptions.getRowClass(\n params,\n ) as string[];\n const providedClasses = providedGridOptions.getRowClass?.(params) ?? [];\n const providedClassesArray = Array.isArray(providedClasses)\n ? providedClasses\n : [providedClasses];\n return [...defaultClasses, ...providedClassesArray];\n },\n onCellFocused: (event): void => {\n defaultGridOptions.onCellFocused?.(event);\n providedGridOptions.onCellFocused?.(event);\n },\n };\n\n // Enable text selection unless explicitly disabled or conflicting with another setting.\n if (\n mergedGridOptions.enableCellTextSelection ||\n (!('enableCellTextSelection' in mergedGridOptions) &&\n !mergedGridOptions.cellSelection &&\n !mergedGridOptions.columnDefs?.some((col: ColDef) => col.editable))\n ) {\n mergedGridOptions.context ||= {};\n mergedGridOptions.enableCellTextSelection ??= true;\n mergedGridOptions.context.enableCellTextSelection =\n mergedGridOptions.enableCellTextSelection;\n }\n\n return mergedGridOptions;\n }\n\n #getDefaultGridOptions<T>(args: SkyGetGridOptionsArgs<T>): GridOptions<T> & {\n getRowClass: (params: RowClassParams) => string[];\n } {\n // cellClassRules can be functions or string expressions\n const cellClassRuleTrueExpression = (): boolean => true;\n\n function getEditableFn(\n isUneditable?: boolean,\n ): (params: CellClassParams) => boolean {\n return function (params: CellClassParams): boolean {\n let isEditable = params.colDef.editable;\n\n if (typeof isEditable === 'function') {\n const column = params.api.getColumn(params.colDef);\n isEditable = isEditable({\n ...params,\n column,\n } as EditableCallbackParams);\n }\n\n return isUneditable ? !isEditable : !!isEditable;\n };\n }\n\n const editableCellClassRules = {\n [SkyCellClass.Editable]: getEditableFn(),\n [SkyCellClass.Uneditable]: getEditableFn(true),\n };\n\n function getValidatorFn(): (params: CellClassParams) => boolean {\n return function (param: CellClassParams) {\n if (\n param.colDef &&\n typeof param.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n return !param.colDef.cellRendererParams.skyComponentProperties.validator(\n param.value,\n param.data,\n param.node?.rowIndex,\n );\n }\n return false;\n };\n }\n\n const validatorCellClassRules = {\n [SkyCellClass.Invalid]: getValidatorFn(),\n [SkyCellClass.Validator]: cellClassRuleTrueExpression,\n };\n\n function getHeaderClass(\n ...classNames: string[]\n ): (params: HeaderClassParams) => string | string[] | undefined {\n return (params: HeaderClassParams): string | string[] | undefined => {\n // istanbul ignore next\n const minWidth = params.column?.getMinWidth() ?? 0;\n // istanbul ignore next\n const maxWidth = params.column?.getMaxWidth() ?? Infinity;\n if (\n (params.columnGroup?.isResizable() || params.column?.isResizable()) &&\n minWidth < maxWidth\n ) {\n return [...classNames, SkyHeaderClass.Resizable];\n }\n return classNames;\n };\n }\n\n const defaultSkyGridOptions: GridOptions & {\n getRowClass: (params: RowClassParams) => string[];\n } = {\n columnTypes: {\n [SkyCellType.Autocomplete]: {\n cellClassRules: {\n [SkyCellClass.Autocomplete]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorAutocompleteComponent,\n valueFormatter: autocompleteFormatter,\n comparator: autocompleteComparator,\n minWidth: 185,\n },\n [SkyCellType.Currency]: {\n cellClassRules: {\n [SkyCellClass.Currency]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-currency-validator',\n { component: 'sky-ag-grid-cell-renderer-currency' },\n ),\n cellEditor: SkyAgGridCellEditorCurrencyComponent,\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n minWidth: 185,\n sortingOrder: [null, 'desc', 'asc'],\n suppressKeyboardEvent: (params) =>\n this.#suppressEnter(params) || this.#suppressTab(params),\n },\n [SkyCellType.Date]: {\n cellClassRules: {\n [SkyCellClass.Date]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorDatepickerComponent,\n comparator: dateComparator,\n minWidth: this.#currentTheme()?.theme?.name === 'modern' ? 180 : 160,\n valueFormatter: (params: ValueFormatterParams) => {\n try {\n return (\n this.#dateService.format(\n params.value,\n args.locale,\n args.dateFormat || 'shortDate',\n ) || ''\n );\n } catch (err) {\n /* istanbul ignore else */\n if ((err as Error).stack) {\n this.#logService.error(`${(err as Error).stack}`);\n } else {\n this.#logService.error(`${err}`);\n }\n return '';\n }\n },\n },\n [SkyCellType.Lookup]: {\n cellClassRules: {\n [SkyCellClass.Lookup]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorLookupComponent,\n cellRenderer: SkyAgGridCellRendererLookupComponent,\n valueFormatter: (params) => {\n const lookupProperties = applySkyLookupPropertiesDefaults(\n params.colDef?.cellRendererParams?.skyComponentProperties ??\n params.colDef?.cellEditorParams?.skyComponentProperties ??\n {},\n );\n return (params.value || [])\n .map((value: Record<string, unknown>) => {\n return value[lookupProperties.descriptorProperty as string];\n })\n .filter((value: unknown) => value !== '' && value !== undefined)\n .join('; ');\n },\n minWidth: 185,\n },\n [SkyCellType.Number]: {\n cellClassRules: {\n [SkyCellClass.Number]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n cellEditor: SkyAgGridCellEditorNumberComponent,\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n sortingOrder: [null, 'desc', 'asc'],\n },\n [SkyCellType.RightAligned]: {\n cellClassRules: {\n [SkyCellClass.RightAligned]: cellClassRuleTrueExpression,\n },\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n },\n [SkyCellType.RowSelector]: {\n cellClassRules: {\n [SkyCellClass.RowSelector]: cellClassRuleTrueExpression,\n [SkyCellClass.Uneditable]: cellClassRuleTrueExpression,\n },\n cellRenderer: SkyAgGridCellRendererRowSelectorComponent,\n headerComponent: SkyAgGridHeaderRowSelectorComponent,\n headerValueGetter: () => this.#rowSelectorHeading(),\n minWidth: 55,\n maxWidth: 55,\n resizable: false,\n sortable: false,\n width: 55,\n },\n [SkyCellType.Template]: {\n cellClassRules: {\n [SkyCellClass.Template]: cellClassRuleTrueExpression,\n },\n cellRenderer: SkyAgGridCellRendererTemplateComponent,\n cellEditor: SkyAgGridCellRendererTemplateComponent,\n },\n [SkyCellType.Text]: {\n cellClassRules: {\n [SkyCellClass.Text]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorTextComponent,\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n },\n [SkyCellType.Validator]: {\n cellClassRules: {\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n },\n },\n defaultColDef: {\n cellClassRules: editableCellClassRules,\n dateComponent: SkyAgGridColumnFilterDatepickerComponent,\n headerClass: getHeaderClass(),\n headerComponent: SkyAgGridHeaderComponent,\n minWidth: 100,\n suppressHeaderKeyboardEvent: (\n keypress: SuppressHeaderKeyboardEventParams,\n ) => keypress.event.code === 'Tab',\n suppressKeyboardEvent: (keypress: SuppressKeyboardEventParams) =>\n this.#suppressTab(keypress),\n },\n defaultColGroupDef: {\n headerGroupComponent: SkyAgGridHeaderGroupComponent,\n },\n domLayout: 'autoHeight',\n ensureDomOrder: true,\n components: {\n 'sky-ag-grid-cell-renderer-currency':\n SkyAgGridCellRendererCurrencyComponent,\n 'sky-ag-grid-cell-renderer-currency-validator':\n SkyAgGridCellRendererCurrencyValidatorComponent,\n 'sky-ag-grid-cell-renderer-validator-tooltip':\n SkyAgGridCellRendererValidatorTooltipComponent,\n },\n focusGridInnerElement: (params) => {\n const lastFocusedCell = params.context?.['lastFocusedCell'] as\n | LastFocusedCell\n | undefined;\n if (lastFocusedCell) {\n if (lastFocusedCell.rowIndex !== null) {\n params.api.setFocusedCell(\n lastFocusedCell.rowIndex,\n lastFocusedCell.column,\n );\n } else {\n params.api.setFocusedHeader(lastFocusedCell.column);\n }\n return true;\n }\n return false;\n },\n getRowId: (params) => {\n const dataId = params.data.id;\n if (dataId !== undefined) {\n return `${params.data.id}`;\n }\n if (!this.#keyMap.has(params.data)) {\n this.#keyMap.set(params.data, `${rowNodeId--}`);\n }\n return this.#keyMap.get(params.data) as string;\n },\n getRowClass: (params: RowClassParams): string[] => {\n if (params.node.id) {\n return [`sky-ag-grid-row-${params.node.id}`];\n } else {\n return [];\n }\n },\n icons: Object.fromEntries(\n Object.keys(iconMap).map((iconKey) => [\n iconKey,\n this.#getIconTemplate(iconKey as keyof IconMapType),\n ]),\n ),\n loadingOverlayComponent: SkyAgGridLoadingComponent,\n onCellFocused: (event: CellFocusedEvent) => this.#onCellFocused(event),\n rowModelType: 'clientSide',\n rowSelection: {\n mode: 'multiRow',\n enableClickSelection: false,\n enableSelectionWithoutKeys: true,\n checkboxes: false,\n headerCheckbox: false,\n },\n singleClickEdit: true,\n styleNonce: this.#cspNonce ?? undefined,\n suppressDragLeaveHidesColumns: true,\n theme: getSkyAgGridTheme('data-grid'),\n themeStyleContainer: this.#doc.head,\n };\n\n const columnTypes = defaultSkyGridOptions.columnTypes as Record<\n string,\n ColDef\n >;\n\n columnTypes[SkyCellType.CurrencyValidator] = {\n ...columnTypes[SkyCellType.Currency],\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: string): boolean => {\n return !!`${value || ''}`.match(/^[^0-9]*(\\d+[,.]?)+\\d*[^0-9]*$/);\n },\n validatorMessage: this.#currencyValidatorMsg,\n },\n },\n };\n\n columnTypes[SkyCellType.NumberValidator] = {\n ...columnTypes[SkyCellType.Validator],\n ...columnTypes[SkyCellType.Number],\n cellClassRules: {\n ...columnTypes[SkyCellType.Validator].cellClassRules,\n ...columnTypes[SkyCellType.Number].cellClassRules,\n },\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: string): boolean => {\n return !!value && !isNaN(parseFloat(value));\n },\n validatorMessage: this.#numberValidatorMsg,\n },\n },\n };\n\n return defaultSkyGridOptions;\n }\n\n #onCellFocused(event: CellFocusedEvent): void {\n const shouldFocus = this.#shouldFocusChildren(event);\n if (shouldFocus) {\n const currentElement = this.#agGridAdapterService.getFocusedElement();\n this.#agGridAdapterService.focusOnFocusableChildren(currentElement);\n }\n }\n\n #shouldFocusChildren(event: CellFocusedEvent): boolean {\n let shouldFocus = true;\n // The API says the column can be string or null, but should be an object.\n shouldFocus &&= typeof event.column === 'object';\n // Row index can be number or null.\n const rowNode =\n Number.isInteger(event.rowIndex) &&\n event.api.getDisplayedRowAtIndex(event.rowIndex as number);\n shouldFocus &&= !!rowNode;\n // Do not change focus if the cell is a row drag or dnd source.\n shouldFocus &&= !(event.column as AgColumn).isRowDrag(rowNode as RowNode);\n shouldFocus &&= !(event.column as AgColumn).isDndSource(rowNode as RowNode);\n return shouldFocus;\n }\n\n #getDefaultEditableGridOptions<T>(\n args: SkyGetGridOptionsArgs<T>,\n ): GridOptions<T> & {\n getRowClass: (params: RowClassParams) => string[];\n } {\n const defaultGridOptions = this.#getDefaultGridOptions(args);\n defaultGridOptions.rowSelection = undefined;\n defaultGridOptions.theme = getSkyAgGridTheme('data-entry-grid');\n return defaultGridOptions;\n }\n\n #getIconTemplate(iconKey: keyof IconMapType): () => string {\n return () => {\n const iconInfo = iconMap[iconKey];\n return `<svg height=\"16\" width=\"16\"><use xlink:href=\"#sky-i-${iconInfo.name}-${iconInfo.size}-solid\"></use></svg>`;\n };\n }\n\n #suppressTab(params: SuppressKeyboardEventParams): boolean {\n if (params.event.code === 'Tab') {\n if (params.editing) {\n const currentlyFocusedEl =\n this.#agGridAdapterService.getFocusedElement();\n // inline cell editors have the 'ag-cell' class, while popup editors have the 'ag-popup-editor' class\n const cellEl = this.#agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-cell',\n );\n const popupEl = this.#agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-popup-editor',\n );\n const parentEl = cellEl || popupEl;\n\n const nextFocusableElementInCell =\n this.#agGridAdapterService.getNextFocusableElement(\n currentlyFocusedEl,\n parentEl,\n params.event.shiftKey,\n );\n return !!nextFocusableElementInCell;\n }\n return true;\n }\n return false;\n }\n\n #suppressEnter(params: SuppressKeyboardEventParams): boolean {\n if (params.event.code === 'Enter') {\n return params.editing;\n }\n return false;\n }\n}\n","// Export any types that should be included in the root.\nexport { SkyAgGridModule } from './lib/modules/ag-grid/ag-grid.module';\nexport { SkyAgGridService } from './lib/modules/ag-grid/ag-grid.service';\nexport { SkyAgGridRowDeleteCancelArgs } from './lib/modules/ag-grid/types/ag-grid-row-delete-cancel-args';\nexport { SkyAgGridRowDeleteConfirmArgs } from './lib/modules/ag-grid/types/ag-grid-row-delete-confirm-args';\nexport {\n SkyAgGridAutocompleteProperties,\n SkyAutocompleteProperties,\n} from './lib/modules/ag-grid/types/autocomplete-properties';\nexport { SkyCellClass } from './lib/modules/ag-grid/types/cell-class';\nexport { SkyCellEditorAutocompleteParams } from './lib/modules/ag-grid/types/cell-editor-autocomplete-params';\nexport { SkyCellEditorDatepickerParams } from './lib/modules/ag-grid/types/cell-editor-datepicker-params';\nexport { SkyAgGridCellEditorInitialAction } from './lib/modules/ag-grid/types/cell-editor-initial-action';\nexport { SkyCellEditorLookupParams } from './lib/modules/ag-grid/types/cell-editor-lookup-params';\nexport { SkyAgGridCellEditorUtils } from './lib/modules/ag-grid/types/cell-editor-utils';\nexport { SkyCellType } from './lib/modules/ag-grid/types/cell-type';\nexport { SkyAgGridCurrencyProperties } from './lib/modules/ag-grid/types/currency-properties';\nexport {\n SkyAgGridDatepickerProperties,\n SkyDatepickerProperties,\n} from './lib/modules/ag-grid/types/datepicker-properties';\nexport { SkyHeaderClass } from './lib/modules/ag-grid/types/header-class';\nexport { SkyAgGridHeaderGroupInfo } from './lib/modules/ag-grid/types/header-group-info';\nexport { SkyAgGridHeaderGroupParams } from './lib/modules/ag-grid/types/header-group-params';\nexport { SkyAgGridHeaderInfo } from './lib/modules/ag-grid/types/header-info';\nexport { SkyAgGridHeaderParams } from './lib/modules/ag-grid/types/header-params';\nexport { SkyAgGridLookupProperties } from './lib/modules/ag-grid/types/lookup-properties';\nexport { SkyAgGridNumberProperties } from './lib/modules/ag-grid/types/number-properties';\nexport { SkyGetGridOptionsArgs } from './lib/modules/ag-grid/types/sky-grid-options';\nexport { SkyAgGridTextProperties } from './lib/modules/ag-grid/types/text-properties';\nexport { SkyAgGridValidatorProperties } from './lib/modules/ag-grid/types/validator-properties';\n\n// Components and directives must be exported to support Angular's \"partial\" Ivy compiler.\n// Obscure names are used to indicate types are not part of the public API.\nexport { SkyAgGridDataManagerAdapterDirective as λ14 } from './lib/modules/ag-grid/ag-grid-data-manager-adapter.directive';\nexport { SkyAgGridRowDeleteComponent as λ6 } from './lib/modules/ag-grid/ag-grid-row-delete.component';\nexport { SkyAgGridRowDeleteDirective as λ13 } from './lib/modules/ag-grid/ag-grid-row-delete.directive';\nexport { SkyAgGridWrapperComponent as λ12 } from './lib/modules/ag-grid/ag-grid-wrapper.component';\nexport { SkyAgGridCellEditorAutocompleteComponent as λ1 } from './lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\nexport { SkyAgGridCellEditorCurrencyComponent as λ3 } from './lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component';\nexport { SkyAgGridCellEditorDatepickerComponent as λ5 } from './lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\nexport { SkyAgGridCellEditorLookupComponent as λ15 } from './lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component';\nexport { SkyAgGridCellEditorNumberComponent as λ4 } from './lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component';\nexport { SkyAgGridCellEditorTextComponent as λ2 } from './lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component';\nexport { SkyAgGridCellRendererCurrencyValidatorComponent as λ8 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\nexport { SkyAgGridCellRendererCurrencyComponent as λ9 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\nexport { SkyAgGridCellRendererLookupComponent as λ16 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';\nexport { SkyAgGridCellRendererRowSelectorComponent as λ7 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\nexport { SkyAgGridCellRendererValidatorTooltipComponent as λ10 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\nexport { SkyAgGridCellValidatorTooltipComponent as λ11 } from './lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component';\nexport { SkyAgGridColumnFilterDatepickerComponent as λ19 } from './lib/modules/ag-grid/column-filters/column-filter-datepicker/column-filter-datepicker.component';\nexport { SkyAgGridHeaderGroupComponent as λ18 } from './lib/modules/ag-grid/header/header-group.component';\nexport { SkyAgGridHeaderComponent as λ17 } from './lib/modules/ag-grid/header/header.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i4"],"mappings":"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"}
1
+ {"version":3,"file":"skyux-ag-grid.mjs","sources":["../../../../../libs/components/ag-grid/src/lib/modules/shared/sky-ag-grid-resources.module.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-event-utils.ts","../../../../../libs/components/ag-grid/src/lib/styles/ag-grid-theme.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-adapter.service.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-type.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-wrapper.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-wrapper.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete-context.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete.directive.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid.module.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/apply-lookup-properties-defaults.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-editor-initial-action.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-editor-utils.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-template/cell-renderer-template.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/column-filters/column-filter-datepicker/column-filter-datepicker.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/column-filters/column-filter-datepicker/column-filter-datepicker.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-group-info.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-group.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-group.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-row-selector/header-row-selector.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-row-selector/header-row-selector.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-info.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/icons/icon-map.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/loading/loading.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/loading/loading.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-class.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-class.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid.service.ts","../../../../../libs/components/ag-grid/src/index.ts","../../../../../libs/components/ag-grid/src/skyux-ag-grid.ts"],"sourcesContent":["/* istanbul ignore file */\n\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-ag-grid' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Row selector for row {0}',\n },\n sky_ag_grid_row_selector_column_heading: { message: 'Row selection' },\n sky_ag_grid_cell_editor_datepicker_aria_label: {\n message: 'Editable date {0} for row {1}',\n },\n sky_ag_grid_cell_editor_datepicker_hint_text: {\n message: 'Use the format {0}.',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Editable number {0} for row {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Editable text {0} for row {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Editable autocomplete {0} for row {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Enter a valid number.',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Enter a valid currency.',\n },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n sky_ag_grid_cell_editor_currency_aria_label: {\n message: 'Editable currency {0} for row {1}',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_asc: {\n message: 'Sort column {0}, currently ascending',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_desc: {\n message: 'Sort column {0}, currently descending',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted: {\n message: 'Sort column {0}, not currently sorted',\n },\n sky_ag_grid_column_group_header_expand_aria_label: {\n message: 'Expand column group {0}',\n },\n sky_ag_grid_column_group_header_collapse_aria_label: {\n message: 'Collapse column group {0}',\n },\n },\n 'FR-CA': {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Sélecteur de ligne pour la ligne {0}',\n },\n sky_ag_grid_row_selector_column_heading: {\n message: 'Sélection d’une ligne',\n },\n sky_ag_grid_cell_editor_datepicker_aria_label: {\n message: 'Date modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_datepicker_hint_text: {\n message: 'Utilisez le format {0}.',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Numéro modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Texte modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Saisie automatique modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Entrez un numéro valide.',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Entrez une devise valide.',\n },\n skyux_lookup_tokens_summary: { message: '{0} articles sélectionnés' },\n sky_ag_grid_cell_editor_currency_aria_label: {\n message: 'Devise modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_asc: {\n message: 'Trier la colonne {0}, actuellement en ordre croissant',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_desc: {\n message: 'Trier la colonne {0}, actuellement en ordre décroissant',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted: {\n message: 'Trier la colonne {0}, actuellement non triée',\n },\n sky_ag_grid_column_group_header_expand_aria_label: {\n message: 'Agrandir le groupe de colonnes {0}',\n },\n sky_ag_grid_column_group_header_collapse_aria_label: {\n message: 'Réduire le groupe de colonnes {0}',\n },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyAgGridResourcesModule {}\n","import {\n AgEventListener,\n AgEventTypeParams,\n AgPublicEventType,\n GridApi,\n} from 'ag-grid-community';\nimport { Observable } from 'rxjs';\n\nexport function fromGridEvent<\n TEventType extends AgPublicEventType,\n TData = unknown,\n TContext = unknown,\n>(\n target: Pick<GridApi, 'addEventListener' | 'removeEventListener'>,\n eventType: TEventType,\n): Observable<AgEventTypeParams<TData, TContext>[TEventType]> {\n return new Observable<AgEventTypeParams<TData, TContext>[TEventType]>(\n (subscriber) => {\n const handler: AgEventListener<TData, TContext, TEventType> = (\n event: AgEventTypeParams<TData, TContext>[TEventType],\n ): void => subscriber.next(event);\n target.addEventListener(eventType, handler);\n\n return () => {\n target.removeEventListener(eventType, handler);\n };\n },\n );\n}\n","import { SkyThemeSettings } from '@skyux/theme';\n\nimport {\n Theme,\n ThemeDefaultParams,\n colorSchemeLight,\n themeQuartz,\n} from 'ag-grid-community';\n\nconst defaultsForAllThemes: Partial<ThemeDefaultParams> = {\n backgroundColor:\n 'var(--sky-override-ag-grid-background-color, var(--sky-color-background-row-base))',\n borderColor:\n 'var(--sky-override-ag-grid-border-color, var(--sky-color-border-separator-row))',\n borderRadius:\n 'var(--sky-override-ag-grid-border-radius, var(--sky-border-radius-s))',\n cardShadow: 'none',\n cellHorizontalPadding:\n 'var(--sky-override-ag-grid-cell-horizontal-padding, var(--sky-comp-grid-cell-space-inset-left))',\n cellEditingBorder:\n 'var(--sky-override-ag-grid-cell-focus-border-width, var(--sky-border-width-input-focus)) solid var(--sky-override-ag-grid-cell-focus-border-color, var(--sky-color-border-input-focus))',\n checkboxCheckedBorderColor: { ref: 'checkboxCheckedShapeColor' },\n checkboxCheckedShapeColor:\n 'var(--sky-override-switch-checked-color, var(--sky-color-icon-inverse, var(--sky-text-color-default)))',\n checkboxIndeterminateBackgroundColor:\n 'var(--sky-override-switch-checked-color, var(--sky-color-background-selected-switch-base))',\n checkboxIndeterminateBorderColor: { ref: 'checkboxCheckedBorderColor' },\n checkboxIndeterminateShapeColor:\n 'var(--sky-override-switch-checked-color, var(--sky-color-icon-inverse, var(--sky-text-color-default)))',\n checkboxIndeterminateShapeImage: {\n svg: `<svg width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2 4.5A2.5 2.5 0 0 1 4.5 2h7A2.5 2.5 0 0 1 14 4.5v7a2.5 2.5 0 0 1-2.5 2.5h-7A2.5 2.5 0 0 1 2 11.5v-7Z\" fill=\"#212121\"/></svg>`,\n },\n checkboxUncheckedBackgroundColor:\n 'var(--sky-override-ag-grid-checkbox-unchecked-background-color, var(--sky-color-background-input-base))',\n checkboxUncheckedBorderColor: `var(\n --sky-override-ag-grid-checkbox-unchecked-border-color,\n var(--sky-color-border-switch-base)\n )`,\n checkboxCheckedShapeImage: {\n svg: `<svg width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13.9884 3.54756C13.6244 3.16685 13.0164 3.1491 12.6302 3.50792L5.62682 10.0157L3.64517 8.03282C3.27275 7.66016 2.66443 7.65572 2.28646 8.0229C1.90848 8.39007 1.90397 8.98983 2.2764 9.36248L4.85162 11.9393C5.25487 12.3428 5.91121 12.3548 6.32932 11.9663L13.9482 4.88659C14.3343 4.52777 14.3523 3.92827 13.9884 3.54756Z\" fill=\"#212121\"/></svg>`,\n },\n fontFamily:\n 'var(--sky-override-ag-grid-font-family, var(--sky-font-family-primary))',\n fontSize:\n 'var(--sky-override-ag-grid-font-size, var(--sky-font-size-body-m))',\n foregroundColor:\n 'var(--sky-override-ag-grid-foreground-color, var(--sky-color-text-default))',\n headerBackgroundColor:\n 'var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default))',\n headerColumnBorder:\n 'var(--sky-override-ag-grid-border-width, var(--sky-border-width-divider)) var(--sky-override-ag-grid-border-style, var(--sky-border-style-divider)) var(--sky-override-ag-grid-border-color, transparent)',\n headerColumnBorderHeight: '100%',\n headerColumnResizeHandleColor:\n 'var(--sky-override-ag-grid-column-divider-color, var(--sky-color-border-column_divider))',\n headerColumnResizeHandleHeight:\n 'var(--sky-override-ag-grid-header-resize-height, calc(var(--sky-font-line_height-body-m) * var(--sky-font-size-body-m)))',\n headerColumnResizeHandleWidth:\n 'var(--sky-override-ag-grid-header-divider-width, var(--sky-border-width-divider))',\n headerFontFamily: { ref: 'fontFamily' },\n headerHeight:\n 'var(--sky-override-ag-grid-header-height, calc(calc(var(--sky-font-line_height-body-m) * var(--sky-font-size-body-m)) + calc(var(--sky-comp-grid-cell-space-inset-top) + var(--sky-comp-grid-cell-space-inset-bottom))))',\n headerRowBorder:\n 'var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-separator-row)) var(--sky-override-ag-grid-header-row-border-style, var(--sky-border-style-separator-row)) var(--sky-override-ag-grid-border-color, var(--sky-color-border-separator-row))',\n iconSize: 12,\n inputDisabledBackgroundColor: 'transparent',\n inputFocusBorder: 'transparent',\n inputFocusShadow: 'none',\n invalidColor:\n 'var(--sky-override-ag-grid-invalid-color, var(--sky-color-background-action-danger-base))',\n listItemHeight: { ref: 'rowHeight' },\n oddRowBackgroundColor:\n 'var(--sky-override-ag-grid-odd-row-background-color, var(--sky-color-background-row-base))',\n pickerListBackgroundColor: { ref: 'backgroundColor' },\n popupShadow:\n 'var(--sky-override-ag-grid-popup-shadow, var(--sky-elevation-overlay-300))',\n rangeSelectionBorderColor:\n 'var(--sky-override-ag-grid-range-selection-border-color, var(--sky-color-border-input-focus))',\n rowBorder:\n 'var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-separator-row)) var(--sky-override-ag-grid-row-border-style, var(--sky-border-style-separator-row)) var(--sky-override-ag-grid-border-color, var(--sky-color-border-separator-row))',\n rowHeight:\n 'var(--sky-override-ag-grid-row-height, calc(calc(var(--sky-font-line_height-body-m) * var(--sky-font-size-body-m)) + calc(var(--sky-comp-grid-cell-space-inset-top) + var(--sky-comp-grid-cell-space-inset-bottom))))',\n rowHoverColor: 'transparent',\n selectedRowBackgroundColor:\n 'var(--sky-override-ag-grid-row-selected-color, var(--sky-color-background-selected-soft))',\n // TODO: investigate removing this in 13. Does not appear to be impacting anything, but it could be used by features we have not tested so major version removal is safest.\n spacing: 4,\n textColor:\n 'var(--sky-override-ag-grid-text-color, var(--sky-color-text-default))',\n tooltipBackgroundColor:\n 'var(--sky-override-ag-grid-tooltip-background-color, var(--sky-color-background-container-base))',\n wrapperBorderRadius: 0,\n};\n\nconst defaultsForDataEntryGrid = {\n columnBorder:\n 'var(--sky-override-ag-grid-column-border, var(--sky-border-width-separator-row) solid var(--sky-color-border-separator-row))',\n popupShadow: 'none',\n rowBorder:\n 'var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-separator-row)) solid var(--sky-override-ag-grid-border-color, var(--sky-color-border-separator-row))',\n headerRowBorder:\n 'var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-emphasized)) solid var(--sky-override-ag-grid-border-color, var(--sky-color-border-separator-row))',\n};\n\nconst SkyAgGridDataGrid = themeQuartz\n .withoutPart('iconSet')\n .withPart(colorSchemeLight)\n .withParams(defaultsForAllThemes);\n\nconst SkyAgGridDataEntryGrid = SkyAgGridDataGrid.withParams(\n defaultsForDataEntryGrid,\n);\n\nexport function getSkyAgGridTheme(\n grid: 'data-entry-grid' | 'data-grid',\n): Theme {\n if (grid === 'data-grid') {\n return SkyAgGridDataGrid;\n } else {\n return SkyAgGridDataEntryGrid;\n }\n}\n\ntype SkyAgGridThemeType =\n `ag-theme-sky-${'data-entry-grid' | 'data-grid'}-${'default' | 'modern-light' | 'modern-light-compact'}`;\n\nexport function agGridThemeIsCompact(\n themeSettings: SkyThemeSettings | undefined,\n compactLayout: boolean,\n): boolean {\n return (\n themeSettings?.theme.name === 'modern' &&\n (compactLayout || themeSettings?.spacing.name === 'compact')\n );\n}\n\nexport function getSkyAgGridThemeClassName(\n editable: boolean,\n themeSettings: SkyThemeSettings | undefined,\n compactLayout: boolean,\n): SkyAgGridThemeType {\n let theme = `ag-theme-sky-${editable ? 'data-entry-grid' : 'data-grid'}-`;\n if (themeSettings?.theme.name === 'modern') {\n theme += `modern-${themeSettings.mode.name}`;\n if (agGridThemeIsCompact(themeSettings, compactLayout)) {\n theme += `-compact`;\n }\n } else {\n theme += 'default';\n }\n return theme as SkyAgGridThemeType;\n}\n","import { Injectable } from '@angular/core';\nimport { SkyCoreAdapterService } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridAdapterService {\n #skyAdapterService: SkyCoreAdapterService;\n\n constructor(skyAdapterService: SkyCoreAdapterService) {\n this.#skyAdapterService = skyAdapterService;\n }\n\n public getElementOrParentWithClass(\n element: HTMLElement,\n className: string,\n ): HTMLElement | undefined {\n if (element && element.classList.contains(className)) {\n return element;\n } else if (element.parentElement) {\n return this.getElementOrParentWithClass(element.parentElement, className);\n }\n\n return undefined;\n }\n\n public setFocusedElementById(parentEl: HTMLElement, selector: string): void {\n const element = parentEl.querySelector(`#${selector}`) as HTMLElement;\n\n /* istanbul ignore else */\n if (element) {\n element.focus();\n }\n }\n\n public getFocusedElement(): HTMLElement {\n return document.activeElement as HTMLElement;\n }\n\n public getNextFocusableElement(\n currentEl: HTMLElement,\n parentEl?: HTMLElement,\n moveFocusLeft?: boolean,\n ): HTMLElement | undefined {\n if (parentEl) {\n const focusableChildren =\n this.#skyAdapterService.getFocusableChildren(parentEl);\n const currentElementIndex = focusableChildren.indexOf(currentEl);\n const nextIndex = moveFocusLeft\n ? currentElementIndex - 1\n : currentElementIndex + 1;\n\n if (\n (!moveFocusLeft && focusableChildren.length >= nextIndex) ||\n (moveFocusLeft && nextIndex >= 0)\n ) {\n return focusableChildren[nextIndex];\n }\n }\n\n return undefined;\n }\n\n public focusOnFocusableChildren(element: HTMLElement): void {\n const [focusChild] = this.#skyAdapterService.getFocusableChildren(element);\n\n if (focusChild?.offsetParent) {\n focusChild.focus();\n }\n }\n}\n","/**\n * These column types can be used by setting the AG Grid [column definition `type`](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing) to one of the following values.\n * Any [SKY UX component](https://developer.blackbaud.com/skyux/components) can be made into a [cell editor](https://www.ag-grid.com/angular-data-grid/cell-editors/) or [cell renderer](https://www.ag-grid.com/angular-data-grid/component-cell-renderer/) component. If you would like to use a component that does not have a column definition yet, please consider [contributing it](https://github.com/blackbaud/skyux/blob/main/CONTRIBUTING.md) to the SKY UX data entry grid module.\n */\nexport enum SkyCellType {\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX autocomplete components](https://developer.blackbaud.com/skyux/components/autocomplete). You can set any of the autocomplete component's properties by passing `SkyCellEditorAutocompleteParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/angular-data-grid/cell-editing/) based on other cell values. See the demo for an example. Text can be entered and a value selected from the provided list.\n *\n * **Read-only mode**\n *\n * Cells the column will display the currently selected value's name property by default. If the autocomplete needs to show a different property or needs to be formatted in any way, you can [define a `valueFormatter`](https://www.ag-grid.com/angular-data-grid/value-formatters/) on the column definition.\n */\n Autocomplete = 'skyCellAutocomplete',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as a currency amount.\n *\n * **Read-only mode**\n *\n * Formats the display as currency using [SKY UX numeric components](https://developer.blackbaud.com/skyux/components/numeric).\n */\n Currency = 'skyCellCurrency',\n /**\n * **Edit and read-only modes**\n *\n * Combines SkyCellType.Currency and SkyCellType.Validator, where the value is displayed as a currency and passed to a validator function.\n */\n CurrencyValidator = 'skyCellCurrencyValidator',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX datepicker components](https://developer.blackbaud.com/skyux/components/datepicker). You can set any of the datepicker component's properties by passing `SkyCellEditorDatepickerParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/angular-data-grid/cell-editing/) based on other cell values. See the demo for an example. Date values can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will display the currently selected date formatted as `MM-DD-YYYY`, or the date format of the locale passed to `getGridOptions()`. If you would like to overwrite this format, you can [define a `valueFormatter`](https://www.ag-grid.com/angular-data-grid/value-formatters/) on the column definition. See the demo for an example.\n */\n Date = 'skyCellDate',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX lookup components](https://developer.blackbaud.com/skyux-v5/components/lookup). You can set any of the lookup component's properties by passing `SkyCellEditorLookupParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/angular-data-grid/cell-editing/) based on other cell values. See the demo for an example. Text can be entered and a value selected from the provided list.\n *\n * **Read-only mode**\n *\n * Cells the column will display, by default, either: the name(s) of the selected value(s) if there are less than 6, or a summary count of the values if there are more than 5. If the lookup needs to show a different property or needs to be formatted in any way, you can [define a `valueFormatter`](https://www.ag-grid.com/angular-data-grid/value-formatters/) on the column definition.\n */\n Lookup = 'skyCellLookup',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as HTML number `inputs`. Only numbers can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will render as the number value.\n */\n Number = 'skyCellNumber',\n /**\n * **Edit and read-only modes**\n *\n * Combines SkyCellType.Number and SkyCellType.Validator, where the value is displayed as a number and passed to a validator function.\n */\n NumberValidator = 'skyCellNumberValidator',\n /**\n * **Edit and read-only modes**\n *\n * The header and cells in the column will render right aligned.\n */\n RightAligned = 'skyCellRightAligned',\n /**\n * **Edit and read-only modes**\n *\n * Cells in the column will render as [SKY UX checkbox components](https://developer.blackbaud.com/skyux/components/checkbox). It allows the user to select multiple rows, and adds a highlight to selected rows. The [Ag Grid `rowNode`](https://www.ag-grid.com/angular-data-grid/row-object/) will be updated to reflect the selected state.\n */\n RowSelector = 'skyCellRowSelector',\n /**\n * **Read-only mode**\n *\n * Cells in the column will render in a `TemplateRef` passed in the column definition's `cellRendererParams.template` property, with `value` and `row` context. See the demo for an example.\n */\n Template = 'skyCellTemplate',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as HTML text `inputs`. Any characters can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will render as their string value.\n */\n Text = 'skyCellText',\n /**\n * **Edit and read-only modes**\n *\n * Cells in the column will be passed to a validator function that flags erroneous entries. You can set the validator function and message by passing a `SkyAgGridValidatorProperties` object as `skyComponentProperties` to [column definition's `cellRendererParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing), like `skyComponentProperties.validator` and `skyComponentProperties.validatorMessage`. SkyCellType.Validator can be combined with other cell types, such as SkyCellType.Autocomplete or SkyCellType.Date, by using the array syntax for the [column definition's `type` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing).\n */\n Validator = 'skyCellValidator',\n}\n","import { NgClass } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DOCUMENT,\n DestroyRef,\n ElementRef,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n numberAttribute,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n SkyIdModule,\n SkyMutationObserverService,\n SkyViewkeeperModule,\n} from '@skyux/core';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport {\n CellEditingStartedEvent,\n CellFocusedEvent,\n HeaderFocusedEvent,\n} from 'ag-grid-community';\nimport { EMPTY, merge } from 'rxjs';\n\nimport {\n getSkyAgGridTheme,\n getSkyAgGridThemeClassName,\n} from '../../styles/ag-grid-theme';\n\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\nimport { SkyCellType } from './types/cell-type';\n\nlet idIndex = 0;\n\n@Component({\n selector: 'sky-ag-grid-wrapper',\n templateUrl: './ag-grid-wrapper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, SkyIdModule, SkyViewkeeperModule],\n host: {\n '[class.sky-ag-grid-layout-normal]': 'isNormalLayout()',\n },\n})\nexport class SkyAgGridWrapperComponent\n implements AfterContentInit, AfterViewInit\n{\n @ContentChild(AgGridAngular, {\n static: true,\n })\n public agGrid: AgGridAngular | undefined;\n\n protected readonly isNormalLayout = signal(false);\n\n /**\n * Enable a compact layout for the grid when using modern theme. Compact layout uses\n * a smaller font size and row height to display more data in a smaller space.\n */\n public readonly compact = input(false, { transform: booleanAttribute });\n\n /**\n * The minimum height of the grid in pixels. The default value is `50`.\n */\n public readonly minHeight = input<number, unknown>(50, {\n transform: numberAttribute,\n });\n\n public afterAnchorId: string;\n public beforeAnchorId: string;\n public gridId: string;\n\n /**\n * @internal\n */\n public readonly viewkeeperClasses = signal<string[]>([]);\n\n get #isInEditMode(): boolean {\n if (this.agGrid && this.agGrid.api) {\n const primaryGridEditing = this.agGrid.api.getEditingCells().length > 0;\n if (primaryGridEditing) {\n return true;\n } else if (this.agGrid.api.getGridOption('masterDetail')) {\n let innerEditing = false;\n this.agGrid.api.forEachDetailGridInfo((detailGrid) => {\n if (detailGrid?.api && detailGrid.api.getEditingCells().length > 0) {\n innerEditing = true;\n }\n });\n\n return innerEditing;\n }\n }\n return false;\n }\n\n protected readonly skyAgGridDiv =\n viewChild<ElementRef<HTMLElement>>('skyAgGridDiv');\n\n readonly #destroyRef = inject(DestroyRef);\n readonly #themeSvc = inject(SkyThemeService, {\n optional: true,\n });\n readonly #themeSettings = toSignal(this.#themeSvc?.settingsChange ?? EMPTY);\n readonly #adapterService = inject(SkyAgGridAdapterService);\n readonly #elementRef = inject(ElementRef<HTMLElement>);\n readonly #document = inject(DOCUMENT);\n readonly #mutationObserverService = inject(SkyMutationObserverService);\n readonly #hasEditableClass = signal(false);\n readonly #cellEditingClasses = signal<string[]>([]);\n\n public readonly wrapperClasses = computed(() => {\n const hasEditableClass = this.#hasEditableClass();\n const isCompact = this.compact();\n const themeSettings = this.#themeSettings()?.currentSettings;\n const cellEditingClasses = this.#cellEditingClasses();\n\n const skyAgGridThemeClassName = getSkyAgGridThemeClassName(\n hasEditableClass,\n themeSettings,\n isCompact,\n );\n\n const classes = [skyAgGridThemeClassName, ...cellEditingClasses];\n\n if (this.#getTextSelection(hasEditableClass)) {\n classes.push('sky-ag-grid-text-selection');\n }\n\n return [...new Set(classes)];\n });\n\n #agGridClassObserver: MutationObserver | undefined;\n\n constructor() {\n idIndex++;\n this.afterAnchorId = 'sky-ag-grid-nav-anchor-after-' + idIndex;\n this.beforeAnchorId = 'sky-ag-grid-nav-anchor-before-' + idIndex;\n this.gridId = 'sky-ag-grid-' + idIndex;\n\n effect(() => {\n const minHeight = this.minHeight();\n const skyAgGridDiv = this.skyAgGridDiv()?.nativeElement;\n skyAgGridDiv?.style.setProperty(\n '--sky-ag-grid-min-height',\n `${minHeight}px`,\n );\n });\n\n effect(() => {\n const hasEditableClass = this.#hasEditableClass();\n const skyAgGridTheme = getSkyAgGridTheme(\n hasEditableClass ? 'data-entry-grid' : 'data-grid',\n );\n this.agGrid?.api?.setGridOption('theme', skyAgGridTheme);\n });\n\n this.#destroyRef.onDestroy(() => {\n this.#agGridClassObserver?.disconnect();\n });\n }\n\n public ngAfterContentInit(): void {\n if (this.agGrid) {\n const domLayout = this.agGrid.gridOptions?.domLayout;\n if (domLayout === 'autoHeight') {\n if (this.agGrid.gridOptions?.context?.enableTopScroll) {\n this.viewkeeperClasses.update((prev) => [\n ...prev,\n '.ag-header',\n '.ag-body-horizontal-scroll',\n ]);\n } else {\n this.viewkeeperClasses.update((prev) => [...prev, '.ag-header']);\n }\n } else if (domLayout === 'normal') {\n this.isNormalLayout.set(true);\n }\n\n merge(\n this.agGrid.gridReady,\n this.agGrid.firstDataRendered,\n this.agGrid.rowDataUpdated,\n )\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => this.#moveHorizontalScroll());\n\n this.agGrid.cellEditingStarted\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((params: CellEditingStartedEvent) => {\n if (params.colDef.type) {\n const types = Array.isArray(params.colDef.type)\n ? params.colDef.type\n : [params.colDef.type];\n const addClasses = types.map(\n (t) => `sky-ag-grid-cell-editing-${t}`,\n );\n this.#cellEditingClasses.update((prev) => [...prev, ...addClasses]);\n if (\n types.includes(SkyCellType.Template) &&\n params.rowIndex !== null\n ) {\n this.agGrid?.api.setFocusedCell(params.rowIndex, params.column);\n }\n }\n });\n this.agGrid.cellEditingStopped\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => {\n this.#cellEditingClasses.set([]);\n });\n this.agGrid.cellFocused\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((event: CellFocusedEvent) => {\n const context = event.context || {};\n\n context['lastFocusedCell'] = {\n rowIndex: event.rowIndex,\n column:\n typeof event.column === 'object'\n ? event.column?.getColId()\n : `${event.column}`,\n };\n\n event.api?.setGridOption('context', context);\n });\n\n this.agGrid.headerFocused\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((event: HeaderFocusedEvent) => {\n const context = event.context || {};\n\n context['lastFocusedCell'] = {\n rowIndex: null,\n column: event.column?.getUniqueId\n ? event.column.getUniqueId()\n : `${event.column}`,\n };\n\n event.api?.setGridOption('context', context);\n });\n }\n }\n\n public ngAfterViewInit(): void {\n const agGridElement: HTMLElement | undefined =\n this.#elementRef.nativeElement.querySelector('ag-grid-angular') ??\n undefined;\n const callback = (): void => {\n this.#hasEditableClass.set(\n !!agGridElement?.classList.contains('sky-ag-grid-editable'),\n );\n };\n if (agGridElement) {\n this.#agGridClassObserver =\n this.#mutationObserverService.create(callback);\n this.#agGridClassObserver.observe(agGridElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n callback();\n }\n\n /**\n * Prevent closing a modal when focused in AG Grid.\n */\n public onKeyUpEscape($event: Event): void {\n $event.stopPropagation();\n this.agGrid?.api.stopEditing(true);\n }\n\n public onGridKeydown(event: KeyboardEvent): void {\n if (this.agGrid && !this.#isInEditMode && event.key === 'Tab') {\n const idToFocus = event.shiftKey\n ? this.beforeAnchorId\n : this.afterAnchorId;\n this.#adapterService.setFocusedElementById(\n this.#elementRef.nativeElement,\n idToFocus,\n );\n }\n }\n\n public onAnchorFocus(event: FocusEvent): void {\n const relatedTarget = event.relatedTarget as HTMLElement | undefined;\n const previousWasGrid =\n relatedTarget && this.#elementRef.nativeElement.contains(relatedTarget);\n\n if (this.agGrid && !previousWasGrid) {\n this.#elementRef.nativeElement\n .querySelector('.ag-tab-guard.ag-tab-guard-top')\n ?.focus();\n }\n }\n\n #moveHorizontalScroll(): void {\n const toTop = !!this.agGrid?.gridOptions?.context?.enableTopScroll;\n const root = this.#elementRef.nativeElement.querySelector('.ag-root');\n const header = root?.querySelector('.ag-header');\n const floatingBottom = root?.querySelector('.ag-floating-bottom');\n const scrollbar = root?.querySelector('.ag-body-horizontal-scroll');\n if (root && header && floatingBottom && scrollbar) {\n if (\n scrollbar.style.height !==\n scrollbar.style.getPropertyValue(\n '--sky-ag-body-horizontal-scroll-width',\n )\n ) {\n scrollbar.style.setProperty(\n '--sky-ag-body-horizontal-scroll-width',\n scrollbar.style.height,\n );\n }\n const isTop = root.children[1].matches('.ag-body-horizontal-scroll');\n if (toTop && !isTop) {\n const fragment = this.#document.createDocumentFragment();\n fragment.appendChild(scrollbar);\n header.after(fragment);\n } else if (!toTop && isTop) {\n const fragment = this.#document.createDocumentFragment();\n fragment.appendChild(scrollbar);\n floatingBottom.after(fragment);\n }\n }\n }\n\n #getTextSelection(hasEditableClass: boolean): boolean {\n if (this.agGrid?.gridOptions?.context?.enableCellTextSelection) {\n return !hasEditableClass;\n } else {\n return false;\n }\n }\n}\n","<span\n class=\"nav-anchor\"\n tabindex=\"0\"\n [id]=\"beforeAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n<div\n #skyAgGridDiv\n class=\"sky-ag-grid\"\n skyViewkeeperOmitShadow=\".ag-body-horizontal-scroll\"\n tabindex=\"0\"\n [class.sky-ag-grid-top-scrollbar]=\"\n agGrid?.gridOptions?.context &&\n agGrid?.gridOptions?.context['enableTopScroll']\n \"\n [ngClass]=\"wrapperClasses()\"\n [id]=\"gridId\"\n [skyViewkeeper]=\"viewkeeperClasses()\"\n (keydown)=\"onGridKeydown($event)\"\n (keyup.escape)=\"onKeyUpEscape($event)\"\n>\n <ng-content />\n</div>\n<span\n tabindex=\"0\"\n class=\"nav-anchor\"\n [id]=\"afterAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n","import {\n ChangeDetectorRef,\n Directive,\n OnDestroy,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n linkedSignal,\n signal,\n untracked,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { SkyBreakpoint, SkyMediaQueryService } from '@skyux/core';\nimport {\n SkyDataManagerColumnPickerOption,\n SkyDataManagerService,\n SkyDataManagerState,\n SkyDataViewColumnWidths,\n SkyDataViewState,\n} from '@skyux/data-manager';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport {\n ColumnMovedEvent,\n ColumnResizedEvent,\n ColumnState,\n DragStoppedEvent,\n GridApi,\n IColumnLimit,\n RowSelectedEvent,\n} from 'ag-grid-community';\nimport { Subject, filter, map, of, switchMap, takeUntil } from 'rxjs';\n\nimport { fromGridEvent } from './ag-grid-event-utils';\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\nfunction toColumnWidthName(breakpoint: SkyBreakpoint): 'xs' | 'sm' {\n return breakpoint === 'xs' ? 'xs' : 'sm';\n}\n\nconst RESERVED_COLUMNS = ['ag-Grid-SelectionColumn'];\n\n/**\n * Connects `SkyAgGridWrapperComponent` with a `SkyDataViewComponent` to control the grid using a `SkyDataManagerService` instance.\n */\n@Directive({ selector: '[skyAgGridDataManagerAdapter]' })\nexport class SkyAgGridDataManagerAdapterDirective implements OnDestroy {\n public readonly viewId = input<string>();\n\n public readonly agGridList = contentChildren<AgGridAngular>(AgGridAngular, {\n descendants: true,\n });\n\n public skyAgGridWrapperList = contentChildren(SkyAgGridWrapperComponent, {\n descendants: true,\n });\n\n readonly #currentAgGrid = signal<AgGridAngular | undefined>(undefined);\n readonly #isAgGridReady = linkedSignal(\n computed(() => {\n this.#currentAgGrid();\n return false;\n }),\n );\n readonly #currentAgGridReady = computed(() => {\n const agGrid = this.#currentAgGrid();\n if (this.#isAgGridReady()) {\n return agGrid;\n }\n return undefined;\n });\n #currentDataState: SkyDataManagerState | undefined;\n #currentSkyAgGridWrapper: SkyAgGridWrapperComponent | undefined;\n readonly #ngUnsubscribe = new Subject<void>();\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dataManagerSvc = inject(SkyDataManagerService);\n readonly #viewConfigs = toSignal(this.#dataManagerSvc.getDataViewsUpdates(), {\n initialValue: [],\n });\n readonly #viewConfig = computed(() => {\n const viewId = this.viewId();\n return this.#viewConfigs().find((vc) => vc.id === viewId);\n });\n readonly #activeView = toSignal(\n this.#dataManagerSvc.getActiveViewIdUpdates(),\n );\n readonly #isActiveView = computed(() => {\n const activeViewId = this.#activeView();\n const viewId = this.viewId();\n return activeViewId === viewId;\n });\n\n readonly #breakpoint = toSignal(\n inject(SkyMediaQueryService).breakpointChange.pipe(map(toColumnWidthName)),\n );\n\n constructor() {\n effect(() => {\n const list = this.agGridList();\n\n this.#checkForAgGrid(list);\n });\n\n effect(() => {\n const list = this.skyAgGridWrapperList();\n\n this.#checkForSkyAgGridWrapper(list);\n });\n\n effect(() => {\n const breakpoint = this.#breakpoint();\n\n if (breakpoint) {\n this.#applyColumnWidths(breakpoint);\n }\n });\n\n effect(() => {\n const viewId = this.viewId();\n const agGridApi = this.#currentAgGridReady()?.api;\n if (viewId && agGridApi) {\n if (agGridApi.getGridOption('context')?.enableTopScroll) {\n this.#dataManagerSvc.setViewkeeperClasses(viewId, [\n '.ag-header',\n '.ag-body-horizontal-scroll',\n ]);\n } else {\n this.#dataManagerSvc.setViewkeeperClasses(viewId, ['.ag-header']);\n }\n }\n });\n\n effect(() => {\n const isActiveView = this.#isActiveView();\n const agGrid = untracked(this.#currentAgGridReady);\n if (isActiveView) {\n agGrid?.api?.refreshCells();\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.#unregisterAgGrid();\n this.#ngUnsubscribe.complete();\n }\n\n #checkForAgGrid(agGridList: readonly AgGridAngular[]): void {\n const agGrid = agGridList[0];\n const agGridCount = agGridList.length;\n\n if (agGrid) {\n if (agGrid !== this.#currentAgGrid()) {\n this.#registerAgGrid(agGrid);\n }\n\n if (agGridCount > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.',\n );\n }\n }\n }\n\n #checkForSkyAgGridWrapper(\n wrappers: readonly SkyAgGridWrapperComponent[],\n ): void {\n const count = wrappers.length;\n const wrapper = wrappers[0];\n\n /* istanbul ignore else */\n if (wrapper !== this.#currentSkyAgGridWrapper) {\n this.#registerSkyAgGridWrapper(wrapper);\n }\n\n if (count > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.',\n );\n }\n }\n\n #unregisterAgGrid(): void {\n this.#ngUnsubscribe.next();\n this.#currentAgGrid.set(undefined);\n }\n\n #unregisterSkyAgGridWrapper(): void {\n this.#currentSkyAgGridWrapper = undefined;\n }\n\n #registerSkyAgGridWrapper(wrapper: SkyAgGridWrapperComponent): void {\n this.#unregisterSkyAgGridWrapper();\n this.#currentSkyAgGridWrapper = wrapper;\n\n setTimeout(() => {\n if (this.#currentSkyAgGridWrapper) {\n this.#currentSkyAgGridWrapper.viewkeeperClasses.set([]);\n }\n });\n }\n\n #registerAgGrid(agGrid: AgGridAngular): void {\n this.#unregisterAgGrid();\n\n this.#currentAgGrid.set(agGrid);\n\n if (agGrid) {\n agGrid.gridReady\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n switchMap(() => {\n let viewConfig = this.#viewConfig();\n if (viewConfig) {\n viewConfig = {\n ...viewConfig,\n onSelectAllClick: (): void => {\n if (!agGrid.api.isDestroyed()) {\n agGrid.api.selectAll();\n }\n },\n onClearAllClick: (): void => {\n if (!agGrid.api.isDestroyed()) {\n agGrid.api.deselectAll();\n }\n },\n };\n if (viewConfig.columnPickerEnabled && !viewConfig.columnOptions) {\n viewConfig.columnOptions = this.#readColumnOptionsFromGrid(\n agGrid.api,\n );\n }\n this.#dataManagerSvc.updateViewConfig(viewConfig);\n\n this.#applyColumnWidths();\n return this.#dataManagerSvc.getDataStateUpdates(viewConfig.id);\n }\n /* istanbul ignore next */\n return of(undefined);\n }),\n filter(Boolean),\n )\n .subscribe((dataState: SkyDataManagerState) => {\n this.#currentDataState = dataState;\n this.#displayColumns(dataState);\n this.#applySort(dataState);\n this.#isAgGridReady.set(true);\n });\n\n agGrid.gridReady\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n switchMap(() => fromGridEvent(agGrid.api, 'gridPreDestroyed')),\n )\n .subscribe(() => {\n this.#unregisterAgGrid();\n });\n\n agGrid.columnMoved\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n filter(\n (event: ColumnMovedEvent) =>\n ![\n 'gridInitializing',\n 'uiColumnResized',\n 'uiColumnDragged',\n 'api',\n ].includes(event.source),\n ),\n )\n .subscribe((value: ColumnMovedEvent) => {\n this.#updateColumnsInCurrentDataState(value.api);\n });\n\n agGrid.columnResized\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n filter(\n (event: ColumnResizedEvent) => event.source === 'uiColumnResized',\n ),\n )\n .subscribe((event: ColumnResizedEvent) => {\n const colId = event.column?.getColId();\n const width = event.column?.getActualWidth();\n const breakpoint = this.#breakpoint();\n\n if (colId && width && breakpoint) {\n this.#updateColumnWidth(colId, width, breakpoint);\n }\n });\n\n agGrid.dragStopped\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value: DragStoppedEvent) => {\n this.#updateColumnsInCurrentDataState(value.api);\n });\n\n agGrid.rowSelected\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event: RowSelectedEvent) => {\n const viewConfig = this.#viewConfig();\n if (viewConfig && this.#currentDataState) {\n const row = event.node;\n const selectedIds = [...(this.#currentDataState.selectedIds || [])];\n const rowIndex = selectedIds.indexOf(row.data.id);\n\n if (row.isSelected() && rowIndex === -1) {\n selectedIds.push(row.data.id);\n } else if (!row.isSelected() && rowIndex !== -1) {\n selectedIds.splice(rowIndex, 1);\n }\n\n const newState = new SkyDataManagerState(\n this.#currentDataState.getStateOptions(),\n );\n newState.selectedIds = selectedIds;\n this.#currentDataState = newState;\n this.#dataManagerSvc.updateDataState(newState, viewConfig.id);\n\n this.#changeDetector.markForCheck();\n }\n });\n\n agGrid.sortChanged.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n const gridColumnStates: ColumnState[] = agGrid.api.getColumnState();\n const viewConfig = this.#viewConfig();\n\n const activeSortColumnState =\n gridColumnStates?.find(\n (aGridColumnState) => aGridColumnState.sortIndex === 0,\n ) ??\n gridColumnStates?.find((aGridColumnState) => aGridColumnState.sort);\n\n if (viewConfig && this.#currentDataState) {\n const newState = new SkyDataManagerState(\n this.#currentDataState.getStateOptions(),\n );\n if (activeSortColumnState) {\n const activeSortColumnDef = agGrid.api.getColumnDef(\n activeSortColumnState.colId,\n );\n newState.activeSortOption = {\n descending: activeSortColumnState.sort === 'desc',\n id: activeSortColumnState.colId,\n propertyName: activeSortColumnDef?.field || '',\n label: activeSortColumnDef?.headerName || '',\n };\n } else {\n newState.activeSortOption = undefined;\n }\n this.#currentDataState = newState;\n this.#dataManagerSvc.updateDataState(newState, viewConfig.id);\n }\n });\n }\n }\n\n #updateColumnsInCurrentDataState(api: GridApi): void {\n const viewConfig = this.#viewConfig();\n if (viewConfig && this.#currentDataState) {\n const columnOrder = this.#getColumnOrder(api);\n\n const viewState = this.#currentDataState.getViewStateById(viewConfig.id);\n\n if (\n viewState &&\n (viewState.displayedColumnIds.length !== columnOrder.length ||\n viewState.displayedColumnIds.some((col, i) => col !== columnOrder[i]))\n ) {\n const updatedViewState = new SkyDataViewState(\n viewState.getViewStateOptions(),\n );\n updatedViewState.displayedColumnIds = columnOrder;\n\n const newDataState = this.#currentDataState.addOrUpdateView(\n viewConfig.id,\n updatedViewState,\n );\n this.#currentDataState = newDataState;\n this.#dataManagerSvc.updateDataState(newDataState, viewConfig.id);\n }\n }\n }\n\n #getColumnOrder(api: GridApi | undefined): string[] {\n /* istanbul ignore next */\n return (api?.getColumnState() ?? [])\n .filter((state) => !state.hide)\n .map((state) => state.colId);\n }\n\n #displayColumns(dataState: SkyDataManagerState): void {\n const agGrid = this.#currentAgGrid();\n const viewConfig = this.#viewConfig();\n\n if (agGrid && viewConfig) {\n const viewState = dataState.getViewStateById(viewConfig.id);\n let displayedColumnIds: string[] = [];\n\n /*istanbul ignore else*/\n if (viewState?.displayedColumnIds) {\n displayedColumnIds = viewState.displayedColumnIds;\n }\n\n const columnOrder = this.#getColumnOrder(agGrid.api);\n\n if (\n (displayedColumnIds.length !== columnOrder.length ||\n displayedColumnIds.some((col, i) => col !== columnOrder[i])) &&\n agGrid.api\n ) {\n const hideColumns = agGrid.api\n .getColumnState()\n .map((col) => col.colId)\n .filter(\n (colId) =>\n !displayedColumnIds.includes(colId) &&\n !RESERVED_COLUMNS.includes(colId),\n );\n\n agGrid.api.setColumnsVisible(hideColumns, false);\n agGrid.api.setColumnsVisible(displayedColumnIds, true);\n agGrid.api.moveColumns(displayedColumnIds, 0);\n this.#removeColumnWidths(hideColumns);\n }\n }\n }\n\n #applySort(dataState: SkyDataManagerState): void {\n const agGridApi = this.#currentAgGrid()?.api;\n const activeSort = dataState.activeSortOption;\n\n if (agGridApi && activeSort) {\n agGridApi.applyColumnState({\n state: [\n {\n colId: activeSort.id,\n sort: activeSort.descending ? 'desc' : 'asc',\n },\n ],\n defaultState: { sort: null },\n });\n }\n }\n\n #updateColumnWidth(\n colId: string,\n width: number,\n breakpoint: SkyBreakpoint,\n ): void {\n const viewId = this.viewId();\n const viewState =\n viewId && this.#currentDataState?.getViewStateById(viewId);\n if (viewState && viewId && this.#currentDataState) {\n const updatedViewState = new SkyDataViewState(\n viewState.getViewStateOptions(),\n );\n\n updatedViewState.columnWidths[toColumnWidthName(breakpoint)][colId] =\n width;\n\n const newDataState = this.#currentDataState.addOrUpdateView(\n viewId,\n updatedViewState,\n );\n this.#currentDataState = newDataState;\n this.#dataManagerSvc.updateDataState(newDataState, viewId);\n }\n }\n\n #removeColumnWidths(colIds: string[]): void {\n const viewId = this.viewId();\n const viewState =\n viewId && this.#currentDataState?.getViewStateById(viewId);\n\n if (viewState && viewId && this.#currentDataState) {\n const updatedViewState = new SkyDataViewState(\n viewState.getViewStateOptions(),\n );\n\n for (const colId of colIds) {\n delete updatedViewState.columnWidths['xs'][colId];\n delete updatedViewState.columnWidths['sm'][colId];\n }\n\n const newDataState = this.#currentDataState.addOrUpdateView(\n viewId,\n updatedViewState,\n );\n this.#currentDataState = newDataState;\n this.#dataManagerSvc.updateDataState(newDataState, viewId);\n }\n }\n\n #applyColumnWidths(breakpoint?: SkyBreakpoint): void {\n breakpoint ??= this.#breakpoint();\n const currentAgGridApi = this.#currentAgGridReady()?.api;\n const viewId = this.viewId();\n\n if (breakpoint && currentAgGridApi) {\n const viewState =\n viewId && this.#currentDataState?.getViewStateById(viewId);\n\n if (viewState && viewState.columnWidths && viewState.displayedColumnIds) {\n const columnLimits = this.#getGridColumnLimits(\n viewState.displayedColumnIds,\n viewState.columnWidths,\n toColumnWidthName(breakpoint),\n );\n\n currentAgGridApi.sizeColumnsToFit({ columnLimits });\n }\n }\n }\n\n #getGridColumnLimits(\n displayedColumns: string[],\n currentWidths: SkyDataViewColumnWidths,\n breakpointName: keyof SkyDataViewColumnWidths,\n ): IColumnLimit[] {\n const gridColumnLimits: IColumnLimit[] = [];\n\n for (const column of displayedColumns) {\n const columnWidth = currentWidths[breakpointName][column];\n\n if (columnWidth) {\n gridColumnLimits.push({\n key: column,\n minWidth: columnWidth,\n maxWidth: columnWidth,\n });\n }\n }\n return gridColumnLimits;\n }\n\n #readColumnOptionsFromGrid(api: GridApi): SkyDataManagerColumnPickerOption[] {\n // Technically `api.getColumns()` can return null but it's not testable.\n /* istanbul ignore next */\n const columns = api.getColumns() ?? [];\n return columns.map((col) => {\n const colDef = col.getColDef();\n return {\n id: col.getColId(),\n initialHide: colDef.initialHide,\n label: `${colDef.headerName ?? ''}`,\n alwaysDisplayed:\n colDef.lockVisible || !colDef.headerName || col.isPinned(),\n };\n });\n }\n}\n","import {\n ElementRef,\n InjectionToken,\n Signal,\n WritableSignal,\n} from '@angular/core';\n\nimport { GridApi } from 'ag-grid-community';\nimport { Subject, Subscription } from 'rxjs';\n\n/**\n * @internal\n */\nexport const SKY_AG_GRID_ROW_DELETE_CONTEXT =\n new InjectionToken<SkyAgGridRowDeleteContext>('SkyAgGridRowDeleteContext');\n\n/**\n * Used to provide dependencies to the `SkyAgGridRowDeleteComponent` overlay.\n * @internal\n */\nexport class SkyAgGridRowDeleteContext {\n public readonly cancelRowDelete = new Subject<string>();\n public readonly confirmRowDelete = new Subject<string>();\n public readonly subscription = new Subscription();\n\n constructor(\n public readonly rows: Signal<string[]>,\n public readonly gridElement: Signal<ElementRef<HTMLElement>[] | undefined>,\n public readonly gridApi: WritableSignal<GridApi | undefined>,\n ) {\n this.subscription.add(() => {\n this.cancelRowDelete.complete();\n this.confirmRowDelete.complete();\n });\n }\n}\n","import { Component, ElementRef, computed, inject, signal } from '@angular/core';\nimport {\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport { SkyAffixModule, SkyResizeObserverService } from '@skyux/core';\nimport { SkyInlineDeleteModule } from '@skyux/layout';\n\nimport { GridApi } from 'ag-grid-community';\nimport {\n filter,\n map,\n merge,\n of,\n scan,\n startWith,\n switchMap,\n takeUntil,\n} from 'rxjs';\n\nimport { fromGridEvent } from './ag-grid-event-utils';\nimport { SKY_AG_GRID_ROW_DELETE_CONTEXT } from './ag-grid-row-delete-context';\n\n/**\n * Component for rendering the inline delete template in the overlay.\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-row-delete',\n templateUrl: './ag-grid-row-delete.component.html',\n styleUrl: './ag-grid-row-delete.component.css',\n imports: [SkyInlineDeleteModule, SkyAffixModule],\n host: {\n '[style]': '\"--table-width: \" + tableWidthStyle()',\n },\n})\nexport class SkyAgGridRowDeleteComponent {\n public readonly service = inject(SKY_AG_GRID_ROW_DELETE_CONTEXT);\n\n protected tableWidthStyle = computed(() => {\n const tableWidth = this.tableWidth();\n if (tableWidth > 0) {\n return `${tableWidth}px`;\n }\n return 'auto';\n });\n\n protected rowsWithElements = computed(\n (): { rowId: string; increment: string; element: HTMLElement | null }[] => {\n const rows = this.service.rows();\n const gridElement = this.service.gridElement();\n const gridApi = this.service.gridApi();\n const increment = this.gridChanges();\n if (!gridElement || !gridApi) {\n return [];\n }\n return rows\n .filter((rowId) => !!rowId && !!gridApi.getRowNode(rowId))\n .map((rowId) => {\n const element = gridElement[0]?.nativeElement\n .querySelector<HTMLElement>(`\n [row-id=\"${rowId}\"] div[aria-colindex],\n .ag-row.sky-ag-grid-row-${rowId} div[aria-colindex]\n `);\n return { rowId, element, increment: `${rowId}-${increment}` };\n });\n },\n );\n\n protected readonly pending = signal<string[]>([]);\n protected readonly tableWidth = signal<number>(0);\n\n // Force redrawing overlays when the grid changes by incrementing a number.\n protected readonly gridChanges = toSignal(\n toObservable(this.service.gridApi).pipe(\n switchMap((gridApi) =>\n gridApi\n ? merge(\n fromGridEvent(gridApi, 'componentStateChanged'),\n fromGridEvent(gridApi, 'firstDataRendered'),\n fromGridEvent(gridApi, 'gridSizeChanged'),\n fromGridEvent(gridApi, 'modelUpdated'),\n fromGridEvent(gridApi, 'rowDataUpdated'),\n ).pipe(takeUntil(fromGridEvent(gridApi, 'gridPreDestroyed')))\n : of(undefined),\n ),\n startWith(1),\n map(() => 1),\n scan((acc, val) => acc + val),\n ),\n { initialValue: 0 },\n );\n\n readonly #resizeObserverSvc = inject(SkyResizeObserverService);\n\n constructor() {\n // Maintain table width when the grid is resized.\n toObservable(this.service.gridElement)\n .pipe(\n filter(\n (el): el is ElementRef<HTMLElement>[] => Array.isArray(el) && !!el[0],\n ),\n switchMap((gridElement) =>\n this.#resizeObserverSvc\n .observe(gridElement[0])\n .pipe(map(() => gridElement[0].nativeElement.offsetWidth)),\n ),\n takeUntilDestroyed(),\n )\n .subscribe((tableWidth) => {\n this.tableWidth.set(tableWidth);\n });\n\n // Clean up pending rows when the grid data is updated.\n toObservable(this.service.gridApi)\n .pipe(\n filter((gridApi): gridApi is GridApi => !!gridApi),\n switchMap((gridApi) =>\n fromGridEvent(gridApi, 'rowDataUpdated').pipe(\n takeUntil(fromGridEvent(gridApi, 'gridPreDestroyed')),\n map(() => gridApi),\n ),\n ),\n takeUntilDestroyed(),\n )\n .subscribe((gridApi) => {\n this.pending.update((pending) =>\n pending.filter((rowId) => !!gridApi.getRowNode(rowId)),\n );\n });\n }\n\n protected cancelDelete(rowId: string): void {\n this.service.cancelRowDelete.next(rowId);\n }\n\n protected confirmDelete(rowId: string): void {\n this.pending.update((pending) => pending.concat(rowId));\n this.service.confirmRowDelete.next(rowId);\n }\n}\n","@for (row of rowsWithElements(); track row.increment) {\n @if (row.element?.offsetParent && row.element; as element) {\n <div\n class=\"sky-ag-grid-row-delete\"\n affixPlacement=\"above\"\n affixVerticalAlignment=\"top\"\n affixHorizontalAlignment=\"left\"\n [id]=\"'row-delete-ref-' + row.rowId\"\n [style.height]=\"element.offsetHeight + 'px'\"\n [skyAffixTo]=\"element\"\n [affixIsSticky]=\"true\"\n >\n <sky-inline-delete\n [pending]=\"pending().includes(row.rowId ?? '')\"\n (cancelTriggered)=\"cancelDelete(row.rowId)\"\n (deleteTriggered)=\"confirmDelete(row.rowId)\"\n />\n </div>\n }\n}\n","import {\n Directive,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n afterNextRender,\n contentChild,\n inject,\n linkedSignal,\n model,\n output,\n signal,\n} from '@angular/core';\nimport {\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport {\n SKY_STACKING_CONTEXT,\n SkyOverlayInstance,\n SkyOverlayService,\n SkyScrollableHostService,\n} from '@skyux/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport { GridApi } from 'ag-grid-community';\nimport {\n BehaviorSubject,\n Subject,\n distinctUntilChanged,\n filter,\n switchMap,\n take,\n takeUntil,\n} from 'rxjs';\n\nimport {\n SKY_AG_GRID_ROW_DELETE_CONTEXT,\n SkyAgGridRowDeleteContext,\n} from './ag-grid-row-delete-context';\nimport { SkyAgGridRowDeleteComponent } from './ag-grid-row-delete.component';\nimport { SkyAgGridRowDeleteCancelArgs } from './types/ag-grid-row-delete-cancel-args';\nimport { SkyAgGridRowDeleteConfirmArgs } from './types/ag-grid-row-delete-confirm-args';\n\n/**\n * Enables inline row delete functionality for an AG Grid when included\n * on the `SkyAgGridWrapperComponent` element. The directive uses\n * `rowDeleteIds` to determine which rows to add inline delete options to.\n */\n@Directive({\n selector: '[skyAgGridRowDelete]',\n})\nexport class SkyAgGridRowDeleteDirective implements OnDestroy {\n /**\n * The IDs of the data in the rows where the inline delete appears.\n */\n public readonly rowDeleteIds = model<string[]>([]);\n\n /**\n * Emits a `SkyAgGridRowDeleteCancelArgs` object when a row's inline delete is cancelled.\n */\n public rowDeleteCancel = output<SkyAgGridRowDeleteCancelArgs>();\n\n /**\n * Emits a `SkyAgGridRowDeleteConfirmArgs` object when a row's inline delete is confirmed.\n */\n public rowDeleteConfirm = output<SkyAgGridRowDeleteConfirmArgs>();\n\n protected readonly agGrid = contentChild(AgGridAngular);\n\n readonly #agGridRootElement = new BehaviorSubject<\n ElementRef<HTMLDivElement>[]\n >([]);\n readonly #agGridBodyClipElements = new BehaviorSubject<\n ElementRef<HTMLDivElement>[]\n >([]);\n readonly #ngUnsubscribe = new Subject<void>();\n readonly #rowDeleteIdsInternal = linkedSignal<unknown[], string[]>({\n source: this.rowDeleteIds,\n computation: (value) =>\n [...new Set(value)]\n .filter(Boolean)\n .map(String)\n .sort((a, b) => a.localeCompare(b)),\n equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]),\n });\n readonly #clipPath = new BehaviorSubject<string | undefined>(undefined);\n readonly #zIndex = new BehaviorSubject(998);\n readonly #elementRef = inject(ElementRef<HTMLElement>);\n readonly #environmentInjector = inject(EnvironmentInjector);\n readonly #overlayService = inject(SkyOverlayService);\n #overlay: SkyOverlayInstance | undefined;\n readonly #rowDeleteSvc: SkyAgGridRowDeleteContext;\n readonly #scrollableHostService = inject(SkyScrollableHostService);\n readonly #stackingContext = inject(SKY_STACKING_CONTEXT, { optional: true });\n\n constructor() {\n if (this.#stackingContext) {\n this.#stackingContext.zIndex\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((zIndex) => {\n this.#zIndex.next(zIndex);\n });\n }\n\n this.#rowDeleteSvc = new SkyAgGridRowDeleteContext(\n this.#rowDeleteIdsInternal.asReadonly(),\n toSignal(this.#agGridRootElement),\n signal<GridApi | undefined>(undefined),\n );\n\n this.#rowDeleteSvc.cancelRowDelete\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((rowId) => {\n if (rowId) {\n this.rowDeleteIds.update((rowIds) =>\n rowIds.filter((id) => id !== rowId),\n );\n this.rowDeleteCancel.emit({ id: rowId });\n }\n });\n\n this.#rowDeleteSvc.confirmRowDelete\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((rowId) => {\n if (rowId) {\n this.rowDeleteConfirm.emit({ id: rowId });\n }\n });\n\n const agGrid = toObservable(this.agGrid);\n const agGridReady = agGrid.pipe(\n filter((agGrid) => !!agGrid),\n switchMap((agGrid: AgGridAngular) => agGrid.gridReady),\n take(1),\n takeUntil(this.#ngUnsubscribe),\n );\n agGridReady.subscribe((ready) => {\n const rootWrapper = this.#elementRef.nativeElement.querySelector(\n 'div.ag-root-wrapper',\n );\n if (rootWrapper) {\n this.#agGridRootElement.next([\n new ElementRef(rootWrapper as HTMLDivElement),\n ]);\n }\n this.#rowDeleteSvc.gridApi.set(ready.api);\n });\n this.#agGridRootElement\n .pipe(takeUntilDestroyed())\n .subscribe((el) => this.#agGridBodyClipElements.next(el));\n\n agGrid\n .pipe(\n filter((agGrid) => !!agGrid),\n switchMap((agGrid: AgGridAngular) => agGrid.rowDataUpdated),\n takeUntil(this.#ngUnsubscribe),\n )\n .subscribe((evt) => {\n this.rowDeleteIds.update((rowIds) =>\n (rowIds ?? []).filter((id) => !!evt.api.getRowNode(id)),\n );\n });\n\n afterNextRender(() => {\n this.#overlay = this.#overlayService.create({\n enableScroll: true,\n environmentInjector: this.#environmentInjector,\n showBackdrop: false,\n closeOnNavigation: false,\n enableClose: false,\n enablePointerEvents: true,\n });\n\n this.#overlay.attachComponent(SkyAgGridRowDeleteComponent, [\n {\n provide: SKY_AG_GRID_ROW_DELETE_CONTEXT,\n useValue: this.#rowDeleteSvc,\n },\n ]);\n this.#zIndex\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n takeUntil(this.#overlay.closed),\n distinctUntilChanged(),\n )\n .subscribe((zIndex) => {\n if (this.#overlay) {\n this.#overlay.componentRef.instance.zIndex = zIndex.toString(10);\n }\n });\n this.#clipPath\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n takeUntil(this.#overlay.closed),\n distinctUntilChanged(),\n )\n .subscribe((clipPath) => {\n this.#overlay?.componentRef.instance.updateClipPath(clipPath);\n });\n\n this.#scrollableHostService\n .watchScrollableHostClipPathChanges(\n this.#elementRef,\n this.#agGridBodyClipElements.asObservable(),\n )\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((clipPath) => {\n this.#clipPath.next(clipPath);\n });\n });\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#rowDeleteSvc.subscription.unsubscribe();\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\n\nimport { SkyAgGridResourcesModule } from '../shared/sky-ag-grid-resources.module';\n\nimport { SkyAgGridDataManagerAdapterDirective } from './ag-grid-data-manager-adapter.directive';\nimport { SkyAgGridRowDeleteDirective } from './ag-grid-row-delete.directive';\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\n/**\n * Provides `SkyAgGridWrapperComponent` and `SkyAgGridRowDeleteDirective`, but to use\n * AG Grid in your application, you must also load `AgGridAngular` from `ag-grid-angular` and\n * `ModuleRegistry` from `ag-grid-community`. For more information, see\n * [AG Grid modules](https://www.ag-grid.com/angular-data-grid/modules/).\n *\n * @example\n * ```typescript\n * ModuleRegistry.registerModules([AllCommunityModule]);\n * ```\n */\n@NgModule({\n imports: [\n AgGridAngular,\n CommonModule,\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridResourcesModule,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n exports: [\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n})\nexport class SkyAgGridModule {}\n","import { SkyAgGridLookupProperties } from './types/lookup-properties';\n\n/**\n * @internal\n */\nexport function applySkyLookupPropertiesDefaults(\n skyLookupProperties: SkyAgGridLookupProperties | undefined,\n): SkyAgGridLookupProperties {\n /* istanbul ignore if */\n if (!skyLookupProperties) {\n return {};\n }\n\n return {\n addClick: skyLookupProperties.addClick,\n ariaLabel: skyLookupProperties.ariaLabel || '',\n autocompleteAttribute: skyLookupProperties.autocompleteAttribute || 'off',\n data: skyLookupProperties.data || [],\n debounceTime: skyLookupProperties.debounceTime || 0,\n descriptorProperty: skyLookupProperties.descriptorProperty || 'name',\n disabled: skyLookupProperties.disabled || false,\n enableShowMore: skyLookupProperties.enableShowMore || false,\n idProperty: skyLookupProperties.idProperty,\n placeholderText: skyLookupProperties.placeholderText || '',\n propertiesToSearch: skyLookupProperties.propertiesToSearch,\n search: skyLookupProperties.search,\n searchAsync: skyLookupProperties.searchAsync,\n searchFilters: skyLookupProperties.searchFilters || [],\n searchResultsLimit: skyLookupProperties.searchResultsLimit,\n searchResultTemplate: skyLookupProperties.searchResultTemplate,\n searchTextMinimumCharacters:\n skyLookupProperties.searchTextMinimumCharacters || 1,\n selectMode: skyLookupProperties.selectMode,\n showAddButton: skyLookupProperties.showAddButton || false,\n showMoreConfig: skyLookupProperties.showMoreConfig || {},\n wrapperClass: 'ag-custom-component-popup',\n };\n}\n","/** The initial action that a cell editor should take when initialized. */\nexport enum SkyAgGridCellEditorInitialAction {\n /** The cell should be cleared. */\n Delete = 0,\n /** The cell value should be highlighted. */\n Highlighted = 1,\n /** The cell value should be replaced with the initializing value. */\n Replace = 2,\n /** The cell should not be modified and the cursor is placed at the end of the value. */\n Untouched = 3,\n}\n","import { ICellEditorParams, KeyCode } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from './cell-editor-initial-action';\n\nexport class SkyAgGridCellEditorUtils {\n /**\n * Gets the initial action that a cell editor should take when initialized.\n * @param params The editor's initializing parameters.\n */\n public static getEditorInitialAction(\n params: ICellEditorParams | undefined,\n ): SkyAgGridCellEditorInitialAction {\n if (params?.cellStartedEdit) {\n if (\n params.eventKey === KeyCode.BACKSPACE ||\n params.eventKey === KeyCode.DELETE\n ) {\n return SkyAgGridCellEditorInitialAction.Delete;\n } else if (params.eventKey?.length === 1) {\n return SkyAgGridCellEditorInitialAction.Replace;\n } else {\n if (params.eventKey !== KeyCode.F2) {\n return SkyAgGridCellEditorInitialAction.Highlighted;\n } else {\n return SkyAgGridCellEditorInitialAction.Untouched;\n }\n }\n } else {\n return SkyAgGridCellEditorInitialAction.Untouched;\n }\n }\n\n /**\n * Returns the difference between the minuend and subtrahend. If the minuend is not defined, returns 0.\n * @param minuend The number from which another number is subtracted.\n * @param subtrahend The number that is subtracted from the minuend.\n */\n public static subtractOrZero(\n minuend: number | null | undefined,\n subtrahend: number,\n ): number {\n // Swapping minuend with subtrahend when minuend is null or undefined results in\n // the subtrahend being subtracted from itself, which will always be 0.\n return (minuend ?? subtrahend) - subtrahend;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyAutocompleteModule } from '@skyux/lookup';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyAgGridAutocompleteProperties } from '../../types/autocomplete-properties';\nimport { SkyCellEditorAutocompleteParams } from '../../types/cell-editor-autocomplete-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-autocomplete',\n templateUrl: './cell-editor-autocomplete.component.html',\n styleUrls: ['./cell-editor-autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorAutocompleteComponent implements ICellEditorAngularComp {\n public columnHeader: string | undefined;\n public editorForm = new UntypedFormGroup({\n selection: new UntypedFormControl(),\n });\n public rowNumber: number | undefined;\n public skyComponentProperties: SkyAgGridAutocompleteProperties = {};\n\n #autocompleteOpen = false;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n #params: SkyCellEditorAutocompleteParams | undefined;\n #elementRef = inject(ElementRef) as ElementRef<HTMLElement>;\n\n @ViewChild('skyCellEditorAutocomplete', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onBlur(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else {\n this.#stopEditingOnBlur();\n }\n }\n\n public agInit(params: SkyCellEditorAutocompleteParams): void {\n this.#params = params;\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('selection');\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = (this.#params.node?.rowIndex ?? 0) + 1;\n this.skyComponentProperties = this.#params.skyComponentProperties || {};\n }\n\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n const charPress = this.#params?.eventKey as string;\n\n this.input.nativeElement.select();\n this.input.nativeElement.setRangeText(charPress);\n // Ensure the cursor is at the end of the text.\n this.input.nativeElement.setSelectionRange(\n charPress.length,\n charPress.length,\n );\n this.input.nativeElement.dispatchEvent(new Event('input'));\n }\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n public getValue(): any | undefined {\n const val = this.editorForm.get('selection')?.value;\n return val !== undefined && val !== null ? val : undefined;\n }\n\n public onAutocompleteOpenChange($event: boolean): void {\n this.#autocompleteOpen = $event;\n this.#stopEditingOnBlur();\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#autocompleteOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<div class=\"sky-ag-grid-cell-editor-autocomplete\" [formGroup]=\"editorForm\">\n <sky-autocomplete\n [allowAnyValue]=\"skyComponentProperties.allowAnyValue\"\n [data]=\"skyComponentProperties.data\"\n [debounceTime]=\"skyComponentProperties.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties.descriptorProperty\"\n [highlightSearchText]=\"skyComponentProperties.highlightSearchText ?? true\"\n [propertiesToSearch]=\"skyComponentProperties.propertiesToSearch\"\n [search]=\"skyComponentProperties.search\"\n [searchFilters]=\"skyComponentProperties.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties.searchTextMinimumCharacters\n \"\n (selectionChange)=\"\n skyComponentProperties.selectionChange &&\n skyComponentProperties.selectionChange($event)\n \"\n (openChange)=\"onAutocompleteOpenChange($event)\"\n >\n <input\n #skyCellEditorAutocomplete\n formControlName=\"selection\"\n skyAutocomplete\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_autocomplete_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n />\n </sky-autocomplete>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyAutonumericModule } from '@skyux/autonumeric';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellEditorCurrencyParams } from '../../types/cell-editor-currency-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridCurrencyProperties } from '../../types/currency-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-currency',\n templateUrl: './cell-editor-currency.component.html',\n styleUrls: ['./cell-editor-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyAutonumericModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorCurrencyComponent implements ICellEditorAngularComp {\n public skyComponentProperties: SkyAgGridCurrencyProperties & {\n isCancellable: boolean;\n } = {\n isCancellable: false,\n };\n public columnHeader: string | undefined;\n public currency = new UntypedFormControl();\n public editorForm = new UntypedFormGroup({\n currency: this.currency,\n });\n public params: SkyCellEditorCurrencyParams | undefined;\n public rowNumber: number | undefined;\n\n @ViewChild('skyCellEditorCurrency', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (event.relatedTarget && event.relatedTarget === this.params?.eGridCell) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (event.target === this.input?.nativeElement) {\n this.#stopEditingOnBlur();\n }\n }\n\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n readonly #changeDetector = inject(ChangeDetectorRef);\n #initialized = false;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorCurrencyParams): void {\n this.params = params;\n this.columnHeader = this.params.api.getDisplayNameForColumn(\n this.params.column,\n 'header',\n );\n this.rowNumber = this.params.rowIndex + 1;\n this.skyComponentProperties = {\n ...(this.params.skyComponentProperties || {\n decimalPlaces: 2,\n currencySymbol: '$',\n }),\n isCancellable: false,\n };\n }\n\n public refresh(params: SkyCellEditorCurrencyParams): void {\n this.agInit(params);\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n this.input?.nativeElement.focus();\n\n // This setup is in `afterGuiAttached` due to the lifecycle of autonumeric which will highlight the initial value if it is in place when it renders.\n // Since we don't want that, we set the initial value after autonumeric initializes.\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(\n this.params,\n );\n const control = this.currency;\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(\n parseFloat(String(this.params?.eventKey)) || undefined,\n );\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(parseFloat(String(this.params?.value)));\n break;\n }\n }\n\n this.#changeDetector.markForCheck();\n\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted &&\n (this.params?.value ?? '') !== ''\n ) {\n this.input?.nativeElement.select();\n }\n\n // When the cell is initialized with the Enter key, we need to suppress the first `onPressEnter`.\n this.#initialized = this.params?.eventKey !== 'Enter';\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number | undefined {\n return this.currency.value ?? undefined;\n }\n\n /**\n * The autoNumeric library's event handler suppresses the escape key event. This additional handler re-enables AG Grid's default functionality.\n */\n public onPressEscape(): void {\n if (this.params) {\n this.params.api.stopEditing(true);\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.column);\n }\n }\n\n public onPressEnter(): void {\n if (this.params && this.#initialized) {\n this.params.stopEditing();\n }\n this.#initialized = true;\n }\n\n #stopEditingOnBlur(): void {\n if (this.params?.api.getGridOption('stopEditingWhenCellsLoseFocus')) {\n this.params?.api.stopEditing();\n }\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorCurrency\n type=\"text\"\n [formControl]=\"currency\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_currency_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [skyAutonumeric]=\"skyComponentProperties\"\n [skyAutonumericFormChangesUnformatted]=\"params?.eventKey?.length === 1\"\n (keyup.enter)=\"onPressEnter()\"\n (keyup.escape)=\"onPressEscape()\"\n />\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n HostListener,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyDatepickerModule } from '@skyux/datetime';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { first, fromEvent } from 'rxjs';\n\nimport { SkyCellEditorDatepickerParams } from '../../types/cell-editor-datepicker-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridDatepickerProperties } from '../../types/datepicker-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-datepicker',\n templateUrl: './cell-editor-datepicker.component.html',\n styleUrls: ['./cell-editor-datepicker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyDatepickerModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorDatepickerComponent implements ICellEditorAngularComp {\n public columnHeader: string | undefined;\n public columnWidth: number | undefined;\n public columnWidthWithoutBorders: number | undefined;\n public editorForm = new UntypedFormGroup({\n date: new UntypedFormControl(),\n });\n public rowHeightWithoutBorders: number | null | undefined;\n public rowNumber: number | undefined;\n public skyComponentProperties: SkyAgGridDatepickerProperties = {};\n\n @ViewChild('skyCellEditorDatepickerInput', { read: ElementRef })\n public datepickerInput: ElementRef | undefined;\n\n protected resolvedDateFormat = '';\n\n #calendarOpen = false;\n #params: SkyCellEditorDatepickerParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n readonly #elementRef = inject(ElementRef) as ElementRef<HTMLElement>;\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #destroyRef = inject(DestroyRef);\n readonly #themeSvc = inject(SkyThemeService, { optional: true }) || undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the datepicker input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (event.target === this.datepickerInput?.nativeElement) {\n this.#stopEditingOnBlur();\n }\n }\n\n public onCalendarOpenChange(isOpen: boolean): void {\n this.#calendarOpen = isOpen;\n this.#stopEditingOnBlur();\n }\n\n public onDateFormatChange(dateFormat: string): void {\n this.resolvedDateFormat = dateFormat;\n this.#changeDetector.markForCheck();\n }\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorDatepickerParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('date');\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(params.eventKey);\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n if (this.#params.skyComponentProperties?.disabled) {\n control.disable();\n }\n }\n this.#changeDetector.markForCheck();\n\n this.skyComponentProperties = this.#params.skyComponentProperties || {};\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.columnWidth = this.#params.column.getActualWidth();\n this.columnWidthWithoutBorders = this.columnWidth - 2;\n this.rowHeightWithoutBorders = (this.#params.node.rowHeight as number) - 3;\n this.rowNumber = this.#params.rowIndex + 1;\n\n this.#themeSvc?.settingsChange\n ?.pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((themeSettings) => {\n if (themeSettings.currentSettings.theme.name === 'modern') {\n this.columnWidthWithoutBorders = this.columnWidth;\n this.rowHeightWithoutBorders = this.#params?.node?.rowHeight;\n } else {\n this.columnWidthWithoutBorders =\n this.columnWidth === undefined ? undefined : this.columnWidth - 2;\n this.rowHeightWithoutBorders =\n SkyAgGridCellEditorUtils.subtractOrZero(\n this.#params?.node.rowHeight,\n 3,\n );\n }\n this.#changeDetector.markForCheck();\n });\n }\n\n public isPopup(): boolean {\n return true;\n }\n\n public getPopupPosition(): 'over' | 'under' | undefined {\n return 'over';\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n const datepickerInputEl = this.datepickerInput?.nativeElement as\n | HTMLInputElement\n | undefined;\n\n if (datepickerInputEl) {\n datepickerInputEl.focus();\n\n // programmatically set the value of in the input; however, do not do this via the form control so that the value is not formatted when editing starts.\n // Watch for the first blur and fire a 'change' event as programmatic changes won't queue a change event, but we need to do this so that formatting happens if the user tabs to the calendar button.\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n fromEvent(datepickerInputEl, 'blur')\n .pipe(first())\n .subscribe(() => {\n datepickerInputEl.dispatchEvent(new Event('change'));\n });\n datepickerInputEl.select();\n\n const charPress = this.#params?.eventKey as string;\n\n if (charPress) {\n datepickerInputEl.setRangeText(charPress);\n // Ensure the cursor is at the end of the text.\n datepickerInputEl.setSelectionRange(\n charPress.length,\n charPress.length,\n );\n }\n }\n\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n datepickerInputEl.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): Date {\n this.datepickerInput?.nativeElement.blur();\n return this.editorForm.get('date')?.value;\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#calendarOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<div\n class=\"sky-ag-grid-cell-editor-datepicker\"\n [formGroup]=\"editorForm\"\n [style.width.px]=\"columnWidthWithoutBorders\"\n>\n <sky-datepicker\n data-sky-id=\"cell-datepicker\"\n pickerClass=\"ag-custom-component-popup\"\n (dateFormatChange)=\"onDateFormatChange($event)\"\n (openChange)=\"onCalendarOpenChange($event)\"\n >\n <input\n #skyCellEditorDatepickerInput\n formControlName=\"date\"\n skyDatepickerInput\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_datepicker_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [attr.title]=\"\n resolvedDateFormat\n ? ('skyux_datepicker_format_hint_text'\n | skyLibResources: resolvedDateFormat)\n : null\n \"\n [minDate]=\"skyComponentProperties.minDate\"\n [maxDate]=\"skyComponentProperties.maxDate\"\n [dateFormat]=\"skyComponentProperties.dateFormat\"\n [startingDay]=\"skyComponentProperties.startingDay\"\n [skyDatepickerNoValidate]=\"skyComponentProperties.skyDatepickerNoValidate\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n />\n </sky-datepicker>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyLookupModule } from '@skyux/lookup';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ColumnResizedEvent } from 'ag-grid-community';\n\nimport { applySkyLookupPropertiesDefaults } from '../../apply-lookup-properties-defaults';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorLookupParams } from '../../types/cell-editor-lookup-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridLookupProperties } from '../../types/lookup-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-lookup',\n templateUrl: './cell-editor-lookup.component.html',\n styleUrls: ['./cell-editor-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SkyInputBoxModule,\n FormsModule,\n ReactiveFormsModule,\n SkyLookupModule,\n SkyIdModule,\n ],\n})\nexport class SkyAgGridCellEditorLookupComponent implements ICellEditorAngularComp {\n @HostBinding('style.width.px')\n public width: number | undefined;\n\n public skyComponentProperties?: SkyAgGridLookupProperties;\n public isAlive = false;\n public editorForm = new UntypedFormGroup({\n selection: new UntypedFormControl({\n value: [],\n disabled: false,\n }),\n });\n public useAsyncSearch = false;\n\n protected labelText: string | undefined = undefined;\n\n #lookupOpen = false;\n #selectionModalOpen = false;\n #params: SkyCellEditorLookupParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n #changeDetector = inject(ChangeDetectorRef);\n #elementRef = inject(ElementRef<HTMLElement>);\n\n @HostListener('focusout', ['$event'])\n public onBlur(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (\n !(event.target as HTMLElement | null)?.matches(\n '.ag-custom-component-popup *',\n )\n ) {\n this.#stopEditingOnBlur();\n }\n }\n\n public agInit(params: SkyCellEditorLookupParams): void {\n this.#params = params;\n if (!Array.isArray(this.#params.value)) {\n throw new Error(`Lookup value must be an array`);\n }\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('selection');\n this.labelText = params.skyComponentProperties?.ariaLabelledBy\n ? undefined\n : params.skyComponentProperties?.ariaLabel ||\n params.colDef.headerName ||\n params.colDef.headerTooltip ||\n params.colDef.field ||\n params.colDef.colId;\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue([]);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n\n if (this.#params.skyComponentProperties?.disabled) {\n control.disable();\n } else {\n control.enable();\n }\n }\n\n this.skyComponentProperties = this.#updateComponentProperties(this.#params);\n this.useAsyncSearch =\n typeof this.skyComponentProperties.searchAsync === 'function';\n this.isAlive = true;\n this.width = this.#params.column.getActualWidth();\n this.#params.api.addEventListener(\n 'columnResized',\n (event: ColumnResizedEvent) => {\n if (event.column?.getColId() === this.#params?.column.getColId()) {\n this.width = event.column?.getActualWidth();\n this.#changeDetector.markForCheck();\n }\n },\n );\n this.#changeDetector.markForCheck();\n }\n\n public isCancelAfterEnd(): boolean {\n // Shut down components to commit values before final value syncs to grid.\n this.isAlive = false;\n return false;\n }\n\n public getGui(): HTMLElement {\n return this.#elementRef.nativeElement;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getValue(): any[] {\n return this.editorForm.get('selection')?.value;\n }\n\n public isPopup(): boolean {\n return true;\n }\n\n public getPopupPosition(): 'over' | 'under' | undefined {\n return 'over';\n }\n\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n const lookupInput: HTMLTextAreaElement =\n this.#elementRef.nativeElement.querySelector('.sky-lookup-input');\n lookupInput.focus();\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n lookupInput.setRangeText(`${this.#params?.eventKey}`);\n // Ensure the cursor is at the end of the text.\n lookupInput.setSelectionRange(\n lookupInput.value.length,\n lookupInput.value.length,\n );\n lookupInput.dispatchEvent(new Event('input'));\n } else if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Untouched\n ) {\n // Ensure the cursor is at the end of the text.\n lookupInput.setSelectionRange(\n lookupInput.value.length,\n lookupInput.value.length,\n );\n }\n });\n }\n\n public onLookupOpenChange(isOpen: boolean): void {\n this.#lookupOpen = isOpen;\n this.#stopEditingOnBlur();\n }\n\n public onSelectionModalOpenChange(isOpen: boolean): void {\n this.#selectionModalOpen = isOpen;\n this.#stopEditingOnBlur();\n }\n\n #updateComponentProperties(\n params: SkyCellEditorLookupParams,\n ): SkyAgGridLookupProperties {\n const skyLookupProperties = params.skyComponentProperties;\n return applySkyLookupPropertiesDefaults(skyLookupProperties);\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#lookupOpen &&\n !this.#selectionModalOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","@if (isAlive && useAsyncSearch) {\n <sky-input-box\n [disabled]=\"skyComponentProperties?.disabled\"\n [formGroup]=\"editorForm\"\n >\n <sky-lookup\n formControlName=\"selection\"\n [ariaLabelledBy]=\"\n skyComponentProperties?.ariaLabelledBy ?? screenReaderLabel.id\n \"\n [autocompleteAttribute]=\"skyComponentProperties?.autocompleteAttribute\"\n [data]=\"skyComponentProperties?.data\"\n [debounceTime]=\"skyComponentProperties?.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties?.descriptorProperty\"\n [enableShowMore]=\"skyComponentProperties?.enableShowMore\"\n [idProperty]=\"skyComponentProperties?.idProperty\"\n [placeholderText]=\"skyComponentProperties?.placeholderText\"\n [propertiesToSearch]=\"skyComponentProperties?.propertiesToSearch\"\n [search]=\"skyComponentProperties?.search\"\n [searchFilters]=\"skyComponentProperties?.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties?.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties?.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties?.searchTextMinimumCharacters\n \"\n [selectMode]=\"skyComponentProperties?.selectMode\"\n [showAddButton]=\"skyComponentProperties?.showAddButton\"\n [showMoreConfig]=\"skyComponentProperties?.showMoreConfig\"\n [wrapperClass]=\"skyComponentProperties?.wrapperClass\"\n (searchAsync)=\"skyComponentProperties?.searchAsync?.($event)\"\n (addClick)=\"skyComponentProperties?.addClick?.($event)\"\n (openChange)=\"onLookupOpenChange($event)\"\n (selectionModalOpenChange)=\"onSelectionModalOpenChange($event)\"\n />\n </sky-input-box>\n}\n@if (isAlive && !useAsyncSearch) {\n <sky-input-box\n [disabled]=\"skyComponentProperties?.disabled\"\n [formGroup]=\"editorForm\"\n >\n <sky-lookup\n formControlName=\"selection\"\n [ariaLabelledBy]=\"\n skyComponentProperties?.ariaLabelledBy ?? screenReaderLabel.id\n \"\n [autocompleteAttribute]=\"skyComponentProperties?.autocompleteAttribute\"\n [data]=\"skyComponentProperties?.data\"\n [debounceTime]=\"skyComponentProperties?.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties?.descriptorProperty\"\n [enableShowMore]=\"skyComponentProperties?.enableShowMore\"\n [idProperty]=\"skyComponentProperties?.idProperty\"\n [placeholderText]=\"skyComponentProperties?.placeholderText\"\n [propertiesToSearch]=\"skyComponentProperties?.propertiesToSearch\"\n [search]=\"skyComponentProperties?.search\"\n [searchFilters]=\"skyComponentProperties?.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties?.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties?.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties?.searchTextMinimumCharacters\n \"\n [selectMode]=\"skyComponentProperties?.selectMode\"\n [showAddButton]=\"skyComponentProperties?.showAddButton\"\n [showMoreConfig]=\"skyComponentProperties?.showMoreConfig\"\n [wrapperClass]=\"skyComponentProperties?.wrapperClass\"\n (addClick)=\"skyComponentProperties?.addClick?.($event)\"\n (openChange)=\"onLookupOpenChange($event)\"\n (selectionModalOpenChange)=\"onSelectionModalOpenChange($event)\"\n />\n </sky-input-box>\n}\n<div #screenReaderLabel=\"skyId\" class=\"sky-screen-reader-only\" skyId>\n {{ labelText }}\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ICellEditorParams } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorNumberParams } from '../../types/cell-editor-number-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-number',\n templateUrl: './cell-editor-number.component.html',\n styleUrls: ['./cell-editor-number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule, SkyI18nModule],\n})\nexport class SkyAgGridCellEditorNumberComponent implements ICellEditorAngularComp {\n public columnHeader: string | undefined;\n public columnWidth: number | undefined;\n public editorForm = new UntypedFormGroup({\n number: new UntypedFormControl(),\n });\n public rowHeightWithoutBorders: number | undefined;\n public rowNumber: number | undefined;\n public max: number | undefined;\n public min: number | undefined;\n\n @ViewChild('skyCellEditorNumber', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (event.target === this.input?.nativeElement) {\n this.#stopEditingOnBlur();\n }\n }\n\n #params: ICellEditorParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorNumberParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('number');\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(\n parseFloat(this.#params?.eventKey as string) || undefined,\n );\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.max = params.skyComponentProperties?.max;\n this.min = params.skyComponentProperties?.min;\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = this.#params.rowIndex + 1;\n this.columnWidth = this.#params.column.getActualWidth();\n this.rowHeightWithoutBorders = (this.#params.node.rowHeight as number) - 4;\n }\n\n public refresh(params: SkyCellEditorNumberParams): void {\n this.agInit(params);\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number | undefined {\n const val = this.editorForm.get('number')?.value;\n return val !== undefined && val !== null ? val : undefined;\n }\n\n #stopEditingOnBlur(): void {\n if (this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus')) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorNumber\n formControlName=\"number\"\n type=\"number\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_number_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [max]=\"max ?? null\"\n [min]=\"min ?? null\"\n />\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ICellEditorParams } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorTextParams } from '../../types/cell-editor-text-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-text',\n templateUrl: './cell-editor-text.component.html',\n styleUrls: ['./cell-editor-text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule, SkyI18nModule],\n})\nexport class SkyAgGridCellEditorTextComponent implements ICellEditorAngularComp {\n public columnHeader: string | undefined;\n public editorForm = new UntypedFormGroup({\n text: new UntypedFormControl(),\n });\n public rowNumber: number | undefined;\n public maxlength: number | undefined;\n\n @ViewChild('skyCellEditorText', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (event.target === this.input?.nativeElement) {\n this.#stopEditingOnBlur();\n }\n }\n\n #params: ICellEditorParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorTextParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('text');\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(params.eventKey);\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.maxlength = params.skyComponentProperties?.maxlength;\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = this.#params.rowIndex + 1;\n }\n\n public refresh(params: SkyCellEditorTextParams): void {\n this.agInit(params);\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): string | undefined {\n return this.editorForm.get('text')?.value || undefined;\n }\n\n #stopEditingOnBlur(): void {\n if (this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus')) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorText\n formControlName=\"text\"\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_text_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [maxlength]=\"maxlength ?? null\"\n />\n</ng-container>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n isSignal,\n} from '@angular/core';\nimport { SkyStatusIndicatorModule } from '@skyux/indicators';\nimport {\n SkyPopoverMessage,\n SkyPopoverMessageType,\n SkyPopoverModule,\n} from '@skyux/popovers';\n\nimport { AgColumn, CellFocusedEvent } from 'ag-grid-community';\nimport { Subject } from 'rxjs';\n\nimport { SkyCellRendererValidatorParams } from '../types/cell-renderer-validator-params';\nimport { SkyAgGridValidatorProperties } from '../types/validator-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-validator-tooltip',\n styleUrls: ['ag-grid-cell-validator-tooltip.component.scss'],\n templateUrl: 'ag-grid-cell-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, SkyPopoverModule, SkyStatusIndicatorModule],\n})\nexport class SkyAgGridCellValidatorTooltipComponent {\n public readonly params = input<SkyCellRendererValidatorParams>();\n\n protected readonly popoverMessageStream = new Subject<SkyPopoverMessage>();\n protected readonly validatorProperties = computed<\n SkyAgGridValidatorProperties | undefined\n >(\n () =>\n this.params()?.skyComponentProperties as\n | SkyAgGridValidatorProperties\n | undefined,\n );\n protected readonly validatorMessage = computed((): string => {\n const params = this.params();\n const validatorProperties = this.validatorProperties();\n const validatorMessage = validatorProperties?.validatorMessage;\n if (!validatorMessage || !params) {\n return '';\n }\n if (isSignal(validatorMessage)) {\n return validatorMessage();\n }\n if (typeof validatorMessage === 'function') {\n return validatorMessage(\n params.value,\n params.data,\n params?.node?.rowIndex,\n );\n }\n return validatorMessage;\n });\n protected readonly showValidatorMessage = computed(() => {\n const validatorMessage = this.validatorMessage();\n const validatorProperties = this.validatorProperties();\n const params = this.params();\n if (!validatorMessage || !validatorProperties || !params) {\n return false;\n }\n const validator = validatorProperties.validator;\n if (typeof validator === 'function') {\n return !validator(params.value, params.data, params.node?.rowIndex);\n }\n return true;\n });\n\n readonly #keyupHandler = (event: KeyboardEvent): void => {\n if (\n ['ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowUp'].includes(event.key)\n ) {\n this.#showPopover();\n }\n };\n readonly #focusHandler = (): void => this.#showPopover();\n readonly #cellFocusHandler = (eventParams: CellFocusedEvent): void => {\n const params = this.params();\n if (\n (eventParams.column as AgColumn).getColId() ===\n params?.column?.getColId() &&\n eventParams.rowIndex === params?.node?.rowIndex\n ) {\n this.#showPopover();\n } else {\n this.#hidePopover();\n }\n };\n readonly #blurHandler = (): void => this.#hidePopover();\n\n constructor() {\n effect((onCleanup) => {\n const value = this.params();\n if (value?.api) {\n value.api.addEventListener('cellFocused', this.#cellFocusHandler);\n value.api.addEventListener('cellEditingStarted', this.#blurHandler);\n value.eGridCell?.addEventListener('keyup', this.#keyupHandler);\n value.eGridCell?.addEventListener('mouseenter', this.#focusHandler);\n value.eGridCell?.addEventListener('mouseleave', this.#blurHandler);\n\n onCleanup(() => {\n if (!value.api.isDestroyed || !value.api.isDestroyed()) {\n value.api.removeEventListener(\n 'cellFocused',\n this.#cellFocusHandler,\n );\n value.api.removeEventListener(\n 'cellEditingStarted',\n this.#blurHandler,\n );\n }\n if (value.eGridCell) {\n value.eGridCell.removeEventListener('keyup', this.#keyupHandler);\n value.eGridCell.removeEventListener(\n 'mouseenter',\n this.#focusHandler,\n );\n value.eGridCell.removeEventListener(\n 'mouseleave',\n this.#blurHandler,\n );\n }\n });\n }\n });\n }\n\n #hidePopover(): void {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Close });\n }\n\n #showPopover(): void {\n if (this.#shouldShowPopover()) {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Open });\n }\n }\n\n #shouldShowPopover(): boolean {\n if (!this.showValidatorMessage()) {\n return false;\n }\n const editingCells = this.params()?.api.getEditingCells() ?? [];\n return editingCells.length === 0;\n }\n}\n","<ng-template #displayValue>\n <ng-content />\n</ng-template>\n\n@if (showValidatorMessage()) {\n <div\n skyPopoverTrigger=\"mouseenter\"\n class=\"sky-validator-cell\"\n [skyPopover]=\"validatorPopover\"\n [skyPopoverMessageStream]=\"popoverMessageStream\"\n >\n <ng-container *ngTemplateOutlet=\"displayValue\" />\n <sky-status-indicator\n descriptionType=\"none\"\n indicatorType=\"danger\"\n class=\"sky-pull-right\"\n />\n </div>\n <sky-popover\n #validatorPopover\n data-sky-id=\"validatorPopover\"\n popoverType=\"danger\"\n >\n {{ validatorMessage() }}\n </sky-popover>\n} @else {\n <ng-container *ngTemplateOutlet=\"displayValue\" />\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { SkyNumericModule, SkyNumericOptions } from '@skyux/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\nimport { SkyAgGridValidatorProperties } from '../../types/validator-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency',\n templateUrl: './cell-renderer-currency.component.html',\n styleUrls: ['./cell-renderer-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyNumericModule],\n})\nexport class SkyAgGridCellRendererCurrencyComponent implements ICellRendererAngularComp {\n @Input()\n public set params(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n public columnWidth: number | undefined;\n public rowHeightWithoutBorders: number | undefined;\n public skyComponentProperties: SkyNumericOptions &\n SkyAgGridValidatorProperties = {};\n public numericOptions: SkyNumericOptions = {};\n public value: number | undefined;\n\n /**\n * agInit is called by AG Grid once after the renderer is created and provides the renderer with the information it needs.\n */\n public agInit(params: SkyCellRendererCurrencyParams): void {\n this.#updateProperties(params);\n }\n\n /**\n * refresh is called by AG Grid to update the cell without destroying and recreating the component.\n */\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n this.agInit(params);\n return false;\n }\n\n #updateProperties(params: SkyCellRendererCurrencyParams): void {\n this.value = params.value;\n this.skyComponentProperties = params.skyComponentProperties || {};\n this.skyComponentProperties.format = 'currency';\n this.skyComponentProperties.minDigits ??= 2;\n this.skyComponentProperties.truncate ??= false;\n }\n}\n","{{\n value === undefined ? undefined : (value | skyNumeric: skyComponentProperties)\n}}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyAgGridCellValidatorTooltipComponent } from '../../cell-validator/ag-grid-cell-validator-tooltip.component';\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\n\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderer-currency.component';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency-validator',\n styles: `\n :host {\n display: contents;\n }\n `,\n templateUrl: 'cell-renderer-currency-validator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SkyAgGridCellValidatorTooltipComponent,\n SkyAgGridCellRendererCurrencyComponent,\n ],\n})\nexport class SkyAgGridCellRendererCurrencyValidatorComponent implements ICellRendererAngularComp {\n @Input()\n public set parameters(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n protected cellRendererParams: SkyCellRendererCurrencyParams | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(changeDetector: ChangeDetectorRef) {\n this.#changeDetector = changeDetector;\n }\n\n /**\n * agInit is called by agGrid once after the renderer is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellRendererCurrencyParams): void {\n this.cellRendererParams = params;\n this.#changeDetector.markForCheck();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public isNumeric(value: any): boolean {\n return !isNaN(parseFloat(value));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n return false;\n }\n}\n","@if (cellRendererParams) {\n <sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n @if (isNumeric(cellRendererParams.value)) {\n <sky-ag-grid-cell-renderer-currency [params]=\"cellRendererParams\" />\n } @else {\n {{ cellRendererParams.value }}\n }\n </sky-ag-grid-cell-validator-tooltip>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererLookupParams } from '../../types/cell-renderer-lookup-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-cell-renderer-lookup',\n templateUrl: './cell-renderer-lookup.component.html',\n styleUrls: ['./cell-renderer-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyI18nModule],\n})\nexport class SkyAgGridCellRendererLookupComponent implements ICellRendererAngularComp {\n protected value = '';\n protected summaryCount = 0;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(changeDetector: ChangeDetectorRef) {\n this.#changeDetector = changeDetector;\n }\n\n public agInit(params: SkyCellRendererLookupParams): void {\n this.summaryCount = params.value?.length || 0;\n this.value = `${params.valueFormatted}`;\n this.#changeDetector.markForCheck();\n }\n\n public refresh(params: SkyCellRendererLookupParams): boolean {\n this.agInit(params);\n return true;\n }\n}\n","@if (summaryCount > 5) {\n {{ 'skyux_lookup_tokens_summary' | skyLibResources: summaryCount }}\n} @else {\n {{ value }}\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport {\n ICellRendererParams,\n IRowNode,\n RowNodeSelectedEvent,\n} from 'ag-grid-community';\nimport { BehaviorSubject, Subscription, isObservable } from 'rxjs';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-row-selector',\n templateUrl: './cell-renderer-row-selector.component.html',\n styleUrls: ['./cell-renderer-row-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [SkyCheckboxModule, AsyncPipe],\n})\nexport class SkyAgGridCellRendererRowSelectorComponent\n implements ICellRendererAngularComp, OnDestroy\n{\n public dataField: string | undefined;\n public rowNode: IRowNode | undefined;\n public rowNumber: number | undefined;\n\n protected checked = new BehaviorSubject(false);\n protected readonly disabled = new BehaviorSubject(false);\n protected readonly label = new BehaviorSubject('');\n\n readonly #labelResourceKey = 'sky_ag_grid_row_selector_aria_label';\n #params: ICellRendererParams | undefined;\n readonly #resources = inject(SkyLibResourcesService);\n #subscription = new Subscription();\n\n constructor() {\n this.#setLabel();\n }\n\n public ngOnDestroy(): void {\n this.#subscription.unsubscribe();\n }\n\n /**\n * agInit is called by agGrid once after the cell is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: ICellRendererParams): void {\n this.#setParameters(params);\n }\n\n /**\n * Used by agGrid to update cell value after a user triggers a refresh.\n * Returning true tells agGrid that the refresh was successful.\n */\n public refresh(params: ICellRendererParams): boolean {\n this.#setParameters(params);\n return true;\n }\n\n public updateRow(rowChecked: boolean): void {\n this.checked.next(rowChecked);\n if (this.rowNode) {\n const rowSelected = this.rowNode.isSelected();\n if (rowSelected !== rowChecked) {\n this.rowNode.setSelected(rowChecked, undefined, 'checkboxSelected');\n }\n if (this.dataField) {\n this.rowNode.data[this.dataField] = this.checked.value;\n }\n }\n }\n\n #setParameters(params: ICellRendererParams): void {\n this.#params = params;\n this.disabled.next(this.#params?.node?.selectable === false);\n this.dataField = this.#params?.colDef?.field;\n this.rowNode = this.#params?.node as IRowNode | undefined;\n const rowIndex = this.rowNode?.rowIndex ?? NaN;\n this.rowNumber = Number.isNaN(rowIndex) ? undefined : rowIndex + 1;\n\n this.#subscription.unsubscribe();\n this.#subscription = new Subscription();\n this.#setLabel();\n\n const rowSelected = !!this.#params?.node?.isSelected();\n\n if (this.dataField) {\n this.checked.next(!!this.#params?.value);\n if (rowSelected !== this.checked.value) {\n this.rowNode?.setSelected(this.checked.value);\n }\n } else {\n this.checked.next(rowSelected);\n }\n\n const node = this.rowNode;\n const handler = (event: RowNodeSelectedEvent): void =>\n this.#rowSelectedListener(event);\n node?.addEventListener('rowSelected', handler);\n this.#subscription.add(() =>\n node?.removeEventListener('rowSelected', handler),\n );\n }\n\n #setLabel(): void {\n const cellRendererParamLabel =\n this.#params?.colDef?.cellRendererParams?.label;\n if (this.#params?.colDef && typeof cellRendererParamLabel === 'string') {\n this.label.next(this.#params.colDef.cellRendererParams.label);\n } else if (\n this.#params?.colDef &&\n typeof cellRendererParamLabel === 'function'\n ) {\n const label = this.#params.colDef.cellRendererParams.label(\n this.#params.data,\n );\n if (isObservable(label)) {\n this.#subscription.add(\n label.subscribe((value: unknown) => this.label.next(String(value))),\n );\n } else {\n this.label.next(label);\n }\n } else {\n this.#subscription.add(\n this.#resources\n .getString(this.#labelResourceKey, this.rowNumber ?? '')\n .subscribe((value) => this.label.next(value)),\n );\n }\n }\n\n #rowSelectedListener(event: RowNodeSelectedEvent): void {\n this.checked.next(!!event.node.isSelected());\n if (this.rowNode && this.dataField) {\n this.rowNode.data[this.dataField] = this.checked.value;\n }\n }\n}\n","<sky-checkbox\n data-sky-id=\"row-checkbox\"\n class=\"sky-ag-grid-row-selector\"\n [disabled]=\"(disabled | async) || false\"\n [tabindex]=\"0\"\n [labelHidden]=\"true\"\n [labelText]=\"(label | async) || ''\"\n [checked]=\"(checked | async) || false\"\n (change)=\"updateRow(!!$event.checked)\"\n/>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, Signal, TemplateRef, isSignal } from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-community';\n\nimport { CellRendererTemplateContext } from './cell-renderer-template-context.type';\n\ntype CellState =\n | {\n hasTemplate: true;\n template: TemplateRef<CellRendererTemplateContext>;\n context: CellRendererTemplateContext;\n }\n | {\n hasTemplate: 'signal';\n template: Signal<TemplateRef<CellRendererTemplateContext>>;\n context: CellRendererTemplateContext;\n }\n | {\n hasTemplate: false;\n template: undefined;\n context?: unknown;\n };\n\n@Component({\n selector: 'sky-ag-grid-cell-renderer-template',\n template: `@if (state.hasTemplate === 'signal') {\n <ng-container\n *ngTemplateOutlet=\"state.template(); context: state.context\"\n />\n } @else if (state.hasTemplate) {\n <ng-container\n *ngTemplateOutlet=\"state.template; context: state.context\"\n />\n }`,\n imports: [NgTemplateOutlet],\n})\nexport class SkyAgGridCellRendererTemplateComponent implements ICellRendererAngularComp {\n protected state: CellState = {\n hasTemplate: false,\n template: undefined,\n context: { value: undefined, data: undefined },\n };\n\n public agInit(params: ICellRendererParams): void {\n const hasTemplate = !!(\n params.colDef?.cellRendererParams &&\n 'template' in params.colDef.cellRendererParams &&\n params.colDef.cellRendererParams.template\n );\n const template:\n | TemplateRef<CellRendererTemplateContext>\n | Signal<TemplateRef<CellRendererTemplateContext>>\n | undefined = hasTemplate\n ? (params.colDef?.cellRendererParams.template as\n | TemplateRef<CellRendererTemplateContext>\n | Signal<TemplateRef<CellRendererTemplateContext>>)\n : undefined;\n this.state = {\n hasTemplate: isSignal(template) ? 'signal' : hasTemplate,\n template,\n context: { value: params.value, row: params.data },\n } as CellState;\n }\n\n public refresh(params: ICellRendererParams): boolean {\n this.agInit(params);\n return false;\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n effect,\n inject,\n input,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { SkyAgGridCellValidatorTooltipComponent } from '../../cell-validator/ag-grid-cell-validator-tooltip.component';\nimport { SkyCellRendererValidatorParams } from '../../types/cell-renderer-validator-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-validator-tooltip',\n templateUrl: 'cell-renderer-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyAgGridCellValidatorTooltipComponent, AsyncPipe],\n})\nexport class SkyAgGridCellRendererValidatorTooltipComponent\n implements ICellRendererAngularComp, OnDestroy\n{\n public readonly params = input<SkyCellRendererValidatorParams>();\n\n protected cellRendererParams: SkyCellRendererValidatorParams | undefined;\n protected valueObservable = new BehaviorSubject('');\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n #valueSubscription: Subscription | undefined;\n\n constructor() {\n effect(() => {\n const params = this.params();\n if (params) {\n this.agInit(params);\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.#valueSubscription?.unsubscribe();\n this.valueObservable.complete();\n }\n\n public agInit(params: SkyCellRendererValidatorParams): void {\n this.cellRendererParams = params;\n this.#valueSubscription?.unsubscribe();\n this.#valueSubscription = new Subscription();\n if (\n typeof params.skyComponentProperties?.valueResourceObservable ===\n 'function'\n ) {\n this.#valueSubscription.add(\n params.skyComponentProperties\n .valueResourceObservable(\n params.value,\n params.data,\n params.node?.rowIndex,\n )\n .subscribe((result) => {\n this.valueObservable.next(result);\n }),\n );\n } else {\n this.valueObservable.next(params.valueFormatted ?? params.value);\n }\n this.#changeDetector.markForCheck();\n }\n\n public refresh(params: SkyCellRendererValidatorParams): boolean {\n this.agInit(params);\n return false;\n }\n}\n","<sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n {{ valueObservable | async }}\n</sky-ag-grid-cell-validator-tooltip>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n linkedSignal,\n signal,\n untracked,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { SkyDatepickerModule } from '@skyux/datetime';\n\nimport { IDateAngularComp } from 'ag-grid-angular';\nimport { IDateParams } from 'ag-grid-community';\n\n/** @internal */\n@Component({\n selector: 'sky-ag-grid-date-picker',\n imports: [SkyDatepickerModule, ReactiveFormsModule],\n templateUrl: './column-filter-datepicker.component.html',\n styleUrls: [\n '../../cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.scss',\n './column-filter-datepicker.component.scss',\n ],\n host: {\n '[class.sky-ag-grid-cell-editor-datepicker]': 'isHeaderFilter()',\n '(focusin)': 'focused()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridColumnFilterDatepickerComponent implements IDateAngularComp {\n protected readonly dateControl = new FormControl<string | null>(null);\n protected readonly params = signal<IDateParams | undefined>(undefined);\n protected readonly isHeaderFilter = computed(\n () => this.params()?.location === 'filter',\n );\n protected readonly label = signal<string>('');\n protected readonly maxDate = computed(() => {\n const maxValidDate = this.params()?.filterParams?.maxValidDate;\n if (maxValidDate && maxValidDate instanceof Date) {\n return Number.isNaN(maxValidDate.getTime()) ? undefined : maxValidDate;\n }\n if (maxValidDate) {\n const parsed = new Date(maxValidDate);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n return undefined;\n });\n protected readonly minDate = computed(() => {\n const minValidDate = this.params()?.filterParams?.minValidDate;\n if (minValidDate && minValidDate instanceof Date) {\n return Number.isNaN(minValidDate.getTime()) ? undefined : minValidDate;\n }\n if (minValidDate) {\n const parsed = new Date(minValidDate);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n return undefined;\n });\n readonly #formValue = toSignal(this.dateControl.valueChanges, {\n initialValue: null,\n });\n readonly #dateValue = linkedSignal(\n () => {\n const value = this.#formValue();\n if (!value) {\n return null;\n }\n const parsed = new Date(value);\n return Number.isNaN(parsed.getTime()) ? null : parsed;\n },\n {\n equal: (a, b) => {\n if (!!a !== !!b) {\n return false;\n }\n return a?.getTime() === b?.getTime();\n },\n },\n );\n readonly #dateValueString = computed(\n () => this.#dateValue()?.toISOString() ?? '',\n );\n // Does not emit on the initial value, only tracks if a value has ever been set after initialization. This is used to determine whether to call onDateChanged.\n readonly #hadValue = linkedSignal({\n source: () => !!this.#formValue(),\n computation: (_hasValue, previous) =>\n !!previous?.source || !!previous?.value,\n });\n\n constructor() {\n effect(() => {\n const hasValue = this.#hadValue();\n const params = untracked(() => this.params());\n const onDateChanged = params?.onDateChanged;\n if (onDateChanged && hasValue) {\n onDateChanged();\n }\n });\n }\n\n public agInit(params: IDateParams): void {\n this.params.set(params);\n }\n\n public getDate(): Date | null {\n return this.#dateValue();\n }\n\n public refresh(params: IDateParams): void {\n this.agInit(params);\n }\n\n public setDate(date: Date | null): void {\n const currentDate = this.#dateValueString();\n const newDate =\n date && !Number.isNaN(date.getTime()) ? date.toISOString() : '';\n if (newDate !== currentDate) {\n this.dateControl.setValue(newDate || null);\n }\n }\n\n public setInputAriaLabel(placeholder: string): void {\n this.label.set(placeholder);\n }\n\n public setDisabled(disabled: boolean): void {\n if (disabled) {\n this.dateControl.disable();\n } else {\n this.dateControl.enable();\n }\n }\n\n protected focused(): void {\n this.params()?.onFocusIn?.();\n }\n\n protected openChange($event: boolean): void {\n if ($event) {\n this.focused();\n }\n }\n\n protected dateChange(): void {\n this.params()?.onDateChanged?.();\n }\n}\n","<sky-datepicker\n data-sky-id=\"column-filter-datepicker\"\n pickerClass=\"ag-custom-component-popup\"\n (calendarDateChange)=\"dateChange()\"\n (openChange)=\"openChange($event)\"\n>\n <input\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"label()\"\n [formControl]=\"dateControl\"\n [maxDate]=\"maxDate()\"\n [minDate]=\"minDate()\"\n />\n</sky-datepicker>\n","import { Injectable } from '@angular/core';\n\nimport { ColumnGroup } from 'ag-grid-community';\n\n/**\n * To display a help button beside the column group header, create a component containing\n * [`sky-help-inline`](https://developer.blackbaud.com/skyux/components/help-inline),\n * and inject SkyAgGridHeaderGroupInfo to access the column group\n * information, such as display name.\n * Add the component to the `headerGroupComponentParams.inlineHelpComponent`\n * property of the [column group definition](https://www.ag-grid.com/angular-data-grid/column-groups/).\n * @see SkyAgGridHeaderGroupParams\n */\n@Injectable()\nexport class SkyAgGridHeaderGroupInfo {\n /**\n * [Column group information from AG Grid](https://www.ag-grid.com/angular-data-grid/column-object-group/).\n */\n public columnGroup: ColumnGroup | undefined;\n /**\n * Display name of the column group.\n */\n public displayName: string | undefined;\n /**\n * AG Grid's [`context` field](https://www.ag-grid.com/angular-data-grid/context/).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public context: any;\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n SkyDynamicComponentLocation,\n SkyDynamicComponentService,\n} from '@skyux/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { IHeaderGroupAngularComp } from 'ag-grid-angular';\nimport { ProvidedColumnGroup } from 'ag-grid-community';\nimport { BehaviorSubject, Observable, Subscription, takeUntil } from 'rxjs';\n\nimport { fromGridEvent } from '../ag-grid-event-utils';\nimport { SkyAgGridHeaderGroupInfo } from '../types/header-group-info';\nimport { SkyAgGridHeaderGroupParams } from '../types/header-group-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-header-group',\n templateUrl: './header-group.component.html',\n styleUrls: ['./header-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyThemeModule, SkyIconModule, AsyncPipe, SkyI18nModule],\n})\nexport class SkyAgGridHeaderGroupComponent\n implements IHeaderGroupAngularComp, OnDestroy, AfterViewInit\n{\n @ViewChild('inlineHelpContainer', { read: ElementRef, static: true })\n public inlineHelpContainer: ElementRef | undefined;\n\n protected params: SkyAgGridHeaderGroupParams | undefined = undefined;\n protected isExpandable$: Observable<boolean>;\n protected isExpanded$: Observable<boolean>;\n\n #columnGroup: ProvidedColumnGroup | undefined = undefined;\n #isExpandableSubject = new BehaviorSubject<boolean>(false);\n #isExpandedSubject = new BehaviorSubject<boolean>(false);\n #subscriptions = new Subscription();\n #viewInitialized = false;\n #agInitialized = false;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dynamicComponentService = inject(SkyDynamicComponentService);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n constructor() {\n this.isExpandable$ = this.#isExpandableSubject.asObservable();\n this.isExpanded$ = this.#isExpandedSubject.asObservable();\n }\n\n public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public ngOnDestroy(): void {\n this.#subscriptions.unsubscribe();\n }\n\n public agInit(params: SkyAgGridHeaderGroupParams | undefined): void {\n this.#agInitialized = true;\n this.params = params;\n this.#subscriptions.unsubscribe();\n if (!params) {\n return;\n }\n this.#subscriptions = new Subscription();\n this.#columnGroup = params.columnGroup.getProvidedColumnGroup();\n this.#isExpandableSubject.next(!!this.#columnGroup?.isExpandable());\n if (this.#isExpandableSubject.getValue()) {\n this.#subscriptions.add(\n fromGridEvent(params.api, 'columnGroupOpened')\n .pipe(takeUntil(fromGridEvent(params.api, 'gridPreDestroyed')))\n .subscribe((event) => {\n if (\n this.#columnGroup &&\n event.columnGroups.includes(this.#columnGroup)\n ) {\n this.#isExpandedSubject.next(this.#columnGroup.isExpanded());\n }\n }),\n );\n }\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public setExpanded($event: boolean): void {\n this.params?.setExpanded($event);\n }\n\n #updateInlineHelp(): void {\n if (!this.#viewInitialized || !this.#agInitialized) {\n return;\n }\n\n const colGroupDef = this.params?.columnGroup?.getColGroupDef();\n const inlineHelpComponent =\n colGroupDef?.headerGroupComponentParams?.inlineHelpComponent;\n\n if (inlineHelpComponent) {\n const headerGroupInfo = new SkyAgGridHeaderGroupInfo();\n headerGroupInfo.columnGroup = this.params?.columnGroup;\n headerGroupInfo.context = this.params?.context;\n headerGroupInfo.displayName = this.params?.displayName;\n\n this.#dynamicComponentService.createComponent(inlineHelpComponent, {\n providers: [\n {\n provide: SkyAgGridHeaderGroupInfo,\n useValue: headerGroupInfo,\n },\n ],\n environmentInjector: this.#environmentInjector,\n referenceEl: this.inlineHelpContainer?.nativeElement,\n location: SkyDynamicComponentLocation.ElementBottom,\n });\n }\n }\n}\n","@if (params?.displayName) {\n <span\n class=\"header-group-text\"\n role=\"presentation\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ params?.displayName }}</span\n >\n}\n@if (isExpandable$ | async) {\n @if (isExpanded$ | async) {\n <button\n class=\"sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n [attr.aria-label]=\"\n 'sky_ag_grid_column_group_header_collapse_aria_label'\n | skyLibResources: params?.displayName\n \"\n (click)=\"setExpanded(false)\"\n >\n <sky-icon iconName=\"chevron-double-left\" />\n </button>\n } @else {\n <button\n class=\"sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n [attr.aria-label]=\"\n 'sky_ag_grid_column_group_header_expand_aria_label'\n | skyLibResources: params?.displayName\n \"\n (click)=\"setExpanded(true)\"\n >\n <sky-icon iconName=\"chevron-double-right\" />\n </button>\n }\n}\n<span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n RendererFactory2,\n computed,\n inject,\n model,\n signal,\n} from '@angular/core';\nimport { SkyCheckboxChange, SkyCheckboxModule } from '@skyux/forms';\n\nimport { IHeaderAngularComp } from 'ag-grid-angular';\nimport { GridApi, IHeaderParams } from 'ag-grid-community';\nimport { Subscription } from 'rxjs';\n\nimport { fromGridEvent } from '../../ag-grid-event-utils';\n\n@Component({\n selector: 'sky-ag-grid-row-selector-header',\n imports: [SkyCheckboxModule],\n templateUrl: './header-row-selector.component.html',\n styleUrl: './header-row-selector.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.title]': 'label()',\n '[attr.role]': '\"note\"',\n },\n})\nexport class SkyAgGridHeaderRowSelectorComponent implements IHeaderAngularComp {\n protected readonly checked = model(false);\n protected readonly indeterminate = signal(false);\n protected readonly multiSelect = signal(false);\n protected readonly params = signal<IHeaderParams | undefined>(undefined);\n protected readonly label = computed(() => {\n const params = this.params();\n return params?.displayName || params?.column.getColDef().field;\n });\n\n #api: GridApi<unknown> | undefined;\n #subscriptions = new Subscription();\n readonly #renderer = inject(RendererFactory2).createRenderer(undefined, null);\n\n constructor() {\n inject(DestroyRef).onDestroy(() => this.#subscriptions.unsubscribe());\n }\n\n public agInit(params: IHeaderParams): void {\n this.params.set(params);\n this.#api = params.api;\n this.#subscriptions.unsubscribe();\n this.#subscriptions = new Subscription();\n\n // Row selection behavior can only be set when the grid is created.\n // It only changes if the grid is recreated.\n const rowSelection = params.api.getGridOption('rowSelection');\n this.multiSelect.set(\n rowSelection === 'multiple' ||\n (typeof rowSelection === 'object' && rowSelection?.mode === 'multiRow'),\n );\n\n if (this.multiSelect()) {\n this.#subscriptions.add(\n fromGridEvent(params.api, 'selectionChanged').subscribe((change) => {\n if (change.source.match(/selectall/i)) {\n // Either select all or clear selection.\n this.indeterminate.set(false);\n this.checked.set(!!change.selectedNodes?.length);\n } else {\n this.indeterminate.set(!!change.selectedNodes?.length);\n this.checked.set(false);\n }\n }),\n );\n\n this.#subscriptions.add(\n fromGridEvent(params.api, 'rowDataUpdated').subscribe(() => {\n this.indeterminate.set(!!this.#api?.getSelectedNodes().length);\n this.checked.set(false);\n }),\n );\n\n const el = params.eGridHeader;\n if (el) {\n this.#renderer.setAttribute(el, 'aria-keyshortcuts', 'Enter Space');\n this.#subscriptions.add(\n this.#renderer.listen(el, 'keydown', (evt: KeyboardEvent) => {\n if (!['Enter', ' '].includes(evt.key) || evt.repeat) {\n return;\n }\n if (evt.key === ' ') {\n evt.preventDefault();\n }\n if (this.checked()) {\n this.#api?.deselectAll();\n } else {\n this.#api?.selectAll();\n }\n }),\n );\n }\n }\n }\n\n public refresh(): boolean {\n return false;\n }\n\n protected toggleCheckbox($event: SkyCheckboxChange): void {\n if ($event.checked) {\n this.#api?.selectAll();\n } else {\n this.#api?.deselectAll();\n }\n }\n}\n","@if (multiSelect()) {\n <sky-checkbox\n labelHidden\n data-sky-id=\"header-row-selector\"\n [checked]=\"checked()\"\n [labelText]=\"label()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"toggleCheckbox($event)\"\n />\n}\n","import { Injectable } from '@angular/core';\n\nimport { Column } from 'ag-grid-community';\n\n/**\n * To display a help button beside the column header, create a component containing\n * [`sky-help-inline`](https://developer.blackbaud.com/skyux/components/help-inline),\n * and inject SkyAgGridHeaderInfo to access the column information, such\n * as display name.\n * Add the component to the `headerComponentParams.inlineHelpComponent`\n * property of the [column definition](https://www.ag-grid.com/angular-data-grid/column-definitions/).\n * @see SkyAgGridHeaderParams\n */\n@Injectable()\nexport class SkyAgGridHeaderInfo {\n /**\n * [Column information from AG Grid](https://www.ag-grid.com/angular-data-grid/column-object/).\n */\n public column: Column | undefined;\n /**\n * Display name of the column.\n */\n public displayName: string | undefined;\n /**\n * AG Grid's [`context` field](https://www.ag-grid.com/angular-data-grid/context/).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public context: any;\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n ViewChild,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport {\n SkyDynamicComponentLocation,\n SkyDynamicComponentService,\n} from '@skyux/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { IHeaderAngularComp } from 'ag-grid-angular';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { fromGridEvent } from '../ag-grid-event-utils';\nimport { SkyAgGridHeaderInfo } from '../types/header-info';\nimport { SkyAgGridHeaderParams } from '../types/header-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.title]': 'accessibleHeaderText()',\n '[attr.aria-label]': 'displayName() || accessibleHeaderText()',\n '[attr.role]': '\"note\"',\n },\n imports: [SkyIconModule, SkyThemeModule, AsyncPipe, SkyI18nModule],\n})\nexport class SkyAgGridHeaderComponent\n implements IHeaderAngularComp, OnDestroy, AfterViewInit\n{\n public readonly filterEnabled$ = new BehaviorSubject<boolean>(false);\n\n // For accessibility, we need to set the title attribute on the header element if there is no visible header text.\n // https://dequeuniversity.com/rules/axe/4.5/empty-table-header?application=axeAPI\n protected readonly accessibleHeaderText = computed(() => {\n const params = this.params();\n if (\n params?.displayName &&\n !params?.column.getColDef().headerComponentParams?.headerHidden\n ) {\n return undefined;\n } else {\n return params?.displayName || params?.column.getColDef().field;\n }\n });\n\n @ViewChild('inlineHelpContainer', { read: ElementRef, static: true })\n protected inlineHelpContainer: ElementRef | undefined;\n\n protected readonly params = signal<SkyAgGridHeaderParams | undefined>(\n undefined,\n );\n protected sorted = '';\n protected readonly sortOrder$ = new BehaviorSubject<\n 'asc' | 'desc' | undefined\n >(undefined);\n protected readonly sortIndexDisplay$ = new BehaviorSubject<string>('');\n\n protected displayName = computed<string | undefined>(() => {\n const params = this.params();\n if (\n params?.displayName &&\n !params?.column.getColDef().headerComponentParams?.headerHidden\n ) {\n return params.displayName;\n } else {\n return undefined;\n }\n });\n\n #subscriptions = new Subscription();\n #inlineHelpComponentRef: ComponentRef<unknown> | undefined;\n #viewInitialized = false;\n #agInitialized = false;\n #leftPosition = 0;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dynamicComponentService = inject(SkyDynamicComponentService);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n }\n\n public ngOnDestroy(): void {\n this.#subscriptions.unsubscribe();\n }\n\n public agInit(params: SkyAgGridHeaderParams | undefined): void {\n this.#agInitialized = true;\n this.params.set(params);\n this.#subscriptions.unsubscribe();\n if (!params) {\n return;\n }\n this.#leftPosition = params.column.getLeft() ?? 0;\n this.#subscriptions = new Subscription();\n if (params.column.isFilterAllowed()) {\n const handler = (): void => {\n const isFilterActive = params.column.isFilterActive();\n if (isFilterActive !== this.filterEnabled$.getValue()) {\n this.filterEnabled$.next(isFilterActive);\n }\n };\n params.column.addEventListener('filterChanged', handler);\n this.#subscriptions.add(() =>\n params.column.removeEventListener('filterChanged', handler),\n );\n }\n if (params.enableSorting) {\n // Column sort state changes\n const handler = (): void => this.#updateSort();\n params.column.addEventListener('sortChanged', handler);\n this.#subscriptions.add(() =>\n params.column.removeEventListener('sortChanged', handler),\n );\n // Other column sort state changes, for multi-column sorting\n this.#subscriptions.add(\n fromGridEvent(params.api, 'sortChanged').subscribe(() =>\n this.#updateSortIndex(),\n ),\n );\n this.#updateSort();\n this.#updateSortIndex();\n }\n\n // When the column is moved left via the keyboard, the element is detached\n // and reattached to the DOM to maintain DOM order, and its focus is lost.\n this.#subscriptions.add(\n fromGridEvent(params.api, 'columnMoved').subscribe((event) => {\n const left = event.column?.getLeft() ?? 0;\n const oldLeft = this.#leftPosition;\n if (\n event.column === params.column &&\n event.source === 'uiColumnMoved' &&\n left < oldLeft\n ) {\n params.eGridHeader.focus();\n }\n this.#leftPosition = left;\n }),\n );\n\n this.#subscriptions.add(\n fromGridEvent(params.api, 'gridPreDestroyed').subscribe(() =>\n this.#subscriptions.unsubscribe(),\n ),\n );\n\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public onMenuClick($event: Event): void {\n this.params()?.showColumnMenu($event.target as HTMLElement);\n }\n\n public onSortRequested(event: MouseEvent): void {\n if (this.params()?.enableSorting) {\n this.params()?.progressSort(event.shiftKey);\n }\n }\n\n public refresh(params: SkyAgGridHeaderParams): boolean {\n this.agInit(params);\n return false;\n }\n\n #updateInlineHelp(): void {\n if (!this.#viewInitialized || !this.#agInitialized) {\n return;\n }\n\n const inlineHelpComponent = this.params()?.inlineHelpComponent;\n\n if (\n inlineHelpComponent &&\n (!this.#inlineHelpComponentRef ||\n this.#inlineHelpComponentRef.componentType !== inlineHelpComponent)\n ) {\n this.#dynamicComponentService.removeComponent(\n this.#inlineHelpComponentRef,\n );\n\n const headerInfo = new SkyAgGridHeaderInfo();\n headerInfo.column = this.params()?.column;\n headerInfo.context = this.params()?.context;\n headerInfo.displayName = this.params()?.displayName;\n\n this.#inlineHelpComponentRef =\n this.#dynamicComponentService.createComponent(inlineHelpComponent, {\n providers: [\n {\n provide: SkyAgGridHeaderInfo,\n useValue: headerInfo,\n },\n ],\n environmentInjector: this.#environmentInjector,\n referenceEl: this.inlineHelpContainer?.nativeElement,\n location: SkyDynamicComponentLocation.ElementBottom,\n });\n } else if (!inlineHelpComponent) {\n this.#dynamicComponentService.removeComponent(\n this.#inlineHelpComponentRef,\n );\n }\n }\n\n #updateSort(): void {\n this.sortOrder$.next(this.params()?.column.getSort() || undefined);\n }\n\n #updateSortIndex(): void {\n const sortIndex = this.params()?.column.getSortIndex();\n const otherSortColumns = this.params()\n ?.api?.getColumns()\n ?.some(\n (column) =>\n column.getColId() !== this.params()?.column.getColId() &&\n !!column.getSort(),\n );\n if (sortIndex !== undefined && sortIndex !== null && otherSortColumns) {\n this.sortIndexDisplay$.next(`${sortIndex + 1}`);\n } else {\n this.sortIndexDisplay$.next('');\n }\n }\n}\n","<div class=\"ag-cell-label-container\" role=\"presentation\">\n @if (params()?.enableMenu) {\n <span\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon iconName=\"more-actions\" />\n </span>\n }\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <span class=\"ag-header-cell-label-and-icons\">\n @if (params()?.enableSorting) {\n <button\n aria-hidden=\"true\"\n class=\"ag-header-cell-text ag-header-cell-label-sortable sky-btn-link-inline\"\n tabindex=\"-1\"\n type=\"button\"\n [attr.aria-label]=\"accessibleHeaderText()\"\n [innerText]=\"displayName() ?? ''\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n (click)=\"onSortRequested($event)\"\n ></button>\n } @else if (displayName()) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-cell-text\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ displayName() }}</span\n >\n }\n @if (filterEnabled$ | async) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n ><sky-icon iconName=\"filter\"\n /></span>\n }\n @if (params()?.enableSorting) {\n @if (sortOrder$ | async; as sortDirection) {\n <button\n class=\"ag-sort-indicator-container sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n (click)=\"onSortRequested($event)\"\n >\n @if (sortDirection === 'desc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon iconName=\"chevron-down\" iconSize=\"s\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_desc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n @if (sortDirection === 'asc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon iconName=\"chevron-up\" iconSize=\"s\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_asc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n\n @if (sortIndexDisplay$ | async; as sortIndexDisplay) {\n <span\n aria-hidden=\"true\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n >{{ sortIndexDisplay }}</span\n >\n }\n </button>\n } @else {\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span>\n }\n }\n </span>\n <span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n </div>\n</div>\n","export const iconMap: Record<\n string,\n {\n name: string;\n size: number;\n }\n> = {\n // header column group shown when expanded (click to contract)\n columnGroupOpened: {\n name: 'chevron-double-left',\n size: 16,\n },\n\n // header column group shown when contracted (click to expand)\n columnGroupClosed: {\n name: 'chevron-double-right',\n size: 16,\n },\n\n // column tool panel column group contracted (click to expand)\n columnSelectClosed: {\n name: 'chevron-right',\n size: 24,\n },\n\n // column tool panel column group expanded (click to contract)\n columnSelectOpen: {\n name: 'chevron-down',\n size: 24,\n },\n\n // column tool panel header expand/collapse all button, shown\n // when some children are expanded and others are collapsed\n columnSelectIndeterminate: {\n name: 'subtract',\n size: 16,\n },\n\n // accordion open (filter tool panel group, charts group)\n accordionOpen: {\n name: 'chevron-down',\n size: 24,\n },\n\n // accordion closed (filter tool panel group, charts group)\n accordionClosed: {\n name: 'chevron-right',\n size: 24,\n },\n\n // accordion indeterminate - shown when some children are expanded and\n // others are collapsed (filter tool panel group, charts group)\n accordionIndeterminate: {\n name: 'subtract',\n size: 16,\n },\n\n // shown on drag and drop image component icon while dragging\n // column to the side of the grid to pin\n columnMovePin: {\n name: 'arrow-move',\n size: 20,\n },\n\n // shown on drag and drop image component icon while dragging over\n // part of the page that is not a drop zone\n columnMoveHide: {\n name: 'eye-off',\n size: 16,\n },\n\n // shown on drag and drop image component icon while dragging\n // columns to reorder\n columnMoveMove: {\n name: 'arrow-move',\n size: 20,\n },\n\n // animating icon shown when dragging a column to the right of\n // the grid causes horizontal scrolling\n columnMoveLeft: {\n name: 'arrow-move',\n size: 20,\n },\n\n // animating icon shown when dragging a column to the left of\n // the grid causes horizontal scrolling\n columnMoveRight: {\n name: 'arrow-move',\n size: 20,\n },\n\n // shown on drag and drop image component icon while dragging\n // over Row Groups drop zone\n columnMoveGroup: {\n name: 'group',\n size: 20,\n },\n\n // shown on drag and drop image component icon while dragging\n // over Values drop zone\n columnMoveValue: {\n name: 'calculator',\n size: 16,\n },\n\n // shown on drag and drop image component icon while dragging\n // over pivot drop zone\n columnMovePivot: {\n name: 'table-freeze-column',\n size: 16,\n },\n\n // shown on drag and drop image component icon while dragging\n // over drop zone that doesn't support it, e.g.\n // string column over aggregation drop zone\n dropNotAllowed: {\n name: 'prohibited',\n size: 16,\n },\n\n // shown on row group when contracted (click to expand)\n groupContracted: {\n name: 'chevron-right',\n size: 24,\n },\n\n // shown on row group when expanded (click to contract)\n groupExpanded: {\n name: 'chevron-down',\n size: 24,\n },\n\n // set filter tree list group contracted (click to expand)\n setFilterGroupClosed: {\n name: 'chevron-right',\n size: 24,\n },\n\n // set filter tree list group expanded (click to contract)\n setFilterGroupOpen: {\n name: 'chevron-down',\n size: 24,\n },\n\n // set filter tree list expand/collapse all button, shown when\n // some children are expanded and\n // others are collapsed\n setFilterGroupIndeterminate: {\n name: 'subtract',\n size: 16,\n },\n\n // set filter async values loading\n setFilterLoading: {\n name: 'spinner-ios',\n size: 16,\n },\n\n // context menu chart item\n chart: {\n name: 'data-bar-vertical-ascending',\n size: 16,\n },\n\n // dialog title bar\n close: {\n name: 'close',\n size: 24,\n },\n\n // X (remove) on column 'pill' after adding it to a drop zone list\n cancel: {\n name: 'close',\n size: 24,\n },\n\n // indicates the currently active pin state in the \"Pin column\"\n // sub-menu of the column menu\n check: {\n name: 'checkmark',\n size: 20,\n },\n\n // \"go to first\" button in pagination controls\n first: {\n name: 'arrow-previous',\n size: 16,\n },\n\n // \"go to previous\" button in pagination controls\n previous: {\n name: 'chevron-left',\n size: 24,\n },\n\n // \"go to next\" button in pagination controls\n next: {\n name: 'chevron-right',\n size: 24,\n },\n\n // \"go to last\" button in pagination controls\n last: {\n name: 'arrow-next',\n size: 16,\n },\n\n // shown on top right of chart when chart is linked to range\n // data (click to unlink)\n linked: {\n name: 'link-dismiss',\n size: 16,\n },\n\n // shown on top right of chart when chart is not linked to\n // range data (click to link)\n unlinked: {\n name: 'link',\n size: 16,\n },\n\n // rotating spinner shown by the loading cell renderer\n groupLoading: {\n name: 'spinner-ios',\n size: 16,\n },\n\n // button to launch legacy column menu\n menu: {\n name: 'more-actions',\n size: 24,\n },\n\n // button to launch new enterprise column menu\n menuAlt: {\n name: 'more-actions',\n size: 24,\n },\n\n // menu tab icon in legacy tabbed enterprise column menu\n legacyMenu: {\n name: 'more-actions',\n size: 24,\n },\n\n // open filter button - header, floating filter, menu\n filter: {\n name: 'filter',\n size: 16,\n },\n\n // filter is applied - header (legacy column menu), filter tool panel\n filterActive: {\n name: 'filter',\n size: 16,\n },\n\n // filter tab icon in legacy tabbed enterprise column menu\n filterTab: {\n name: 'filter',\n size: 16,\n },\n\n // filter tool panel tab\n filtersToolPanel: {\n name: 'filter',\n size: 16,\n },\n\n // columns in menu (column chooser / columns tab)\n columns: {\n name: 'layout-column-three',\n size: 16,\n },\n\n // column tool panel tab\n columnsToolPanel: {\n name: 'layout-column-three',\n size: 16,\n },\n\n // button in chart regular size window title bar (click to maximise)\n maximize: {\n name: 'arrow-maximize',\n size: 16,\n },\n\n // button in chart maximised window title bar (click to make regular size)\n minimize: {\n name: 'arrow-minimize',\n size: 16,\n },\n\n // \"Pin column\" item in column header menu\n menuPin: {\n name: 'pin',\n size: 16,\n },\n\n // \"Value aggregation\" column menu item (shown on numeric\n // columns when grouping is active)\"\n menuValue: {\n name: 'calculator',\n size: 16,\n },\n\n // \"Group by {column-name}\" item in column header menu\n menuAddRowGroup: {\n name: 'arrow-collapse-all',\n size: 16,\n },\n\n // \"Un-Group by {column-name}\" item in column header menu\n menuRemoveRowGroup: {\n name: 'arrow-collapse-all',\n size: 16,\n },\n\n // context menu copy item\n clipboardCopy: {\n name: 'copy',\n size: 16,\n },\n\n // context menu cut item\n clipboardCut: {\n name: 'cut',\n size: 16,\n },\n\n // context menu paste item\n clipboardPaste: {\n name: 'clipboard-arrow-right',\n size: 16,\n },\n\n // identifies the pivot drop zone\n pivotPanel: {\n name: 'pivot',\n size: 16,\n },\n\n // \"Row groups\" drop zone in column tool panel\n rowGroupPanel: {\n name: 'group',\n size: 20,\n },\n\n // columns tool panel Values drop zone\n valuePanel: {\n name: 'calculator',\n size: 16,\n },\n\n // drag handle used to pick up draggable columns\n columnDrag: {\n name: 're-order-dots-vertical',\n size: 16,\n },\n\n // drag handle used to pick up draggable rows\n rowDrag: {\n name: 'arrow-bidirectional-up-down',\n size: 16,\n },\n\n // context menu export item\n save: {\n name: 'arrow-download',\n size: 16,\n },\n\n // csv export\n csvExport: {\n name: 'document-text',\n size: 16,\n },\n\n // excel export\n excelExport: {\n name: 'document-xls',\n size: 16,\n },\n\n // icon on select dropdowns (select cell editor, charts tool panels)\n selectOpen: {\n name: 'chevron-down',\n size: 24,\n },\n\n // open icon for rich select editor\n richSelectOpen: {\n name: 'chevron-down',\n size: 24,\n },\n\n // remove for rich select editor pills\n richSelectRemove: {\n name: 'close',\n size: 24,\n },\n\n // icon for sub menu item\n subMenuOpen: {\n name: 'arrow-right',\n size: 16,\n },\n\n // version of subMenuOpen used in RTL mode\n subMenuOpenRtl: {\n name: 'arrow-left',\n size: 16,\n },\n\n // separator between column 'pills' when you add multiple\n // columns to the header drop zone\n panelDelimiter: {\n name: 'chevron-right',\n size: 16,\n },\n\n // version of panelDelimiter used in RTL mode\n panelDelimiterRtl: {\n name: 'arrow-left',\n size: 16,\n },\n\n // show on column header when column is sorted ascending\n sortAscending: {\n name: 'chevron-up',\n size: 16,\n },\n\n // show on column header when column is sorted descending\n sortDescending: {\n name: 'chevron-down',\n size: 16,\n },\n\n // show on column header when column has no sort, only when\n // enabled with colDef.unSortIcon=true\n sortUnSort: {\n name: 'subtract',\n size: 16,\n },\n\n // Builder button in Advanced Filter\n advancedFilterBuilder: {\n name: 'group',\n size: 20,\n },\n\n // drag handle used to pick up Advanced Filter Builder rows\n advancedFilterBuilderDrag: {\n name: 're-order-dots-vertical',\n size: 16,\n },\n\n // Advanced Filter Builder row validation error\n advancedFilterBuilderInvalid: {\n name: 'prohibited',\n size: 16,\n },\n\n // shown on Advanced Filter Builder rows to move them up\n advancedFilterBuilderMoveUp: {\n name: 'chevron-up',\n size: 24,\n },\n\n // shown on Advanced Filter Builder rows to move them down\n advancedFilterBuilderMoveDown: {\n name: 'chevron-down',\n size: 24,\n },\n\n // shown on Advanced Filter Builder rows to add new rows\n advancedFilterBuilderAdd: {\n name: 'add-circle',\n size: 24,\n },\n\n // shown on Advanced Filter Builder rows to remove row\n advancedFilterBuilderRemove: {\n name: 'subtract-circle',\n size: 16,\n },\n\n // shown on Advanced Filter Builder selection pills\n advancedFilterBuilderSelect: {\n name: 'chevron-down',\n size: 24,\n },\n\n // icon to open charts menu\n chartsMenu: {\n name: 'more-actions',\n size: 24,\n },\n\n // Edit Chart menu item shown in Integrated Charts menu\n chartsMenuEdit: {\n name: 'data-bar-vertical-ascending',\n size: 16,\n },\n\n // Advanced Settings menu item shown in Integrated Charts menu\n chartsMenuAdvancedSettings: {\n name: 'settings',\n size: 16,\n },\n\n // shown in Integrated Charts menu add fields\n chartsMenuAdd: {\n name: 'add',\n size: 24,\n },\n\n // shown in Integrated Charts tool panel color picker\n chartsColorPicker: {\n name: 'chevron-down',\n size: 24,\n },\n\n // previous in Integrated Charts settings tool panel theme switcher\n chartsThemePrevious: {\n name: 'chevron-left',\n size: 24,\n },\n\n // next in Integrated Charts settings tool panel theme switcher\n chartsThemeNext: {\n name: 'chevron-right',\n size: 24,\n },\n\n // download chart\n chartsDownload: {\n name: 'arrow-download',\n size: 16,\n },\n};\nexport type IconMapType = typeof iconMap;\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { SkyWaitModule } from '@skyux/indicators';\n\nimport { ILoadingOverlayAngularComp } from 'ag-grid-angular';\nimport { ILoadingOverlayParams } from 'ag-grid-community';\n\n@Component({\n selector: 'sky-ag-grid-loading',\n imports: [SkyWaitModule],\n templateUrl: './loading.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridLoadingComponent implements ILoadingOverlayAngularComp {\n public agInit(_params: ILoadingOverlayParams): void {\n // Do nothing.\n }\n\n public refresh(_params: ILoadingOverlayParams): void {\n // Do nothing.\n }\n}\n","<sky-wait [isWaiting]=\"true\" />\n","/**\n * @internal\n */\nexport enum SkyCellClass {\n Autocomplete = 'sky-ag-grid-cell-autocomplete',\n Currency = 'sky-ag-grid-cell-currency',\n Date = 'sky-ag-grid-cell-date',\n Editable = 'sky-ag-grid-cell-editable',\n Invalid = 'sky-ag-grid-cell-invalid',\n Lookup = 'sky-ag-grid-cell-lookup',\n Number = 'sky-ag-grid-cell-number',\n RightAligned = 'sky-ag-grid-cell-right-aligned',\n RowSelector = 'sky-ag-grid-cell-row-selector',\n Template = 'sky-ag-grid-cell-template',\n Text = 'sky-ag-grid-cell-text',\n Uneditable = 'sky-ag-grid-cell-uneditable',\n Validator = 'sky-ag-grid-cell-validator',\n}\n","/**\n * @internal\n */\nexport enum SkyHeaderClass {\n Resizable = 'sky-ag-grid-header-resizable',\n RightAligned = 'sky-ag-grid-header-right-aligned',\n}\n","import { CSP_NONCE, DOCUMENT, Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { SkyLogService } from '@skyux/core';\nimport { SkyDateService } from '@skyux/datetime';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport {\n AgColumn,\n CellClassParams,\n CellFocusedEvent,\n CellRendererSelectorFunc,\n CellRendererSelectorResult,\n ColDef,\n EditableCallbackParams,\n GridOptions,\n HeaderClassParams,\n ICellRendererParams,\n RowClassParams,\n RowNode,\n RowSelectionOptions,\n SuppressHeaderKeyboardEventParams,\n SuppressKeyboardEventParams,\n ValueFormatterParams,\n} from 'ag-grid-community';\nimport { EMPTY, map, of } from 'rxjs';\n\nimport { getSkyAgGridTheme } from '../../styles/ag-grid-theme';\n\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\nimport { applySkyLookupPropertiesDefaults } from './apply-lookup-properties-defaults';\nimport { SkyAgGridCellEditorAutocompleteComponent } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\nimport { SkyAgGridCellEditorCurrencyComponent } from './cell-editors/cell-editor-currency/cell-editor-currency.component';\nimport { SkyAgGridCellEditorDatepickerComponent } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\nimport { SkyAgGridCellEditorLookupComponent } from './cell-editors/cell-editor-lookup/cell-editor-lookup.component';\nimport { SkyAgGridCellEditorNumberComponent } from './cell-editors/cell-editor-number/cell-editor-number.component';\nimport { SkyAgGridCellEditorTextComponent } from './cell-editors/cell-editor-text/cell-editor-text.component';\nimport { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\nimport { SkyAgGridCellRendererLookupComponent } from './cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';\nimport { SkyAgGridCellRendererRowSelectorComponent } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\nimport { SkyAgGridCellRendererTemplateComponent } from './cell-renderers/cell-renderer-template/cell-renderer-template.component';\nimport { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\nimport { SkyAgGridColumnFilterDatepickerComponent } from './column-filters/column-filter-datepicker/column-filter-datepicker.component';\nimport { SkyAgGridHeaderGroupComponent } from './header/header-group.component';\nimport { SkyAgGridHeaderRowSelectorComponent } from './header/header-row-selector/header-row-selector.component';\nimport { SkyAgGridHeaderComponent } from './header/header.component';\nimport { IconMapType, iconMap } from './icons/icon-map';\nimport { SkyAgGridLoadingComponent } from './loading/loading.component';\nimport { SkyCellClass } from './types/cell-class';\nimport { SkyCellType } from './types/cell-type';\nimport { SkyHeaderClass } from './types/header-class';\nimport { LastFocusedCell } from './types/last-focused.cell';\nimport { SkyGetGridOptionsArgs } from './types/sky-grid-options';\n\nfunction autocompleteComparator(\n value1: { name: string },\n value2: { name: string },\n): number {\n if (value1 && value2) {\n if (value1.name > value2.name) {\n return 1;\n }\n\n if (value1.name < value2.name) {\n return -1;\n }\n\n return 0;\n }\n\n return value1 ? 1 : -1;\n}\n\nfunction autocompleteFormatter(params: ValueFormatterParams): string {\n return params.value && params.value.name;\n}\n\nfunction dateComparator(date1: Date | string, date2: Date | string): number {\n let date1value = date1;\n let date2value = date2;\n\n if (typeof date1value === 'string') {\n date1value = new Date(date1);\n }\n\n if (typeof date2value === 'string') {\n date2value = new Date(date2);\n }\n\n if (date1value && date2value) {\n if (date1value > date2value) {\n return 1;\n }\n\n if (date1value < date2value) {\n return -1;\n }\n\n return 0;\n }\n\n return date1value ? 1 : -1;\n}\n\nfunction getValidatorCellRendererSelector(\n component: string,\n fallback?: CellRendererSelectorResult,\n): CellRendererSelectorFunc {\n return (params: ICellRendererParams) => {\n if (\n params.colDef &&\n typeof params.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n if (\n params.column?.isCellEditable(params.node) ||\n !params.colDef.cellRendererParams.skyComponentProperties.validator(\n params.value,\n params.data,\n params?.node?.rowIndex,\n )\n ) {\n return {\n component,\n params: {\n ...params.colDef.cellRendererParams,\n },\n };\n }\n }\n return fallback;\n };\n}\n\nlet rowNodeId = -1;\n\n/**\n * `SkyAgGridService` provides methods to get AG Grid `gridOptions` to ensure grids match SKY UX functionality. The `gridOptions` can be overridden, and include registered SKY UX column types.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridService {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #keyMap = new WeakMap<any, string>();\n readonly #agGridAdapterService = inject(SkyAgGridAdapterService);\n readonly #resources = inject(SkyLibResourcesService, { optional: true });\n readonly #dateService = inject(SkyDateService);\n readonly #logService = inject(SkyLogService);\n readonly #cspNonce = inject(CSP_NONCE, { optional: true });\n readonly #doc = inject(DOCUMENT);\n readonly #currentTheme = toSignal(\n inject(SkyThemeService, { optional: true })?.settingsChange.pipe(\n map((settingsChange) => settingsChange.currentSettings),\n ) ?? EMPTY,\n { initialValue: undefined },\n );\n readonly #currencyValidatorMsg = toSignal(\n this.#resources?.getString(\n 'sky_ag_grid_cell_renderer_currency_validator_message',\n ) ?? of('Please enter a valid currency'),\n { initialValue: 'Please enter a valid currency' },\n );\n readonly #numberValidatorMsg = toSignal(\n this.#resources?.getString(\n 'sky_ag_grid_cell_renderer_number_validator_message',\n ) ?? of('Please enter a valid number'),\n { initialValue: 'Please enter a valid number' },\n );\n readonly #rowSelectorHeading = toSignal(\n this.#resources?.getString('sky_ag_grid_row_selector_column_heading') ??\n of('Row selection'),\n { initialValue: 'Row selection' },\n );\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/angular-data-grid/grid-options/) with default SKY UX options, styling, and cell renderers registered for read-only grids.\n * @param args\n * @returns\n */\n public getGridOptions<T = any>(\n args: SkyGetGridOptionsArgs<T>,\n ): GridOptions<T> {\n const defaultGridOptions = this.#getDefaultGridOptions(args);\n const mergedGridOptions = this.#mergeGridOptions(\n defaultGridOptions,\n args.gridOptions,\n );\n\n return mergedGridOptions;\n }\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/angular-data-grid/grid-options/) with default SKY UX options, styling, and cell editors registered for editable grids.\n * @param args\n * @returns\n */\n public getEditableGridOptions<T = any>(\n args: SkyGetGridOptionsArgs<T>,\n ): GridOptions<T> {\n const defaultGridOptions = this.#getDefaultEditableGridOptions(args);\n const mergedGridOptions = this.#mergeGridOptions<T>(\n defaultGridOptions,\n args.gridOptions,\n );\n\n return mergedGridOptions;\n }\n\n #mergeGridOptions<T>(\n defaultGridOptions: GridOptions<T> & {\n getRowClass: (params: RowClassParams) => string[];\n },\n providedGridOptions: GridOptions<T>,\n ): GridOptions<T> {\n if ('enableRangeSelection' in providedGridOptions) {\n if (providedGridOptions.enableRangeSelection) {\n providedGridOptions.cellSelection = true;\n }\n delete providedGridOptions.enableRangeSelection;\n }\n if (\n providedGridOptions.rowSelection === 'single' ||\n providedGridOptions.rowSelection === 'multiple'\n ) {\n const rowSelectionOptions: Record<string, RowSelectionOptions> = {\n single: { mode: 'singleRow', checkboxes: false },\n multiple: { mode: 'multiRow', checkboxes: false },\n };\n providedGridOptions.rowSelection =\n rowSelectionOptions[providedGridOptions.rowSelection];\n }\n if (providedGridOptions.rowSelection?.mode) {\n providedGridOptions.rowSelection = {\n ...((defaultGridOptions.rowSelection as RowSelectionOptions) ?? {\n checkboxes: false,\n }),\n ...providedGridOptions.rowSelection,\n } as RowSelectionOptions;\n }\n if ('enableCellChangeFlash' in providedGridOptions) {\n providedGridOptions.defaultColDef ??= {};\n providedGridOptions.defaultColDef.enableCellChangeFlash ??=\n !!providedGridOptions.enableCellChangeFlash;\n delete providedGridOptions.enableCellChangeFlash;\n }\n\n const mergedGridOptions: GridOptions = {\n ...defaultGridOptions,\n ...providedGridOptions,\n components: {\n ...providedGridOptions.components,\n // Apply default components last to prevent consumers from overwriting our component types.\n ...defaultGridOptions.components,\n },\n context: {\n ...defaultGridOptions.context,\n ...providedGridOptions.context,\n },\n columnTypes: {\n ...providedGridOptions.columnTypes,\n // apply default second to prevent consumers from overwriting our default column types\n ...defaultGridOptions.columnTypes,\n },\n defaultColDef: {\n ...defaultGridOptions.defaultColDef,\n ...providedGridOptions.defaultColDef,\n // allow consumers to override all defaultColDef properties except cellClassRules, which we reserve for styling\n cellClassRules: defaultGridOptions.defaultColDef?.cellClassRules,\n headerClass: defaultGridOptions.defaultColDef?.headerClass,\n },\n defaultColGroupDef: {\n ...defaultGridOptions.defaultColGroupDef,\n ...providedGridOptions.defaultColGroupDef,\n headerClass: defaultGridOptions.defaultColGroupDef?.headerClass,\n },\n getRowClass: (params): string[] => {\n const defaultClasses = defaultGridOptions.getRowClass(\n params,\n ) as string[];\n const providedClasses = providedGridOptions.getRowClass?.(params) ?? [];\n const providedClassesArray = Array.isArray(providedClasses)\n ? providedClasses\n : [providedClasses];\n return [...defaultClasses, ...providedClassesArray];\n },\n onCellFocused: (event): void => {\n defaultGridOptions.onCellFocused?.(event);\n providedGridOptions.onCellFocused?.(event);\n },\n };\n\n // Enable text selection unless explicitly disabled or conflicting with another setting.\n if (\n mergedGridOptions.enableCellTextSelection ||\n (!('enableCellTextSelection' in mergedGridOptions) &&\n !mergedGridOptions.cellSelection &&\n !mergedGridOptions.columnDefs?.some((col: ColDef) => col.editable))\n ) {\n mergedGridOptions.context ||= {};\n mergedGridOptions.enableCellTextSelection ??= true;\n mergedGridOptions.context.enableCellTextSelection =\n mergedGridOptions.enableCellTextSelection;\n }\n\n return mergedGridOptions;\n }\n\n #getDefaultGridOptions<T>(args: SkyGetGridOptionsArgs<T>): GridOptions<T> & {\n getRowClass: (params: RowClassParams) => string[];\n } {\n // cellClassRules can be functions or string expressions\n const cellClassRuleTrueExpression = (): boolean => true;\n\n function getEditableFn(\n isUneditable?: boolean,\n ): (params: CellClassParams) => boolean {\n return function (params: CellClassParams): boolean {\n let isEditable = params.colDef.editable;\n\n if (typeof isEditable === 'function') {\n const column = params.api.getColumn(params.colDef);\n isEditable = isEditable({\n ...params,\n column,\n } as EditableCallbackParams);\n }\n\n return isUneditable ? !isEditable : !!isEditable;\n };\n }\n\n const editableCellClassRules = {\n [SkyCellClass.Editable]: getEditableFn(),\n [SkyCellClass.Uneditable]: getEditableFn(true),\n };\n\n function getValidatorFn(): (params: CellClassParams) => boolean {\n return function (param: CellClassParams) {\n if (\n param.colDef &&\n typeof param.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n return !param.colDef.cellRendererParams.skyComponentProperties.validator(\n param.value,\n param.data,\n param.node?.rowIndex,\n );\n }\n return false;\n };\n }\n\n const validatorCellClassRules = {\n [SkyCellClass.Invalid]: getValidatorFn(),\n [SkyCellClass.Validator]: cellClassRuleTrueExpression,\n };\n\n function getHeaderClass(\n ...classNames: string[]\n ): (params: HeaderClassParams) => string | string[] | undefined {\n return (params: HeaderClassParams): string | string[] | undefined => {\n // istanbul ignore next\n const minWidth = params.column?.getMinWidth() ?? 0;\n // istanbul ignore next\n const maxWidth = params.column?.getMaxWidth() ?? Infinity;\n if (\n (params.columnGroup?.isResizable() || params.column?.isResizable()) &&\n minWidth < maxWidth\n ) {\n return [...classNames, SkyHeaderClass.Resizable];\n }\n return classNames;\n };\n }\n\n const defaultSkyGridOptions: GridOptions & {\n getRowClass: (params: RowClassParams) => string[];\n } = {\n columnTypes: {\n [SkyCellType.Autocomplete]: {\n cellClassRules: {\n [SkyCellClass.Autocomplete]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorAutocompleteComponent,\n valueFormatter: autocompleteFormatter,\n comparator: autocompleteComparator,\n minWidth: 185,\n },\n [SkyCellType.Currency]: {\n cellClassRules: {\n [SkyCellClass.Currency]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-currency-validator',\n { component: 'sky-ag-grid-cell-renderer-currency' },\n ),\n cellEditor: SkyAgGridCellEditorCurrencyComponent,\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n minWidth: 185,\n sortingOrder: [null, 'desc', 'asc'],\n suppressKeyboardEvent: (params) =>\n this.#suppressEnter(params) || this.#suppressTab(params),\n },\n [SkyCellType.Date]: {\n cellClassRules: {\n [SkyCellClass.Date]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorDatepickerComponent,\n comparator: dateComparator,\n minWidth: this.#currentTheme()?.theme?.name === 'modern' ? 180 : 160,\n valueFormatter: (params: ValueFormatterParams) => {\n try {\n return (\n this.#dateService.format(\n params.value,\n args.locale,\n args.dateFormat || 'shortDate',\n ) || ''\n );\n } catch (err) {\n /* istanbul ignore else */\n if ((err as Error).stack) {\n this.#logService.error(`${(err as Error).stack}`);\n } else {\n this.#logService.error(`${err}`);\n }\n return '';\n }\n },\n },\n [SkyCellType.Lookup]: {\n cellClassRules: {\n [SkyCellClass.Lookup]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorLookupComponent,\n cellRenderer: SkyAgGridCellRendererLookupComponent,\n valueFormatter: (params) => {\n const lookupProperties = applySkyLookupPropertiesDefaults(\n params.colDef?.cellRendererParams?.skyComponentProperties ??\n params.colDef?.cellEditorParams?.skyComponentProperties ??\n {},\n );\n return (params.value || [])\n .map((value: Record<string, unknown>) => {\n return value[lookupProperties.descriptorProperty as string];\n })\n .filter((value: unknown) => value !== '' && value !== undefined)\n .join('; ');\n },\n minWidth: 185,\n },\n [SkyCellType.Number]: {\n cellClassRules: {\n [SkyCellClass.Number]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n cellEditor: SkyAgGridCellEditorNumberComponent,\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n sortingOrder: [null, 'desc', 'asc'],\n },\n [SkyCellType.RightAligned]: {\n cellClassRules: {\n [SkyCellClass.RightAligned]: cellClassRuleTrueExpression,\n },\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n },\n [SkyCellType.RowSelector]: {\n cellClassRules: {\n [SkyCellClass.RowSelector]: cellClassRuleTrueExpression,\n [SkyCellClass.Uneditable]: cellClassRuleTrueExpression,\n },\n cellRenderer: SkyAgGridCellRendererRowSelectorComponent,\n headerComponent: SkyAgGridHeaderRowSelectorComponent,\n headerValueGetter: () => this.#rowSelectorHeading(),\n minWidth: 55,\n maxWidth: 55,\n resizable: false,\n sortable: false,\n width: 55,\n },\n [SkyCellType.Template]: {\n cellClassRules: {\n [SkyCellClass.Template]: cellClassRuleTrueExpression,\n },\n cellRenderer: SkyAgGridCellRendererTemplateComponent,\n cellEditor: SkyAgGridCellRendererTemplateComponent,\n },\n [SkyCellType.Text]: {\n cellClassRules: {\n [SkyCellClass.Text]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorTextComponent,\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n },\n [SkyCellType.Validator]: {\n cellClassRules: {\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n },\n },\n defaultColDef: {\n cellClassRules: editableCellClassRules,\n dateComponent: SkyAgGridColumnFilterDatepickerComponent,\n headerClass: getHeaderClass(),\n headerComponent: SkyAgGridHeaderComponent,\n minWidth: 100,\n suppressHeaderKeyboardEvent: (\n keypress: SuppressHeaderKeyboardEventParams,\n ) => keypress.event.code === 'Tab',\n suppressKeyboardEvent: (keypress: SuppressKeyboardEventParams) =>\n this.#suppressTab(keypress),\n },\n defaultColGroupDef: {\n headerGroupComponent: SkyAgGridHeaderGroupComponent,\n },\n domLayout: 'autoHeight',\n ensureDomOrder: true,\n components: {\n 'sky-ag-grid-cell-renderer-currency':\n SkyAgGridCellRendererCurrencyComponent,\n 'sky-ag-grid-cell-renderer-currency-validator':\n SkyAgGridCellRendererCurrencyValidatorComponent,\n 'sky-ag-grid-cell-renderer-validator-tooltip':\n SkyAgGridCellRendererValidatorTooltipComponent,\n },\n focusGridInnerElement: (params) => {\n const lastFocusedCell = params.context?.['lastFocusedCell'] as\n | LastFocusedCell\n | undefined;\n if (lastFocusedCell) {\n if (lastFocusedCell.rowIndex !== null) {\n params.api.setFocusedCell(\n lastFocusedCell.rowIndex,\n lastFocusedCell.column,\n );\n } else {\n params.api.setFocusedHeader(lastFocusedCell.column);\n }\n return true;\n }\n return false;\n },\n getRowId: (params) => {\n const dataId = params.data.id;\n if (dataId !== undefined) {\n return `${params.data.id}`;\n }\n if (!this.#keyMap.has(params.data)) {\n this.#keyMap.set(params.data, `${rowNodeId--}`);\n }\n return this.#keyMap.get(params.data) as string;\n },\n getRowClass: (params: RowClassParams): string[] => {\n if (params.node.id) {\n return [`sky-ag-grid-row-${params.node.id}`];\n } else {\n return [];\n }\n },\n icons: Object.fromEntries(\n Object.keys(iconMap).map((iconKey) => [\n iconKey,\n this.#getIconTemplate(iconKey as keyof IconMapType),\n ]),\n ),\n loadingOverlayComponent: SkyAgGridLoadingComponent,\n onCellFocused: (event: CellFocusedEvent) => this.#onCellFocused(event),\n rowModelType: 'clientSide',\n rowSelection: {\n mode: 'multiRow',\n enableClickSelection: false,\n enableSelectionWithoutKeys: true,\n checkboxes: false,\n headerCheckbox: false,\n },\n singleClickEdit: true,\n styleNonce: this.#cspNonce ?? undefined,\n suppressDragLeaveHidesColumns: true,\n theme: getSkyAgGridTheme('data-grid'),\n themeStyleContainer: this.#doc.head,\n };\n\n const columnTypes = defaultSkyGridOptions.columnTypes as Record<\n string,\n ColDef\n >;\n\n columnTypes[SkyCellType.CurrencyValidator] = {\n ...columnTypes[SkyCellType.Currency],\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: string): boolean => {\n return !!`${value || ''}`.match(/^[^0-9]*(\\d+[,.]?)+\\d*[^0-9]*$/);\n },\n validatorMessage: this.#currencyValidatorMsg,\n },\n },\n };\n\n columnTypes[SkyCellType.NumberValidator] = {\n ...columnTypes[SkyCellType.Validator],\n ...columnTypes[SkyCellType.Number],\n cellClassRules: {\n ...columnTypes[SkyCellType.Validator].cellClassRules,\n ...columnTypes[SkyCellType.Number].cellClassRules,\n },\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: string): boolean => {\n return !!value && !isNaN(parseFloat(value));\n },\n validatorMessage: this.#numberValidatorMsg,\n },\n },\n };\n\n return defaultSkyGridOptions;\n }\n\n #onCellFocused(event: CellFocusedEvent): void {\n const shouldFocus = this.#shouldFocusChildren(event);\n if (shouldFocus) {\n const currentElement = this.#agGridAdapterService.getFocusedElement();\n this.#agGridAdapterService.focusOnFocusableChildren(currentElement);\n }\n }\n\n #shouldFocusChildren(event: CellFocusedEvent): boolean {\n let shouldFocus = true;\n // The API says the column can be string or null, but should be an object.\n shouldFocus &&= typeof event.column === 'object';\n // Row index can be number or null.\n const rowNode =\n Number.isInteger(event.rowIndex) &&\n event.api.getDisplayedRowAtIndex(event.rowIndex as number);\n shouldFocus &&= !!rowNode;\n // Do not change focus if the cell is a row drag or dnd source.\n shouldFocus &&= !(event.column as AgColumn).isRowDrag(rowNode as RowNode);\n shouldFocus &&= !(event.column as AgColumn).isDndSource(rowNode as RowNode);\n return shouldFocus;\n }\n\n #getDefaultEditableGridOptions<T>(\n args: SkyGetGridOptionsArgs<T>,\n ): GridOptions<T> & {\n getRowClass: (params: RowClassParams) => string[];\n } {\n const defaultGridOptions = this.#getDefaultGridOptions(args);\n defaultGridOptions.rowSelection = undefined;\n defaultGridOptions.theme = getSkyAgGridTheme('data-entry-grid');\n return defaultGridOptions;\n }\n\n #getIconTemplate(iconKey: keyof IconMapType): () => string {\n return () => {\n const iconInfo = iconMap[iconKey];\n return `<svg height=\"16\" width=\"16\"><use xlink:href=\"#sky-i-${iconInfo.name}-${iconInfo.size}-solid\"></use></svg>`;\n };\n }\n\n #suppressTab(params: SuppressKeyboardEventParams): boolean {\n if (params.event.code === 'Tab') {\n if (params.editing) {\n const currentlyFocusedEl =\n this.#agGridAdapterService.getFocusedElement();\n // inline cell editors have the 'ag-cell' class, while popup editors have the 'ag-popup-editor' class\n const cellEl = this.#agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-cell',\n );\n const popupEl = this.#agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-popup-editor',\n );\n const parentEl = cellEl || popupEl;\n\n const nextFocusableElementInCell =\n this.#agGridAdapterService.getNextFocusableElement(\n currentlyFocusedEl,\n parentEl,\n params.event.shiftKey,\n );\n return !!nextFocusableElementInCell;\n }\n return true;\n }\n return false;\n }\n\n #suppressEnter(params: SuppressKeyboardEventParams): boolean {\n if (params.event.code === 'Enter') {\n return params.editing;\n }\n return false;\n }\n}\n","// Export any types that should be included in the root.\nexport { SkyAgGridModule } from './lib/modules/ag-grid/ag-grid.module';\nexport { SkyAgGridService } from './lib/modules/ag-grid/ag-grid.service';\nexport { SkyAgGridRowDeleteCancelArgs } from './lib/modules/ag-grid/types/ag-grid-row-delete-cancel-args';\nexport { SkyAgGridRowDeleteConfirmArgs } from './lib/modules/ag-grid/types/ag-grid-row-delete-confirm-args';\nexport {\n SkyAgGridAutocompleteProperties,\n SkyAutocompleteProperties,\n} from './lib/modules/ag-grid/types/autocomplete-properties';\nexport { SkyCellClass } from './lib/modules/ag-grid/types/cell-class';\nexport { SkyCellEditorAutocompleteParams } from './lib/modules/ag-grid/types/cell-editor-autocomplete-params';\nexport { SkyCellEditorDatepickerParams } from './lib/modules/ag-grid/types/cell-editor-datepicker-params';\nexport { SkyAgGridCellEditorInitialAction } from './lib/modules/ag-grid/types/cell-editor-initial-action';\nexport { SkyCellEditorLookupParams } from './lib/modules/ag-grid/types/cell-editor-lookup-params';\nexport { SkyAgGridCellEditorUtils } from './lib/modules/ag-grid/types/cell-editor-utils';\nexport { SkyCellType } from './lib/modules/ag-grid/types/cell-type';\nexport { SkyAgGridCurrencyProperties } from './lib/modules/ag-grid/types/currency-properties';\nexport {\n SkyAgGridDatepickerProperties,\n SkyDatepickerProperties,\n} from './lib/modules/ag-grid/types/datepicker-properties';\nexport { SkyHeaderClass } from './lib/modules/ag-grid/types/header-class';\nexport { SkyAgGridHeaderGroupInfo } from './lib/modules/ag-grid/types/header-group-info';\nexport { SkyAgGridHeaderGroupParams } from './lib/modules/ag-grid/types/header-group-params';\nexport { SkyAgGridHeaderInfo } from './lib/modules/ag-grid/types/header-info';\nexport { SkyAgGridHeaderParams } from './lib/modules/ag-grid/types/header-params';\nexport { SkyAgGridLookupProperties } from './lib/modules/ag-grid/types/lookup-properties';\nexport { SkyAgGridNumberProperties } from './lib/modules/ag-grid/types/number-properties';\nexport { SkyGetGridOptionsArgs } from './lib/modules/ag-grid/types/sky-grid-options';\nexport { SkyAgGridTextProperties } from './lib/modules/ag-grid/types/text-properties';\nexport { SkyAgGridValidatorProperties } from './lib/modules/ag-grid/types/validator-properties';\n\n// Components and directives must be exported to support Angular's \"partial\" Ivy compiler.\n// Obscure names are used to indicate types are not part of the public API.\nexport { SkyAgGridDataManagerAdapterDirective as λ14 } from './lib/modules/ag-grid/ag-grid-data-manager-adapter.directive';\nexport { SkyAgGridRowDeleteComponent as λ6 } from './lib/modules/ag-grid/ag-grid-row-delete.component';\nexport { SkyAgGridRowDeleteDirective as λ13 } from './lib/modules/ag-grid/ag-grid-row-delete.directive';\nexport { SkyAgGridWrapperComponent as λ12 } from './lib/modules/ag-grid/ag-grid-wrapper.component';\nexport { SkyAgGridCellEditorAutocompleteComponent as λ1 } from './lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\nexport { SkyAgGridCellEditorCurrencyComponent as λ3 } from './lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component';\nexport { SkyAgGridCellEditorDatepickerComponent as λ5 } from './lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\nexport { SkyAgGridCellEditorLookupComponent as λ15 } from './lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component';\nexport { SkyAgGridCellEditorNumberComponent as λ4 } from './lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component';\nexport { SkyAgGridCellEditorTextComponent as λ2 } from './lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component';\nexport { SkyAgGridCellRendererCurrencyValidatorComponent as λ8 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\nexport { SkyAgGridCellRendererCurrencyComponent as λ9 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\nexport { SkyAgGridCellRendererLookupComponent as λ16 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';\nexport { SkyAgGridCellRendererRowSelectorComponent as λ7 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\nexport { SkyAgGridCellRendererValidatorTooltipComponent as λ10 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\nexport { SkyAgGridCellValidatorTooltipComponent as λ11 } from './lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component';\nexport { SkyAgGridColumnFilterDatepickerComponent as λ19 } from './lib/modules/ag-grid/column-filters/column-filter-datepicker/column-filter-datepicker.component';\nexport { SkyAgGridHeaderGroupComponent as λ18 } from './lib/modules/ag-grid/header/header-group.component';\nexport { SkyAgGridHeaderComponent as λ17 } from './lib/modules/ag-grid/header/header.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i4"],"mappings":"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"}