@skyux/ag-grid 15.5.0 → 15.6.0

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/shared/ag-grid-locale-es-ES.ts","../../../../../libs/components/ag-grid/src/lib/modules/shared/ag-grid-locale-fr-FR.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/lib/modules/ag-grid/types/ag-grid-col-def.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 sky_ag_grid_locale_no_rows_to_show: { message: 'No data available' },\n sky_ag_grid_locale_no_matching_rows: { message: 'No matching rows' },\n },\n ES: {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Selector de fila para la fila {0}',\n },\n sky_ag_grid_row_selector_column_heading: { message: 'Selección de filas' },\n sky_ag_grid_cell_editor_datepicker_aria_label: {\n message: 'Fecha editable {0} para la fila {1}',\n },\n sky_ag_grid_cell_editor_datepicker_hint_text: {\n message: 'Utilice el formato {0}.',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Número editable {0} para la fila {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Texto editable {0} para la fila {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Autocompletado editable {0} para la fila {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Introduzca un número válido.',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Introduzca un valor de moneda válido.',\n },\n skyux_lookup_tokens_summary: { message: '{0} artículos seleccionados' },\n sky_ag_grid_cell_editor_currency_aria_label: {\n message: 'Valor de moneda editable {0} para la fila {1}',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_asc: {\n message: 'Ordenar columna {0}, actualmente en orden ascendente',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_desc: {\n message: 'Ordenar columna {0}, actualmente en orden descendente',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted: {\n message: 'Ordenar columna {0}, actualmente sin ordenar',\n },\n sky_ag_grid_column_group_header_expand_aria_label: {\n message: 'Expandir grupo de columnas {0}',\n },\n sky_ag_grid_column_group_header_collapse_aria_label: {\n message: 'Contraer grupo de columnas {0}',\n },\n sky_ag_grid_locale_no_rows_to_show: { message: 'No hay datos disponibles' },\n sky_ag_grid_locale_no_matching_rows: {\n message: 'No hay filas coincidentes',\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} éléments 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 sky_ag_grid_locale_no_rows_to_show: { message: 'Aucune donnée disponible' },\n sky_ag_grid_locale_no_matching_rows: {\n message: 'Aucune ligne correspondante',\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 accentColor:\n 'var(--sky-override-ag-grid-accent-color, var(--sky-color-border-input-focus))',\n focusShadow:\n '0px 0px 0px var(--sky-override-ag-grid-focus-border-width, var(--sky-border-width-input-focus)) var(--sky-override-ag-grid-focus-border-color, var(--sky-color-border-input-focus))',\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 // The width term includes `--sky-ag-grid-top-scroll-height` (0 unless the\n // wrapper reserves space for a top horizontal scrollbar) because this border\n // is the only theme value AG Grid adds into all of its header-adjacent\n // geometry (pinned/sticky row offsets, body viewport height, fake scrollbar\n // spacers). `_base.scss` pins the other consumers of this border width\n // (header-cell border-top, vertical-scroll spacer) back to the un-inflated\n // width.\n headerRowBorder:\n 'calc(var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-separator-row)) + var(--sky-ag-grid-top-scroll-height, 0px)) 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 // See the `headerRowBorder` comment in `defaultsForAllThemes`.\n headerRowBorder:\n 'calc(var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-emphasized)) + var(--sky-ag-grid-top-scroll-height, 0px)) 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-light`;\n if (agGridThemeIsCompact(themeSettings, compactLayout)) {\n theme += `-compact`;\n }\n } else {\n theme += 'default';\n }\n return theme as SkyAgGridThemeType;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { SkyCoreAdapterService } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridAdapterService {\n readonly #skyAdapterService = inject(SkyCoreAdapterService);\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 * Use `defineSkyAgGridColDef()` to validate a column definition's `cellEditorParams` and `cellRendererParams` against its cell type.\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 in 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 DestroyRef,\n ElementRef,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n inject,\n input,\n linkedSignal,\n numberAttribute,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n SkyIdModule,\n SkyMutationObserverService,\n SkyResizeObserverService,\n SkyViewkeeperModule,\n} from '@skyux/core';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport {\n CellEditingStartedEvent,\n CellFocusedEvent,\n DomLayoutType,\n HeaderFocusedEvent,\n} from 'ag-grid-community';\nimport {\n EMPTY,\n Subject,\n asapScheduler,\n combineLatestWith,\n delay,\n distinctUntilChanged,\n filter,\n map,\n merge,\n of,\n shareReplay,\n switchMap,\n} from 'rxjs';\n\nimport {\n getSkyAgGridTheme,\n getSkyAgGridThemeClassName,\n} from '../../styles/ag-grid-theme';\n\nimport {\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} 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 /**\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 readonly #idIndex = idIndex++;\n protected readonly afterAnchorId =\n 'sky-ag-grid-nav-anchor-after-' + this.#idIndex;\n protected readonly beforeAnchorId =\n 'sky-ag-grid-nav-anchor-before-' + this.#idIndex;\n protected readonly gridId = 'sky-ag-grid-' + this.#idIndex;\n\n /**\n * Whether to stop keeping the column headers visible while the page scrolls,\n * for a host that keeps them visible itself. This is applied when the grid\n * initializes.\n * @internal\n */\n public readonly viewkeeperDisabled = input(false, {\n transform: booleanAttribute,\n });\n public readonly viewkeeperSuppressed = linkedSignal(() =>\n this.viewkeeperDisabled(),\n );\n\n /**\n * @internal\n */\n public readonly viewkeeperClasses = linkedSignal<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { domLayout: DomLayoutType | undefined; context: any; suppressed: boolean },\n string[]\n >({\n source: () => ({\n domLayout: this.#agGridDomLayout(),\n context: this.agGridContext(),\n suppressed: this.viewkeeperSuppressed(),\n }),\n computation: (source) => {\n if (source.suppressed) {\n return [];\n }\n const enableTopScroll = !!source.context?.enableTopScroll;\n if (source.domLayout === 'autoHeight' && enableTopScroll) {\n return ['.ag-header', '.ag-body-horizontal-scroll'];\n }\n return ['.ag-header'];\n },\n equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]),\n });\n\n get #isInEditMode(): boolean {\n const api = this.#agGridApi();\n if (api && !api.isDestroyed()) {\n const primaryGridEditing = !!api.getEditingCells()?.length;\n if (primaryGridEditing) {\n return true;\n } else if (api.getGridOption('masterDetail')) {\n let innerEditing = false;\n api.forEachDetailGridInfo((detailGrid) => {\n if (detailGrid?.api && !!detailGrid.api.getEditingCells()?.length) {\n innerEditing = true;\n }\n });\n\n return innerEditing;\n }\n }\n return false;\n }\n\n protected readonly agGrid = contentChild(AgGridAngular);\n\n protected readonly skyAgGridDiv =\n viewChild<ElementRef<HTMLElement>>('skyAgGridDiv');\n\n protected readonly agGridContext = computed(\n () => this.agGrid()?.gridOptions?.context,\n );\n protected readonly isNormalLayout = computed(\n () => this.#agGridDomLayout() === 'normal',\n );\n\n readonly #agGrid = toObservable(this.agGrid);\n readonly #agGridApi = toSignal(\n this.#agGrid.pipe(\n switchMap((agGrid) =>\n agGrid\n ? // Pause for less than a tick to let the AG Grid API become available.\n of(agGrid).pipe(\n delay(0, asapScheduler),\n map((g) => g.api),\n )\n : of(undefined),\n ),\n ),\n );\n readonly #agGridDomLayout = computed(() =>\n this.#agGridApi()?.getGridOption('domLayout'),\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 #mutationObserverService = inject(SkyMutationObserverService);\n readonly #resizeObserverSvc = inject(SkyResizeObserverService);\n readonly #hasEditableClass = signal(false);\n readonly #cellEditingClasses = signal<string[]>([]);\n\n // AG Grid's own header controller rewrites `--ag-header-rows-height` on\n // header/theme recomputes it triggers internally (e.g. via\n // `setGridOption('theme', ...)` below), clobbering the combined value\n // `#watchHorizontalScrollPosition` sets. This lets that call ask for an\n // immediate reapply.\n readonly #reapplyHorizontalScrollPosition$ = new Subject<void>();\n\n #reservedTopScrollHeight: number | undefined;\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 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 const agGridApi = this.#agGridApi();\n if (agGridApi && !agGridApi.isDestroyed()) {\n agGridApi.setGridOption('theme', skyAgGridTheme);\n this.#reapplyHorizontalScrollPosition$.next();\n }\n });\n\n this.#destroyRef.onDestroy(() => {\n this.#agGridClassObserver?.disconnect();\n });\n }\n\n public ngAfterContentInit(): void {\n this.#watchHorizontalScrollPosition();\n\n this.#agGrid\n .pipe(\n filter(Boolean),\n switchMap((agGrid) => agGrid.cellEditingStarted),\n takeUntilDestroyed(this.#destroyRef),\n )\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((t) => `sky-ag-grid-cell-editing-${t}`);\n this.#cellEditingClasses.update((prev) => [...prev, ...addClasses]);\n if (\n types.includes(SkyCellType.Template) &&\n params.rowIndex !== null\n ) {\n params.api.setFocusedCell(params.rowIndex, params.column);\n }\n }\n });\n this.#agGrid\n .pipe(\n takeUntilDestroyed(this.#destroyRef),\n filter(Boolean),\n switchMap((agGrid) => agGrid.cellEditingStopped),\n )\n .subscribe(() => {\n this.#cellEditingClasses.set([]);\n });\n this.#agGrid\n .pipe(\n takeUntilDestroyed(this.#destroyRef),\n filter(Boolean),\n switchMap((agGrid) => agGrid.cellFocused),\n )\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\n .pipe(\n takeUntilDestroyed(this.#destroyRef),\n filter(Boolean),\n switchMap((agGrid) => agGrid.headerFocused),\n )\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 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 const api = this.#agGridApi();\n if (api && !api.isDestroyed()) {\n api.stopEditing(true);\n }\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 #watchHorizontalScrollPosition(): void {\n const elements$ = this.#agGrid.pipe(\n filter(Boolean),\n switchMap((agGrid) =>\n merge(\n agGrid.gridReady,\n agGrid.firstDataRendered,\n agGrid.rowDataUpdated,\n // AG Grid recalculates its own horizontal scrollbar visibility/inline\n // styling in response to this event (independent of anything this\n // component does), which can clear the `top` set below - so this is\n // included to reapply positioning immediately afterward.\n agGrid.gridSizeChanged,\n // See `#reapplyHorizontalScrollPosition$`'s declaration.\n this.#reapplyHorizontalScrollPosition$,\n ).pipe(\n // `context.enableTopScroll` may not be reflected on the grid's own\n // `gridOptions` yet by the time the earliest of these events fires\n // (e.g. while a data manager/async fixture is still hydrating), so\n // this is re-checked on each event rather than once up front.\n filter(() => !!this.agGridContext()?.enableTopScroll),\n map(() => this.#elementRef.nativeElement.querySelector('.ag-root')),\n filter((root): root is HTMLElement => !!root),\n map((root) => {\n const header = root.querySelector(\n '.ag-header',\n ) as HTMLElement | null;\n const scrollbar = root.querySelector(\n '.ag-body-horizontal-scroll',\n ) as HTMLElement | null;\n const pinnedTopRows = root.querySelector(\n '.ag-grid-pinned-top-rows',\n ) as HTMLElement | null;\n return { header, scrollbar, pinnedTopRows };\n }),\n filter(\n (\n els,\n ): els is {\n header: HTMLElement;\n scrollbar: HTMLElement;\n pinnedTopRows: HTMLElement;\n } => !!els.header && !!els.scrollbar && !!els.pinnedTopRows,\n ),\n ),\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n const headerRowsHeight$ = elements$.pipe(\n // Only re-subscribe the resize observer when AG Grid actually swaps in\n // a new header element, not on every tracked event above.\n distinctUntilChanged((a, b) => a.header === b.header),\n switchMap((els) =>\n this.#resizeObserverSvc.observe(new ElementRef(els.header)).pipe(\n // `.ag-header`'s inline height includes the theme's headerRowBorder,\n // which this component inflates to reserve scrollbar space - so\n // measure the header rows themselves to avoid double-counting.\n map(() =>\n Array.from(\n els.header.querySelectorAll<HTMLElement>(\n ':scope > .ag-header-row',\n ),\n ).reduce(\n (max, row) => Math.max(max, row.offsetTop + row.offsetHeight),\n 0,\n ),\n ),\n distinctUntilChanged(),\n ),\n ),\n );\n\n const scrollbarHeight$ = elements$.pipe(\n distinctUntilChanged((a, b) => a.scrollbar === b.scrollbar),\n switchMap((els) =>\n // AG Grid applies the scrollbar's inline height in a debounced task\n // after the grid events above have fired, so the height has to be\n // observed rather than read at event time.\n this.#resizeObserverSvc.observe(new ElementRef(els.scrollbar)).pipe(\n // Overlay/auto-hiding scrollbars float above content and need no\n // extra space - and AG Grid gives them a nonzero inline height, so\n // the class check is required.\n map(() =>\n els.scrollbar.classList.contains('ag-scrollbar-invisible')\n ? 0\n : els.scrollbar.offsetHeight,\n ),\n distinctUntilChanged(),\n ),\n ),\n );\n\n elements$\n .pipe(\n // Reapply on every tracked event (using the latest known heights)\n // even when the heights themselves haven't changed, so AG Grid's\n // own resets of the scrollbar's inline style (e.g. on\n // `gridSizeChanged`) get corrected right away.\n combineLatestWith(headerRowsHeight$, scrollbarHeight$),\n takeUntilDestroyed(this.#destroyRef),\n )\n .subscribe(\n ([{ header, pinnedTopRows }, headerRowsHeight, scrollbarHeight]) => {\n // The theme's headerRowBorder width includes this variable, which\n // reserves room below the header inside AG Grid's own geometry\n // (pinned/sticky row offsets, body viewport height, fake scrollbar\n // spacers). Both variables live on the SKY-owned wrapper div - the\n // scrollbar is positioned from them in CSS - so AG Grid recreating\n // or restyling its own elements never loses the values.\n const skyAgGridDiv = this.skyAgGridDiv()?.nativeElement;\n skyAgGridDiv?.style.setProperty(\n '--sky-ag-grid-top-scroll-height',\n `${scrollbarHeight}px`,\n );\n\n // The painted border is pinned to the un-inflated separator width\n // (see `_base.scss`), so the full headerRowBorder AG Grid measures\n // is that separator width plus the reservation.\n const separatorWidth =\n parseFloat(\n getComputedStyle(header).getPropertyValue(\n '--sky-ag-grid-header-row-border-width',\n ),\n ) || 0;\n const headerRowsHeightWithBorder =\n headerRowsHeight + separatorWidth + scrollbarHeight;\n\n skyAgGridDiv?.style.setProperty(\n '--sky-ag-grid-header-rows-height',\n `${headerRowsHeightWithBorder}px`,\n );\n\n // AG Grid skips rewriting this when only the border width changed,\n // and on genuine header-height changes writes this same value - so\n // whichever writes last the result is identical. (`.ag-header`'s own\n // inline height is left to AG Grid: writing it here would freeze the\n // resize observer above.)\n pinnedTopRows.style.setProperty(\n '--ag-header-rows-height',\n `${headerRowsHeightWithBorder}px`,\n );\n\n if (this.#reservedTopScrollHeight !== scrollbarHeight) {\n this.#reservedTopScrollHeight = scrollbarHeight;\n this.#nudgeHeaderGeometry();\n }\n },\n );\n }\n\n /**\n * AG Grid skips its header geometry refresh when only the theme's\n * `headerRowBorder` width changes (its guard compares header row heights\n * without the border), leaving pinned/sticky row offsets and the fake\n * scrollbar spacers unaware of the reserved space. `headerHeightChanged` is\n * the event that re-runs exactly those consumers. The dispatch is deferred\n * one frame plus a task so AG Grid's own border-width measurement (refreshed\n * by its ResizeObserver) is current when they re-read it.\n */\n #nudgeHeaderGeometry(): void {\n requestAnimationFrame(() => {\n setTimeout(() => {\n const api = this.#agGridApi();\n if (api && !api.isDestroyed()) {\n api.dispatchEvent({ type: 'headerHeightChanged' });\n }\n });\n });\n }\n\n #getTextSelection(hasEditableClass: boolean): boolean {\n if (this.agGridContext()?.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]=\"agGridContext()?.['enableTopScroll']\"\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 SkyDataManagerSortOption,\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.viewkeeperSuppressed.set(true);\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 newState.activeSortOption = activeSortColumnState\n ? this.#resolveActiveSortOption(agGrid.api, activeSortColumnState)\n : undefined;\n this.#currentDataState = newState;\n this.#dataManagerSvc.updateDataState(newState, viewConfig.id);\n\n this.#changeDetector.markForCheck();\n }\n });\n }\n }\n\n #resolveActiveSortOption(\n api: GridApi,\n activeSortColumnState: ColumnState,\n ): SkyDataManagerSortOption {\n const activeSortColumnDef = api.getColumnDef(activeSortColumnState.colId);\n const descending = activeSortColumnState.sort === 'desc';\n const propertyName =\n activeSortColumnDef?.field || activeSortColumnState.colId;\n\n // Prefer the configured sort option matching this column and direction\n // so the sort menu's selected item stays in sync; columns without a\n // matching option fall back to a column-derived sort option.\n const matchingSortOption = this.#dataManagerSvc\n .getCurrentDataManagerConfig()\n .sortOptions?.find(\n (option) =>\n option.propertyName === propertyName &&\n !!option.descending === descending,\n );\n\n return (\n matchingSortOption ?? {\n descending,\n id: activeSortColumnState.colId,\n propertyName,\n label: activeSortColumnDef?.headerName || '',\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 this.#changeDetector.markForCheck();\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 && !agGrid.api.isDestroyed()) {\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 ) {\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 const colId = this.#resolveSortColumnId(agGridApi, activeSort);\n\n if (colId) {\n agGridApi.applyColumnState({\n state: [\n {\n colId,\n sort: activeSort.descending ? 'desc' : 'asc',\n },\n ],\n defaultState: { sort: null },\n });\n }\n }\n }\n\n #resolveSortColumnId(\n api: GridApi,\n activeSort: SkyDataManagerSortOption,\n ): string | undefined {\n const columnStates = api.getColumnState();\n const findColId = (\n predicate: (state: ColumnState) => boolean,\n ): string | undefined => columnStates.find(predicate)?.colId;\n\n // Match on the option's data property first, since a sort option's ID is\n // arbitrary and could otherwise select an unrelated column. Only fall\n // back to the legacy ID match for options predating the property lookup.\n return (\n findColId(\n (state) =>\n api.getColumnDef(state.colId)?.field === activeSort.propertyName,\n ) ??\n findColId((state) => state.colId === activeSort.propertyName) ??\n findColId((state) => state.colId === activeSort.id)\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 this.#changeDetector.markForCheck();\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 this.#changeDetector.markForCheck();\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 if (currentAgGridApi.getGridElement()) {\n currentAgGridApi.sizeColumnsToFit({ columnLimits });\n }\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 * The region (in viewport coordinates) that is not masked out by the\n * scrollable-host clip-path. Row overlays positioned outside this region\n * are fully hidden by the clip-path and should be removed from the tab order.\n * @internal\n */\nexport interface SkyAgGridRowDeleteVisibleRegion {\n top: number;\n left: number;\n right: number;\n bottom: number;\n}\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 public readonly visibleRegion: Signal<\n SkyAgGridRowDeleteVisibleRegion | undefined\n >,\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 {\n SKY_AG_GRID_ROW_DELETE_CONTEXT,\n SkyAgGridRowDeleteVisibleRegion,\n} from './ag-grid-row-delete-context';\n\n/**\n * A row overlay is \"fully clipped\" when its anchor element's bounding rect\n * does not intersect the region left visible by the scrollable-host\n * clip-path (e.g. the row has scrolled entirely behind the sticky header).\n */\nfunction isFullyClipped(\n element: HTMLElement | null,\n visibleRegion: SkyAgGridRowDeleteVisibleRegion | undefined,\n): boolean {\n if (!element || !visibleRegion) {\n return false;\n }\n const rect = element.getBoundingClientRect();\n return (\n rect.bottom <= visibleRegion.top ||\n rect.top >= visibleRegion.bottom ||\n rect.right <= visibleRegion.left ||\n rect.left >= visibleRegion.right\n );\n}\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 (): {\n rowId: string;\n increment: string;\n element: HTMLElement | null;\n clipped: boolean;\n }[] => {\n const rows = this.service.rows();\n const gridElement = this.service.gridElement();\n const gridApi = this.service.gridApi();\n const increment = this.gridChanges();\n const visibleRegion = this.service.visibleRegion();\n if (!gridElement || !gridApi || gridApi.isDestroyed()) {\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 {\n rowId,\n element,\n increment: `${rowId}-${increment}`,\n clipped: isFullyClipped(element, visibleRegion),\n };\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 && !gridApi.isDestroyed()\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(\n (gridApi): gridApi is GridApi => !!gridApi && !gridApi.isDestroyed(),\n ),\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 [attr.inert]=\"row.clipped ? '' : null\"\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 DestroyRef,\n Directive,\n ElementRef,\n EnvironmentInjector,\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 distinctUntilChanged,\n filter,\n shareReplay,\n switchMap,\n take,\n takeUntil,\n} from 'rxjs';\n\nimport { fromGridEvent } from './ag-grid-event-utils';\nimport {\n SKY_AG_GRID_ROW_DELETE_CONTEXT,\n SkyAgGridRowDeleteContext,\n SkyAgGridRowDeleteVisibleRegion,\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 * Parses the `inset(...)` clip-path produced by\n * `SkyScrollableHostService.watchScrollableHostClipPathChanges` into the\n * visible region it describes, in viewport coordinates. Returns `undefined`\n * when nothing is clipped (e.g. `none`), meaning no row overlay is masked.\n */\nfunction parseClipPathVisibleRegion(\n clipPath: string | undefined,\n): SkyAgGridRowDeleteVisibleRegion | undefined {\n const match = clipPath?.match(\n /^inset\\((-?[\\d.]+)px\\s+(-?[\\d.]+)px\\s+(-?[\\d.]+)px\\s+(-?[\\d.]+)px\\)$/,\n );\n if (!match) {\n return undefined;\n }\n const [, top, rightInverse, bottomInverse, left] = match.map(Number);\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n return {\n top,\n left,\n right: viewportWidth - rightInverse,\n bottom: viewportHeight - bottomInverse,\n };\n}\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 {\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 #agGridHeaderElement = new BehaviorSubject<\n ElementRef<HTMLDivElement>[]\n >([]);\n readonly #destroyRef = inject(DestroyRef);\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 #visibleRegion = new BehaviorSubject<\n SkyAgGridRowDeleteVisibleRegion | undefined\n >(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(takeUntilDestroyed(this.#destroyRef))\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 toSignal(this.#visibleRegion),\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 takeUntilDestroyed(this.#destroyRef),\n );\n const agGridDestroyed = agGridReady.pipe(\n switchMap((ready) => fromGridEvent(ready.api, 'gridPreDestroyed')),\n take(1),\n takeUntilDestroyed(this.#destroyRef),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n agGridReady.pipe(takeUntil(agGridDestroyed)).subscribe((ready) => {\n const rowsWrapper = this.#elementRef.nativeElement.querySelector(\n 'div.ag-grid-scrolling-rows',\n );\n if (rowsWrapper) {\n this.#agGridRootElement.next([\n new ElementRef(rowsWrapper as HTMLDivElement),\n ]);\n }\n const headerWrapper =\n this.#elementRef.nativeElement.querySelector('div.ag-header');\n if (headerWrapper) {\n this.#agGridHeaderElement.next([\n new ElementRef(headerWrapper as HTMLDivElement),\n ]);\n }\n this.#rowDeleteSvc.gridApi.set(ready.api);\n });\n agGridDestroyed.subscribe(() => {\n this.#rowDeleteSvc.gridApi.set(undefined);\n });\n\n agGrid\n .pipe(\n filter((agGrid) => !!agGrid),\n switchMap((agGrid: AgGridAngular) => agGrid.rowDataUpdated),\n takeUntilDestroyed(this.#destroyRef),\n takeUntil(agGridDestroyed),\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 // The overlay renders outside the grid, so tag it with the grid's ID to\n // let the grid's test harness tell its inline deletes apart from those\n // of another grid with the same row IDs.\n const gridId =\n this.#elementRef.nativeElement.querySelector('div.sky-ag-grid')?.id;\n if (gridId) {\n (\n this.#overlay.componentRef.location.nativeElement as HTMLElement\n ).setAttribute('data-sky-ag-grid-id', gridId);\n }\n this.#zIndex\n .pipe(\n takeUntilDestroyed(this.#destroyRef),\n takeUntil(this.#overlay.closed),\n takeUntil(agGridDestroyed),\n distinctUntilChanged(),\n )\n .subscribe((zIndex) => {\n if (this.#overlay) {\n this.#overlay.componentRef.instance.zIndex = zIndex.toString(10);\n this.#overlay.componentRef.changeDetectorRef.markForCheck();\n }\n });\n this.#clipPath\n .pipe(\n takeUntilDestroyed(this.#destroyRef),\n takeUntil(this.#overlay.closed),\n takeUntil(agGridDestroyed),\n distinctUntilChanged(),\n )\n .subscribe((clipPath) => {\n this.#overlay?.componentRef.instance.updateClipPath(clipPath);\n });\n\n this.#scrollableHostService\n .watchScrollableHostClipPathChanges(this.#elementRef, {\n additionalContainers: this.#agGridRootElement.asObservable(),\n additionalMasking: { top: this.#agGridHeaderElement.asObservable() },\n })\n .pipe(takeUntilDestroyed(this.#destroyRef), takeUntil(agGridDestroyed))\n .subscribe((clipPath) => {\n this.#clipPath.next(clipPath);\n this.#visibleRegion.next(parseClipPathVisibleRegion(clipPath));\n });\n });\n\n this.#destroyRef.onDestroy(() => {\n this.#rowDeleteSvc.subscription.unsubscribe();\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n }\n });\n\n this.#rowDeleteSvc.cancelRowDelete\n .pipe(takeUntilDestroyed(this.#destroyRef), takeUntil(agGridDestroyed))\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(takeUntilDestroyed(this.#destroyRef), takeUntil(agGridDestroyed))\n .subscribe((rowId) => {\n if (rowId) {\n this.rowDeleteConfirm.emit({ id: rowId });\n }\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","/**\n * Please note:\n *\n * Translations are provided as an illustration only and are\n * not guaranteed to be accurate or error free.\n *\n * They are designed to show developers where to store their\n * chosen phrase or spelling variant in the target language.\n */\n\nexport const AG_GRID_LOCALE_ES = {\n // Set Filter\n selectAll: '(Seleccionar todo)',\n selectAllSearchResults: '(Seleccionar todos los resultados de la búsqueda)',\n addCurrentSelectionToFilter: 'Agregar selección actual al filtro',\n searchOoo: 'Buscar...',\n blanks: '(Vacíos)',\n noMatches: 'Sin coincidencias',\n typeToSearchOoo: 'Escribe para buscar...',\n\n // Number Filter & Text Filter\n filterOoo: 'Filtro...',\n equals: 'Igual a',\n notEqual: 'No igual a',\n blank: 'En blanco',\n notBlank: 'No en blanco',\n empty: 'Elige uno',\n\n // Number Filter\n lessThan: 'Menos que',\n greaterThan: 'Más que',\n lessThanOrEqual: 'Menos o igual que',\n greaterThanOrEqual: 'Más o igual que',\n inRange: 'Entre',\n inRangeStart: 'Desde',\n inRangeEnd: 'Hasta',\n\n // Text Filter\n contains: 'Contiene',\n notContains: 'No contiene',\n startsWith: 'Empieza con',\n endsWith: 'Termina con',\n\n // Date Filter\n dateFormatOoo: 'yyyy-mm-dd',\n before: 'Antes',\n after: 'Después',\n yesterday: 'Ayer',\n today: 'Hoy',\n tomorrow: 'Mañana',\n last7Days: 'Últimos 7 días',\n lastWeek: 'Semana pasada',\n thisWeek: 'Esta semana',\n nextWeek: 'Próxima semana',\n last30Days: 'Últimos 30 días',\n lastMonth: 'Mes pasado',\n thisMonth: 'Este mes',\n nextMonth: 'Próximo mes',\n last90Days: 'Últimos 90 días',\n lastQuarter: 'Último trimestre',\n thisQuarter: 'Este trimestre',\n nextQuarter: 'Próximo trimestre',\n lastYear: 'Año pasado',\n thisYear: 'Este año',\n yearToDate: 'Año hasta la fecha',\n nextYear: 'Próximo año',\n last6Months: 'Últimos 6 meses',\n last12Months: 'Últimos 12 meses',\n last24Months: 'Últimos 24 meses',\n\n // Filter Conditions\n andCondition: 'Y',\n orCondition: 'O',\n\n // Filter Buttons\n applyFilter: 'Aplicar',\n applyColumnToolPanel: 'Aplicar',\n resetFilter: 'Reiniciar',\n clearFilter: 'Borrar',\n cancelFilter: 'Cancelar',\n cancelColumnToolPanel: 'Cancelar',\n\n // Filter Titles\n textFilter: 'Filtro de Texto',\n numberFilter: 'Filtro de Números',\n dateFilter: 'Filtro de Fecha',\n setFilter: 'Filtro de Conjunto',\n\n // Group Column Filter\n groupFilterSelect: 'Seleccionar campo:',\n\n // New Filter Tool Panel\n filterSummaryInactive: 'es (Todo)',\n filterSummaryContains: 'contiene',\n filterSummaryNotContains: 'no contiene',\n filterSummaryTextEquals: 'es igual a',\n filterSummaryTextNotEqual: 'no es igual a',\n filterSummaryStartsWith: 'comienza con',\n filterSummaryEndsWith: 'termina con',\n filterSummaryBlank: 'está en blanco',\n filterSummaryNotBlank: 'no está en blanco',\n filterSummaryEquals: '=',\n filterSummaryNotEqual: '!=',\n filterSummaryGreaterThan: '>',\n filterSummaryGreaterThanOrEqual: '>=',\n filterSummaryLessThan: '<',\n filterSummaryLessThanOrEqual: '<=',\n filterSummaryInRange: 'entre',\n filterSummaryInRangeValues: '(${variable}, ${variable})',\n filterSummaryTextQuote: '\"${variable}\"',\n filterSummaryListInactive: 'es (Todo)',\n filterSummaryListSeparator: ', ',\n filterSummaryListShort: 'es (${variable})',\n filterSummaryListLong: 'es (${variable}) y ${variable} más',\n addFilterCard: 'Agregar Filtro',\n agTextColumnFilterDisplayName: 'Filtro Simple',\n agNumberColumnFilterDisplayName: 'Filtro Simple',\n agDateColumnFilterDisplayName: 'Filtro Simple',\n agSetColumnFilterDisplayName: 'Filtro de Selección',\n agMultiColumnFilterDisplayName: 'Filtro Combinado',\n addFilterPlaceholder: 'Buscar columnas...',\n\n // Advanced Filter\n advancedFilterContains: 'contiene',\n advancedFilterNotContains: 'no contiene',\n advancedFilterTextEquals: 'es igual a',\n advancedFilterTextNotEqual: 'no es igual a',\n advancedFilterStartsWith: 'comienza con',\n advancedFilterEndsWith: 'termina con',\n advancedFilterBlank: 'está en blanco',\n advancedFilterNotBlank: 'no está en blanco',\n advancedFilterEquals: '=',\n advancedFilterNotEqual: '!=',\n advancedFilterGreaterThan: '>',\n advancedFilterGreaterThanOrEqual: '>=',\n advancedFilterLessThan: '<',\n advancedFilterLessThanOrEqual: '<=',\n advancedFilterTrue: 'es verdadero',\n advancedFilterFalse: 'es falso',\n advancedFilterAnd: 'Y',\n advancedFilterOr: 'O',\n advancedFilterApply: 'Aplicar',\n advancedFilterReset: 'Restablecer',\n advancedFilterCancel: 'Cancelar',\n advancedFilterClear: 'Limpiar',\n advancedFilterBuilder: 'Constructor',\n advancedFilterValidationMissingColumn: 'Falta la columna',\n advancedFilterValidationMissingOption: 'Falta la opción',\n advancedFilterValidationMissingValue: 'Falta el valor',\n advancedFilterValidationInvalidColumn: 'Columna no encontrada',\n advancedFilterValidationInvalidOption: 'Opción no encontrada',\n advancedFilterValidationMissingQuote: 'Falta una comilla de cierre',\n advancedFilterValidationNotANumber: 'El valor no es un número',\n advancedFilterValidationInvalidDate: 'El valor no es una fecha válida',\n advancedFilterValidationMissingCondition: 'Falta la condición',\n advancedFilterValidationJoinOperatorMismatch:\n 'Los operadores de unión dentro de una condición deben ser los mismos',\n advancedFilterValidationInvalidJoinOperator:\n 'Operador de unión no encontrado',\n advancedFilterValidationMissingEndBracket: 'Falta paréntesis de cierre',\n advancedFilterValidationExtraEndBracket: 'Demasiados paréntesis de cierre',\n advancedFilterValidationMessage:\n 'La expresión contiene un error. ${variable} - ${variable}.',\n advancedFilterValidationMessageAtEnd:\n 'La expresión contiene un error. ${variable} al final de la expresión.',\n advancedFilterBuilderTitle: 'Filtro Avanzado',\n advancedFilterBuilderApply: 'Aplicar',\n advancedFilterBuilderClear: 'Limpiar',\n advancedFilterBuilderReset: 'Restablecer',\n advancedFilterBuilderCancel: 'Cancelar',\n advancedFilterBuilderAddButtonTooltip: 'Añadir filtro o grupo',\n advancedFilterBuilderRemoveButtonTooltip: 'Eliminar',\n advancedFilterBuilderMoveUpButtonTooltip: 'Mover arriba',\n advancedFilterBuilderMoveDownButtonTooltip: 'Mover abajo',\n advancedFilterBuilderAddJoin: 'Añadir Grupo',\n advancedFilterBuilderAddCondition: 'Añadir Filtro',\n advancedFilterBuilderSelectColumn: 'Selecciona una columna',\n advancedFilterBuilderSelectOption: 'Selecciona una opción',\n advancedFilterBuilderEnterValue: 'Introduce un valor...',\n advancedFilterBuilderValidationAlreadyApplied: 'Filtro actual ya aplicado.',\n advancedFilterBuilderValidationIncomplete:\n 'No todas las condiciones están completas.',\n advancedFilterBuilderValidationSelectColumn: 'Debe seleccionar una columna.',\n advancedFilterBuilderValidationSelectOption: 'Debe seleccionar una opción.',\n advancedFilterBuilderValidationEnterValue: 'Debe introducir un valor.',\n\n // Editor Validation Errors\n minDateValidation: 'La fecha debe ser posterior a ${variable}',\n maxDateValidation: 'La fecha debe ser anterior a ${variable}',\n maxLengthValidation: 'Debe tener ${variable} caracteres o menos.',\n minValueValidation: 'Debe ser mayor o igual a ${variable}',\n maxValueValidation: 'Debe ser menor o igual a ${variable}',\n strictMinValueValidation: 'Debe ser mayor que ${variable}',\n strictMaxValueValidation: 'Debe ser menor que ${variable}',\n invalidSelectionValidation: 'Selección no válida.',\n\n // Formulas\n invalidFormulaValidation: 'Fórmula no válida.',\n formulaParseInvalidCellReference:\n 'Referencia de celda no válida: ${variable}.',\n formulaParseInvalidRangeEndReference: 'Referencia final de rango no válida.',\n formulaParseUnterminatedString: 'Cadena sin terminar.',\n formulaParseUnexpectedCharacter: 'Carácter inesperado: ${variable}.',\n formulaParseOperatorStackUnderflow:\n 'Desbordamiento inferior de pila de operadores.',\n formulaParseMissingOperand: \"Falta operando para '${variable}'.\",\n formulaParseInternalUnexpectedFrameDuringReduction:\n 'Error interno: marco inesperado durante la reducción.',\n formulaParseInternalUnexpectedFrameBeforeOpenParen:\n \"Error interno: marco inesperado antes de '('.\",\n formulaParseMisplacedComma: 'Coma en posición incorrecta.',\n formulaParseCommaOutsideFunctionCall: 'Coma fuera de una llamada de función.',\n formulaParseInternalUnexpectedFrameBeforeCloseParen:\n \"Error interno: marco inesperado antes de ')'.\",\n formulaParseMismatchedParentheses: 'Paréntesis no coinciden.',\n formulaParseUnsupportedOperand: 'Operando no compatible: ${variable}.',\n formulaParseMismatchedParenthesesOrUnfinishedFunctionCall:\n 'Paréntesis no coinciden o llamada de función sin terminar.',\n formulaParseInvalidExpression: 'Expresión no válida.',\n formulaParseFormulasMustBeginWithEquals: 'Las fórmulas deben comenzar con =.',\n formulaSerializeStringContainsQuote:\n 'La cadena contiene una comilla (\") que el tokenizador no admite.',\n formulaSerializeCannotProduceAbsoluteColumnLabelFromId:\n \"No se puede generar etiqueta absoluta de COLUMNA desde el id '${variable}'.\",\n formulaSerializeCannotProduceAbsoluteRowIndexFromId:\n \"No se puede generar índice absoluto de FILA desde el id '${variable}'.\",\n formulaSerializeCannotProduceRowIndexFromId:\n \"No se puede generar índice de FILA desde el id '${variable}'.\",\n formulaSerializeCannotMapColumnIdToA1Label:\n \"No se puede mapear el id de columna '${variable}' a etiqueta A1.\",\n formulaSerializeCannotParseAbsoluteRowIndex:\n \"No se puede analizar el índice absoluto de fila '${variable}'.\",\n formulaSerializeCannotMapRowIdToA1Index:\n \"No se puede mapear el id de fila '${variable}' al índice A1.\",\n formulaEvalRangeNotAllowedInScalarContext:\n 'No se permite un rango en contexto escalar.',\n formulaEvalUnknownReferenceToCell: 'Referencia de celda desconocida.',\n formulaEvalUnsupportedOperation: 'Operación no compatible ${variable}.',\n formulaEvalInvalidAbsoluteRow: 'Fila absoluta no válida.',\n formulaEvalUnrecognisedRowId: 'Id de fila no reconocido.',\n formulaEvalInvalidAbsoluteColumn: 'Columna absoluta no válida.',\n formulaEvalUnrecognisedColumnId: 'Id de columna no reconocido.',\n formulaEvalUnrecognisedRowInRange: 'Fila no reconocida en el rango.',\n formulaEvalUnrecognisedReferenceToCell: 'Referencia de celda no reconocida.',\n formulaEvalIncompleteRangeReference: 'Referencia de rango incompleta.',\n formulaFunctionExpectedExactlyArguments:\n '${variable}: se esperaban exactamente ${variable} argumentos.',\n formulaFunctionExpectedAtMostArguments:\n '${variable}: se esperaban como máximo ${variable} argumentos.',\n formulaFunctionExpectedAtLeastArguments:\n '${variable}: se esperaban al menos ${variable} argumentos.',\n formulaFunctionInvalidCriteriaWildcardsWithComparator:\n 'Criterio no válido: comodines con comparador.',\n formulaFunctionNonNumericArgument: '${variable}: argumento no numérico.',\n formulaFunctionDivisionByZero: '${variable}: división por cero.',\n formulaFunctionCannotCombineDatesWithBigInt:\n '${variable}: no se pueden combinar fechas con BigInt.',\n formulaFunctionRequiresAtLeastOneNumericValue:\n '${variable}: requiere al menos un valor numérico.',\n formulaFunctionRequiresAtLeastOneValue:\n '${variable}: requiere al menos un valor.',\n formulaFunctionAllValuesMustBeNumbers:\n '${variable}: todos los valores deben ser números.',\n formulaFunctionArgumentMustBeRange:\n '${variable}: el argumento ${variable} debe ser un rango.',\n formulaFunctionArgumentMustBeValue:\n '${variable}: el argumento ${variable} debe ser un valor.',\n formulaFunctionRangesHaveDifferentSizes:\n '${variable}: los rangos tienen tamaños distintos.',\n formulaFunctionValuesMustBeNumeric:\n '${variable}: los valores deben ser numéricos.',\n formulaFunctionValuesMustBeIntegers:\n '${variable}: los valores deben ser enteros.',\n formulaFunctionUnsupportedValueType:\n '${variable}: tipo de valor no compatible.',\n formulaFunctionDivNonNumericArgument: 'DIV: argumento no numérico.',\n formulaFunctionDivDivisionByZero: 'DIV: división por cero.',\n formulaFunctionSumCannotCombineDatesWithBigInt:\n 'SUM: no se pueden combinar fechas con BigInt.',\n formulaFunctionSumRequiresAtLeastOneNumericValue:\n 'SUM: requiere al menos un valor numérico.',\n formulaFunctionAvgRequiresAtLeastOneValue: 'AVG: requiere al menos un valor.',\n formulaFunctionMedianAllValuesMustBeNumbers:\n 'MEDIAN: todos los valores deben ser números.',\n formulaFunctionMedianRequiresAtLeastOneValue:\n 'MEDIAN: requiere al menos un valor.',\n formulaFunctionSumifFirstArgumentMustBeRange:\n 'SUMIF: el primer argumento debe ser un rango.',\n formulaFunctionSumifSecondArgumentMustBeValue:\n 'SUMIF: el segundo argumento debe ser un valor (criteria).',\n formulaFunctionSumifThirdArgumentMustBeRange:\n 'SUMIF: el tercer argumento debe ser un rango (sum_range).',\n formulaFunctionSumifRangesHaveDifferentSizes:\n 'SUMIF: los rangos tienen tamaños distintos.',\n formulaFunctionCountifFirstArgumentMustBeRange:\n 'COUNTIF: el primer argumento debe ser un rango.',\n formulaFunctionCountifSecondArgumentMustBeValue:\n 'COUNTIF: el segundo argumento debe ser un valor (criteria).',\n formulaFunctionConcatUnsupportedValueType:\n 'CONCAT: tipo de valor no compatible.',\n formulaFunctionMinRequiresAtLeastOneValue: 'MIN: requiere al menos un valor.',\n formulaFunctionMaxRequiresAtLeastOneValue: 'MAX: requiere al menos un valor.',\n formulaFunctionPercentNonNumericArgument: 'PERCENT: argumento no numérico.',\n formulaFunctionPowerNonNumericArgument: 'POWER: argumento no numérico.',\n formulaServiceCircularReference: 'Referencia circular.',\n formulaServiceExpectedParsableFormula: 'Se esperaba una fórmula analizable.',\n formulaServiceInternalSchedulingError: 'Error interno de planificación.',\n tooltipValidationErrorSeparator: '. ',\n\n // Side Bar\n columns: 'Columnas',\n filters: 'Filtros',\n\n // columns tool panel\n pivotMode: 'Modo Pivot',\n groups: 'Grupos de Filas',\n rowGroupColumnsEmptyMessage:\n 'Arrastre aquí para establecer los grupos de filas',\n values: 'Valores',\n valueColumnsEmptyMessage: 'Arrastre aquí para agregar',\n pivots: 'Etiquetas de Columna',\n pivotColumnsEmptyMessage:\n 'Arrastre aquí para establecer las etiquetas de columna',\n\n // Header of the Default Group Column\n group: 'Grupo',\n\n // Row Drag\n rowDragRow: 'fila',\n rowDragRows: 'filas',\n\n // Other\n loadingOoo: 'Cargando...',\n loadingError: 'ERR',\n noRowsToShow: 'No hay filas para mostrar',\n noMatchingRows: 'Sin filas coincidentes',\n exportingOoo: 'Exportando...',\n fileInputOverlay: 'Arrastra y suelta un archivo para importar datos',\n fileInputOverlayBrowse: 'Examinar archivos',\n fileInputProcessing: 'Procesando ${variable}',\n fileInputProcessingFailed: 'Error al procesar ${variable}',\n enabled: 'Habilitado',\n\n // Menu\n pinColumn: 'Fijar Columna',\n pinLeft: 'Fijar a la Izquierda',\n pinRight: 'Fijar a la Derecha',\n noPin: 'No Fijar',\n pinRow: 'Fijar fila',\n pinTop: 'Fijar en la parte superior',\n pinBottom: 'Fijar en la parte inferior',\n unpinRow: 'Desfijar fila',\n valueAggregation: 'Agregación de Valores',\n noAggregation: 'Ninguna',\n showValuesAs: 'Mostrar valores como',\n showValuesAsNone: 'Ninguno',\n percentOfGrandTotal: '% del total general',\n percentOfColumnTotal: '% del total de la columna',\n percentOfRowTotal: '% del total de la fila',\n percentOfParentRowTotal: '% del total de la fila principal',\n percentOfParentColumnTotal: '% del total de la columna principal',\n percentOfGrandTotalDescription:\n 'Cada valor como porcentaje del total general de la columna.',\n percentOfColumnTotalDescription:\n 'Cada valor como porcentaje del total de su columna: cada columna suma el 100 %.',\n percentOfRowTotalDescription:\n 'Cada valor como porcentaje del total de la fila en las columnas de la tabla dinámica.',\n percentOfParentRowTotalDescription:\n 'Cada valor como porcentaje de su grupo principal.',\n percentOfParentColumnTotalDescription:\n 'Cada valor como porcentaje de su columna de tabla dinámica principal.',\n autosizeThisColumn: 'Autoajustar Esta Columna',\n autosizeAllColumns: 'Autoajustar Todas las Columnas',\n groupBy: 'Agrupar por ${variable}',\n ungroupBy: 'Desagrupar por ${variable}',\n ungroupAll: 'Desagrupar Todo',\n addToValues: 'Añadir ${variable} a valores',\n removeFromValues: 'Quitar ${variable} de valores',\n addToLabels: 'Añadir ${variable} a etiquetas',\n removeFromLabels: 'Quitar ${variable} de etiquetas',\n resetColumns: 'Restablecer Columnas',\n expandAll: 'Expandir Todos los Grupos de Filas',\n collapseAll: 'Cerrar Todos los Grupos de Filas',\n copy: 'Copiar',\n ctrlC: 'Ctrl+C',\n ctrlX: 'Ctrl+X',\n copyWithHeaders: 'Copiar Con Encabezados',\n copyWithGroupHeaders: 'Copiar Con Encabezados de Grupo',\n cut: 'Cortar',\n paste: 'Pegar',\n ctrlV: 'Ctrl+V',\n export: 'Exportar',\n csvExport: 'Exportar CSV',\n excelExport: 'Exportar Excel',\n pdfExport: 'Exportar PDF',\n columnFilter: 'Filtrar Columna',\n columnChooser: 'Elegir Columnas',\n chooseColumns: 'Elegir columnas',\n sortAscending: 'Ordenar Ascendente',\n sortDescending: 'Ordenar Descendente',\n sortAbsoluteAscending: 'Ordenar absolutamente ascendente',\n sortAbsoluteDescending: 'Ordenar absolutamente descendente',\n sortUnSort: 'Limpiar Orden',\n shiftF2: 'Shift+F2',\n toolbarFind: 'Buscar',\n toolbarFindPreviousMatch: 'Coincidencia Anterior',\n toolbarFindNextMatch: 'Siguiente Coincidencia',\n toolbarQuickFilter: 'Filtrar',\n toolbarMenu: 'Menú',\n\n // Enterprise Menu Aggregation and Status Bar\n sum: 'Suma',\n first: 'Primero',\n last: 'Último',\n min: 'Mínimo',\n max: 'Máximo',\n none: 'Ninguno',\n count: 'Cuenta',\n avg: 'Promedio',\n filteredRows: 'Filtrados',\n selectedRows: 'Seleccionados',\n totalRows: 'Filas Totales',\n totalAndFilteredRows: 'Filas',\n more: 'Más',\n to: 'a',\n of: 'de',\n page: 'Página',\n pageLastRowUnknown: '?',\n nextPage: 'Siguiente Página',\n lastPage: 'Última Página',\n firstPage: 'Primera Página',\n previousPage: 'Página Anterior',\n pageSizeSelectorLabel: 'Tamaño de Página:',\n footerTotal: 'Total',\n statusBarLastRowUnknown: '?',\n scrollColumnIntoView: 'Desplazar ${variable} a la vista',\n\n // Pivoting\n pivotColumnGroupTotals: 'Total',\n\n // Enterprise Menu (Charts)\n pivotChartAndPivotMode: 'Gráfico dinámico y modo dinámico',\n pivotChart: 'Gráfico dinámico',\n chartRange: 'Rango de gráfico',\n columnChart: 'Columna',\n groupedColumn: 'Agrupada',\n stackedColumn: 'Apilada',\n normalizedColumn: '100% Apilada',\n barChart: 'Barra',\n groupedBar: 'Agrupada',\n stackedBar: 'Apilada',\n normalizedBar: '100% Apilada',\n pieChart: 'Circular',\n pie: 'Circular',\n donut: 'Rosquilla',\n lineChart: 'Línea',\n stackedLine: 'Apilado',\n normalizedLine: '100% Apilado',\n xyChart: 'X Y (Dispersión)',\n scatter: 'Dispersión',\n bubble: 'Burbuja',\n areaChart: 'Área',\n area: 'Área',\n stackedArea: 'Apilada',\n normalizedArea: '100% Apilada',\n histogramChart: 'Histograma',\n polarChart: 'Polar',\n radarLine: 'Línea de radar',\n radarArea: 'Área de radar',\n nightingale: 'Nightingale',\n radialColumn: 'Columna radial',\n radialBar: 'Barra radial',\n statisticalChart: 'Estadístico',\n boxPlot: 'Gráfico de caja',\n rangeBar: 'Barra de rango',\n rangeArea: 'Área de rango',\n hierarchicalChart: 'Jerárquico',\n treemap: 'Mapa de árbol',\n sunburst: 'Explosión solar',\n specializedChart: 'Especializado',\n waterfall: 'Cascada',\n heatmap: 'Mapa de calor',\n combinationChart: 'Combinación',\n columnLineCombo: 'Columna y línea',\n AreaColumnCombo: 'Área y columna',\n\n // Charts\n pivotChartTitle: 'Gráfico de Pivote',\n rangeChartTitle: 'Gráfico de Intervalo',\n settings: 'Gráfico',\n data: 'Configuración',\n format: 'Personalizar',\n categories: 'Categorías',\n defaultCategory: '(Ninguna)',\n series: 'Series',\n switchCategorySeries: 'Cambiar Categoría / Series',\n categoryValues: 'Valores de Categoría',\n seriesLabels: 'Etiquetas de Series',\n aggregate: 'Agregado',\n xyValues: 'Valores XY',\n paired: 'Modo Pareado',\n axis: 'Eje',\n xAxis: 'Eje Horizontal',\n yAxis: 'Eje Vertical',\n polarAxis: 'Eje Polar',\n radiusAxis: 'Eje de Radio',\n navigator: 'Navegador',\n zoom: 'Zoom',\n animation: 'Animación',\n crosshair: 'Retícula',\n color: 'Color',\n thickness: 'Espesor',\n preferredLength: 'Longitud Preferida',\n xType: 'Tipo X',\n axisType: 'Tipo de Eje',\n automatic: 'Automático',\n category: 'Categoría',\n number: 'Número',\n time: 'Tiempo',\n timeFormat: 'Formato de Tiempo',\n autoRotate: 'Rotación Automática',\n labelRotation: 'Rotación',\n circle: 'Círculo',\n polygon: 'Polígono',\n square: 'Cuadrado',\n cross: 'Cruz',\n diamond: 'Diamante',\n plus: 'Más',\n triangle: 'Triángulo',\n heart: 'Corazón',\n orientation: 'Orientación',\n fixed: 'Fijo',\n parallel: 'Paralelo',\n perpendicular: 'Perpendicular',\n radiusAxisPosition: 'Posición',\n ticks: 'Marcas',\n gridLines: 'Líneas de Cuadrícula',\n width: 'Ancho',\n height: 'Altura',\n length: 'Longitud',\n padding: 'Relleno',\n spacing: 'Espaciado',\n chartStyle: 'Estilo de Gráfico',\n title: 'Título',\n chartTitles: 'Títulos',\n chartTitle: 'Título del Gráfico',\n chartSubtitle: 'Subtítulo',\n horizontalAxisTitle: 'Título del Eje Horizontal',\n verticalAxisTitle: 'Título del Eje Vertical',\n polarAxisTitle: 'Título del Eje Polar',\n titlePlaceholder: 'Título del Gráfico',\n background: 'Fondo',\n font: 'Fuente',\n weight: 'Peso',\n top: 'Superior',\n right: 'Derecha',\n bottom: 'Inferior',\n left: 'Izquierda',\n labels: 'Etiquetas',\n calloutLabels: 'Etiquetas de Llamada',\n sectorLabels: 'Etiquetas de Sector',\n positionRatio: 'Relación de Posición',\n size: 'Tamaño',\n shape: 'Forma',\n minSize: 'Tamaño Mínimo',\n maxSize: 'Tamaño Máximo',\n legend: 'Leyenda',\n position: 'Posición',\n markerSize: 'Tamaño del Marcador',\n markerStroke: 'Trazo del Marcador',\n markerPadding: 'Relleno del Marcador',\n itemSpacing: 'Espaciado de Ítems',\n itemPaddingX: 'Relleno X de Ítems',\n itemPaddingY: 'Relleno Y de Ítems',\n layoutHorizontalSpacing: 'Espaciado Horizontal',\n layoutVerticalSpacing: 'Espaciado Vertical',\n strokeWidth: 'Grosor del Trazo',\n offset: 'Desplazamiento',\n offsets: 'Desplazamientos',\n tooltips: 'Información sobre herramientas',\n callout: 'Llamada',\n markers: 'Marcadores',\n shadow: 'Sombra',\n blur: 'Desenfoque',\n xOffset: 'Desplazamiento X',\n yOffset: 'Desplazamiento Y',\n lineWidth: 'Ancho de Línea',\n lineDash: 'Línea Discontinua',\n lineDashOffset: 'Desplazamiento de Discontinuidad',\n scrollingZoom: 'Desplazamiento',\n scrollingStep: 'Paso de Desplazamiento',\n selectingZoom: 'Seleccionando',\n durationMillis: 'Duración (ms)',\n crosshairLabel: 'Etiqueta',\n crosshairSnap: 'Ajustar al Nodo',\n normal: 'Normal',\n bold: 'Negrita',\n italic: 'Itálica',\n boldItalic: 'Negrita Itálica',\n predefined: 'Predefinido',\n fillOpacity: 'Opacidad de Relleno',\n strokeColor: 'Color de Línea',\n strokeOpacity: 'Opacidad de Línea',\n miniChart: 'Mini-Gráfico',\n histogramBinCount: 'Conteo de Intervalos',\n connectorLine: 'Línea Conectora',\n seriesItems: 'Ítems de Series',\n seriesItemType: 'Tipo de Ítem',\n seriesItemPositive: 'Positivo',\n seriesItemNegative: 'Negativo',\n seriesItemLabels: 'Etiquetas de Ítems',\n columnGroup: 'Columna',\n barGroup: 'Barra',\n pieGroup: 'Torta',\n lineGroup: 'Línea',\n scatterGroup: 'XY (Dispersión)',\n areaGroup: 'Área',\n polarGroup: 'Polar',\n statisticalGroup: 'Estadístico',\n hierarchicalGroup: 'Jerárquico',\n specializedGroup: 'Especializado',\n combinationGroup: 'Combinación',\n groupedColumnTooltip: 'Agrupada',\n stackedColumnTooltip: 'Apilada',\n normalizedColumnTooltip: '100% Apilada',\n groupedBarTooltip: 'Agrupada',\n stackedBarTooltip: 'Apilada',\n normalizedBarTooltip: '100% Apilada',\n pieTooltip: 'Torta',\n donutTooltip: 'Donut',\n lineTooltip: 'Línea',\n stackedLineTooltip: 'Apilado',\n normalizedLineTooltip: 'Apilado 100%',\n groupedAreaTooltip: 'Área',\n stackedAreaTooltip: 'Apilada',\n normalizedAreaTooltip: '100% Apilada',\n scatterTooltip: 'Dispersión',\n bubbleTooltip: 'Burbuja',\n histogramTooltip: 'Histograma',\n radialColumnTooltip: 'Columna Radial',\n radialBarTooltip: 'Barra Radial',\n radarLineTooltip: 'Línea de Radar',\n radarAreaTooltip: 'Área de Radar',\n nightingaleTooltip: 'Nightingale',\n rangeBarTooltip: 'Barra de Intervalo',\n rangeAreaTooltip: 'Área de Intervalo',\n boxPlotTooltip: 'Diagrama de Cajas',\n treemapTooltip: 'Mapa de Áreas',\n sunburstTooltip: 'Estallido Solar',\n waterfallTooltip: 'Cascada',\n heatmapTooltip: 'Mapa de Calor',\n columnLineComboTooltip: 'Columna y Línea',\n areaColumnComboTooltip: 'Área y Columna',\n customComboTooltip: 'Combinación Personalizada',\n innerRadius: 'Radio Interno',\n startAngle: 'Ángulo de Inicio',\n endAngle: 'Ángulo Final',\n reverseDirection: 'Dirección Inversa',\n groupPadding: 'Relleno de Grupo',\n seriesPadding: 'Relleno de Series',\n tile: 'Mosaico',\n whisker: 'Bigote',\n cap: 'Tapón',\n capLengthRatio: 'Relación de Longitud',\n labelPlacement: 'Ubicación de Etiqueta',\n inside: 'Dentro',\n outside: 'Fuera',\n noDataToChart: 'No hay datos disponibles para graficar.',\n pivotChartRequiresPivotMode:\n 'El Gráfico de Pivote requiere el Modo de Pivote habilitado.',\n chartSettingsToolbarTooltip: 'Menú',\n chartLinkToolbarTooltip: 'Vinculado a la Cuadrícula',\n chartUnlinkToolbarTooltip: 'Desvinculado de la Cuadrícula',\n chartDownloadToolbarTooltip: 'Descargar Gráfico',\n chartMenuToolbarTooltip: 'Menú',\n chartEdit: 'Editar Gráfico',\n chartAdvancedSettings: 'Configuración Avanzada',\n chartLink: 'Vincular a la Cuadrícula',\n chartUnlink: 'Desvincular de la Cuadrícula',\n chartDownload: 'Descargar Gráfico',\n histogramFrequency: 'Frecuencia',\n seriesChartType: 'Tipo de Gráfico de Series',\n seriesType: 'Tipo de Series',\n secondaryAxis: 'Eje Secundario',\n seriesAdd: 'Agregar una serie',\n categoryAdd: 'Agregar una categoría',\n bar: 'Barra',\n column: 'Columna',\n histogram: 'Histograma',\n advancedSettings: 'Configuración Avanzada',\n direction: 'Dirección',\n horizontal: 'Horizontal',\n vertical: 'Vertical',\n seriesGroupType: 'Tipo de Grupo',\n groupedSeriesGroupType: 'Agrupadas',\n stackedSeriesGroupType: 'Apiladas',\n normalizedSeriesGroupType: '100% Apiladas',\n legendEnabled: 'Habilitado',\n invalidColor: 'El valor del color es inválido',\n groupedColumnFull: 'Columna Agrupada',\n stackedColumnFull: 'Columna Apilada',\n normalizedColumnFull: 'Columna 100% Apilada',\n groupedBarFull: 'Barra Agrupada',\n stackedBarFull: 'Barra Apilada',\n normalizedBarFull: 'Barra 100% Apilada',\n stackedAreaFull: 'Área Apilada',\n normalizedAreaFull: 'Área 100% Apilada',\n customCombo: 'Combinación Personalizada',\n funnel: 'Embudo',\n coneFunnel: 'Embudo Cono',\n pyramid: 'Pirámide',\n funnelGroup: 'Embudo',\n funnelTooltip: 'Embudo',\n coneFunnelTooltip: 'Embudo Cono',\n pyramidTooltip: 'Pirámide',\n dropOff: 'Caída',\n stageLabels: 'Etiquetas de Etapa',\n reverse: 'Invertir',\n tooltipMode: 'Modo de Información',\n tooltipModeSingle: 'Único',\n tooltipModeShared: 'Múltiple',\n tooltipModeCompact: 'Compacto',\n\n // ARIA\n ariaAdvancedFilterBuilderItem:\n '${variable}. Nivel ${variable}. Presiona ENTER para editar.',\n ariaAdvancedFilterBuilderItemValidation:\n '${variable}. Nivel ${variable}. ${variable} Presiona ENTER para editar.',\n ariaAdvancedFilterBuilderList: 'Lista de Constructor de Filtros Avanzados',\n ariaAdvancedFilterBuilderFilterItem: 'Condición del Filtro',\n ariaAdvancedFilterBuilderGroupItem: 'Grupo de Filtros',\n ariaAdvancedFilterBuilderColumn: 'Columna',\n ariaAdvancedFilterBuilderOption: 'Opción',\n ariaAdvancedFilterBuilderValueP: 'Valor',\n ariaAdvancedFilterBuilderJoinOperator: 'Operador de Unión',\n ariaAdvancedFilterInput: 'Entrada de Filtro Avanzado',\n ariaChecked: 'seleccionado',\n ariaColumn: 'Columna',\n ariaColumnGroup: 'Grupo de Columnas',\n ariaFilterActive: 'Filtro activo',\n ariaColumnFiltered: 'Columna Filtrada',\n ariaCalculatedColumn: 'Columna calculada',\n ariaColumnShowValuesAs: 'Mostrando valores como',\n ariaColumnSelectAll: 'Alternar visibilidad de todas las columnas',\n ariaDateFilterInput: 'Entrada de Filtro de Fecha',\n ariaDefaultListName: 'Lista',\n ariaFilterColumnsInput: 'Entrada de Filtrado de Columnas',\n ariaFilterFromValue: 'Filtrar desde valor',\n ariaFilterInput: 'Entrada de Filtro',\n ariaFilterList: 'Lista de Filtros',\n ariaFilterToValue: 'Filtrar hasta valor',\n ariaFilterValue: 'Valor del Filtro',\n ariaFilterMenuOpen: 'Abrir Menú de Filtros',\n ariaFilteringOperator: 'Operador de Filtrado',\n ariaHidden: 'oculto',\n ariaIndeterminate: 'indeterminado',\n ariaInputEditor: 'Editor de Entrada',\n ariaMenuColumn: 'Presiona ALT ABAJO para abrir el menú de la columna',\n ariaFilterColumn: 'Presiona CTRL ENTER para abrir el filtro',\n ariaRowDeselect: 'Presiona SPACE para anular la selección de esta fila',\n ariaHeaderSelection: 'Columna con selección de encabezado',\n ariaSelectAllCells:\n 'Presiona Espacio o Enter para seleccionar todas las celdas',\n ariaSelectAllRowCells:\n 'Presione Enter para seleccionar todas las celdas de esta fila',\n ariaColumnCellSelection:\n 'Presione Enter para alternar la selección de todas las celdas visibles en esta columna',\n ariaColumnGroupCellSelection:\n 'Presione Enter para alternar la selección de todas las celdas visibles en este grupo de columnas',\n ariaColumnGroupExpansion:\n 'Presione ENTER para expandir o contraer este grupo de columnas',\n ariaColumnGroupCellSelectionAndExpansion:\n 'Presione Enter para alternar la selección de todas las celdas visibles en este grupo de columnas. Presione ALT ENTER para expandir o contraer este grupo de columnas',\n ariaRowSelectAll:\n 'Presiona SPACE para alternar la selección de todas las filas',\n ariaRowToggleSelection:\n 'Presiona SPACE para alternar la selección de la fila',\n ariaRowSelect: 'Presiona SPACE para seleccionar esta fila',\n ariaRowSelectionDisabled:\n 'La selección de filas está deshabilitada para esta fila',\n ariaSearch: 'Buscar',\n ariaSortableColumn: 'Presiona ENTER para ordenar',\n ariaSortableColumnWithCellSelection: 'Presiona ALT ENTER para ordenar',\n ariaToggleVisibility: 'Presiona SPACE para alternar la visibilidad',\n ariaToggleCellValue: 'Presiona SPACE para alternar el valor de la celda',\n ariaUnchecked: 'no seleccionado',\n ariaVisible: 'visible',\n ariaSearchFilterValues: 'Buscar valores de filtro',\n ariaPageSizeSelectorLabel: 'Tamaño de Página',\n ariaChartMenuClose: 'Cerrar Menú de Edición de Gráfica',\n ariaChartSelected: 'Seleccionado',\n ariaSparklineChartDescription:\n 'Sparkline - ${chartType} que muestra ${count} valores entre ${min} y ${max}. Empieza en ${start} y termina en ${end}.',\n ariaSparklineChartDescriptionSingleValue:\n 'Sparkline - ${chartType} que muestra 1 valor: ${value}.',\n ariaSparklineChartDescriptionEmpty:\n 'Sparkline - ${chartType} que no muestra valores.',\n ariaSkeletonCellLoadingFailed: 'Carga de fila fallida',\n ariaSkeletonCellLoading: 'Cargando datos de la fila',\n ariaDeferSkeletonCellLoading: 'Cargando celda',\n\n // ARIA for Batch Edit\n ariaPendingChange: 'Cambio pendiente',\n\n // ARIA Labels for Drop Zones\n ariaRowGroupDropZonePanelLabel: 'Grupos de filas',\n ariaValuesDropZonePanelLabel: 'Valores',\n ariaPivotDropZonePanelLabel: 'Etiquetas de columna',\n ariaDropZoneColumnComponentDescription: 'Presione DELETE para eliminar',\n ariaDropZoneColumnValueItemDescription:\n 'Presione ENTER para cambiar el tipo de agregación',\n ariaDropZoneColumnGroupItemDescription: 'Presione ENTER para ordenar',\n\n // used for aggregate drop zone, format: {aggregation}{ariaDropZoneColumnComponentAggFuncSeparator}{column name}\n ariaDropZoneColumnComponentAggFuncSeparator: ' de ',\n ariaDropZoneColumnComponentSortAscending: 'ascendente',\n ariaDropZoneColumnComponentSortDescending: 'descendente',\n ariaDropZoneColumnComponentSortAbsoluteAscending: 'ascendente absoluto',\n ariaDropZoneColumnComponentSortAbsoluteDescending: 'descendente absoluto',\n ariaLabelDialog: 'Diálogo',\n ariaLabelColumnMenu: 'Menú de Columna',\n ariaLabelColumnFilter: 'Filtro de Columna',\n ariaLabelSelectField: 'Seleccionar Campo',\n\n // Cell Editor\n ariaValidationErrorPrefix: 'Validación del Editor de Celda',\n ariaLabelLoadingContextMenu: 'Cargando menú contextual',\n\n // aria labels for rich select\n ariaLabelRichSelectField: 'Campo de selección enriquecido',\n ariaLabelRichSelectToggleSelection:\n 'Presiona ESPACIO para alternar la selección',\n ariaLabelRichSelectDeselectAllItems:\n 'Presiona SUPRIMIR para deseleccionar todos los elementos',\n ariaLabelRichSelectDeleteSelection:\n 'Presiona SUPRIMIR para deseleccionar el elemento',\n ariaLabelTooltip: 'Información sobre herramientas',\n ariaLabelContextMenu: 'Menú contextual',\n ariaLabelSubMenu: 'Submenú',\n ariaLabelAggregationFunction: 'Función de agregación',\n ariaLabelAdvancedFilterAutocomplete: 'Autocompletar filtro avanzado',\n ariaLabelAdvancedFilterBuilderAddField:\n 'Agregar campo al generador de filtro avanzado',\n ariaLabelAdvancedFilterBuilderColumnSelectField:\n 'Campo de selección de columna del generador de filtro avanzado',\n ariaLabelAdvancedFilterBuilderOptionSelectField:\n 'Campo de selección de opción del generador de filtro avanzado',\n ariaLabelAdvancedFilterBuilderJoinSelectField:\n 'Campo de selección de operador de unión del generador de filtro avanzado',\n\n // ARIA Labels for the Side Bar\n ariaColumnPanelList: 'Lista de columnas',\n ariaFilterPanelList: 'Lista de filtros',\n\n // ARIA labels for new Filters Tool Panel\n ariaLabelAddFilterField: 'Agregar campo de filtro',\n ariaLabelFilterCardDelete: 'Eliminar filtro',\n ariaLabelFilterCardHasEdits: 'Tiene ediciones',\n ariaHasNote: 'Esta celda tiene una nota.',\n\n // Number Format (Status Bar, Pagination Panel)\n thousandSeparator: ',',\n decimalSeparator: '.',\n\n // Data types\n dataTypeText: 'Texto',\n dataTypeNumber: 'Número',\n dataTypeBigInt: 'BigInt',\n dataTypeBoolean: 'Booleano',\n dataTypeDate: 'Fecha',\n dataTypeDateString: 'Cadena de fecha',\n dataTypeDateTime: 'Fecha y hora',\n dataTypeDateTimeString: 'Cadena de fecha y hora',\n dataTypeObject: 'Objeto',\n true: 'Verdadero',\n false: 'Falso',\n invalidDate: 'Fecha inválida',\n invalidNumber: 'Número inválido',\n invalidBigInt: 'BigInt inválido',\n january: 'Enero',\n february: 'Febrero',\n march: 'Marzo',\n april: 'Abril',\n may: 'Mayo',\n june: 'Junio',\n july: 'Julio',\n august: 'Agosto',\n september: 'Septiembre',\n october: 'Octubre',\n november: 'Noviembre',\n december: 'Diciembre',\n\n // Date-time parts\n year: 'Año',\n quarter: 'Trimestre',\n month: 'Mes',\n day: 'Día',\n hour: 'Hora',\n minute: 'Minuto',\n second: 'Segundo',\n\n // Time formats\n timeFormatSlashesDDMMYYYY: 'DD/MM/AAAA',\n timeFormatSlashesMMDDYYYY: 'MM/DD/AAAA',\n timeFormatSlashesDDMMYY: 'DD/MM/AA',\n timeFormatSlashesMMDDYY: 'MM/DD/AA',\n timeFormatDotsDDMYY: 'DD.M.AA',\n timeFormatDotsMDDYY: 'M.DD.AA',\n timeFormatDashesYYYYMMDD: 'AAAA-MM-DD',\n timeFormatSpacesDDMMMMYYYY: 'DD MMMM AAAA',\n timeFormatHHMMSS: 'HH:MM:SS',\n timeFormatHHMMSSAmPm: 'HH:MM:SS a. m./p. m.',\n\n // Editable Column Header Name\n editColumnName: 'Editar nombre de columna',\n ariaColumnHeaderNameEditor: 'Editor de nombre de columna',\n columnHeaderEditApply: 'Aplicar',\n columnHeaderEditCancel: 'Cancelar',\n\n // Calculated Columns\n calculatedColumn: 'Columna calculada',\n calculatedColumnAdd: 'Añadir columna calculada',\n calculatedColumnEdit: 'Editar columna calculada',\n calculatedColumnRemove: 'Eliminar columna calculada',\n calculatedColumnTitle: 'Título',\n calculatedColumnType: 'Tipo',\n calculatedColumnExpression: 'Expresión',\n calculatedColumnExpressionPlaceholder: 'Escriba aquí',\n calculatedColumnExpressionToolsLabel: 'Insertar',\n calculatedColumnColumns: 'Columnas',\n calculatedColumnFunctions: 'Funciones',\n calculatedColumnOperators: 'Operadores',\n calculatedColumnSuggestions: 'Sugerencias de columna calculada',\n calculatedColumnDefaultTitle: 'Sin título',\n calculatedColumnExpressionAmbiguousReference:\n 'Referencia de columna ambigua \"${variable}\". Use la lista de Columnas o una ruta de grupo más específica.',\n calculatedColumnExpressionUnknownReference:\n 'Referencia de columna desconocida \"${variable}\".',\n calculatedColumnExpressionEmpty: 'Introduzca una expresión',\n calculatedColumnTitleEmpty: 'Introduzca un título',\n calculatedColumnApply: 'Aplicar',\n calculatedColumnCancel: 'Cancelar',\n\n // Notes\n note: 'Nota de celda',\n addNote: 'Añadir nota',\n viewNote: 'Ver nota',\n editNote: 'Editar nota',\n deleteNote: 'Eliminar nota',\n notePlaceholder: 'Añadir una nota...',\n};\n","/**\n * Please note:\n *\n * Translations are provided as an illustration only and are\n * not guaranteed to be accurate or error free.\n *\n * They are designed to show developers where to store their\n * chosen phrase or spelling variant in the target language.\n */\n\nexport const AG_GRID_LOCALE_FR = {\n // Set Filter\n selectAll: '(Sélectionner tout)',\n selectAllSearchResults: '(Sélectionner tous les résultats de recherche)',\n addCurrentSelectionToFilter: 'Ajouter la sélection actuelle au filtre',\n searchOoo: 'Chercher...',\n blanks: '(Vides)',\n noMatches: 'Aucune correspondance',\n typeToSearchOoo: 'Tapez pour rechercher...',\n\n // Number Filter & Text Filter\n filterOoo: 'Filtrer...',\n equals: 'Égal à',\n notEqual: \"N'est pas égal à\",\n blank: 'Vide',\n notBlank: 'Non vide',\n empty: 'Choisissez-en un',\n\n // Number Filter\n lessThan: 'Moins de',\n greaterThan: 'Plus de',\n lessThanOrEqual: 'Moins de ou égal à',\n greaterThanOrEqual: 'Plus de ou égal à',\n inRange: 'Entre',\n inRangeStart: 'De',\n inRangeEnd: 'À',\n\n // Text Filter\n contains: 'Contient',\n notContains: 'Ne contient pas',\n startsWith: 'Commence par',\n endsWith: 'Se termine par',\n\n // Date Filter\n dateFormatOoo: 'yyyy-mm-dd',\n before: 'Avant',\n after: 'Après',\n yesterday: 'Hier',\n today: \"Aujourd'hui\",\n tomorrow: 'Demain',\n last7Days: 'Les 7 derniers jours',\n lastWeek: 'La semaine dernière',\n thisWeek: 'Cette semaine',\n nextWeek: 'La semaine prochaine',\n last30Days: 'Les 30 derniers jours',\n lastMonth: 'Le mois dernier',\n thisMonth: 'Ce mois-ci',\n nextMonth: 'Le mois prochain',\n last90Days: 'Les 90 derniers jours',\n lastQuarter: 'Le dernier trimestre',\n thisQuarter: 'Ce trimestre',\n nextQuarter: 'Le prochain trimestre',\n lastYear: \"L'année dernière\",\n thisYear: 'Cette année',\n yearToDate: \"Depuis le début de l'année\",\n nextYear: \"L'année prochaine\",\n last6Months: 'Les 6 derniers mois',\n last12Months: 'Les 12 derniers mois',\n last24Months: 'Les 24 derniers mois',\n\n // Filter Conditions\n andCondition: 'ET',\n orCondition: 'OU',\n\n // Filter Buttons\n applyFilter: 'Appliquer',\n applyColumnToolPanel: 'Appliquer',\n resetFilter: 'Réinitialiser',\n clearFilter: 'Effacer',\n cancelFilter: 'Annuler',\n cancelColumnToolPanel: 'Annuler',\n\n // Filter Titles\n textFilter: 'Filtre de texte',\n numberFilter: 'Filtre numérique',\n dateFilter: 'Filtre de date',\n setFilter: 'Filtre de jeu',\n\n // Group Column Filter\n groupFilterSelect: 'Sélectionner le champ :',\n\n // New Filter Tool Panel\n filterSummaryInactive: 'est (Tous)',\n filterSummaryContains: 'contient',\n filterSummaryNotContains: 'ne contient pas',\n filterSummaryTextEquals: 'égale',\n filterSummaryTextNotEqual: \"n'égale pas\",\n filterSummaryStartsWith: 'commence par',\n filterSummaryEndsWith: 'termine par',\n filterSummaryBlank: 'est vide',\n filterSummaryNotBlank: \"n'est pas vide\",\n filterSummaryEquals: '=',\n filterSummaryNotEqual: '!=',\n filterSummaryGreaterThan: '>',\n filterSummaryGreaterThanOrEqual: '>=',\n filterSummaryLessThan: '<',\n filterSummaryLessThanOrEqual: '<=',\n filterSummaryInRange: 'entre',\n filterSummaryInRangeValues: '(${variable}, ${variable})',\n filterSummaryTextQuote: '\"${variable}\"',\n filterSummaryListInactive: 'est (Tous)',\n filterSummaryListSeparator: ', ',\n filterSummaryListShort: 'est (${variable})',\n filterSummaryListLong: 'est (${variable}) et ${variable} de plus',\n addFilterCard: 'Ajouter un filtre',\n agTextColumnFilterDisplayName: 'Filtre simple',\n agNumberColumnFilterDisplayName: 'Filtre simple',\n agDateColumnFilterDisplayName: 'Filtre simple',\n agSetColumnFilterDisplayName: 'Filtre de sélection',\n agMultiColumnFilterDisplayName: 'Filtre combiné',\n addFilterPlaceholder: 'Rechercher dans les colonnes...',\n\n // Advanced Filter\n advancedFilterContains: 'contient',\n advancedFilterNotContains: 'ne contient pas',\n advancedFilterTextEquals: 'égal',\n advancedFilterTextNotEqual: \"n'est pas égal\",\n advancedFilterStartsWith: 'commence par',\n advancedFilterEndsWith: 'se termine par',\n advancedFilterBlank: 'est vide',\n advancedFilterNotBlank: \"n'est pas vide\",\n advancedFilterEquals: '=',\n advancedFilterNotEqual: '!=',\n advancedFilterGreaterThan: '>',\n advancedFilterGreaterThanOrEqual: '>=',\n advancedFilterLessThan: '<',\n advancedFilterLessThanOrEqual: '<=',\n advancedFilterTrue: 'est vrai',\n advancedFilterFalse: 'est faux',\n advancedFilterAnd: 'ET',\n advancedFilterOr: 'OU',\n advancedFilterApply: 'Appliquer',\n advancedFilterReset: 'Réinitialiser',\n advancedFilterCancel: 'Annuler',\n advancedFilterClear: 'Effacer',\n advancedFilterBuilder: 'Constructeur',\n advancedFilterValidationMissingColumn: 'La colonne est manquante',\n advancedFilterValidationMissingOption: \"L'option est manquante\",\n advancedFilterValidationMissingValue: 'La valeur est manquante',\n advancedFilterValidationInvalidColumn: 'Colonne non trouvée',\n advancedFilterValidationInvalidOption: 'Option non trouvée',\n advancedFilterValidationMissingQuote:\n 'Il manque une guillemet de fin à la valeur',\n advancedFilterValidationNotANumber: \"La valeur n'est pas un nombre\",\n advancedFilterValidationInvalidDate: \"La valeur n'est pas une date valide\",\n advancedFilterValidationMissingCondition: 'La condition est manquante',\n advancedFilterValidationJoinOperatorMismatch:\n \"Les opérateurs de jonction au sein d'une condition doivent être identiques\",\n advancedFilterValidationInvalidJoinOperator:\n 'Opérateur de jonction non trouvé',\n advancedFilterValidationMissingEndBracket: 'Guillemet de fin manquante',\n advancedFilterValidationExtraEndBracket: 'Trop de crochets de fin',\n advancedFilterValidationMessage:\n \"L'expression contient une erreur. ${variable} - ${variable}.\",\n advancedFilterValidationMessageAtEnd:\n \"L'expression contient une erreur. ${variable} à la fin de l'expression.\",\n advancedFilterBuilderTitle: 'Filtre Avancé',\n advancedFilterBuilderApply: 'Appliquer',\n advancedFilterBuilderClear: 'Effacer',\n advancedFilterBuilderReset: 'Réinitialiser',\n advancedFilterBuilderCancel: 'Annuler',\n advancedFilterBuilderAddButtonTooltip: 'Ajouter un filtre ou un groupe',\n advancedFilterBuilderRemoveButtonTooltip: 'Supprimer',\n advancedFilterBuilderMoveUpButtonTooltip: 'Monter',\n advancedFilterBuilderMoveDownButtonTooltip: 'Descendre',\n advancedFilterBuilderAddJoin: 'Ajouter un groupe',\n advancedFilterBuilderAddCondition: 'Ajouter un filtre',\n advancedFilterBuilderSelectColumn: 'Sélectionner une colonne',\n advancedFilterBuilderSelectOption: 'Sélectionner une option',\n advancedFilterBuilderEnterValue: 'Entrer une valeur...',\n advancedFilterBuilderValidationAlreadyApplied:\n 'Le filtre actuel est déjà appliqué.',\n advancedFilterBuilderValidationIncomplete:\n 'Toutes les conditions ne sont pas remplies.',\n advancedFilterBuilderValidationSelectColumn:\n 'Vous devez sélectionner une colonne.',\n advancedFilterBuilderValidationSelectOption:\n 'Vous devez sélectionner une option.',\n advancedFilterBuilderValidationEnterValue: 'Vous devez entrer une valeur.',\n\n // Editor Validation Errors\n minDateValidation: 'La date doit être après ${variable}',\n maxDateValidation: 'La date doit être avant ${variable}',\n maxLengthValidation: 'Doit contenir ${variable} caractères ou moins.',\n minValueValidation: 'Doit être supérieur ou égal à ${variable}',\n maxValueValidation: 'Doit être inférieur ou égal à ${variable}',\n strictMinValueValidation: 'Doit être supérieur à ${variable}',\n strictMaxValueValidation: 'Doit être inférieur à ${variable}',\n invalidSelectionValidation: 'Sélection invalide.',\n\n // Formulas\n invalidFormulaValidation: 'Formule invalide.',\n formulaParseInvalidCellReference:\n 'Reference de cellule invalide : ${variable}.',\n formulaParseInvalidRangeEndReference: 'Reference de fin de plage invalide.',\n formulaParseUnterminatedString: 'Chaine non terminee.',\n formulaParseUnexpectedCharacter: 'Caractere inattendu : ${variable}.',\n formulaParseOperatorStackUnderflow: 'Sous-debordement de pile d operateurs.',\n formulaParseMissingOperand: \"Operande manquant pour '${variable}'.\",\n formulaParseInternalUnexpectedFrameDuringReduction:\n 'Erreur interne : frame inattendue pendant la reduction.',\n formulaParseInternalUnexpectedFrameBeforeOpenParen:\n \"Erreur interne : frame inattendue avant '('.\",\n formulaParseMisplacedComma: 'Virgule mal placee.',\n formulaParseCommaOutsideFunctionCall:\n 'Virgule en dehors d un appel de fonction.',\n formulaParseInternalUnexpectedFrameBeforeCloseParen:\n \"Erreur interne : frame inattendue avant ')'.\",\n formulaParseMismatchedParentheses: 'Parentheses non correspondantes.',\n formulaParseUnsupportedOperand: 'Operande non pris en charge : ${variable}.',\n formulaParseMismatchedParenthesesOrUnfinishedFunctionCall:\n 'Parentheses non correspondantes ou appel de fonction inacheve.',\n formulaParseInvalidExpression: 'Expression invalide.',\n formulaParseFormulasMustBeginWithEquals:\n 'Les formules doivent commencer par =.',\n formulaSerializeStringContainsQuote:\n 'La chaine contient un guillemet (\") que le tokenizer ne prend pas en charge.',\n formulaSerializeCannotProduceAbsoluteColumnLabelFromId:\n \"Impossible de produire un libelle de COLONNE absolu a partir de l id '${variable}'.\",\n formulaSerializeCannotProduceAbsoluteRowIndexFromId:\n \"Impossible de produire un index de LIGNE absolu a partir de l id '${variable}'.\",\n formulaSerializeCannotProduceRowIndexFromId:\n \"Impossible de produire un index de LIGNE a partir de l id '${variable}'.\",\n formulaSerializeCannotMapColumnIdToA1Label:\n \"Impossible de mapper l id de colonne '${variable}' vers un libelle A1.\",\n formulaSerializeCannotParseAbsoluteRowIndex:\n \"Impossible d analyser l index de ligne absolu '${variable}'.\",\n formulaSerializeCannotMapRowIdToA1Index:\n \"Impossible de mapper l id de ligne '${variable}' vers un index A1.\",\n formulaEvalRangeNotAllowedInScalarContext:\n 'Une plage n est pas autorisee dans un contexte scalaire.',\n formulaEvalUnknownReferenceToCell: 'Reference de cellule inconnue.',\n formulaEvalUnsupportedOperation: 'Operation non prise en charge ${variable}.',\n formulaEvalInvalidAbsoluteRow: 'Ligne absolue invalide.',\n formulaEvalUnrecognisedRowId: 'Id de ligne non reconnu.',\n formulaEvalInvalidAbsoluteColumn: 'Colonne absolue invalide.',\n formulaEvalUnrecognisedColumnId: 'Id de colonne non reconnu.',\n formulaEvalUnrecognisedRowInRange: 'Ligne non reconnue dans la plage.',\n formulaEvalUnrecognisedReferenceToCell: 'Reference de cellule non reconnue.',\n formulaEvalIncompleteRangeReference: 'Reference de plage incomplete.',\n formulaFunctionExpectedExactlyArguments:\n '${variable} : ${variable} arguments exactement attendus.',\n formulaFunctionExpectedAtMostArguments:\n '${variable} : ${variable} arguments au maximum attendus.',\n formulaFunctionExpectedAtLeastArguments:\n '${variable} : ${variable} arguments au minimum attendus.',\n formulaFunctionInvalidCriteriaWildcardsWithComparator:\n 'Critere invalide : jokers avec comparateur.',\n formulaFunctionNonNumericArgument: '${variable} : argument non numerique.',\n formulaFunctionDivisionByZero: '${variable} : division par zero.',\n formulaFunctionCannotCombineDatesWithBigInt:\n '${variable} : impossible de combiner des dates avec BigInt.',\n formulaFunctionRequiresAtLeastOneNumericValue:\n '${variable} : au moins une valeur numerique requise.',\n formulaFunctionRequiresAtLeastOneValue:\n '${variable} : au moins une valeur requise.',\n formulaFunctionAllValuesMustBeNumbers:\n '${variable} : toutes les valeurs doivent etre numeriques.',\n formulaFunctionArgumentMustBeRange:\n '${variable} : l argument ${variable} doit etre une plage.',\n formulaFunctionArgumentMustBeValue:\n '${variable} : l argument ${variable} doit etre une valeur.',\n formulaFunctionRangesHaveDifferentSizes:\n '${variable} : les plages ont des tailles differentes.',\n formulaFunctionValuesMustBeNumeric:\n '${variable} : les valeurs doivent etre numeriques.',\n formulaFunctionValuesMustBeIntegers:\n '${variable} : les valeurs doivent etre des entiers.',\n formulaFunctionUnsupportedValueType:\n '${variable} : type de valeur non pris en charge.',\n formulaFunctionDivNonNumericArgument: 'DIV : argument non numerique.',\n formulaFunctionDivDivisionByZero: 'DIV : division par zero.',\n formulaFunctionSumCannotCombineDatesWithBigInt:\n 'SUM : impossible de combiner des dates avec BigInt.',\n formulaFunctionSumRequiresAtLeastOneNumericValue:\n 'SUM : au moins une valeur numerique requise.',\n formulaFunctionAvgRequiresAtLeastOneValue:\n 'AVG : au moins une valeur requise.',\n formulaFunctionMedianAllValuesMustBeNumbers:\n 'MEDIAN : toutes les valeurs doivent etre numeriques.',\n formulaFunctionMedianRequiresAtLeastOneValue:\n 'MEDIAN : au moins une valeur requise.',\n formulaFunctionSumifFirstArgumentMustBeRange:\n 'SUMIF : le premier argument doit etre une plage.',\n formulaFunctionSumifSecondArgumentMustBeValue:\n 'SUMIF : le deuxieme argument doit etre une valeur (criteria).',\n formulaFunctionSumifThirdArgumentMustBeRange:\n 'SUMIF : le troisieme argument doit etre une plage (sum_range).',\n formulaFunctionSumifRangesHaveDifferentSizes:\n 'SUMIF : les plages ont des tailles differentes.',\n formulaFunctionCountifFirstArgumentMustBeRange:\n 'COUNTIF : le premier argument doit etre une plage.',\n formulaFunctionCountifSecondArgumentMustBeValue:\n 'COUNTIF : le deuxieme argument doit etre une valeur (criteria).',\n formulaFunctionConcatUnsupportedValueType:\n 'CONCAT : type de valeur non pris en charge.',\n formulaFunctionMinRequiresAtLeastOneValue:\n 'MIN : au moins une valeur requise.',\n formulaFunctionMaxRequiresAtLeastOneValue:\n 'MAX : au moins une valeur requise.',\n formulaFunctionPercentNonNumericArgument: 'PERCENT : argument non numerique.',\n formulaFunctionPowerNonNumericArgument: 'POWER : argument non numerique.',\n formulaServiceCircularReference: 'Reference circulaire.',\n formulaServiceExpectedParsableFormula: 'Formule analysable attendue.',\n formulaServiceInternalSchedulingError: 'Erreur interne de planification.',\n tooltipValidationErrorSeparator: '. ',\n\n // Side Bar\n columns: 'Colonnes',\n filters: 'Filtres',\n\n // columns tool panel\n pivotMode: 'Mode pivot',\n groups: 'Groupes de lignes',\n rowGroupColumnsEmptyMessage:\n 'Faites glisser ici pour définir les groupes de lignes',\n values: 'Valeurs',\n valueColumnsEmptyMessage: 'Faites glisser ici pour agréger',\n pivots: 'Étiquettes de colonnes',\n pivotColumnsEmptyMessage:\n 'Faites glisser ici pour définir les étiquettes de colonnes',\n\n // Header of the Default Group Column\n group: 'Groupe',\n\n // Row Drag\n rowDragRow: 'rang',\n rowDragRows: 'rangs',\n\n // Other\n loadingOoo: 'Chargement...',\n loadingError: 'ERR',\n noRowsToShow: 'Aucune ligne à afficher',\n noMatchingRows: 'Aucune ligne correspondante',\n exportingOoo: 'Exportation...',\n fileInputOverlay: 'Glissez-déposez un fichier pour importer des données',\n fileInputOverlayBrowse: 'Parcourir les fichiers',\n fileInputProcessing: 'Traitement de ${variable}',\n fileInputProcessingFailed: 'Erreur lors du traitement de ${variable}',\n enabled: 'Activé',\n\n // Menu\n pinColumn: 'Épingler la colonne',\n pinLeft: 'Épingler à gauche',\n pinRight: 'Épingler à droite',\n noPin: \"Pas d'épingle\",\n pinRow: 'Épingler la ligne',\n pinTop: 'Épingler en haut',\n pinBottom: 'Épingler en bas',\n unpinRow: 'Désépingler la ligne',\n valueAggregation: 'Agrégation de valeur',\n noAggregation: 'Aucun',\n showValuesAs: 'Afficher les valeurs en tant que',\n showValuesAsNone: 'Aucun',\n percentOfGrandTotal: '% du total général',\n percentOfColumnTotal: '% du total de la colonne',\n percentOfRowTotal: '% du total de la ligne',\n percentOfParentRowTotal: '% du total de la ligne parente',\n percentOfParentColumnTotal: '% du total de la colonne parente',\n percentOfGrandTotalDescription:\n 'Chaque valeur en pourcentage du total général de la colonne.',\n percentOfColumnTotalDescription:\n 'Chaque valeur en pourcentage du total de sa colonne — chaque colonne totalise 100 %.',\n percentOfRowTotalDescription:\n 'Chaque valeur en pourcentage du total de la ligne sur les colonnes du tableau croisé.',\n percentOfParentRowTotalDescription:\n 'Chaque valeur en pourcentage de son groupe parent.',\n percentOfParentColumnTotalDescription:\n 'Chaque valeur en pourcentage de sa colonne de tableau croisé parente.',\n autosizeThisColumn: 'Ajuster automatiquement cette colonne',\n autosizeAllColumns: 'Ajuster automatiquement toutes les colonnes',\n groupBy: 'Regrouper par ${variable}',\n ungroupBy: 'Dissocier par ${variable}',\n ungroupAll: 'Dégrouper tout',\n addToValues: 'Ajouter ${variable} aux valeurs',\n removeFromValues: 'Retirer ${variable} des valeurs',\n addToLabels: 'Ajouter ${variable} aux étiquettes',\n removeFromLabels: 'Retirer ${variable} des étiquettes',\n resetColumns: 'Réinitialiser les colonnes',\n expandAll: 'Développer tous les groupes de lignes',\n collapseAll: 'Fermer tous les groupes de lignes',\n copy: 'Copier',\n ctrlC: 'Ctrl+C',\n ctrlX: 'Ctrl+X',\n copyWithHeaders: 'Copier avec en-têtes',\n copyWithGroupHeaders: 'Copier avec en-têtes de groupe',\n cut: 'Couper',\n paste: 'Coller',\n ctrlV: 'Ctrl+V',\n export: 'Exporter',\n csvExport: 'Export CSV',\n excelExport: 'Export Excel',\n pdfExport: 'Export PDF',\n columnFilter: 'Filtre de colonne',\n columnChooser: 'Choisir les colonnes',\n chooseColumns: 'Choisir les colonnes',\n sortAscending: 'Trier par ordre croissant',\n sortDescending: 'Trier par ordre décroissant',\n sortAbsoluteAscending: 'Trier par ordre croissant absolu',\n sortAbsoluteDescending: 'Trier par ordre décroissant absolu',\n sortUnSort: 'Effacer le tri',\n shiftF2: 'Shift+F2',\n toolbarFind: 'Rechercher',\n toolbarFindPreviousMatch: 'Correspondance précédente',\n toolbarFindNextMatch: 'Correspondance suivante',\n toolbarQuickFilter: 'Filtrer',\n toolbarMenu: 'Menu',\n\n // Enterprise Menu Aggregation and Status Bar\n sum: 'Somme',\n first: 'Premier',\n last: 'Dernier',\n min: 'Min',\n max: 'Max',\n none: 'Aucun',\n count: 'Nombre',\n avg: 'Moyenne',\n filteredRows: 'Filtré',\n selectedRows: 'Sélectionné',\n totalRows: 'Total des Lignes',\n totalAndFilteredRows: 'Lignes',\n more: 'Plus',\n to: 'à',\n of: 'de',\n page: 'Page',\n pageLastRowUnknown: '?',\n nextPage: 'Page Suivante',\n lastPage: 'Dernière Page',\n firstPage: 'Première Page',\n previousPage: 'Page Précédente',\n pageSizeSelectorLabel: 'Taille de la Page :',\n footerTotal: 'Total',\n statusBarLastRowUnknown: '?',\n scrollColumnIntoView: 'Faire défiler ${variable} dans la vue',\n\n // Pivoting\n pivotColumnGroupTotals: 'Total',\n\n // Enterprise Menu (Charts)\n pivotChartAndPivotMode: 'Graphique pivot et mode pivot',\n pivotChart: 'Graphique pivot',\n chartRange: 'Plage de graphique',\n columnChart: 'Colonne',\n groupedColumn: 'Groupé',\n stackedColumn: 'Empilé',\n normalizedColumn: '100% empilé',\n barChart: 'Barre',\n groupedBar: 'Groupé',\n stackedBar: 'Empilé',\n normalizedBar: '100% empilé',\n pieChart: 'Camembert',\n pie: 'Camembert',\n donut: 'Donut',\n lineChart: 'Ligne',\n stackedLine: 'Empilé',\n normalizedLine: '100% Empilé',\n xyChart: 'X Y (Nuage de points)',\n scatter: 'Nuage de points',\n bubble: 'Bulle',\n areaChart: 'Aire',\n area: 'Aire',\n stackedArea: 'Empilé',\n normalizedArea: '100% empilé',\n histogramChart: 'Histogramme',\n polarChart: 'Polaire',\n radarLine: 'Ligne radar',\n radarArea: 'Aire radar',\n nightingale: 'Nightingale',\n radialColumn: 'Colonne radiale',\n radialBar: 'Barre radiale',\n statisticalChart: 'Statistique',\n boxPlot: 'Boîte à moustaches',\n rangeBar: 'Barre de plage',\n rangeArea: 'Aire de plage',\n hierarchicalChart: 'Hiérarchique',\n treemap: 'Arborescence',\n sunburst: 'Rayonnement',\n specializedChart: 'Spécialisé',\n waterfall: 'Cascade',\n heatmap: 'Carte thermique',\n combinationChart: 'Combinaison',\n columnLineCombo: 'Colonne et ligne',\n AreaColumnCombo: 'Aire et colonne',\n\n // Charts\n pivotChartTitle: 'Graphique croisé dynamique',\n rangeChartTitle: 'Graphique en plage',\n settings: 'Graphique',\n data: 'Configurer',\n format: 'Personnaliser',\n categories: 'Catégories',\n defaultCategory: '(Aucun)',\n series: 'Séries',\n switchCategorySeries: 'Changer Catégorie / Séries',\n categoryValues: 'Valeurs de catégorie',\n seriesLabels: 'Étiquettes de séries',\n aggregate: 'Agrégat',\n xyValues: 'Valeurs X Y',\n paired: 'Mode apparié',\n axis: 'Axe',\n xAxis: 'Axe horizontal',\n yAxis: 'Axe vertical',\n polarAxis: 'Axe polaire',\n radiusAxis: 'Axe de rayon',\n navigator: 'Navigateur',\n zoom: 'Zoom',\n animation: 'Animation',\n crosshair: 'Réticule',\n color: 'Couleur',\n thickness: 'Épaisseur',\n preferredLength: 'Longueur préférée',\n xType: 'Type X',\n axisType: \"Type d'axe\",\n automatic: 'Automatique',\n category: 'Catégorie',\n number: 'Nombre',\n time: 'Temps',\n timeFormat: 'Format de temps',\n autoRotate: 'Rotation auto',\n labelRotation: 'Rotation',\n circle: 'Cercle',\n polygon: 'Polygone',\n square: 'Carré',\n cross: 'Croix',\n diamond: 'Diamant',\n plus: 'Plus',\n triangle: 'Triangle',\n heart: 'Cœur',\n orientation: 'Orientation',\n fixed: 'Fixé',\n parallel: 'Parallèle',\n perpendicular: 'Perpendiculaire',\n radiusAxisPosition: 'Position',\n ticks: 'Graduations',\n gridLines: 'Lignes de grille',\n width: 'Largeur',\n height: 'Hauteur',\n length: 'Longueur',\n padding: 'Rembourrage',\n spacing: 'Espacement',\n chartStyle: 'Style de graphique',\n title: 'Titre',\n chartTitles: 'Titres',\n chartTitle: 'Titre du graphique',\n chartSubtitle: 'Sous-titre',\n horizontalAxisTitle: \"Titre de l'axe horizontal\",\n verticalAxisTitle: \"Titre de l'axe vertical\",\n polarAxisTitle: \"Titre de l'axe polaire\",\n titlePlaceholder: 'Titre du graphique',\n background: 'Arrière-plan',\n font: 'Police',\n weight: 'Poids',\n top: 'Haut',\n right: 'Droite',\n bottom: 'Bas',\n left: 'Gauche',\n labels: 'Étiquettes',\n calloutLabels: \"Étiquettes d'appel\",\n sectorLabels: 'Étiquettes de secteur',\n positionRatio: 'Ratio de position',\n size: 'Taille',\n shape: 'Forme',\n minSize: 'Taille minimum',\n maxSize: 'Taille maximum',\n legend: 'Légende',\n position: 'Position',\n markerSize: 'Taille du marqueur',\n markerStroke: 'Contour du marqueur',\n markerPadding: 'Rembourrage du marqueur',\n itemSpacing: 'Espacement des éléments',\n itemPaddingX: \"Rembourrage d'élément X\",\n itemPaddingY: \"Rembourrage d'élément Y\",\n layoutHorizontalSpacing: 'Espacement horizontal',\n layoutVerticalSpacing: 'Espacement vertical',\n strokeWidth: 'Épaisseur du trait',\n offset: 'Décalage',\n offsets: 'Décalages',\n tooltips: 'Info-bulles',\n callout: 'Appel',\n markers: 'Marqueurs',\n shadow: 'Ombre',\n blur: 'Flou',\n xOffset: 'Décalage X',\n yOffset: 'Décalage Y',\n lineWidth: 'Épaisseur de la ligne',\n lineDash: 'Tirets de la ligne',\n lineDashOffset: 'Décalage des tirets',\n scrollingZoom: 'Défilement',\n scrollingStep: 'Étape de défilement',\n selectingZoom: 'Sélection',\n durationMillis: 'Durée (ms)',\n crosshairLabel: 'Étiquette',\n crosshairSnap: 'Accrocher au nœud',\n normal: 'Normal',\n bold: 'Gras',\n italic: 'Italique',\n boldItalic: 'Gras Italique',\n predefined: 'Prédéfini',\n fillOpacity: 'Opacité de remplissage',\n strokeColor: 'Couleur du trait',\n strokeOpacity: 'Opacité du trait',\n miniChart: 'Mini-Graphique',\n histogramBinCount: 'Nombre de bins',\n connectorLine: 'Ligne de connexion',\n seriesItems: 'Éléments de série',\n seriesItemType: \"Type d'élément\",\n seriesItemPositive: 'Positif',\n seriesItemNegative: 'Négatif',\n seriesItemLabels: \"Étiquettes d'éléments\",\n columnGroup: 'Colonne',\n barGroup: 'Barre',\n pieGroup: 'Camembert',\n lineGroup: 'Ligne',\n scatterGroup: 'X Y (Nuage de points)',\n areaGroup: 'Zone',\n polarGroup: 'Polaire',\n statisticalGroup: 'Statistique',\n hierarchicalGroup: 'Hiérarchique',\n specializedGroup: 'Spécialisé',\n combinationGroup: 'Combinaison',\n groupedColumnTooltip: 'Groupe',\n stackedColumnTooltip: 'Empilé',\n normalizedColumnTooltip: '100% Empilé',\n groupedBarTooltip: 'Groupe',\n stackedBarTooltip: 'Empilé',\n normalizedBarTooltip: '100% Empilé',\n pieTooltip: 'Camembert',\n donutTooltip: 'Donut',\n lineTooltip: 'Ligne',\n stackedLineTooltip: 'Empilé',\n normalizedLineTooltip: '100% Empilé',\n groupedAreaTooltip: 'Zone',\n stackedAreaTooltip: 'Empilé',\n normalizedAreaTooltip: '100% Empilé',\n scatterTooltip: 'Nuage de points',\n bubbleTooltip: 'Bulle',\n histogramTooltip: 'Histogramme',\n radialColumnTooltip: 'Colonne radiale',\n radialBarTooltip: 'Barre radiale',\n radarLineTooltip: 'Ligne radar',\n radarAreaTooltip: 'Zone radar',\n nightingaleTooltip: 'Nightingale',\n rangeBarTooltip: 'Barre de plage',\n rangeAreaTooltip: 'Zone de plage',\n boxPlotTooltip: 'Boîte à moustaches',\n treemapTooltip: 'Treemap',\n sunburstTooltip: 'Rayon de soleil',\n waterfallTooltip: \"Chute d'eau\",\n heatmapTooltip: 'Carte thermique',\n columnLineComboTooltip: 'Colonne & Ligne',\n areaColumnComboTooltip: 'Zone & Colonne',\n customComboTooltip: 'Combinaison Personnalisée',\n innerRadius: 'Rayon intérieur',\n startAngle: 'Angle de départ',\n endAngle: 'Angle de fin',\n reverseDirection: 'Inverser la direction',\n groupPadding: 'Rembourrage de groupe',\n seriesPadding: 'Rembourrage de séries',\n tile: 'Tuile',\n whisker: 'Moustache',\n cap: 'Capuchon',\n capLengthRatio: 'Ratio de longueur',\n labelPlacement: 'Placement',\n inside: \"À l'intérieur\",\n outside: \"À l'extérieur\",\n noDataToChart: 'Aucune donnée disponible à afficher.',\n pivotChartRequiresPivotMode:\n 'Le graphique croisé dynamique nécessite le mode croisé activé.',\n chartSettingsToolbarTooltip: 'Menu',\n chartLinkToolbarTooltip: 'Lié à la grille',\n chartUnlinkToolbarTooltip: 'Détaché de la grille',\n chartDownloadToolbarTooltip: 'Télécharger le graphique',\n chartMenuToolbarTooltip: 'Menu',\n chartEdit: 'Modifier le graphique',\n chartAdvancedSettings: 'Paramètres avancés',\n chartLink: 'Lier à la grille',\n chartUnlink: 'Détacher de la grille',\n chartDownload: 'Télécharger le graphique',\n histogramFrequency: 'Fréquence',\n seriesChartType: 'Type de graphique de séries',\n seriesType: 'Type de série',\n secondaryAxis: 'Axe secondaire',\n seriesAdd: 'Ajouter une série',\n categoryAdd: 'Ajouter une catégorie',\n bar: 'Barre',\n column: 'Colonne',\n histogram: 'Histogramme',\n advancedSettings: 'Paramètres avancés',\n direction: 'Direction',\n horizontal: 'Horizontal',\n vertical: 'Vertical',\n seriesGroupType: 'Type de groupe',\n groupedSeriesGroupType: 'Groupé',\n stackedSeriesGroupType: 'Empilé',\n normalizedSeriesGroupType: '100% Empilé',\n legendEnabled: 'Activé',\n invalidColor: 'La valeur de couleur est invalide',\n groupedColumnFull: 'Colonne groupée',\n stackedColumnFull: 'Colonne empilée',\n normalizedColumnFull: 'Colonne 100% empilée',\n groupedBarFull: 'Barre groupée',\n stackedBarFull: 'Barre empilée',\n normalizedBarFull: 'Barre 100% empilée',\n stackedAreaFull: 'Zone empilée',\n normalizedAreaFull: 'Zone 100% empilée',\n customCombo: 'Combinaison personnalisée',\n funnel: 'Entonnoir',\n coneFunnel: 'Entonnoir Cône',\n pyramid: 'Pyramide',\n funnelGroup: 'Entonnoir',\n funnelTooltip: 'Entonnoir',\n coneFunnelTooltip: 'Entonnoir Cône',\n pyramidTooltip: 'Pyramide',\n dropOff: 'Abandon',\n stageLabels: 'Étiquettes de Stade',\n reverse: 'Inverser',\n tooltipMode: \"Mode d'info-bulle\",\n tooltipModeSingle: 'Unique',\n tooltipModeShared: 'Multiple',\n tooltipModeCompact: 'Compact',\n\n // ARIA\n ariaAdvancedFilterBuilderItem:\n '${variable}. Niveau ${variable}. Appuyez sur ENTER pour éditer.',\n ariaAdvancedFilterBuilderItemValidation:\n '${variable}. Niveau ${variable}. ${variable} Appuyez sur ENTER pour éditer.',\n ariaAdvancedFilterBuilderList: 'Liste de cadre de filtre avancé',\n ariaAdvancedFilterBuilderFilterItem: 'Condition de filtre',\n ariaAdvancedFilterBuilderGroupItem: 'Groupe de filtre',\n ariaAdvancedFilterBuilderColumn: 'Colonne',\n ariaAdvancedFilterBuilderOption: 'Option',\n ariaAdvancedFilterBuilderValueP: 'Valeur',\n ariaAdvancedFilterBuilderJoinOperator: 'Opérateur de jonction',\n ariaAdvancedFilterInput: 'Entrée de filtre avancé',\n ariaChecked: 'coché',\n ariaColumn: 'Colonne',\n ariaColumnGroup: 'Groupe de colonnes',\n ariaFilterActive: 'Filtre actif',\n ariaColumnFiltered: 'Colonne filtrée',\n ariaCalculatedColumn: 'Colonne calculée',\n ariaColumnShowValuesAs: 'Affichage des valeurs en tant que',\n ariaColumnSelectAll: 'Basculer la visibilité de toutes les colonnes',\n ariaDateFilterInput: 'Entrée de filtre de date',\n ariaDefaultListName: 'Liste',\n ariaFilterColumnsInput: 'Entrée de filtre de colonnes',\n ariaFilterFromValue: 'Filtrer depuis la valeur',\n ariaFilterInput: 'Entrée de filtre',\n ariaFilterList: 'Liste de filtres',\n ariaFilterToValue: \"Filtrer jusqu'à la valeur\",\n ariaFilterValue: 'Valeur du filtre',\n ariaFilterMenuOpen: 'Ouvrir le menu de filtre',\n ariaFilteringOperator: 'Opérateur de filtrage',\n ariaHidden: 'caché',\n ariaIndeterminate: 'indéterminé',\n ariaInputEditor: \"Éditeur d'entrée\",\n ariaMenuColumn: 'Appuyez sur ALT BAS pour ouvrir le menu de colonne',\n ariaFilterColumn: 'Appuyez sur CTRL ENTER pour ouvrir le filtre',\n ariaRowDeselect: 'Appuyez sur ESPACE pour désélectionner cette ligne',\n ariaHeaderSelection: \"Colonne avec sélection d'en-tête\",\n ariaSelectAllCells:\n 'Appuyez sur Espace ou Entrée pour sélectionner toutes les cellules',\n ariaSelectAllRowCells:\n 'Appuyez sur Entrée pour sélectionner toutes les cellules de cette ligne',\n ariaColumnCellSelection:\n 'Appuyez sur Entrée pour basculer la sélection de toutes les cellules visibles de cette colonne',\n ariaColumnGroupCellSelection:\n 'Appuyez sur Entrée pour basculer la sélection de toutes les cellules visibles de ce groupe de colonnes',\n ariaColumnGroupExpansion:\n 'Appuyez sur ENTER pour développer ou réduire ce groupe de colonnes',\n ariaColumnGroupCellSelectionAndExpansion:\n 'Appuyez sur Entrée pour basculer la sélection de toutes les cellules visibles de ce groupe de colonnes. Appuyez sur ALT ENTER pour développer ou réduire ce groupe de colonnes',\n ariaRowSelectAll:\n 'Appuyez sur ESPACE pour basculer la sélection de toutes les lignes',\n ariaRowToggleSelection:\n 'Appuyez sur ESPACE pour basculer la sélection de la ligne',\n ariaRowSelect: 'Appuyez sur ESPACE pour sélectionner cette ligne',\n ariaRowSelectionDisabled:\n 'La sélection de lignes est désactivée pour cette ligne',\n ariaSearch: 'Rechercher',\n ariaSortableColumn: 'Appuyez sur ENTER pour trier',\n ariaSortableColumnWithCellSelection: 'Appuyez sur ALT ENTER pour trier',\n ariaToggleVisibility: 'Appuyez sur ESPACE pour basculer la visibilité',\n ariaToggleCellValue:\n 'Appuyez sur ESPACE pour basculer la valeur de la cellule',\n ariaUnchecked: 'non coché',\n ariaVisible: 'visible',\n ariaSearchFilterValues: 'Rechercher les valeurs de filtre',\n ariaPageSizeSelectorLabel: 'Taille de page',\n ariaChartMenuClose: \"Fermer le menu d'édition de graphique\",\n ariaChartSelected: 'Sélectionné',\n ariaSparklineChartDescription:\n 'Sparkline - ${chartType} affichant ${count} valeurs entre ${min} et ${max}. Commence à ${start} et se termine à ${end}.',\n ariaSparklineChartDescriptionSingleValue:\n 'Sparkline - ${chartType} affichant 1 valeur : ${value}.',\n ariaSparklineChartDescriptionEmpty:\n \"Sparkline - ${chartType} n'affichant aucune valeur.\",\n ariaSkeletonCellLoadingFailed: 'Le chargement de la ligne a échoué',\n ariaSkeletonCellLoading:\n 'Les données de la ligne sont en cours de chargement',\n ariaDeferSkeletonCellLoading: 'La cellule est en cours de chargement',\n\n // ARIA for Batch Edit\n ariaPendingChange: 'Modification en attente',\n\n // ARIA Labels for Drop Zones\n ariaRowGroupDropZonePanelLabel: 'Groupes de lignes',\n ariaValuesDropZonePanelLabel: 'Valeurs',\n ariaPivotDropZonePanelLabel: 'Étiquettes de colonnes',\n ariaDropZoneColumnComponentDescription: 'Appuyez sur SUPPRIMER pour enlever',\n ariaDropZoneColumnValueItemDescription:\n \"Appuyez sur ENTRÉE pour changer le type d'agrégation\",\n ariaDropZoneColumnGroupItemDescription: 'Appuyez sur ENTRÉE pour trier',\n\n // used for aggregate drop zone, format: {aggregation}{ariaDropZoneColumnComponentAggFuncSeparator}{column name}\n ariaDropZoneColumnComponentAggFuncSeparator: ' de ',\n ariaDropZoneColumnComponentSortAscending: 'ascendant',\n ariaDropZoneColumnComponentSortDescending: 'descendant',\n ariaDropZoneColumnComponentSortAbsoluteAscending: 'ascendant absolu',\n ariaDropZoneColumnComponentSortAbsoluteDescending: 'descendant absolu',\n ariaLabelDialog: 'Dialogue',\n ariaLabelColumnMenu: 'Menu de colonne',\n ariaLabelColumnFilter: 'Filtre de colonne',\n ariaLabelSelectField: 'Champ de sélection',\n\n // Cell Editor\n ariaValidationErrorPrefix: \"Validation de l'éditeur de cellule\",\n ariaLabelLoadingContextMenu: 'Chargement du menu contextuel',\n\n // aria labels for rich select\n ariaLabelRichSelectField: 'Champ de sélection enrichie',\n ariaLabelRichSelectToggleSelection:\n 'Appuyez sur ESPACE pour basculer la sélection',\n ariaLabelRichSelectDeselectAllItems:\n 'Appuyez sur SUPPRIMER pour désélectionner tous les éléments',\n ariaLabelRichSelectDeleteSelection:\n \"Appuyez sur SUPPRIMER pour désélectionner l'élément\",\n ariaLabelTooltip: 'Info-bulle',\n ariaLabelContextMenu: 'Menu contextuel',\n ariaLabelSubMenu: 'Sous-menu',\n ariaLabelAggregationFunction: \"Fonction d'agrégation\",\n ariaLabelAdvancedFilterAutocomplete: 'Filtre avancé auto-complétion',\n ariaLabelAdvancedFilterBuilderAddField:\n 'Filtre avancé constructeur Ajouter un champ',\n ariaLabelAdvancedFilterBuilderColumnSelectField:\n 'Filtre avancé constructeur Sélectionnez le champ de colonne',\n ariaLabelAdvancedFilterBuilderOptionSelectField:\n \"Filtre avancé constructeur Sélectionnez le champ d'option\",\n ariaLabelAdvancedFilterBuilderJoinSelectField:\n \"Filtre avancé constructeur Sélectionnez le champ de l'opérateur de jointure\",\n\n // ARIA Labels for the Side Bar\n ariaColumnPanelList: 'Liste des colonnes',\n ariaFilterPanelList: 'Liste des filtres',\n\n // ARIA labels for new Filters Tool Panel\n ariaLabelAddFilterField: 'Ajouter un champ de filtre',\n ariaLabelFilterCardDelete: 'Supprimer le filtre',\n ariaLabelFilterCardHasEdits: 'A des modifications',\n ariaHasNote: 'Cette cellule a une note.',\n\n // Number Format (Status Bar, Pagination Panel)\n thousandSeparator: ',',\n decimalSeparator: '.',\n\n // Data types\n dataTypeText: 'Texte',\n dataTypeNumber: 'Nombre',\n dataTypeBigInt: 'BigInt',\n dataTypeBoolean: 'Booléen',\n dataTypeDate: 'Date',\n dataTypeDateString: 'Chaîne de date',\n dataTypeDateTime: 'Date et heure',\n dataTypeDateTimeString: 'Chaîne de date et heure',\n dataTypeObject: 'Objet',\n true: 'Vrai',\n false: 'Faux',\n invalidDate: 'Date invalide',\n invalidNumber: 'Nombre invalide',\n invalidBigInt: 'BigInt invalide',\n january: 'Janvier',\n february: 'Février',\n march: 'Mars',\n april: 'Avril',\n may: 'Mai',\n june: 'Juin',\n july: 'Juillet',\n august: 'Août',\n september: 'Septembre',\n october: 'Octobre',\n november: 'Novembre',\n december: 'Décembre',\n\n // Date-time parts\n year: 'Année',\n quarter: 'Trimestre',\n month: 'Mois',\n day: 'Jour',\n hour: 'Heure',\n minute: 'Minute',\n second: 'Seconde',\n\n // Time formats\n timeFormatSlashesDDMMYYYY: 'JJ/MM/AAAA',\n timeFormatSlashesMMDDYYYY: 'MM/JJ/AAAA',\n timeFormatSlashesDDMMYY: 'JJ/MM/AA',\n timeFormatSlashesMMDDYY: 'MM/JJ/AA',\n timeFormatDotsDDMYY: 'JJ.M.AA',\n timeFormatDotsMDDYY: 'M.JJ.AA',\n timeFormatDashesYYYYMMDD: 'AAAA-MM-JJ',\n timeFormatSpacesDDMMMMYYYY: 'JJ MMMM AAAA',\n timeFormatHHMMSS: 'HH:MM:SS',\n timeFormatHHMMSSAmPm: 'HH:MM:SS AM/PM',\n\n // Editable Column Header Name\n editColumnName: 'Modifier le nom de la colonne',\n ariaColumnHeaderNameEditor: 'Éditeur de nom de colonne',\n columnHeaderEditApply: 'Appliquer',\n columnHeaderEditCancel: 'Annuler',\n\n // Calculated Columns\n calculatedColumn: 'Colonne calculée',\n calculatedColumnAdd: 'Ajouter une colonne calculée',\n calculatedColumnEdit: 'Modifier la colonne calculée',\n calculatedColumnRemove: 'Supprimer la colonne calculée',\n calculatedColumnTitle: 'Titre',\n calculatedColumnType: 'Type',\n calculatedColumnExpression: 'Expression',\n calculatedColumnExpressionPlaceholder: 'Saisissez ici',\n calculatedColumnExpressionToolsLabel: 'Insérer',\n calculatedColumnColumns: 'Colonnes',\n calculatedColumnFunctions: 'Fonctions',\n calculatedColumnOperators: 'Opérateurs',\n calculatedColumnSuggestions: 'Suggestions de colonne calculée',\n calculatedColumnDefaultTitle: 'Sans titre',\n calculatedColumnExpressionAmbiguousReference:\n 'Référence de colonne ambiguë \"${variable}\". Utilisez la liste Colonnes ou un chemin de groupe plus spécifique.',\n calculatedColumnExpressionUnknownReference:\n 'Référence de colonne inconnue \"${variable}\".',\n calculatedColumnExpressionEmpty: 'Saisissez une expression',\n calculatedColumnTitleEmpty: 'Saisissez un titre',\n calculatedColumnApply: 'Appliquer',\n calculatedColumnCancel: 'Annuler',\n\n // Notes\n note: 'Note de cellule',\n addNote: 'Ajouter une note',\n viewNote: 'Afficher la note',\n editNote: 'Modifier la note',\n deleteNote: 'Supprimer la note',\n notePlaceholder: 'Ajouter une note...',\n};\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 inject,\n viewChild,\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 public readonly input = viewChild('skyCellEditorAutocomplete', {\n read: ElementRef,\n });\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 const input = this.input();\n if (input) {\n input.nativeElement.focus();\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n const charPress = this.#params?.eventKey as string;\n\n input.nativeElement.select();\n input.nativeElement.setRangeText(charPress);\n // Ensure the cursor is at the end of the text.\n input.nativeElement.setSelectionRange(\n charPress.length,\n charPress.length,\n );\n input.nativeElement.dispatchEvent(new Event('input'));\n }\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n 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 inject,\n viewChild,\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 public readonly input = viewChild('skyCellEditorCurrency', {\n read: ElementRef,\n });\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 ViewEncapsulation,\n inject,\n viewChild,\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 public readonly datepickerInput = viewChild('skyCellEditorDatepickerInput', {\n read: ElementRef,\n });\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 = SkyAgGridCellEditorUtils.subtractOrZero(\n this.columnWidth,\n 2,\n );\n this.rowHeightWithoutBorders = SkyAgGridCellEditorUtils.subtractOrZero(\n this.#params.node.rowHeight as number,\n 3,\n );\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 SkyAgGridCellEditorUtils.subtractOrZero(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 | 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 || undefined\"\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 public readonly input = viewChild('skyCellEditorNumber', {\n read: ElementRef,\n });\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 const input = this.input();\n if (input) {\n input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n 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 public readonly input = viewChild('skyCellEditorText', { read: ElementRef });\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 const input = this.input();\n if (input) {\n input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n 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 | 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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n inject,\n} 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 readonly #changeDetector = inject(ChangeDetectorRef);\n\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 this.#changeDetector.markForCheck();\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 inject,\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 readonly #changeDetector = inject(ChangeDetectorRef);\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 inject,\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 readonly #changeDetector = inject(ChangeDetectorRef);\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 {\n ChangeDetectionStrategy,\n Component,\n Signal,\n TemplateRef,\n isSignal,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-community';\n\nimport { SkyCellRendererTemplateContext } from '../../types/cell-renderer-template-context';\n\ntype CellState =\n | {\n hasTemplate: true;\n template: TemplateRef<SkyCellRendererTemplateContext>;\n context: SkyCellRendererTemplateContext;\n }\n | {\n hasTemplate: 'signal';\n template: Signal<TemplateRef<SkyCellRendererTemplateContext>>;\n context: SkyCellRendererTemplateContext;\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 changeDetection: ChangeDetectionStrategy.Eager,\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<SkyCellRendererTemplateContext>\n | Signal<TemplateRef<SkyCellRendererTemplateContext>>\n | undefined = hasTemplate\n ? (params.colDef?.cellRendererParams.template as\n | TemplateRef<SkyCellRendererTemplateContext>\n | Signal<TemplateRef<SkyCellRendererTemplateContext>>)\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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n computed,\n ElementRef,\n EnvironmentInjector,\n inject,\n linkedSignal,\n signal,\n viewChild,\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 { EMPTY, switchMap } from 'rxjs';\n\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\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, SkyI18nModule],\n})\nexport class SkyAgGridHeaderGroupComponent\n implements IHeaderGroupAngularComp, AfterViewInit\n{\n public readonly inlineHelpContainer = viewChild('inlineHelpContainer', {\n read: ElementRef,\n });\n\n protected readonly params = signal<SkyAgGridHeaderGroupParams | undefined>(\n undefined,\n );\n protected readonly isExpandable = computed(() =>\n this.#providedColumnGroup()?.isExpandable(),\n );\n protected readonly isExpanded = linkedSignal(() =>\n this.#providedColumnGroup()?.isExpanded(),\n );\n\n readonly #providedColumnGroup = computed<ProvidedColumnGroup | undefined>(\n () => this.params()?.columnGroup?.getProvidedColumnGroup(),\n );\n readonly #gridApi = toObservable(computed(() => this.params()?.api));\n readonly #columnGroupOpened = this.#gridApi.pipe(\n switchMap((api) => (api ? fromGridEvent(api, 'columnGroupOpened') : EMPTY)),\n );\n\n #agInitialized = false;\n #viewInitialized = false;\n #inlineHelpComponentRef: ComponentRef<unknown> | undefined;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dynamicComponentService = inject(SkyDynamicComponentService);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n constructor() {\n this.#columnGroupOpened.pipe(takeUntilDestroyed()).subscribe((event) => {\n const columnGroup = this.#providedColumnGroup();\n if (\n columnGroup &&\n columnGroup.isExpandable() &&\n event.columnGroups.includes(columnGroup)\n ) {\n this.isExpanded.set(columnGroup.isExpanded());\n }\n });\n }\n\n public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public agInit(params: SkyAgGridHeaderGroupParams | undefined): void {\n this.params.set(params);\n this.#agInitialized = true;\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 columnGroup = this.params()?.columnGroup;\n const colGroupDef = columnGroup?.getColGroupDef();\n const inlineHelpComponent =\n colGroupDef?.headerGroupComponentParams?.inlineHelpComponent;\n\n if (\n columnGroup &&\n inlineHelpComponent &&\n (!this.#inlineHelpComponentRef ||\n this.#inlineHelpComponentRef.componentType !== inlineHelpComponent)\n ) {\n this.#dynamicComponentService.removeComponent(\n this.#inlineHelpComponentRef,\n );\n\n const headerGroupInfo = new SkyAgGridHeaderGroupInfo();\n headerGroupInfo.columnGroup = columnGroup;\n headerGroupInfo.context = this.params()?.context;\n headerGroupInfo.displayName = this.params()?.displayName;\n\n this.#inlineHelpComponentRef =\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()) {\n @if (isExpanded()) {\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 effect,\n inject,\n model,\n signal,\n} from '@angular/core';\nimport { SkyCheckboxChange, SkyCheckboxModule } from '@skyux/forms';\n\nimport { IHeaderAngularComp } from 'ag-grid-angular';\nimport {\n GridApi,\n IHeaderParams,\n SelectionChangedEvent,\n} from 'ag-grid-community';\nimport { Subscription } from 'rxjs';\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 // Treat every `agInit()` call as a change (even if the params reference\n // is reused) so the grid-event listener effects below always tear down\n // and reattach rather than being skipped due to signal equality.\n equal: () => false,\n });\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 // Selection changes, for multi-select grids.\n effect((onCleanup) => {\n const api = this.params()?.api;\n if (!api || !this.multiSelect()) {\n return;\n }\n const handler = (change: SelectionChangedEvent): void => {\n if (api.isDestroyed()) {\n return;\n }\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 api.addEventListener('selectionChanged', handler);\n onCleanup(() => api.removeEventListener('selectionChanged', handler));\n });\n\n // Clear selection state when row data is replaced, for multi-select grids.\n effect((onCleanup) => {\n const api = this.params()?.api;\n if (!api || !this.multiSelect()) {\n return;\n }\n const handler = (): void => {\n if (api.isDestroyed()) {\n return;\n }\n this.indeterminate.set(!!api.getSelectedNodes().length);\n this.checked.set(false);\n };\n api.addEventListener('rowDataUpdated', handler);\n onCleanup(() => api.removeEventListener('rowDataUpdated', handler));\n });\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 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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EnvironmentInjector,\n computed,\n effect,\n inject,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\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 { EMPTY, switchMap } 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, SkyI18nModule],\n})\nexport class SkyAgGridHeaderComponent\n implements IHeaderAngularComp, AfterViewInit\n{\n public readonly filterEnabled = signal(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 protected readonly inlineHelpContainer = viewChild('inlineHelpContainer', {\n read: ElementRef,\n });\n\n protected readonly params = signal<SkyAgGridHeaderParams | undefined>(\n undefined,\n );\n protected sorted = '';\n protected readonly sortOrder = linkedSignal<'asc' | 'desc' | undefined>(\n () => this.params()?.column.getSort() || undefined,\n );\n protected readonly sortIndexDisplay = linkedSignal(() =>\n this.#computeSortIndexDisplay(),\n );\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 #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 readonly #paramsChanges = toObservable(this.params);\n readonly #sortChanged = this.#paramsChanges.pipe(\n switchMap((params) =>\n params?.enableSorting && params.api\n ? fromGridEvent(params.api, 'sortChanged')\n : EMPTY,\n ),\n );\n readonly #columnMoved = this.#paramsChanges.pipe(\n switchMap((params) =>\n params?.api ? fromGridEvent(params.api, 'columnMoved') : EMPTY,\n ),\n );\n\n constructor() {\n // Column filter state changes\n effect((onCleanup) => {\n const column = this.params()?.column;\n if (!column?.isFilterAllowed()) {\n this.filterEnabled.set(false);\n return;\n }\n this.filterEnabled.set(column.isFilterActive());\n const handler = (): void =>\n this.filterEnabled.set(column.isFilterActive());\n column.addEventListener('filterChanged', handler);\n onCleanup(() => column.removeEventListener('filterChanged', handler));\n });\n\n // Column sort state changes\n effect((onCleanup) => {\n const params = this.params();\n if (!params?.enableSorting) {\n return;\n }\n const column = params.column;\n const handler = (): void =>\n this.sortOrder.set(column.getSort() || undefined);\n column.addEventListener('sortChanged', handler);\n onCleanup(() => column.removeEventListener('sortChanged', handler));\n });\n\n // Other column sort state changes, for multi-column sorting\n this.#sortChanged.pipe(takeUntilDestroyed()).subscribe(() => {\n this.sortIndexDisplay.set(this.#computeSortIndexDisplay());\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.#columnMoved.pipe(takeUntilDestroyed()).subscribe((event) => {\n const params = this.params();\n const left = params?.column.getLeft() ?? 0;\n const oldLeft = this.#leftPosition;\n if (\n params &&\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 public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n }\n\n public agInit(params: SkyAgGridHeaderParams | undefined): void {\n this.#agInitialized = true;\n this.params.set(params);\n this.#leftPosition = params?.column.getLeft() ?? 0;\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 #computeSortIndexDisplay(): string {\n const params = this.params();\n const sortIndex = params?.column.getSortIndex();\n const otherSortColumns = params?.api\n ?.getColumns()\n ?.some(\n (column) =>\n column.getColId() !== params?.column.getColId() && !!column.getSort(),\n );\n return sortIndex !== undefined && sortIndex !== null && otherSortColumns\n ? `${sortIndex + 1}`\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()) {\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(); 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(); 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 {\n CSP_NONCE,\n DOCUMENT,\n Injectable,\n computed,\n inject,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { SkyLogService } from '@skyux/core';\nimport { SkyDateService } from '@skyux/datetime';\nimport { SkyAppLocaleProvider, 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 LocaleText,\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 { AG_GRID_LOCALE_ES } from '../shared/ag-grid-locale-es-ES';\nimport { AG_GRID_LOCALE_FR } from '../shared/ag-grid-locale-fr-FR';\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\nconst skyAgGridLocaleTextDefaults = {\n noRowsToShow: 'No data available',\n noMatchingRows: 'No matching rows',\n} satisfies LocaleText;\n\n/**\n * AG Grid's stock translations, keyed by the language subtag of the app's\n * locale. Locales without an entry supply no translations, leaving AG Grid to\n * use its own built-in English text.\n */\nconst agGridLocaleTextByLanguage: Record<string, LocaleText> = {\n es: AG_GRID_LOCALE_ES,\n fr: AG_GRID_LOCALE_FR,\n};\n\nconst skyAgGridLocaleTextResourceKeys: Record<\n keyof typeof skyAgGridLocaleTextDefaults,\n string\n> = {\n noRowsToShow: 'sky_ag_grid_locale_no_rows_to_show',\n noMatchingRows: 'sky_ag_grid_locale_no_matching_rows',\n};\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 * Locale text combines AG Grid's stock translations for the app's locale with SKY UX resource\n * strings, and is resolved once, when the grid options are created. [AG Grid does not re-read\n * locale text after a grid is created](https://www.ag-grid.com/angular-data-grid/localisation/),\n * so an application that changes locale at runtime must call this service again and destroy and\n * recreate the grid. Setting `gridOptions.getLocaleText` replaces SKY UX locale text entirely —\n * use `gridOptions.localeText` to override individual strings instead.\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 readonly #localeText = toSignal(\n this.#resources?.getStrings(skyAgGridLocaleTextResourceKeys) ??\n of(skyAgGridLocaleTextDefaults),\n { initialValue: skyAgGridLocaleTextDefaults },\n );\n readonly #locale = toSignal(inject(SkyAppLocaleProvider).getLocaleInfo());\n readonly #localeTextWithDefaults = computed(() => {\n // Split on the subtag delimiter rather than slicing a fixed width: a BCP 47\n // primary language subtag can be three letters (e.g. `fil-PH`), which a\n // two-character slice would silently turn into a different language.\n const [language] = (this.#locale()?.locale ?? 'en-US')\n .toLowerCase()\n .split('-');\n\n // SKY UX resource strings are applied last so they override AG Grid's\n // stock wording for the keys SKY UX intentionally rewords. Keys left\n // unset fall through to AG Grid's own built-in English text.\n return {\n ...agGridLocaleTextByLanguage[language],\n ...this.#localeText(),\n };\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 *\n * Locale text is resolved once, at call time. If the application's locale changes at\n * runtime, destroy and recreate the grid to pick up the new locale text.\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 *\n * Locale text is resolved once, at call time. If the application's locale changes at\n * runtime, destroy and recreate the grid to pick up the new locale text.\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 localeText: {\n ...defaultGridOptions.localeText,\n ...providedGridOptions.localeText,\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 | 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 localeText: this.#localeTextWithDefaults(),\n loadingOverlayComponent: SkyAgGridLoadingComponent,\n onCellFocused: (event: CellFocusedEvent) => this.#onCellFocused(event),\n paginationPageSizeSelector: false,\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n ColDef,\n ICellEditorParams,\n ICellRendererParams,\n} from 'ag-grid-community';\n\nimport { SkyCellEditorParamsByType } from './cell-editor-params-by-type';\nimport { SkyCellRendererParamsByType } from './cell-renderer-params-by-type';\nimport { SkyCellType } from './cell-type';\n\n// Merges the params of all cell types in a union into a single type. Cell\n// types that accept no params map to `never`, so the intersection stays `never`\n// (rejecting any params) instead of collapsing to `unknown`.\ntype UnionToIntersection<U> = [U] extends [never]\n ? never\n : (U extends unknown ? (u: U) => void : never) extends (i: infer I) => void\n ? I\n : never;\n\n/**\n * A column definition that validates `cellEditorParams` and\n * `cellRendererParams` against the SKY UX cell types in the column's `type`\n * property. Combine cell types by passing a union of `SkyCellType` values,\n * like `SkyAgGridColDef<SkyCellType.Number | SkyCellType.Validator>`.\n */\nexport type SkyAgGridColDef<\n T extends SkyCellType,\n TData = any,\n TValue = any,\n> = Omit<\n ColDef<TData, TValue>,\n 'type' | 'cellEditorParams' | 'cellRendererParams'\n> & {\n type: T | T[];\n cellEditorParams?:\n | UnionToIntersection<SkyCellEditorParamsByType[T]>\n | ((\n params: ICellEditorParams<TData, TValue>,\n ) => UnionToIntersection<SkyCellEditorParamsByType[T]>);\n cellRendererParams?:\n | UnionToIntersection<SkyCellRendererParamsByType<TData, TValue>[T]>\n | ((\n params: ICellRendererParams<TData, TValue>,\n ) => UnionToIntersection<SkyCellRendererParamsByType<TData, TValue>[T]>);\n};\n\n/**\n * Builds a column definition whose `cellEditorParams` and `cellRendererParams`\n * are validated against the SKY UX cell types in the `type` property. The cell\n * type is inferred, so no type arguments are needed:\n * ```\n * defineSkyAgGridColDef({\n * field: 'endDate',\n * type: [SkyCellType.Date, SkyCellType.Validator],\n * cellRendererParams: { skyComponentProperties: { validator: ... } },\n * })\n * ```\n */\n// `C` preserves the exact shape of the passed literal (like `satisfies`), `F`\n// keeps `field` narrowed to its literal type for row-typed grid options, and\n// the `Record` intersection rejects misspelled or unknown properties.\nexport function defineSkyAgGridColDef<\n T extends SkyCellType,\n F extends string = never,\n C extends SkyAgGridColDef<T> = SkyAgGridColDef<T>,\n>(\n colDef: C &\n SkyAgGridColDef<T> & { field?: F } & Record<\n Exclude<keyof C, keyof SkyAgGridColDef<T>>,\n never\n >,\n): C & { field?: F } {\n return colDef;\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 {\n defineSkyAgGridColDef,\n type SkyAgGridColDef,\n} from './lib/modules/ag-grid/types/ag-grid-col-def';\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 type { SkyCellEditorParamsByType } from './lib/modules/ag-grid/types/cell-editor-params-by-type';\nexport { SkyAgGridCellEditorUtils } from './lib/modules/ag-grid/types/cell-editor-utils';\nexport type { SkyCellRendererParamsByType } from './lib/modules/ag-grid/types/cell-renderer-params-by-type';\nexport type { SkyCellRendererTemplateContext } from './lib/modules/ag-grid/types/cell-renderer-template-context';\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/shared/ag-grid-locale-es-ES.ts","../../../../../libs/components/ag-grid/src/lib/modules/shared/ag-grid-locale-fr-FR.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/lib/modules/ag-grid/types/ag-grid-col-def.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 sky_ag_grid_locale_no_rows_to_show: { message: 'No data available' },\n sky_ag_grid_locale_no_matching_rows: { message: 'No matching rows' },\n },\n ES: {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Selector de fila para la fila {0}',\n },\n sky_ag_grid_row_selector_column_heading: { message: 'Selección de filas' },\n sky_ag_grid_cell_editor_datepicker_aria_label: {\n message: 'Fecha editable {0} para la fila {1}',\n },\n sky_ag_grid_cell_editor_datepicker_hint_text: {\n message: 'Utilice el formato {0}.',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Número editable {0} para la fila {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Texto editable {0} para la fila {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Autocompletado editable {0} para la fila {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Introduzca un número válido.',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Introduzca un valor de moneda válido.',\n },\n skyux_lookup_tokens_summary: { message: '{0} artículos seleccionados' },\n sky_ag_grid_cell_editor_currency_aria_label: {\n message: 'Valor de moneda editable {0} para la fila {1}',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_asc: {\n message: 'Ordenar columna {0}, actualmente en orden ascendente',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_desc: {\n message: 'Ordenar columna {0}, actualmente en orden descendente',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted: {\n message: 'Ordenar columna {0}, actualmente sin ordenar',\n },\n sky_ag_grid_column_group_header_expand_aria_label: {\n message: 'Expandir grupo de columnas {0}',\n },\n sky_ag_grid_column_group_header_collapse_aria_label: {\n message: 'Contraer grupo de columnas {0}',\n },\n sky_ag_grid_locale_no_rows_to_show: { message: 'No hay datos disponibles' },\n sky_ag_grid_locale_no_matching_rows: {\n message: 'No hay filas coincidentes',\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} éléments 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 sky_ag_grid_locale_no_rows_to_show: { message: 'Aucune donnée disponible' },\n sky_ag_grid_locale_no_matching_rows: {\n message: 'Aucune ligne correspondante',\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 accentColor:\n 'var(--sky-override-ag-grid-accent-color, var(--sky-color-border-input-focus))',\n focusShadow:\n '0px 0px 0px var(--sky-override-ag-grid-focus-border-width, var(--sky-border-width-input-focus)) var(--sky-override-ag-grid-focus-border-color, var(--sky-color-border-input-focus))',\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 // The width term includes `--sky-ag-grid-top-scroll-height` (0 unless the\n // wrapper reserves space for a top horizontal scrollbar) because this border\n // is the only theme value AG Grid adds into all of its header-adjacent\n // geometry (pinned/sticky row offsets, body viewport height, fake scrollbar\n // spacers). `_base.scss` pins the other consumers of this border width\n // (header-cell border-top, vertical-scroll spacer) back to the un-inflated\n // width.\n headerRowBorder:\n 'calc(var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-separator-row)) + var(--sky-ag-grid-top-scroll-height, 0px)) 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 // See the `headerRowBorder` comment in `defaultsForAllThemes`.\n headerRowBorder:\n 'calc(var(--sky-override-ag-grid-row-border-width, var(--sky-border-width-emphasized)) + var(--sky-ag-grid-top-scroll-height, 0px)) 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-light`;\n if (agGridThemeIsCompact(themeSettings, compactLayout)) {\n theme += `-compact`;\n }\n } else {\n theme += 'default';\n }\n return theme as SkyAgGridThemeType;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { SkyCoreAdapterService } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridAdapterService {\n readonly #skyAdapterService = inject(SkyCoreAdapterService);\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 * Use `defineSkyAgGridColDef()` to validate a column definition's `cellEditorParams` and `cellRendererParams` against its cell type.\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 in 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 DestroyRef,\n ElementRef,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n inject,\n input,\n linkedSignal,\n numberAttribute,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n SkyIdModule,\n SkyMutationObserverService,\n SkyResizeObserverService,\n SkyViewkeeperModule,\n} from '@skyux/core';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport {\n CellEditingStartedEvent,\n CellFocusedEvent,\n DomLayoutType,\n HeaderFocusedEvent,\n} from 'ag-grid-community';\nimport {\n EMPTY,\n Subject,\n asapScheduler,\n combineLatestWith,\n delay,\n distinctUntilChanged,\n filter,\n map,\n merge,\n of,\n shareReplay,\n switchMap,\n} from 'rxjs';\n\nimport {\n getSkyAgGridTheme,\n getSkyAgGridThemeClassName,\n} from '../../styles/ag-grid-theme';\n\nimport {\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} 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 /**\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 readonly #idIndex = idIndex++;\n protected readonly afterAnchorId =\n 'sky-ag-grid-nav-anchor-after-' + this.#idIndex;\n protected readonly beforeAnchorId =\n 'sky-ag-grid-nav-anchor-before-' + this.#idIndex;\n protected readonly gridId = 'sky-ag-grid-' + this.#idIndex;\n\n /**\n * Whether to stop keeping the column headers visible while the page scrolls,\n * for a host that keeps them visible itself. This is applied when the grid\n * initializes.\n * @internal\n */\n public readonly viewkeeperDisabled = input(false, {\n transform: booleanAttribute,\n });\n public readonly viewkeeperSuppressed = linkedSignal(() =>\n this.viewkeeperDisabled(),\n );\n\n /**\n * @internal\n */\n public readonly viewkeeperClasses = linkedSignal<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { domLayout: DomLayoutType | undefined; context: any; suppressed: boolean },\n string[]\n >({\n source: () => ({\n domLayout: this.#agGridDomLayout(),\n context: this.agGridContext(),\n suppressed: this.viewkeeperSuppressed(),\n }),\n computation: (source) => {\n if (source.suppressed) {\n return [];\n }\n const enableTopScroll = !!source.context?.enableTopScroll;\n if (source.domLayout === 'autoHeight' && enableTopScroll) {\n return ['.ag-header', '.ag-body-horizontal-scroll'];\n }\n return ['.ag-header'];\n },\n equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]),\n });\n\n get #isInEditMode(): boolean {\n const api = this.#agGridApi();\n if (api && !api.isDestroyed()) {\n const primaryGridEditing = !!api.getEditingCells()?.length;\n if (primaryGridEditing) {\n return true;\n } else if (api.getGridOption('masterDetail')) {\n let innerEditing = false;\n api.forEachDetailGridInfo((detailGrid) => {\n if (detailGrid?.api && !!detailGrid.api.getEditingCells()?.length) {\n innerEditing = true;\n }\n });\n\n return innerEditing;\n }\n }\n return false;\n }\n\n protected readonly agGrid = contentChild(AgGridAngular);\n\n protected readonly skyAgGridDiv =\n viewChild<ElementRef<HTMLElement>>('skyAgGridDiv');\n\n protected readonly agGridContext = computed(\n () => this.agGrid()?.gridOptions?.context,\n );\n protected readonly isNormalLayout = computed(\n () => this.#agGridDomLayout() === 'normal',\n );\n\n readonly #agGrid = toObservable(this.agGrid);\n readonly #agGridApi = toSignal(\n this.#agGrid.pipe(\n switchMap((agGrid) =>\n agGrid\n ? // Pause for less than a tick to let the AG Grid API become available.\n of(agGrid).pipe(\n delay(0, asapScheduler),\n map((g) => g.api),\n )\n : of(undefined),\n ),\n ),\n );\n readonly #agGridDomLayout = computed(() =>\n this.#agGridApi()?.getGridOption('domLayout'),\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 #mutationObserverService = inject(SkyMutationObserverService);\n readonly #resizeObserverSvc = inject(SkyResizeObserverService);\n readonly #hasEditableClass = signal(false);\n readonly #cellEditingClasses = signal<string[]>([]);\n\n // AG Grid's own header controller rewrites `--ag-header-rows-height` on\n // header/theme recomputes it triggers internally (e.g. via\n // `setGridOption('theme', ...)` below), clobbering the combined value\n // `#watchHorizontalScrollPosition` sets. This lets that call ask for an\n // immediate reapply.\n readonly #reapplyHorizontalScrollPosition$ = new Subject<void>();\n\n #reservedTopScrollHeight: number | undefined;\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 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 const agGridApi = this.#agGridApi();\n if (agGridApi && !agGridApi.isDestroyed()) {\n agGridApi.setGridOption('theme', skyAgGridTheme);\n this.#reapplyHorizontalScrollPosition$.next();\n }\n });\n\n this.#destroyRef.onDestroy(() => {\n this.#agGridClassObserver?.disconnect();\n });\n }\n\n public ngAfterContentInit(): void {\n this.#watchHorizontalScrollPosition();\n\n this.#agGrid\n .pipe(\n filter(Boolean),\n switchMap((agGrid) => agGrid.cellEditingStarted),\n takeUntilDestroyed(this.#destroyRef),\n )\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((t) => `sky-ag-grid-cell-editing-${t}`);\n this.#cellEditingClasses.update((prev) => [...prev, ...addClasses]);\n if (\n types.includes(SkyCellType.Template) &&\n params.rowIndex !== null\n ) {\n params.api.setFocusedCell(params.rowIndex, params.column);\n }\n }\n });\n this.#agGrid\n .pipe(\n takeUntilDestroyed(this.#destroyRef),\n filter(Boolean),\n switchMap((agGrid) => agGrid.cellEditingStopped),\n )\n .subscribe(() => {\n this.#cellEditingClasses.set([]);\n });\n this.#agGrid\n .pipe(\n takeUntilDestroyed(this.#destroyRef),\n filter(Boolean),\n switchMap((agGrid) => agGrid.cellFocused),\n )\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\n .pipe(\n takeUntilDestroyed(this.#destroyRef),\n filter(Boolean),\n switchMap((agGrid) => agGrid.headerFocused),\n )\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 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 const api = this.#agGridApi();\n if (api && !api.isDestroyed()) {\n api.stopEditing(true);\n }\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 #watchHorizontalScrollPosition(): void {\n const elements$ = this.#agGrid.pipe(\n filter(Boolean),\n switchMap((agGrid) =>\n merge(\n agGrid.gridReady,\n agGrid.firstDataRendered,\n agGrid.rowDataUpdated,\n // AG Grid recalculates its own horizontal scrollbar visibility/inline\n // styling in response to this event (independent of anything this\n // component does), which can clear the `top` set below - so this is\n // included to reapply positioning immediately afterward.\n agGrid.gridSizeChanged,\n // See `#reapplyHorizontalScrollPosition$`'s declaration.\n this.#reapplyHorizontalScrollPosition$,\n ).pipe(\n // `context.enableTopScroll` may not be reflected on the grid's own\n // `gridOptions` yet by the time the earliest of these events fires\n // (e.g. while a data manager/async fixture is still hydrating), so\n // this is re-checked on each event rather than once up front.\n filter(() => !!this.agGridContext()?.enableTopScroll),\n map(() => this.#elementRef.nativeElement.querySelector('.ag-root')),\n filter((root): root is HTMLElement => !!root),\n map((root) => {\n const header = root.querySelector(\n '.ag-header',\n ) as HTMLElement | null;\n const scrollbar = root.querySelector(\n '.ag-body-horizontal-scroll',\n ) as HTMLElement | null;\n const gridViewport = root.querySelector(\n '.ag-grid-viewport',\n ) as HTMLElement | null;\n return { header, scrollbar, gridViewport };\n }),\n filter(\n (\n els,\n ): els is {\n header: HTMLElement;\n scrollbar: HTMLElement;\n gridViewport: HTMLElement;\n } => !!els.header && !!els.scrollbar && !!els.gridViewport,\n ),\n ),\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n const headerRowsHeight$ = elements$.pipe(\n // Only re-subscribe the resize observer when AG Grid actually swaps in\n // a new header element, not on every tracked event above.\n distinctUntilChanged((a, b) => a.header === b.header),\n switchMap((els) =>\n this.#resizeObserverSvc.observe(new ElementRef(els.header)).pipe(\n // `.ag-header`'s inline height includes the theme's headerRowBorder,\n // which this component inflates to reserve scrollbar space - so\n // measure the header rows themselves to avoid double-counting.\n map(() =>\n Array.from(\n els.header.querySelectorAll<HTMLElement>(\n ':scope > .ag-header-row',\n ),\n ).reduce(\n (max, row) => Math.max(max, row.offsetTop + row.offsetHeight),\n 0,\n ),\n ),\n distinctUntilChanged(),\n ),\n ),\n );\n\n const scrollbarHeight$ = elements$.pipe(\n distinctUntilChanged((a, b) => a.scrollbar === b.scrollbar),\n switchMap((els) =>\n // AG Grid applies the scrollbar's inline height in a debounced task\n // after the grid events above have fired, so the height has to be\n // observed rather than read at event time.\n this.#resizeObserverSvc.observe(new ElementRef(els.scrollbar)).pipe(\n // Overlay/auto-hiding scrollbars float above content and need no\n // extra space - and AG Grid gives them a nonzero inline height, so\n // the class check is required.\n map(() =>\n els.scrollbar.classList.contains('ag-scrollbar-invisible')\n ? 0\n : els.scrollbar.offsetHeight,\n ),\n distinctUntilChanged(),\n ),\n ),\n );\n\n elements$\n .pipe(\n // Reapply on every tracked event (using the latest known heights)\n // even when the heights themselves haven't changed, so AG Grid's\n // own resets of the scrollbar's inline style (e.g. on\n // `gridSizeChanged`) get corrected right away.\n combineLatestWith(headerRowsHeight$, scrollbarHeight$),\n takeUntilDestroyed(this.#destroyRef),\n )\n .subscribe(\n ([{ header, gridViewport }, headerRowsHeight, scrollbarHeight]) => {\n // The theme's headerRowBorder width includes this variable, which\n // reserves room below the header inside AG Grid's own geometry\n // (pinned/sticky row offsets, body viewport height, fake scrollbar\n // spacers). Both variables live on the SKY-owned wrapper div - the\n // scrollbar is positioned from them in CSS - so AG Grid recreating\n // or restyling its own elements never loses the values.\n const skyAgGridDiv = this.skyAgGridDiv()?.nativeElement;\n skyAgGridDiv?.style.setProperty(\n '--sky-ag-grid-top-scroll-height',\n `${scrollbarHeight}px`,\n );\n\n // The painted border is pinned to the un-inflated separator width\n // (see `_base.scss`), so the full headerRowBorder AG Grid measures\n // is that separator width plus the reservation.\n const separatorWidth =\n parseFloat(\n getComputedStyle(header).getPropertyValue(\n '--sky-ag-grid-header-row-border-width',\n ),\n ) || 0;\n const headerRowsHeightWithBorder =\n headerRowsHeight + separatorWidth + scrollbarHeight;\n\n skyAgGridDiv?.style.setProperty(\n '--sky-ag-grid-header-rows-height',\n `${headerRowsHeightWithBorder}px`,\n );\n\n // AG Grid skips rewriting this when only the border width changed,\n // and on genuine header-height changes writes this same value - so\n // whichever writes last the result is identical. (`.ag-header`'s own\n // inline height is left to AG Grid: writing it here would freeze the\n // resize observer above.)\n gridViewport.style.setProperty(\n '--ag-internal-header-rows-height',\n `${headerRowsHeightWithBorder}px`,\n );\n\n if (this.#reservedTopScrollHeight !== scrollbarHeight) {\n this.#reservedTopScrollHeight = scrollbarHeight;\n this.#nudgeHeaderGeometry();\n }\n },\n );\n }\n\n /**\n * AG Grid skips its header geometry refresh when only the theme's\n * `headerRowBorder` width changes (its guard compares header row heights\n * without the border), leaving pinned/sticky row offsets and the fake\n * scrollbar spacers unaware of the reserved space. `headerHeightChanged` is\n * the event that re-runs exactly those consumers. The dispatch is deferred\n * one frame plus a task so AG Grid's own border-width measurement (refreshed\n * by its ResizeObserver) is current when they re-read it.\n */\n #nudgeHeaderGeometry(): void {\n requestAnimationFrame(() => {\n setTimeout(() => {\n const api = this.#agGridApi();\n if (api && !api.isDestroyed()) {\n api.dispatchEvent({ type: 'headerHeightChanged' });\n }\n });\n });\n }\n\n #getTextSelection(hasEditableClass: boolean): boolean {\n if (this.agGridContext()?.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]=\"agGridContext()?.['enableTopScroll']\"\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 SkyDataManagerSortOption,\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.viewkeeperSuppressed.set(true);\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 newState.activeSortOption = activeSortColumnState\n ? this.#resolveActiveSortOption(agGrid.api, activeSortColumnState)\n : undefined;\n this.#currentDataState = newState;\n this.#dataManagerSvc.updateDataState(newState, viewConfig.id);\n\n this.#changeDetector.markForCheck();\n }\n });\n }\n }\n\n #resolveActiveSortOption(\n api: GridApi,\n activeSortColumnState: ColumnState,\n ): SkyDataManagerSortOption {\n const activeSortColumnDef = api.getColumnDef(activeSortColumnState.colId);\n const descending = activeSortColumnState.sort === 'desc';\n const propertyName =\n activeSortColumnDef?.field || activeSortColumnState.colId;\n\n // Prefer the configured sort option matching this column and direction\n // so the sort menu's selected item stays in sync; columns without a\n // matching option fall back to a column-derived sort option.\n const matchingSortOption = this.#dataManagerSvc\n .getCurrentDataManagerConfig()\n .sortOptions?.find(\n (option) =>\n option.propertyName === propertyName &&\n !!option.descending === descending,\n );\n\n return (\n matchingSortOption ?? {\n descending,\n id: activeSortColumnState.colId,\n propertyName,\n label: activeSortColumnDef?.headerName || '',\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 this.#changeDetector.markForCheck();\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 && !agGrid.api.isDestroyed()) {\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 ) {\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 const colId = this.#resolveSortColumnId(agGridApi, activeSort);\n\n if (colId) {\n agGridApi.applyColumnState({\n state: [\n {\n colId,\n sort: activeSort.descending ? 'desc' : 'asc',\n },\n ],\n defaultState: { sort: null },\n });\n }\n }\n }\n\n #resolveSortColumnId(\n api: GridApi,\n activeSort: SkyDataManagerSortOption,\n ): string | undefined {\n const columnStates = api.getColumnState();\n const findColId = (\n predicate: (state: ColumnState) => boolean,\n ): string | undefined => columnStates.find(predicate)?.colId;\n\n // Match on the option's data property first, since a sort option's ID is\n // arbitrary and could otherwise select an unrelated column. Only fall\n // back to the legacy ID match for options predating the property lookup.\n return (\n findColId(\n (state) =>\n api.getColumnDef(state.colId)?.field === activeSort.propertyName,\n ) ??\n findColId((state) => state.colId === activeSort.propertyName) ??\n findColId((state) => state.colId === activeSort.id)\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 this.#changeDetector.markForCheck();\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 this.#changeDetector.markForCheck();\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 if (currentAgGridApi.getGridElement()) {\n currentAgGridApi.sizeColumnsToFit({ columnLimits });\n }\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 * The region (in viewport coordinates) that is not masked out by the\n * scrollable-host clip-path. Row overlays positioned outside this region\n * are fully hidden by the clip-path and should be removed from the tab order.\n * @internal\n */\nexport interface SkyAgGridRowDeleteVisibleRegion {\n top: number;\n left: number;\n right: number;\n bottom: number;\n}\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 public readonly visibleRegion: Signal<\n SkyAgGridRowDeleteVisibleRegion | undefined\n >,\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 {\n SKY_AG_GRID_ROW_DELETE_CONTEXT,\n SkyAgGridRowDeleteVisibleRegion,\n} from './ag-grid-row-delete-context';\n\n/**\n * A row overlay is \"fully clipped\" when its anchor element's bounding rect\n * does not intersect the region left visible by the scrollable-host\n * clip-path (e.g. the row has scrolled entirely behind the sticky header).\n */\nfunction isFullyClipped(\n element: HTMLElement | null,\n visibleRegion: SkyAgGridRowDeleteVisibleRegion | undefined,\n): boolean {\n if (!element || !visibleRegion) {\n return false;\n }\n const rect = element.getBoundingClientRect();\n return (\n rect.bottom <= visibleRegion.top ||\n rect.top >= visibleRegion.bottom ||\n rect.right <= visibleRegion.left ||\n rect.left >= visibleRegion.right\n );\n}\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 (): {\n rowId: string;\n increment: string;\n element: HTMLElement | null;\n clipped: boolean;\n }[] => {\n const rows = this.service.rows();\n const gridElement = this.service.gridElement();\n const gridApi = this.service.gridApi();\n const increment = this.gridChanges();\n const visibleRegion = this.service.visibleRegion();\n if (!gridElement || !gridApi || gridApi.isDestroyed()) {\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 {\n rowId,\n element,\n increment: `${rowId}-${increment}`,\n clipped: isFullyClipped(element, visibleRegion),\n };\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 && !gridApi.isDestroyed()\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(\n (gridApi): gridApi is GridApi => !!gridApi && !gridApi.isDestroyed(),\n ),\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 [attr.inert]=\"row.clipped ? '' : null\"\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 DestroyRef,\n Directive,\n ElementRef,\n EnvironmentInjector,\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 distinctUntilChanged,\n filter,\n shareReplay,\n switchMap,\n take,\n takeUntil,\n} from 'rxjs';\n\nimport { fromGridEvent } from './ag-grid-event-utils';\nimport {\n SKY_AG_GRID_ROW_DELETE_CONTEXT,\n SkyAgGridRowDeleteContext,\n SkyAgGridRowDeleteVisibleRegion,\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 * Parses the `inset(...)` clip-path produced by\n * `SkyScrollableHostService.watchScrollableHostClipPathChanges` into the\n * visible region it describes, in viewport coordinates. Returns `undefined`\n * when nothing is clipped (e.g. `none`), meaning no row overlay is masked.\n */\nfunction parseClipPathVisibleRegion(\n clipPath: string | undefined,\n): SkyAgGridRowDeleteVisibleRegion | undefined {\n const match = clipPath?.match(\n /^inset\\((-?[\\d.]+)px\\s+(-?[\\d.]+)px\\s+(-?[\\d.]+)px\\s+(-?[\\d.]+)px\\)$/,\n );\n if (!match) {\n return undefined;\n }\n const [, top, rightInverse, bottomInverse, left] = match.map(Number);\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n return {\n top,\n left,\n right: viewportWidth - rightInverse,\n bottom: viewportHeight - bottomInverse,\n };\n}\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 {\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 #agGridHeaderElement = new BehaviorSubject<\n ElementRef<HTMLDivElement>[]\n >([]);\n readonly #destroyRef = inject(DestroyRef);\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 #visibleRegion = new BehaviorSubject<\n SkyAgGridRowDeleteVisibleRegion | undefined\n >(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(takeUntilDestroyed(this.#destroyRef))\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 toSignal(this.#visibleRegion),\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 takeUntilDestroyed(this.#destroyRef),\n );\n const agGridDestroyed = agGridReady.pipe(\n switchMap((ready) => fromGridEvent(ready.api, 'gridPreDestroyed')),\n take(1),\n takeUntilDestroyed(this.#destroyRef),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n agGridReady.pipe(takeUntil(agGridDestroyed)).subscribe((ready) => {\n const rowsWrapper = this.#elementRef.nativeElement.querySelector(\n 'div.ag-grid-scrolling-rows',\n );\n if (rowsWrapper) {\n this.#agGridRootElement.next([\n new ElementRef(rowsWrapper as HTMLDivElement),\n ]);\n }\n const headerWrapper =\n this.#elementRef.nativeElement.querySelector('div.ag-header');\n if (headerWrapper) {\n this.#agGridHeaderElement.next([\n new ElementRef(headerWrapper as HTMLDivElement),\n ]);\n }\n this.#rowDeleteSvc.gridApi.set(ready.api);\n });\n agGridDestroyed.subscribe(() => {\n this.#rowDeleteSvc.gridApi.set(undefined);\n });\n\n agGrid\n .pipe(\n filter((agGrid) => !!agGrid),\n switchMap((agGrid: AgGridAngular) => agGrid.rowDataUpdated),\n takeUntilDestroyed(this.#destroyRef),\n takeUntil(agGridDestroyed),\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 // The overlay renders outside the grid, so tag it with the grid's ID to\n // let the grid's test harness tell its inline deletes apart from those\n // of another grid with the same row IDs.\n const gridId =\n this.#elementRef.nativeElement.querySelector('div.sky-ag-grid')?.id;\n if (gridId) {\n (\n this.#overlay.componentRef.location.nativeElement as HTMLElement\n ).setAttribute('data-sky-ag-grid-id', gridId);\n }\n this.#zIndex\n .pipe(\n takeUntilDestroyed(this.#destroyRef),\n takeUntil(this.#overlay.closed),\n takeUntil(agGridDestroyed),\n distinctUntilChanged(),\n )\n .subscribe((zIndex) => {\n if (this.#overlay) {\n this.#overlay.componentRef.instance.zIndex = zIndex.toString(10);\n this.#overlay.componentRef.changeDetectorRef.markForCheck();\n }\n });\n this.#clipPath\n .pipe(\n takeUntilDestroyed(this.#destroyRef),\n takeUntil(this.#overlay.closed),\n takeUntil(agGridDestroyed),\n distinctUntilChanged(),\n )\n .subscribe((clipPath) => {\n this.#overlay?.componentRef.instance.updateClipPath(clipPath);\n });\n\n this.#scrollableHostService\n .watchScrollableHostClipPathChanges(this.#elementRef, {\n additionalContainers: this.#agGridRootElement.asObservable(),\n additionalMasking: { top: this.#agGridHeaderElement.asObservable() },\n })\n .pipe(takeUntilDestroyed(this.#destroyRef), takeUntil(agGridDestroyed))\n .subscribe((clipPath) => {\n this.#clipPath.next(clipPath);\n this.#visibleRegion.next(parseClipPathVisibleRegion(clipPath));\n });\n });\n\n this.#destroyRef.onDestroy(() => {\n this.#rowDeleteSvc.subscription.unsubscribe();\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n }\n });\n\n this.#rowDeleteSvc.cancelRowDelete\n .pipe(takeUntilDestroyed(this.#destroyRef), takeUntil(agGridDestroyed))\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(takeUntilDestroyed(this.#destroyRef), takeUntil(agGridDestroyed))\n .subscribe((rowId) => {\n if (rowId) {\n this.rowDeleteConfirm.emit({ id: rowId });\n }\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","/**\n * Please note:\n *\n * Translations are provided as an illustration only and are\n * not guaranteed to be accurate or error free.\n *\n * They are designed to show developers where to store their\n * chosen phrase or spelling variant in the target language.\n */\n\nexport const AG_GRID_LOCALE_ES = {\n // Set Filter\n selectAll: '(Seleccionar todo)',\n selectAllSearchResults: '(Seleccionar todos los resultados de la búsqueda)',\n addCurrentSelectionToFilter: 'Agregar selección actual al filtro',\n searchOoo: 'Buscar...',\n blanks: '(Vacíos)',\n noMatches: 'Sin coincidencias',\n typeToSearchOoo: 'Escribe para buscar...',\n\n // Number Filter & Text Filter\n filterOoo: 'Filtro...',\n equals: 'Igual a',\n notEqual: 'No igual a',\n blank: 'En blanco',\n notBlank: 'No en blanco',\n empty: 'Elige uno',\n\n // Number Filter\n lessThan: 'Menos que',\n greaterThan: 'Más que',\n lessThanOrEqual: 'Menos o igual que',\n greaterThanOrEqual: 'Más o igual que',\n inRange: 'Entre',\n inRangeStart: 'Desde',\n inRangeEnd: 'Hasta',\n\n // Text Filter\n contains: 'Contiene',\n notContains: 'No contiene',\n startsWith: 'Empieza con',\n endsWith: 'Termina con',\n\n // Date Filter\n dateFormatOoo: 'yyyy-mm-dd',\n before: 'Antes',\n after: 'Después',\n yesterday: 'Ayer',\n today: 'Hoy',\n tomorrow: 'Mañana',\n last7Days: 'Últimos 7 días',\n lastWeek: 'Semana pasada',\n thisWeek: 'Esta semana',\n nextWeek: 'Próxima semana',\n last30Days: 'Últimos 30 días',\n lastMonth: 'Mes pasado',\n thisMonth: 'Este mes',\n nextMonth: 'Próximo mes',\n last90Days: 'Últimos 90 días',\n lastQuarter: 'Último trimestre',\n thisQuarter: 'Este trimestre',\n nextQuarter: 'Próximo trimestre',\n lastYear: 'Año pasado',\n thisYear: 'Este año',\n yearToDate: 'Año hasta la fecha',\n nextYear: 'Próximo año',\n last6Months: 'Últimos 6 meses',\n last12Months: 'Últimos 12 meses',\n last24Months: 'Últimos 24 meses',\n\n // Filter Conditions\n andCondition: 'Y',\n orCondition: 'O',\n\n // Filter Buttons\n applyFilter: 'Aplicar',\n applyColumnToolPanel: 'Aplicar',\n resetFilter: 'Reiniciar',\n clearFilter: 'Borrar',\n cancelFilter: 'Cancelar',\n cancelColumnToolPanel: 'Cancelar',\n\n // Filter Titles\n textFilter: 'Filtro de Texto',\n numberFilter: 'Filtro de Números',\n dateFilter: 'Filtro de Fecha',\n setFilter: 'Filtro de Conjunto',\n\n // Group Column Filter\n groupFilterSelect: 'Seleccionar campo:',\n\n // New Filter Tool Panel\n filterSummaryInactive: 'es (Todo)',\n filterSummaryContains: 'contiene',\n filterSummaryNotContains: 'no contiene',\n filterSummaryTextEquals: 'es igual a',\n filterSummaryTextNotEqual: 'no es igual a',\n filterSummaryStartsWith: 'comienza con',\n filterSummaryEndsWith: 'termina con',\n filterSummaryBlank: 'está en blanco',\n filterSummaryNotBlank: 'no está en blanco',\n filterSummaryEquals: '=',\n filterSummaryNotEqual: '!=',\n filterSummaryGreaterThan: '>',\n filterSummaryGreaterThanOrEqual: '>=',\n filterSummaryLessThan: '<',\n filterSummaryLessThanOrEqual: '<=',\n filterSummaryInRange: 'entre',\n filterSummaryInRangeValues: '(${variable}, ${variable})',\n filterSummaryTextQuote: '\"${variable}\"',\n filterSummaryListInactive: 'es (Todo)',\n filterSummaryListSeparator: ', ',\n filterSummaryListShort: 'es (${variable})',\n filterSummaryListLong: 'es (${variable}) y ${variable} más',\n addFilterCard: 'Agregar Filtro',\n agTextColumnFilterDisplayName: 'Filtro Simple',\n agNumberColumnFilterDisplayName: 'Filtro Simple',\n agDateColumnFilterDisplayName: 'Filtro Simple',\n agSetColumnFilterDisplayName: 'Filtro de Selección',\n agMultiColumnFilterDisplayName: 'Filtro Combinado',\n addFilterPlaceholder: 'Buscar columnas...',\n\n // Advanced Filter\n advancedFilterContains: 'contiene',\n advancedFilterNotContains: 'no contiene',\n advancedFilterTextEquals: 'es igual a',\n advancedFilterTextNotEqual: 'no es igual a',\n advancedFilterStartsWith: 'comienza con',\n advancedFilterEndsWith: 'termina con',\n advancedFilterBlank: 'está en blanco',\n advancedFilterNotBlank: 'no está en blanco',\n advancedFilterEquals: '=',\n advancedFilterNotEqual: '!=',\n advancedFilterGreaterThan: '>',\n advancedFilterGreaterThanOrEqual: '>=',\n advancedFilterLessThan: '<',\n advancedFilterLessThanOrEqual: '<=',\n advancedFilterTrue: 'es verdadero',\n advancedFilterFalse: 'es falso',\n advancedFilterAnd: 'Y',\n advancedFilterOr: 'O',\n advancedFilterApply: 'Aplicar',\n advancedFilterReset: 'Restablecer',\n advancedFilterCancel: 'Cancelar',\n advancedFilterClear: 'Limpiar',\n advancedFilterBuilder: 'Constructor',\n advancedFilterValidationMissingColumn: 'Falta la columna',\n advancedFilterValidationMissingOption: 'Falta la opción',\n advancedFilterValidationMissingValue: 'Falta el valor',\n advancedFilterValidationInvalidColumn: 'Columna no encontrada',\n advancedFilterValidationInvalidOption: 'Opción no encontrada',\n advancedFilterValidationMissingQuote: 'Falta una comilla de cierre',\n advancedFilterValidationNotANumber: 'El valor no es un número',\n advancedFilterValidationInvalidDate: 'El valor no es una fecha válida',\n advancedFilterValidationMissingCondition: 'Falta la condición',\n advancedFilterValidationJoinOperatorMismatch:\n 'Los operadores de unión dentro de una condición deben ser los mismos',\n advancedFilterValidationInvalidJoinOperator:\n 'Operador de unión no encontrado',\n advancedFilterValidationMissingEndBracket: 'Falta paréntesis de cierre',\n advancedFilterValidationExtraEndBracket: 'Demasiados paréntesis de cierre',\n advancedFilterValidationMessage:\n 'La expresión contiene un error. ${variable} - ${variable}.',\n advancedFilterValidationMessageAtEnd:\n 'La expresión contiene un error. ${variable} al final de la expresión.',\n advancedFilterBuilderTitle: 'Filtro Avanzado',\n advancedFilterBuilderApply: 'Aplicar',\n advancedFilterBuilderClear: 'Limpiar',\n advancedFilterBuilderReset: 'Restablecer',\n advancedFilterBuilderCancel: 'Cancelar',\n advancedFilterBuilderAddButtonTooltip: 'Añadir filtro o grupo',\n advancedFilterBuilderRemoveButtonTooltip: 'Eliminar',\n advancedFilterBuilderMoveUpButtonTooltip: 'Mover arriba',\n advancedFilterBuilderMoveDownButtonTooltip: 'Mover abajo',\n advancedFilterBuilderAddJoin: 'Añadir Grupo',\n advancedFilterBuilderAddCondition: 'Añadir Filtro',\n advancedFilterBuilderSelectColumn: 'Selecciona una columna',\n advancedFilterBuilderSelectOption: 'Selecciona una opción',\n advancedFilterBuilderEnterValue: 'Introduce un valor...',\n advancedFilterBuilderValidationAlreadyApplied: 'Filtro actual ya aplicado.',\n advancedFilterBuilderValidationIncomplete:\n 'No todas las condiciones están completas.',\n advancedFilterBuilderValidationSelectColumn: 'Debe seleccionar una columna.',\n advancedFilterBuilderValidationSelectOption: 'Debe seleccionar una opción.',\n advancedFilterBuilderValidationEnterValue: 'Debe introducir un valor.',\n\n // Editor Validation Errors\n minDateValidation: 'La fecha debe ser posterior a ${variable}',\n maxDateValidation: 'La fecha debe ser anterior a ${variable}',\n maxLengthValidation: 'Debe tener ${variable} caracteres o menos.',\n minValueValidation: 'Debe ser mayor o igual a ${variable}',\n maxValueValidation: 'Debe ser menor o igual a ${variable}',\n strictMinValueValidation: 'Debe ser mayor que ${variable}',\n strictMaxValueValidation: 'Debe ser menor que ${variable}',\n invalidSelectionValidation: 'Selección no válida.',\n\n // Formulas\n invalidFormulaValidation: 'Fórmula no válida.',\n formulaParseInvalidCellReference:\n 'Referencia de celda no válida: ${variable}.',\n formulaParseInvalidRangeEndReference: 'Referencia final de rango no válida.',\n formulaParseUnterminatedString: 'Cadena sin terminar.',\n formulaParseUnexpectedCharacter: 'Carácter inesperado: ${variable}.',\n formulaParseOperatorStackUnderflow:\n 'Desbordamiento inferior de pila de operadores.',\n formulaParseMissingOperand: \"Falta operando para '${variable}'.\",\n formulaParseInternalUnexpectedFrameDuringReduction:\n 'Error interno: marco inesperado durante la reducción.',\n formulaParseInternalUnexpectedFrameBeforeOpenParen:\n \"Error interno: marco inesperado antes de '('.\",\n formulaParseMisplacedComma: 'Coma en posición incorrecta.',\n formulaParseCommaOutsideFunctionCall: 'Coma fuera de una llamada de función.',\n formulaParseInternalUnexpectedFrameBeforeCloseParen:\n \"Error interno: marco inesperado antes de ')'.\",\n formulaParseMismatchedParentheses: 'Paréntesis no coinciden.',\n formulaParseUnsupportedOperand: 'Operando no compatible: ${variable}.',\n formulaParseMismatchedParenthesesOrUnfinishedFunctionCall:\n 'Paréntesis no coinciden o llamada de función sin terminar.',\n formulaParseInvalidExpression: 'Expresión no válida.',\n formulaParseFormulasMustBeginWithEquals: 'Las fórmulas deben comenzar con =.',\n formulaSerializeStringContainsQuote:\n 'La cadena contiene una comilla (\") que el tokenizador no admite.',\n formulaSerializeCannotProduceAbsoluteColumnLabelFromId:\n \"No se puede generar etiqueta absoluta de COLUMNA desde el id '${variable}'.\",\n formulaSerializeCannotProduceAbsoluteRowIndexFromId:\n \"No se puede generar índice absoluto de FILA desde el id '${variable}'.\",\n formulaSerializeCannotProduceRowIndexFromId:\n \"No se puede generar índice de FILA desde el id '${variable}'.\",\n formulaSerializeCannotMapColumnIdToA1Label:\n \"No se puede mapear el id de columna '${variable}' a etiqueta A1.\",\n formulaSerializeCannotParseAbsoluteRowIndex:\n \"No se puede analizar el índice absoluto de fila '${variable}'.\",\n formulaSerializeCannotMapRowIdToA1Index:\n \"No se puede mapear el id de fila '${variable}' al índice A1.\",\n formulaEvalRangeNotAllowedInScalarContext:\n 'No se permite un rango en contexto escalar.',\n formulaEvalUnknownReferenceToCell: 'Referencia de celda desconocida.',\n formulaEvalUnsupportedOperation: 'Operación no compatible ${variable}.',\n formulaEvalInvalidAbsoluteRow: 'Fila absoluta no válida.',\n formulaEvalUnrecognisedRowId: 'Id de fila no reconocido.',\n formulaEvalInvalidAbsoluteColumn: 'Columna absoluta no válida.',\n formulaEvalUnrecognisedColumnId: 'Id de columna no reconocido.',\n formulaEvalUnrecognisedRowInRange: 'Fila no reconocida en el rango.',\n formulaEvalUnrecognisedReferenceToCell: 'Referencia de celda no reconocida.',\n formulaEvalIncompleteRangeReference: 'Referencia de rango incompleta.',\n formulaFunctionExpectedExactlyArguments:\n '${variable}: se esperaban exactamente ${variable} argumentos.',\n formulaFunctionExpectedAtMostArguments:\n '${variable}: se esperaban como máximo ${variable} argumentos.',\n formulaFunctionExpectedAtLeastArguments:\n '${variable}: se esperaban al menos ${variable} argumentos.',\n formulaFunctionInvalidCriteriaWildcardsWithComparator:\n 'Criterio no válido: comodines con comparador.',\n formulaFunctionNonNumericArgument: '${variable}: argumento no numérico.',\n formulaFunctionDivisionByZero: '${variable}: división por cero.',\n formulaFunctionCannotCombineDatesWithBigInt:\n '${variable}: no se pueden combinar fechas con BigInt.',\n formulaFunctionRequiresAtLeastOneNumericValue:\n '${variable}: requiere al menos un valor numérico.',\n formulaFunctionRequiresAtLeastOneValue:\n '${variable}: requiere al menos un valor.',\n formulaFunctionAllValuesMustBeNumbers:\n '${variable}: todos los valores deben ser números.',\n formulaFunctionArgumentMustBeRange:\n '${variable}: el argumento ${variable} debe ser un rango.',\n formulaFunctionArgumentMustBeValue:\n '${variable}: el argumento ${variable} debe ser un valor.',\n formulaFunctionRangesHaveDifferentSizes:\n '${variable}: los rangos tienen tamaños distintos.',\n formulaFunctionValuesMustBeNumeric:\n '${variable}: los valores deben ser numéricos.',\n formulaFunctionValuesMustBeIntegers:\n '${variable}: los valores deben ser enteros.',\n formulaFunctionUnsupportedValueType:\n '${variable}: tipo de valor no compatible.',\n formulaFunctionDivNonNumericArgument: 'DIV: argumento no numérico.',\n formulaFunctionDivDivisionByZero: 'DIV: división por cero.',\n formulaFunctionSumCannotCombineDatesWithBigInt:\n 'SUM: no se pueden combinar fechas con BigInt.',\n formulaFunctionSumRequiresAtLeastOneNumericValue:\n 'SUM: requiere al menos un valor numérico.',\n formulaFunctionAvgRequiresAtLeastOneValue: 'AVG: requiere al menos un valor.',\n formulaFunctionMedianAllValuesMustBeNumbers:\n 'MEDIAN: todos los valores deben ser números.',\n formulaFunctionMedianRequiresAtLeastOneValue:\n 'MEDIAN: requiere al menos un valor.',\n formulaFunctionSumifFirstArgumentMustBeRange:\n 'SUMIF: el primer argumento debe ser un rango.',\n formulaFunctionSumifSecondArgumentMustBeValue:\n 'SUMIF: el segundo argumento debe ser un valor (criteria).',\n formulaFunctionSumifThirdArgumentMustBeRange:\n 'SUMIF: el tercer argumento debe ser un rango (sum_range).',\n formulaFunctionSumifRangesHaveDifferentSizes:\n 'SUMIF: los rangos tienen tamaños distintos.',\n formulaFunctionCountifFirstArgumentMustBeRange:\n 'COUNTIF: el primer argumento debe ser un rango.',\n formulaFunctionCountifSecondArgumentMustBeValue:\n 'COUNTIF: el segundo argumento debe ser un valor (criteria).',\n formulaFunctionConcatUnsupportedValueType:\n 'CONCAT: tipo de valor no compatible.',\n formulaFunctionMinRequiresAtLeastOneValue: 'MIN: requiere al menos un valor.',\n formulaFunctionMaxRequiresAtLeastOneValue: 'MAX: requiere al menos un valor.',\n formulaFunctionPercentNonNumericArgument: 'PERCENT: argumento no numérico.',\n formulaFunctionPowerNonNumericArgument: 'POWER: argumento no numérico.',\n formulaServiceCircularReference: 'Referencia circular.',\n formulaServiceExpectedParsableFormula: 'Se esperaba una fórmula analizable.',\n formulaServiceInternalSchedulingError: 'Error interno de planificación.',\n tooltipValidationErrorSeparator: '. ',\n\n // Side Bar\n columns: 'Columnas',\n filters: 'Filtros',\n\n // columns tool panel\n pivotMode: 'Modo Pivot',\n groups: 'Grupos de Filas',\n rowGroupColumnsEmptyMessage:\n 'Arrastre aquí para establecer los grupos de filas',\n values: 'Valores',\n valueColumnsEmptyMessage: 'Arrastre aquí para agregar',\n pivots: 'Etiquetas de Columna',\n pivotColumnsEmptyMessage:\n 'Arrastre aquí para establecer las etiquetas de columna',\n\n // Header of the Default Group Column\n group: 'Grupo',\n\n // Row Drag\n rowDragRow: 'fila',\n rowDragRows: 'filas',\n\n // Other\n loadingOoo: 'Cargando...',\n loadingError: 'ERR',\n noRowsToShow: 'No hay filas para mostrar',\n noMatchingRows: 'Sin filas coincidentes',\n exportingOoo: 'Exportando...',\n fileInputOverlay: 'Arrastra y suelta un archivo para importar datos',\n fileInputOverlayBrowse: 'Examinar archivos',\n fileInputProcessing: 'Procesando ${variable}',\n fileInputProcessingFailed: 'Error al procesar ${variable}',\n enabled: 'Habilitado',\n\n // Menu\n pinColumn: 'Fijar Columna',\n pinLeft: 'Fijar a la Izquierda',\n pinRight: 'Fijar a la Derecha',\n noPin: 'No Fijar',\n pinRow: 'Fijar fila',\n pinTop: 'Fijar en la parte superior',\n pinBottom: 'Fijar en la parte inferior',\n unpinRow: 'Desfijar fila',\n valueAggregation: 'Agregación de Valores',\n noAggregation: 'Ninguna',\n showValuesAs: 'Mostrar valores como',\n showValuesAsNone: 'Ninguno',\n percentOfGrandTotal: '% del total general',\n percentOfColumnTotal: '% del total de la columna',\n percentOfRowTotal: '% del total de la fila',\n percentOfParentRowTotal: '% del total de la fila principal',\n percentOfParentColumnTotal: '% del total de la columna principal',\n percentOfGrandTotalDescription:\n 'Cada valor como porcentaje del total general de la columna.',\n percentOfColumnTotalDescription:\n 'Cada valor como porcentaje del total de su columna: cada columna suma el 100 %.',\n percentOfRowTotalDescription:\n 'Cada valor como porcentaje del total de la fila en las columnas de la tabla dinámica.',\n percentOfParentRowTotalDescription:\n 'Cada valor como porcentaje de su grupo principal.',\n percentOfParentColumnTotalDescription:\n 'Cada valor como porcentaje de su columna de tabla dinámica principal.',\n autosizeThisColumn: 'Autoajustar Esta Columna',\n autosizeAllColumns: 'Autoajustar Todas las Columnas',\n groupBy: 'Agrupar por ${variable}',\n ungroupBy: 'Desagrupar por ${variable}',\n ungroupAll: 'Desagrupar Todo',\n addToValues: 'Añadir ${variable} a valores',\n removeFromValues: 'Quitar ${variable} de valores',\n addToLabels: 'Añadir ${variable} a etiquetas',\n removeFromLabels: 'Quitar ${variable} de etiquetas',\n resetColumns: 'Restablecer Columnas',\n expandAll: 'Expandir Todos los Grupos de Filas',\n collapseAll: 'Cerrar Todos los Grupos de Filas',\n copy: 'Copiar',\n ctrlC: 'Ctrl+C',\n ctrlX: 'Ctrl+X',\n copyWithHeaders: 'Copiar Con Encabezados',\n copyWithGroupHeaders: 'Copiar Con Encabezados de Grupo',\n cut: 'Cortar',\n paste: 'Pegar',\n ctrlV: 'Ctrl+V',\n export: 'Exportar',\n csvExport: 'Exportar CSV',\n excelExport: 'Exportar Excel',\n pdfExport: 'Exportar PDF',\n columnFilter: 'Filtrar Columna',\n columnChooser: 'Elegir Columnas',\n chooseColumns: 'Elegir columnas',\n sortAscending: 'Ordenar Ascendente',\n sortDescending: 'Ordenar Descendente',\n sortAbsoluteAscending: 'Ordenar absolutamente ascendente',\n sortAbsoluteDescending: 'Ordenar absolutamente descendente',\n sortUnSort: 'Limpiar Orden',\n shiftF2: 'Shift+F2',\n toolbarFind: 'Buscar',\n toolbarFindPreviousMatch: 'Coincidencia Anterior',\n toolbarFindNextMatch: 'Siguiente Coincidencia',\n toolbarQuickFilter: 'Filtrar',\n toolbarMenu: 'Menú',\n\n // Enterprise Menu Aggregation and Status Bar\n sum: 'Suma',\n first: 'Primero',\n last: 'Último',\n min: 'Mínimo',\n max: 'Máximo',\n none: 'Ninguno',\n count: 'Cuenta',\n avg: 'Promedio',\n filteredRows: 'Filtrados',\n selectedRows: 'Seleccionados',\n totalRows: 'Filas Totales',\n totalAndFilteredRows: 'Filas',\n more: 'Más',\n to: 'a',\n of: 'de',\n page: 'Página',\n pageLastRowUnknown: '?',\n nextPage: 'Siguiente Página',\n lastPage: 'Última Página',\n firstPage: 'Primera Página',\n previousPage: 'Página Anterior',\n pageSizeSelectorLabel: 'Tamaño de Página:',\n footerTotal: 'Total',\n statusBarLastRowUnknown: '?',\n scrollColumnIntoView: 'Desplazar ${variable} a la vista',\n\n // Pivoting\n pivotColumnGroupTotals: 'Total',\n\n // Enterprise Menu (Charts)\n pivotChartAndPivotMode: 'Gráfico dinámico y modo dinámico',\n pivotChart: 'Gráfico dinámico',\n chartRange: 'Rango de gráfico',\n columnChart: 'Columna',\n groupedColumn: 'Agrupada',\n stackedColumn: 'Apilada',\n normalizedColumn: '100% Apilada',\n barChart: 'Barra',\n groupedBar: 'Agrupada',\n stackedBar: 'Apilada',\n normalizedBar: '100% Apilada',\n pieChart: 'Circular',\n pie: 'Circular',\n donut: 'Rosquilla',\n lineChart: 'Línea',\n stackedLine: 'Apilado',\n normalizedLine: '100% Apilado',\n xyChart: 'X Y (Dispersión)',\n scatter: 'Dispersión',\n bubble: 'Burbuja',\n areaChart: 'Área',\n area: 'Área',\n stackedArea: 'Apilada',\n normalizedArea: '100% Apilada',\n histogramChart: 'Histograma',\n polarChart: 'Polar',\n radarLine: 'Línea de radar',\n radarArea: 'Área de radar',\n nightingale: 'Nightingale',\n radialColumn: 'Columna radial',\n radialBar: 'Barra radial',\n statisticalChart: 'Estadístico',\n boxPlot: 'Gráfico de caja',\n rangeBar: 'Barra de rango',\n rangeArea: 'Área de rango',\n hierarchicalChart: 'Jerárquico',\n treemap: 'Mapa de árbol',\n sunburst: 'Explosión solar',\n specializedChart: 'Especializado',\n waterfall: 'Cascada',\n heatmap: 'Mapa de calor',\n combinationChart: 'Combinación',\n columnLineCombo: 'Columna y línea',\n AreaColumnCombo: 'Área y columna',\n\n // Charts\n pivotChartTitle: 'Gráfico de Pivote',\n rangeChartTitle: 'Gráfico de Intervalo',\n settings: 'Gráfico',\n data: 'Configuración',\n format: 'Personalizar',\n categories: 'Categorías',\n defaultCategory: '(Ninguna)',\n series: 'Series',\n switchCategorySeries: 'Cambiar Categoría / Series',\n categoryValues: 'Valores de Categoría',\n seriesLabels: 'Etiquetas de Series',\n aggregate: 'Agregado',\n xyValues: 'Valores XY',\n paired: 'Modo Pareado',\n axis: 'Eje',\n xAxis: 'Eje Horizontal',\n yAxis: 'Eje Vertical',\n polarAxis: 'Eje Polar',\n radiusAxis: 'Eje de Radio',\n navigator: 'Navegador',\n zoom: 'Zoom',\n animation: 'Animación',\n crosshair: 'Retícula',\n color: 'Color',\n thickness: 'Espesor',\n preferredLength: 'Longitud Preferida',\n xType: 'Tipo X',\n axisType: 'Tipo de Eje',\n automatic: 'Automático',\n category: 'Categoría',\n number: 'Número',\n time: 'Tiempo',\n timeFormat: 'Formato de Tiempo',\n autoRotate: 'Rotación Automática',\n labelRotation: 'Rotación',\n circle: 'Círculo',\n polygon: 'Polígono',\n square: 'Cuadrado',\n cross: 'Cruz',\n diamond: 'Diamante',\n plus: 'Más',\n triangle: 'Triángulo',\n heart: 'Corazón',\n orientation: 'Orientación',\n fixed: 'Fijo',\n parallel: 'Paralelo',\n perpendicular: 'Perpendicular',\n radiusAxisPosition: 'Posición',\n ticks: 'Marcas',\n gridLines: 'Líneas de Cuadrícula',\n width: 'Ancho',\n height: 'Altura',\n length: 'Longitud',\n padding: 'Relleno',\n spacing: 'Espaciado',\n chartStyle: 'Estilo de Gráfico',\n title: 'Título',\n chartTitles: 'Títulos',\n chartTitle: 'Título del Gráfico',\n chartSubtitle: 'Subtítulo',\n horizontalAxisTitle: 'Título del Eje Horizontal',\n verticalAxisTitle: 'Título del Eje Vertical',\n polarAxisTitle: 'Título del Eje Polar',\n titlePlaceholder: 'Título del Gráfico',\n background: 'Fondo',\n font: 'Fuente',\n weight: 'Peso',\n top: 'Superior',\n right: 'Derecha',\n bottom: 'Inferior',\n left: 'Izquierda',\n labels: 'Etiquetas',\n calloutLabels: 'Etiquetas de Llamada',\n sectorLabels: 'Etiquetas de Sector',\n positionRatio: 'Relación de Posición',\n size: 'Tamaño',\n shape: 'Forma',\n minSize: 'Tamaño Mínimo',\n maxSize: 'Tamaño Máximo',\n legend: 'Leyenda',\n position: 'Posición',\n markerSize: 'Tamaño del Marcador',\n markerStroke: 'Trazo del Marcador',\n markerPadding: 'Relleno del Marcador',\n itemSpacing: 'Espaciado de Ítems',\n itemPaddingX: 'Relleno X de Ítems',\n itemPaddingY: 'Relleno Y de Ítems',\n layoutHorizontalSpacing: 'Espaciado Horizontal',\n layoutVerticalSpacing: 'Espaciado Vertical',\n strokeWidth: 'Grosor del Trazo',\n offset: 'Desplazamiento',\n offsets: 'Desplazamientos',\n tooltips: 'Información sobre herramientas',\n callout: 'Llamada',\n markers: 'Marcadores',\n shadow: 'Sombra',\n blur: 'Desenfoque',\n xOffset: 'Desplazamiento X',\n yOffset: 'Desplazamiento Y',\n lineWidth: 'Ancho de Línea',\n lineDash: 'Línea Discontinua',\n lineDashOffset: 'Desplazamiento de Discontinuidad',\n scrollingZoom: 'Desplazamiento',\n scrollingStep: 'Paso de Desplazamiento',\n selectingZoom: 'Seleccionando',\n durationMillis: 'Duración (ms)',\n crosshairLabel: 'Etiqueta',\n crosshairSnap: 'Ajustar al Nodo',\n normal: 'Normal',\n bold: 'Negrita',\n italic: 'Itálica',\n boldItalic: 'Negrita Itálica',\n predefined: 'Predefinido',\n fillOpacity: 'Opacidad de Relleno',\n strokeColor: 'Color de Línea',\n strokeOpacity: 'Opacidad de Línea',\n miniChart: 'Mini-Gráfico',\n histogramBinCount: 'Conteo de Intervalos',\n connectorLine: 'Línea Conectora',\n seriesItems: 'Ítems de Series',\n seriesItemType: 'Tipo de Ítem',\n seriesItemPositive: 'Positivo',\n seriesItemNegative: 'Negativo',\n seriesItemLabels: 'Etiquetas de Ítems',\n columnGroup: 'Columna',\n barGroup: 'Barra',\n pieGroup: 'Torta',\n lineGroup: 'Línea',\n scatterGroup: 'XY (Dispersión)',\n areaGroup: 'Área',\n polarGroup: 'Polar',\n statisticalGroup: 'Estadístico',\n hierarchicalGroup: 'Jerárquico',\n specializedGroup: 'Especializado',\n combinationGroup: 'Combinación',\n groupedColumnTooltip: 'Agrupada',\n stackedColumnTooltip: 'Apilada',\n normalizedColumnTooltip: '100% Apilada',\n groupedBarTooltip: 'Agrupada',\n stackedBarTooltip: 'Apilada',\n normalizedBarTooltip: '100% Apilada',\n pieTooltip: 'Torta',\n donutTooltip: 'Donut',\n lineTooltip: 'Línea',\n stackedLineTooltip: 'Apilado',\n normalizedLineTooltip: 'Apilado 100%',\n groupedAreaTooltip: 'Área',\n stackedAreaTooltip: 'Apilada',\n normalizedAreaTooltip: '100% Apilada',\n scatterTooltip: 'Dispersión',\n bubbleTooltip: 'Burbuja',\n histogramTooltip: 'Histograma',\n radialColumnTooltip: 'Columna Radial',\n radialBarTooltip: 'Barra Radial',\n radarLineTooltip: 'Línea de Radar',\n radarAreaTooltip: 'Área de Radar',\n nightingaleTooltip: 'Nightingale',\n rangeBarTooltip: 'Barra de Intervalo',\n rangeAreaTooltip: 'Área de Intervalo',\n boxPlotTooltip: 'Diagrama de Cajas',\n treemapTooltip: 'Mapa de Áreas',\n sunburstTooltip: 'Estallido Solar',\n waterfallTooltip: 'Cascada',\n heatmapTooltip: 'Mapa de Calor',\n columnLineComboTooltip: 'Columna y Línea',\n areaColumnComboTooltip: 'Área y Columna',\n customComboTooltip: 'Combinación Personalizada',\n innerRadius: 'Radio Interno',\n startAngle: 'Ángulo de Inicio',\n endAngle: 'Ángulo Final',\n reverseDirection: 'Dirección Inversa',\n groupPadding: 'Relleno de Grupo',\n seriesPadding: 'Relleno de Series',\n tile: 'Mosaico',\n whisker: 'Bigote',\n cap: 'Tapón',\n capLengthRatio: 'Relación de Longitud',\n labelPlacement: 'Ubicación de Etiqueta',\n inside: 'Dentro',\n outside: 'Fuera',\n noDataToChart: 'No hay datos disponibles para graficar.',\n pivotChartRequiresPivotMode:\n 'El Gráfico de Pivote requiere el Modo de Pivote habilitado.',\n chartSettingsToolbarTooltip: 'Menú',\n chartLinkToolbarTooltip: 'Vinculado a la Cuadrícula',\n chartUnlinkToolbarTooltip: 'Desvinculado de la Cuadrícula',\n chartDownloadToolbarTooltip: 'Descargar Gráfico',\n chartMenuToolbarTooltip: 'Menú',\n chartEdit: 'Editar Gráfico',\n chartAdvancedSettings: 'Configuración Avanzada',\n chartLink: 'Vincular a la Cuadrícula',\n chartUnlink: 'Desvincular de la Cuadrícula',\n chartDownload: 'Descargar Gráfico',\n histogramFrequency: 'Frecuencia',\n seriesChartType: 'Tipo de Gráfico de Series',\n seriesType: 'Tipo de Series',\n secondaryAxis: 'Eje Secundario',\n seriesAdd: 'Agregar una serie',\n categoryAdd: 'Agregar una categoría',\n bar: 'Barra',\n column: 'Columna',\n histogram: 'Histograma',\n advancedSettings: 'Configuración Avanzada',\n direction: 'Dirección',\n horizontal: 'Horizontal',\n vertical: 'Vertical',\n seriesGroupType: 'Tipo de Grupo',\n groupedSeriesGroupType: 'Agrupadas',\n stackedSeriesGroupType: 'Apiladas',\n normalizedSeriesGroupType: '100% Apiladas',\n legendEnabled: 'Habilitado',\n invalidColor: 'El valor del color es inválido',\n groupedColumnFull: 'Columna Agrupada',\n stackedColumnFull: 'Columna Apilada',\n normalizedColumnFull: 'Columna 100% Apilada',\n groupedBarFull: 'Barra Agrupada',\n stackedBarFull: 'Barra Apilada',\n normalizedBarFull: 'Barra 100% Apilada',\n stackedAreaFull: 'Área Apilada',\n normalizedAreaFull: 'Área 100% Apilada',\n customCombo: 'Combinación Personalizada',\n funnel: 'Embudo',\n coneFunnel: 'Embudo Cono',\n pyramid: 'Pirámide',\n funnelGroup: 'Embudo',\n funnelTooltip: 'Embudo',\n coneFunnelTooltip: 'Embudo Cono',\n pyramidTooltip: 'Pirámide',\n dropOff: 'Caída',\n stageLabels: 'Etiquetas de Etapa',\n reverse: 'Invertir',\n tooltipMode: 'Modo de Información',\n tooltipModeSingle: 'Único',\n tooltipModeShared: 'Múltiple',\n tooltipModeCompact: 'Compacto',\n\n // ARIA\n ariaAdvancedFilterBuilderItem:\n '${variable}. Nivel ${variable}. Presiona ENTER para editar.',\n ariaAdvancedFilterBuilderItemValidation:\n '${variable}. Nivel ${variable}. ${variable} Presiona ENTER para editar.',\n ariaAdvancedFilterBuilderList: 'Lista de Constructor de Filtros Avanzados',\n ariaAdvancedFilterBuilderFilterItem: 'Condición del Filtro',\n ariaAdvancedFilterBuilderGroupItem: 'Grupo de Filtros',\n ariaAdvancedFilterBuilderColumn: 'Columna',\n ariaAdvancedFilterBuilderOption: 'Opción',\n ariaAdvancedFilterBuilderValueP: 'Valor',\n ariaAdvancedFilterBuilderJoinOperator: 'Operador de Unión',\n ariaAdvancedFilterInput: 'Entrada de Filtro Avanzado',\n ariaChecked: 'seleccionado',\n ariaColumn: 'Columna',\n ariaColumnGroup: 'Grupo de Columnas',\n ariaFilterActive: 'Filtro activo',\n ariaColumnFiltered: 'Columna Filtrada',\n ariaCalculatedColumn: 'Columna calculada',\n ariaColumnShowValuesAs: 'Mostrando valores como',\n ariaColumnSelectAll: 'Alternar visibilidad de todas las columnas',\n ariaDateFilterInput: 'Entrada de Filtro de Fecha',\n ariaDefaultListName: 'Lista',\n ariaFilterColumnsInput: 'Entrada de Filtrado de Columnas',\n ariaFilterFromValue: 'Filtrar desde valor',\n ariaFilterInput: 'Entrada de Filtro',\n ariaFilterList: 'Lista de Filtros',\n ariaFilterToValue: 'Filtrar hasta valor',\n ariaFilterValue: 'Valor del Filtro',\n ariaFilterMenuOpen: 'Abrir Menú de Filtros',\n ariaFilteringOperator: 'Operador de Filtrado',\n ariaHidden: 'oculto',\n ariaIndeterminate: 'indeterminado',\n ariaInputEditor: 'Editor de Entrada',\n ariaMenuColumn: 'Presiona ALT ABAJO para abrir el menú de la columna',\n ariaFilterColumn: 'Presiona CTRL ENTER para abrir el filtro',\n ariaRowDeselect: 'Presiona SPACE para anular la selección de esta fila',\n ariaHeaderSelection: 'Columna con selección de encabezado',\n ariaSelectAllCells:\n 'Presiona Espacio o Enter para seleccionar todas las celdas',\n ariaSelectAllRowCells:\n 'Presione Enter para seleccionar todas las celdas de esta fila',\n ariaColumnCellSelection:\n 'Presione Enter para alternar la selección de todas las celdas visibles en esta columna',\n ariaColumnGroupCellSelection:\n 'Presione Enter para alternar la selección de todas las celdas visibles en este grupo de columnas',\n ariaColumnGroupExpansion:\n 'Presione ENTER para expandir o contraer este grupo de columnas',\n ariaColumnGroupCellSelectionAndExpansion:\n 'Presione Enter para alternar la selección de todas las celdas visibles en este grupo de columnas. Presione ALT ENTER para expandir o contraer este grupo de columnas',\n ariaRowSelectAll:\n 'Presiona SPACE para alternar la selección de todas las filas',\n ariaRowToggleSelection:\n 'Presiona SPACE para alternar la selección de la fila',\n ariaRowSelect: 'Presiona SPACE para seleccionar esta fila',\n ariaRowSelectionDisabled:\n 'La selección de filas está deshabilitada para esta fila',\n ariaSearch: 'Buscar',\n ariaSortableColumn: 'Presiona ENTER para ordenar',\n ariaSortableColumnWithCellSelection: 'Presiona ALT ENTER para ordenar',\n ariaToggleVisibility: 'Presiona SPACE para alternar la visibilidad',\n ariaToggleCellValue: 'Presiona SPACE para alternar el valor de la celda',\n ariaUnchecked: 'no seleccionado',\n ariaVisible: 'visible',\n ariaSearchFilterValues: 'Buscar valores de filtro',\n ariaPageSizeSelectorLabel: 'Tamaño de Página',\n ariaChartMenuClose: 'Cerrar Menú de Edición de Gráfica',\n ariaChartSelected: 'Seleccionado',\n ariaSparklineChartDescription:\n 'Sparkline - ${chartType} que muestra ${count} valores entre ${min} y ${max}. Empieza en ${start} y termina en ${end}.',\n ariaSparklineChartDescriptionSingleValue:\n 'Sparkline - ${chartType} que muestra 1 valor: ${value}.',\n ariaSparklineChartDescriptionEmpty:\n 'Sparkline - ${chartType} que no muestra valores.',\n ariaSkeletonCellLoadingFailed: 'Carga de fila fallida',\n ariaSkeletonCellLoading: 'Cargando datos de la fila',\n ariaDeferSkeletonCellLoading: 'Cargando celda',\n\n // ARIA for Batch Edit\n ariaPendingChange: 'Cambio pendiente',\n\n // ARIA Labels for Drop Zones\n ariaRowGroupDropZonePanelLabel: 'Grupos de filas',\n ariaValuesDropZonePanelLabel: 'Valores',\n ariaPivotDropZonePanelLabel: 'Etiquetas de columna',\n ariaDropZoneColumnComponentDescription: 'Presione DELETE para eliminar',\n ariaDropZoneColumnValueItemDescription:\n 'Presione ENTER para cambiar el tipo de agregación',\n ariaDropZoneColumnGroupItemDescription: 'Presione ENTER para ordenar',\n\n // used for aggregate drop zone, format: {aggregation}{ariaDropZoneColumnComponentAggFuncSeparator}{column name}\n ariaDropZoneColumnComponentAggFuncSeparator: ' de ',\n ariaDropZoneColumnComponentSortAscending: 'ascendente',\n ariaDropZoneColumnComponentSortDescending: 'descendente',\n ariaDropZoneColumnComponentSortAbsoluteAscending: 'ascendente absoluto',\n ariaDropZoneColumnComponentSortAbsoluteDescending: 'descendente absoluto',\n ariaLabelDialog: 'Diálogo',\n ariaLabelColumnMenu: 'Menú de Columna',\n ariaLabelColumnFilter: 'Filtro de Columna',\n ariaLabelSelectField: 'Seleccionar Campo',\n\n // Cell Editor\n ariaValidationErrorPrefix: 'Validación del Editor de Celda',\n ariaLabelLoadingContextMenu: 'Cargando menú contextual',\n\n // aria labels for rich select\n ariaLabelRichSelectField: 'Campo de selección enriquecido',\n ariaLabelRichSelectToggleSelection:\n 'Presiona ESPACIO para alternar la selección',\n ariaLabelRichSelectDeselectAllItems:\n 'Presiona SUPRIMIR para deseleccionar todos los elementos',\n ariaLabelRichSelectDeleteSelection:\n 'Presiona SUPRIMIR para deseleccionar el elemento',\n ariaLabelTooltip: 'Información sobre herramientas',\n ariaLabelContextMenu: 'Menú contextual',\n ariaLabelSubMenu: 'Submenú',\n ariaLabelAggregationFunction: 'Función de agregación',\n ariaLabelAdvancedFilterAutocomplete: 'Autocompletar filtro avanzado',\n ariaLabelAdvancedFilterBuilderAddField:\n 'Agregar campo al generador de filtro avanzado',\n ariaLabelAdvancedFilterBuilderColumnSelectField:\n 'Campo de selección de columna del generador de filtro avanzado',\n ariaLabelAdvancedFilterBuilderOptionSelectField:\n 'Campo de selección de opción del generador de filtro avanzado',\n ariaLabelAdvancedFilterBuilderJoinSelectField:\n 'Campo de selección de operador de unión del generador de filtro avanzado',\n\n // ARIA Labels for the Side Bar\n ariaColumnPanelList: 'Lista de columnas',\n ariaFilterPanelList: 'Lista de filtros',\n\n // ARIA labels for new Filters Tool Panel\n ariaLabelAddFilterField: 'Agregar campo de filtro',\n ariaLabelFilterCardDelete: 'Eliminar filtro',\n ariaLabelFilterCardHasEdits: 'Tiene ediciones',\n ariaHasNote: 'Esta celda tiene una nota.',\n\n // Number Format (Status Bar, Pagination Panel)\n thousandSeparator: ',',\n decimalSeparator: '.',\n\n // Data types\n dataTypeText: 'Texto',\n dataTypeNumber: 'Número',\n dataTypeBigInt: 'BigInt',\n dataTypeBoolean: 'Booleano',\n dataTypeDate: 'Fecha',\n dataTypeDateString: 'Cadena de fecha',\n dataTypeDateTime: 'Fecha y hora',\n dataTypeDateTimeString: 'Cadena de fecha y hora',\n dataTypeObject: 'Objeto',\n true: 'Verdadero',\n false: 'Falso',\n invalidDate: 'Fecha inválida',\n invalidNumber: 'Número inválido',\n invalidBigInt: 'BigInt inválido',\n january: 'Enero',\n february: 'Febrero',\n march: 'Marzo',\n april: 'Abril',\n may: 'Mayo',\n june: 'Junio',\n july: 'Julio',\n august: 'Agosto',\n september: 'Septiembre',\n october: 'Octubre',\n november: 'Noviembre',\n december: 'Diciembre',\n\n // Date-time parts\n year: 'Año',\n quarter: 'Trimestre',\n month: 'Mes',\n day: 'Día',\n hour: 'Hora',\n minute: 'Minuto',\n second: 'Segundo',\n\n // Time formats\n timeFormatSlashesDDMMYYYY: 'DD/MM/AAAA',\n timeFormatSlashesMMDDYYYY: 'MM/DD/AAAA',\n timeFormatSlashesDDMMYY: 'DD/MM/AA',\n timeFormatSlashesMMDDYY: 'MM/DD/AA',\n timeFormatDotsDDMYY: 'DD.M.AA',\n timeFormatDotsMDDYY: 'M.DD.AA',\n timeFormatDashesYYYYMMDD: 'AAAA-MM-DD',\n timeFormatSpacesDDMMMMYYYY: 'DD MMMM AAAA',\n timeFormatHHMMSS: 'HH:MM:SS',\n timeFormatHHMMSSAmPm: 'HH:MM:SS a. m./p. m.',\n\n // Editable Column Header Name\n editColumnName: 'Editar nombre de columna',\n ariaColumnHeaderNameEditor: 'Editor de nombre de columna',\n columnHeaderEditApply: 'Aplicar',\n columnHeaderEditCancel: 'Cancelar',\n\n // Calculated Columns\n calculatedColumn: 'Columna calculada',\n calculatedColumnAdd: 'Añadir columna calculada',\n calculatedColumnEdit: 'Editar columna calculada',\n calculatedColumnRemove: 'Eliminar columna calculada',\n calculatedColumnTitle: 'Título',\n calculatedColumnType: 'Tipo',\n calculatedColumnExpression: 'Expresión',\n calculatedColumnExpressionPlaceholder: 'Escriba aquí',\n calculatedColumnExpressionToolsLabel: 'Insertar',\n calculatedColumnColumns: 'Columnas',\n calculatedColumnFunctions: 'Funciones',\n calculatedColumnOperators: 'Operadores',\n calculatedColumnSuggestions: 'Sugerencias de columna calculada',\n calculatedColumnDefaultTitle: 'Sin título',\n calculatedColumnExpressionAmbiguousReference:\n 'Referencia de columna ambigua \"${variable}\". Use la lista de Columnas o una ruta de grupo más específica.',\n calculatedColumnExpressionUnknownReference:\n 'Referencia de columna desconocida \"${variable}\".',\n calculatedColumnExpressionEmpty: 'Introduzca una expresión',\n calculatedColumnTitleEmpty: 'Introduzca un título',\n calculatedColumnApply: 'Aplicar',\n calculatedColumnCancel: 'Cancelar',\n\n // Notes\n note: 'Nota de celda',\n addNote: 'Añadir nota',\n viewNote: 'Ver nota',\n editNote: 'Editar nota',\n deleteNote: 'Eliminar nota',\n notePlaceholder: 'Añadir una nota...',\n};\n","/**\n * Please note:\n *\n * Translations are provided as an illustration only and are\n * not guaranteed to be accurate or error free.\n *\n * They are designed to show developers where to store their\n * chosen phrase or spelling variant in the target language.\n */\n\nexport const AG_GRID_LOCALE_FR = {\n // Set Filter\n selectAll: '(Sélectionner tout)',\n selectAllSearchResults: '(Sélectionner tous les résultats de recherche)',\n addCurrentSelectionToFilter: 'Ajouter la sélection actuelle au filtre',\n searchOoo: 'Chercher...',\n blanks: '(Vides)',\n noMatches: 'Aucune correspondance',\n typeToSearchOoo: 'Tapez pour rechercher...',\n\n // Number Filter & Text Filter\n filterOoo: 'Filtrer...',\n equals: 'Égal à',\n notEqual: \"N'est pas égal à\",\n blank: 'Vide',\n notBlank: 'Non vide',\n empty: 'Choisissez-en un',\n\n // Number Filter\n lessThan: 'Moins de',\n greaterThan: 'Plus de',\n lessThanOrEqual: 'Moins de ou égal à',\n greaterThanOrEqual: 'Plus de ou égal à',\n inRange: 'Entre',\n inRangeStart: 'De',\n inRangeEnd: 'À',\n\n // Text Filter\n contains: 'Contient',\n notContains: 'Ne contient pas',\n startsWith: 'Commence par',\n endsWith: 'Se termine par',\n\n // Date Filter\n dateFormatOoo: 'yyyy-mm-dd',\n before: 'Avant',\n after: 'Après',\n yesterday: 'Hier',\n today: \"Aujourd'hui\",\n tomorrow: 'Demain',\n last7Days: 'Les 7 derniers jours',\n lastWeek: 'La semaine dernière',\n thisWeek: 'Cette semaine',\n nextWeek: 'La semaine prochaine',\n last30Days: 'Les 30 derniers jours',\n lastMonth: 'Le mois dernier',\n thisMonth: 'Ce mois-ci',\n nextMonth: 'Le mois prochain',\n last90Days: 'Les 90 derniers jours',\n lastQuarter: 'Le dernier trimestre',\n thisQuarter: 'Ce trimestre',\n nextQuarter: 'Le prochain trimestre',\n lastYear: \"L'année dernière\",\n thisYear: 'Cette année',\n yearToDate: \"Depuis le début de l'année\",\n nextYear: \"L'année prochaine\",\n last6Months: 'Les 6 derniers mois',\n last12Months: 'Les 12 derniers mois',\n last24Months: 'Les 24 derniers mois',\n\n // Filter Conditions\n andCondition: 'ET',\n orCondition: 'OU',\n\n // Filter Buttons\n applyFilter: 'Appliquer',\n applyColumnToolPanel: 'Appliquer',\n resetFilter: 'Réinitialiser',\n clearFilter: 'Effacer',\n cancelFilter: 'Annuler',\n cancelColumnToolPanel: 'Annuler',\n\n // Filter Titles\n textFilter: 'Filtre de texte',\n numberFilter: 'Filtre numérique',\n dateFilter: 'Filtre de date',\n setFilter: 'Filtre de jeu',\n\n // Group Column Filter\n groupFilterSelect: 'Sélectionner le champ :',\n\n // New Filter Tool Panel\n filterSummaryInactive: 'est (Tous)',\n filterSummaryContains: 'contient',\n filterSummaryNotContains: 'ne contient pas',\n filterSummaryTextEquals: 'égale',\n filterSummaryTextNotEqual: \"n'égale pas\",\n filterSummaryStartsWith: 'commence par',\n filterSummaryEndsWith: 'termine par',\n filterSummaryBlank: 'est vide',\n filterSummaryNotBlank: \"n'est pas vide\",\n filterSummaryEquals: '=',\n filterSummaryNotEqual: '!=',\n filterSummaryGreaterThan: '>',\n filterSummaryGreaterThanOrEqual: '>=',\n filterSummaryLessThan: '<',\n filterSummaryLessThanOrEqual: '<=',\n filterSummaryInRange: 'entre',\n filterSummaryInRangeValues: '(${variable}, ${variable})',\n filterSummaryTextQuote: '\"${variable}\"',\n filterSummaryListInactive: 'est (Tous)',\n filterSummaryListSeparator: ', ',\n filterSummaryListShort: 'est (${variable})',\n filterSummaryListLong: 'est (${variable}) et ${variable} de plus',\n addFilterCard: 'Ajouter un filtre',\n agTextColumnFilterDisplayName: 'Filtre simple',\n agNumberColumnFilterDisplayName: 'Filtre simple',\n agDateColumnFilterDisplayName: 'Filtre simple',\n agSetColumnFilterDisplayName: 'Filtre de sélection',\n agMultiColumnFilterDisplayName: 'Filtre combiné',\n addFilterPlaceholder: 'Rechercher dans les colonnes...',\n\n // Advanced Filter\n advancedFilterContains: 'contient',\n advancedFilterNotContains: 'ne contient pas',\n advancedFilterTextEquals: 'égal',\n advancedFilterTextNotEqual: \"n'est pas égal\",\n advancedFilterStartsWith: 'commence par',\n advancedFilterEndsWith: 'se termine par',\n advancedFilterBlank: 'est vide',\n advancedFilterNotBlank: \"n'est pas vide\",\n advancedFilterEquals: '=',\n advancedFilterNotEqual: '!=',\n advancedFilterGreaterThan: '>',\n advancedFilterGreaterThanOrEqual: '>=',\n advancedFilterLessThan: '<',\n advancedFilterLessThanOrEqual: '<=',\n advancedFilterTrue: 'est vrai',\n advancedFilterFalse: 'est faux',\n advancedFilterAnd: 'ET',\n advancedFilterOr: 'OU',\n advancedFilterApply: 'Appliquer',\n advancedFilterReset: 'Réinitialiser',\n advancedFilterCancel: 'Annuler',\n advancedFilterClear: 'Effacer',\n advancedFilterBuilder: 'Constructeur',\n advancedFilterValidationMissingColumn: 'La colonne est manquante',\n advancedFilterValidationMissingOption: \"L'option est manquante\",\n advancedFilterValidationMissingValue: 'La valeur est manquante',\n advancedFilterValidationInvalidColumn: 'Colonne non trouvée',\n advancedFilterValidationInvalidOption: 'Option non trouvée',\n advancedFilterValidationMissingQuote:\n 'Il manque une guillemet de fin à la valeur',\n advancedFilterValidationNotANumber: \"La valeur n'est pas un nombre\",\n advancedFilterValidationInvalidDate: \"La valeur n'est pas une date valide\",\n advancedFilterValidationMissingCondition: 'La condition est manquante',\n advancedFilterValidationJoinOperatorMismatch:\n \"Les opérateurs de jonction au sein d'une condition doivent être identiques\",\n advancedFilterValidationInvalidJoinOperator:\n 'Opérateur de jonction non trouvé',\n advancedFilterValidationMissingEndBracket: 'Guillemet de fin manquante',\n advancedFilterValidationExtraEndBracket: 'Trop de crochets de fin',\n advancedFilterValidationMessage:\n \"L'expression contient une erreur. ${variable} - ${variable}.\",\n advancedFilterValidationMessageAtEnd:\n \"L'expression contient une erreur. ${variable} à la fin de l'expression.\",\n advancedFilterBuilderTitle: 'Filtre Avancé',\n advancedFilterBuilderApply: 'Appliquer',\n advancedFilterBuilderClear: 'Effacer',\n advancedFilterBuilderReset: 'Réinitialiser',\n advancedFilterBuilderCancel: 'Annuler',\n advancedFilterBuilderAddButtonTooltip: 'Ajouter un filtre ou un groupe',\n advancedFilterBuilderRemoveButtonTooltip: 'Supprimer',\n advancedFilterBuilderMoveUpButtonTooltip: 'Monter',\n advancedFilterBuilderMoveDownButtonTooltip: 'Descendre',\n advancedFilterBuilderAddJoin: 'Ajouter un groupe',\n advancedFilterBuilderAddCondition: 'Ajouter un filtre',\n advancedFilterBuilderSelectColumn: 'Sélectionner une colonne',\n advancedFilterBuilderSelectOption: 'Sélectionner une option',\n advancedFilterBuilderEnterValue: 'Entrer une valeur...',\n advancedFilterBuilderValidationAlreadyApplied:\n 'Le filtre actuel est déjà appliqué.',\n advancedFilterBuilderValidationIncomplete:\n 'Toutes les conditions ne sont pas remplies.',\n advancedFilterBuilderValidationSelectColumn:\n 'Vous devez sélectionner une colonne.',\n advancedFilterBuilderValidationSelectOption:\n 'Vous devez sélectionner une option.',\n advancedFilterBuilderValidationEnterValue: 'Vous devez entrer une valeur.',\n\n // Editor Validation Errors\n minDateValidation: 'La date doit être après ${variable}',\n maxDateValidation: 'La date doit être avant ${variable}',\n maxLengthValidation: 'Doit contenir ${variable} caractères ou moins.',\n minValueValidation: 'Doit être supérieur ou égal à ${variable}',\n maxValueValidation: 'Doit être inférieur ou égal à ${variable}',\n strictMinValueValidation: 'Doit être supérieur à ${variable}',\n strictMaxValueValidation: 'Doit être inférieur à ${variable}',\n invalidSelectionValidation: 'Sélection invalide.',\n\n // Formulas\n invalidFormulaValidation: 'Formule invalide.',\n formulaParseInvalidCellReference:\n 'Reference de cellule invalide : ${variable}.',\n formulaParseInvalidRangeEndReference: 'Reference de fin de plage invalide.',\n formulaParseUnterminatedString: 'Chaine non terminee.',\n formulaParseUnexpectedCharacter: 'Caractere inattendu : ${variable}.',\n formulaParseOperatorStackUnderflow: 'Sous-debordement de pile d operateurs.',\n formulaParseMissingOperand: \"Operande manquant pour '${variable}'.\",\n formulaParseInternalUnexpectedFrameDuringReduction:\n 'Erreur interne : frame inattendue pendant la reduction.',\n formulaParseInternalUnexpectedFrameBeforeOpenParen:\n \"Erreur interne : frame inattendue avant '('.\",\n formulaParseMisplacedComma: 'Virgule mal placee.',\n formulaParseCommaOutsideFunctionCall:\n 'Virgule en dehors d un appel de fonction.',\n formulaParseInternalUnexpectedFrameBeforeCloseParen:\n \"Erreur interne : frame inattendue avant ')'.\",\n formulaParseMismatchedParentheses: 'Parentheses non correspondantes.',\n formulaParseUnsupportedOperand: 'Operande non pris en charge : ${variable}.',\n formulaParseMismatchedParenthesesOrUnfinishedFunctionCall:\n 'Parentheses non correspondantes ou appel de fonction inacheve.',\n formulaParseInvalidExpression: 'Expression invalide.',\n formulaParseFormulasMustBeginWithEquals:\n 'Les formules doivent commencer par =.',\n formulaSerializeStringContainsQuote:\n 'La chaine contient un guillemet (\") que le tokenizer ne prend pas en charge.',\n formulaSerializeCannotProduceAbsoluteColumnLabelFromId:\n \"Impossible de produire un libelle de COLONNE absolu a partir de l id '${variable}'.\",\n formulaSerializeCannotProduceAbsoluteRowIndexFromId:\n \"Impossible de produire un index de LIGNE absolu a partir de l id '${variable}'.\",\n formulaSerializeCannotProduceRowIndexFromId:\n \"Impossible de produire un index de LIGNE a partir de l id '${variable}'.\",\n formulaSerializeCannotMapColumnIdToA1Label:\n \"Impossible de mapper l id de colonne '${variable}' vers un libelle A1.\",\n formulaSerializeCannotParseAbsoluteRowIndex:\n \"Impossible d analyser l index de ligne absolu '${variable}'.\",\n formulaSerializeCannotMapRowIdToA1Index:\n \"Impossible de mapper l id de ligne '${variable}' vers un index A1.\",\n formulaEvalRangeNotAllowedInScalarContext:\n 'Une plage n est pas autorisee dans un contexte scalaire.',\n formulaEvalUnknownReferenceToCell: 'Reference de cellule inconnue.',\n formulaEvalUnsupportedOperation: 'Operation non prise en charge ${variable}.',\n formulaEvalInvalidAbsoluteRow: 'Ligne absolue invalide.',\n formulaEvalUnrecognisedRowId: 'Id de ligne non reconnu.',\n formulaEvalInvalidAbsoluteColumn: 'Colonne absolue invalide.',\n formulaEvalUnrecognisedColumnId: 'Id de colonne non reconnu.',\n formulaEvalUnrecognisedRowInRange: 'Ligne non reconnue dans la plage.',\n formulaEvalUnrecognisedReferenceToCell: 'Reference de cellule non reconnue.',\n formulaEvalIncompleteRangeReference: 'Reference de plage incomplete.',\n formulaFunctionExpectedExactlyArguments:\n '${variable} : ${variable} arguments exactement attendus.',\n formulaFunctionExpectedAtMostArguments:\n '${variable} : ${variable} arguments au maximum attendus.',\n formulaFunctionExpectedAtLeastArguments:\n '${variable} : ${variable} arguments au minimum attendus.',\n formulaFunctionInvalidCriteriaWildcardsWithComparator:\n 'Critere invalide : jokers avec comparateur.',\n formulaFunctionNonNumericArgument: '${variable} : argument non numerique.',\n formulaFunctionDivisionByZero: '${variable} : division par zero.',\n formulaFunctionCannotCombineDatesWithBigInt:\n '${variable} : impossible de combiner des dates avec BigInt.',\n formulaFunctionRequiresAtLeastOneNumericValue:\n '${variable} : au moins une valeur numerique requise.',\n formulaFunctionRequiresAtLeastOneValue:\n '${variable} : au moins une valeur requise.',\n formulaFunctionAllValuesMustBeNumbers:\n '${variable} : toutes les valeurs doivent etre numeriques.',\n formulaFunctionArgumentMustBeRange:\n '${variable} : l argument ${variable} doit etre une plage.',\n formulaFunctionArgumentMustBeValue:\n '${variable} : l argument ${variable} doit etre une valeur.',\n formulaFunctionRangesHaveDifferentSizes:\n '${variable} : les plages ont des tailles differentes.',\n formulaFunctionValuesMustBeNumeric:\n '${variable} : les valeurs doivent etre numeriques.',\n formulaFunctionValuesMustBeIntegers:\n '${variable} : les valeurs doivent etre des entiers.',\n formulaFunctionUnsupportedValueType:\n '${variable} : type de valeur non pris en charge.',\n formulaFunctionDivNonNumericArgument: 'DIV : argument non numerique.',\n formulaFunctionDivDivisionByZero: 'DIV : division par zero.',\n formulaFunctionSumCannotCombineDatesWithBigInt:\n 'SUM : impossible de combiner des dates avec BigInt.',\n formulaFunctionSumRequiresAtLeastOneNumericValue:\n 'SUM : au moins une valeur numerique requise.',\n formulaFunctionAvgRequiresAtLeastOneValue:\n 'AVG : au moins une valeur requise.',\n formulaFunctionMedianAllValuesMustBeNumbers:\n 'MEDIAN : toutes les valeurs doivent etre numeriques.',\n formulaFunctionMedianRequiresAtLeastOneValue:\n 'MEDIAN : au moins une valeur requise.',\n formulaFunctionSumifFirstArgumentMustBeRange:\n 'SUMIF : le premier argument doit etre une plage.',\n formulaFunctionSumifSecondArgumentMustBeValue:\n 'SUMIF : le deuxieme argument doit etre une valeur (criteria).',\n formulaFunctionSumifThirdArgumentMustBeRange:\n 'SUMIF : le troisieme argument doit etre une plage (sum_range).',\n formulaFunctionSumifRangesHaveDifferentSizes:\n 'SUMIF : les plages ont des tailles differentes.',\n formulaFunctionCountifFirstArgumentMustBeRange:\n 'COUNTIF : le premier argument doit etre une plage.',\n formulaFunctionCountifSecondArgumentMustBeValue:\n 'COUNTIF : le deuxieme argument doit etre une valeur (criteria).',\n formulaFunctionConcatUnsupportedValueType:\n 'CONCAT : type de valeur non pris en charge.',\n formulaFunctionMinRequiresAtLeastOneValue:\n 'MIN : au moins une valeur requise.',\n formulaFunctionMaxRequiresAtLeastOneValue:\n 'MAX : au moins une valeur requise.',\n formulaFunctionPercentNonNumericArgument: 'PERCENT : argument non numerique.',\n formulaFunctionPowerNonNumericArgument: 'POWER : argument non numerique.',\n formulaServiceCircularReference: 'Reference circulaire.',\n formulaServiceExpectedParsableFormula: 'Formule analysable attendue.',\n formulaServiceInternalSchedulingError: 'Erreur interne de planification.',\n tooltipValidationErrorSeparator: '. ',\n\n // Side Bar\n columns: 'Colonnes',\n filters: 'Filtres',\n\n // columns tool panel\n pivotMode: 'Mode pivot',\n groups: 'Groupes de lignes',\n rowGroupColumnsEmptyMessage:\n 'Faites glisser ici pour définir les groupes de lignes',\n values: 'Valeurs',\n valueColumnsEmptyMessage: 'Faites glisser ici pour agréger',\n pivots: 'Étiquettes de colonnes',\n pivotColumnsEmptyMessage:\n 'Faites glisser ici pour définir les étiquettes de colonnes',\n\n // Header of the Default Group Column\n group: 'Groupe',\n\n // Row Drag\n rowDragRow: 'rang',\n rowDragRows: 'rangs',\n\n // Other\n loadingOoo: 'Chargement...',\n loadingError: 'ERR',\n noRowsToShow: 'Aucune ligne à afficher',\n noMatchingRows: 'Aucune ligne correspondante',\n exportingOoo: 'Exportation...',\n fileInputOverlay: 'Glissez-déposez un fichier pour importer des données',\n fileInputOverlayBrowse: 'Parcourir les fichiers',\n fileInputProcessing: 'Traitement de ${variable}',\n fileInputProcessingFailed: 'Erreur lors du traitement de ${variable}',\n enabled: 'Activé',\n\n // Menu\n pinColumn: 'Épingler la colonne',\n pinLeft: 'Épingler à gauche',\n pinRight: 'Épingler à droite',\n noPin: \"Pas d'épingle\",\n pinRow: 'Épingler la ligne',\n pinTop: 'Épingler en haut',\n pinBottom: 'Épingler en bas',\n unpinRow: 'Désépingler la ligne',\n valueAggregation: 'Agrégation de valeur',\n noAggregation: 'Aucun',\n showValuesAs: 'Afficher les valeurs en tant que',\n showValuesAsNone: 'Aucun',\n percentOfGrandTotal: '% du total général',\n percentOfColumnTotal: '% du total de la colonne',\n percentOfRowTotal: '% du total de la ligne',\n percentOfParentRowTotal: '% du total de la ligne parente',\n percentOfParentColumnTotal: '% du total de la colonne parente',\n percentOfGrandTotalDescription:\n 'Chaque valeur en pourcentage du total général de la colonne.',\n percentOfColumnTotalDescription:\n 'Chaque valeur en pourcentage du total de sa colonne — chaque colonne totalise 100 %.',\n percentOfRowTotalDescription:\n 'Chaque valeur en pourcentage du total de la ligne sur les colonnes du tableau croisé.',\n percentOfParentRowTotalDescription:\n 'Chaque valeur en pourcentage de son groupe parent.',\n percentOfParentColumnTotalDescription:\n 'Chaque valeur en pourcentage de sa colonne de tableau croisé parente.',\n autosizeThisColumn: 'Ajuster automatiquement cette colonne',\n autosizeAllColumns: 'Ajuster automatiquement toutes les colonnes',\n groupBy: 'Regrouper par ${variable}',\n ungroupBy: 'Dissocier par ${variable}',\n ungroupAll: 'Dégrouper tout',\n addToValues: 'Ajouter ${variable} aux valeurs',\n removeFromValues: 'Retirer ${variable} des valeurs',\n addToLabels: 'Ajouter ${variable} aux étiquettes',\n removeFromLabels: 'Retirer ${variable} des étiquettes',\n resetColumns: 'Réinitialiser les colonnes',\n expandAll: 'Développer tous les groupes de lignes',\n collapseAll: 'Fermer tous les groupes de lignes',\n copy: 'Copier',\n ctrlC: 'Ctrl+C',\n ctrlX: 'Ctrl+X',\n copyWithHeaders: 'Copier avec en-têtes',\n copyWithGroupHeaders: 'Copier avec en-têtes de groupe',\n cut: 'Couper',\n paste: 'Coller',\n ctrlV: 'Ctrl+V',\n export: 'Exporter',\n csvExport: 'Export CSV',\n excelExport: 'Export Excel',\n pdfExport: 'Export PDF',\n columnFilter: 'Filtre de colonne',\n columnChooser: 'Choisir les colonnes',\n chooseColumns: 'Choisir les colonnes',\n sortAscending: 'Trier par ordre croissant',\n sortDescending: 'Trier par ordre décroissant',\n sortAbsoluteAscending: 'Trier par ordre croissant absolu',\n sortAbsoluteDescending: 'Trier par ordre décroissant absolu',\n sortUnSort: 'Effacer le tri',\n shiftF2: 'Shift+F2',\n toolbarFind: 'Rechercher',\n toolbarFindPreviousMatch: 'Correspondance précédente',\n toolbarFindNextMatch: 'Correspondance suivante',\n toolbarQuickFilter: 'Filtrer',\n toolbarMenu: 'Menu',\n\n // Enterprise Menu Aggregation and Status Bar\n sum: 'Somme',\n first: 'Premier',\n last: 'Dernier',\n min: 'Min',\n max: 'Max',\n none: 'Aucun',\n count: 'Nombre',\n avg: 'Moyenne',\n filteredRows: 'Filtré',\n selectedRows: 'Sélectionné',\n totalRows: 'Total des Lignes',\n totalAndFilteredRows: 'Lignes',\n more: 'Plus',\n to: 'à',\n of: 'de',\n page: 'Page',\n pageLastRowUnknown: '?',\n nextPage: 'Page Suivante',\n lastPage: 'Dernière Page',\n firstPage: 'Première Page',\n previousPage: 'Page Précédente',\n pageSizeSelectorLabel: 'Taille de la Page :',\n footerTotal: 'Total',\n statusBarLastRowUnknown: '?',\n scrollColumnIntoView: 'Faire défiler ${variable} dans la vue',\n\n // Pivoting\n pivotColumnGroupTotals: 'Total',\n\n // Enterprise Menu (Charts)\n pivotChartAndPivotMode: 'Graphique pivot et mode pivot',\n pivotChart: 'Graphique pivot',\n chartRange: 'Plage de graphique',\n columnChart: 'Colonne',\n groupedColumn: 'Groupé',\n stackedColumn: 'Empilé',\n normalizedColumn: '100% empilé',\n barChart: 'Barre',\n groupedBar: 'Groupé',\n stackedBar: 'Empilé',\n normalizedBar: '100% empilé',\n pieChart: 'Camembert',\n pie: 'Camembert',\n donut: 'Donut',\n lineChart: 'Ligne',\n stackedLine: 'Empilé',\n normalizedLine: '100% Empilé',\n xyChart: 'X Y (Nuage de points)',\n scatter: 'Nuage de points',\n bubble: 'Bulle',\n areaChart: 'Aire',\n area: 'Aire',\n stackedArea: 'Empilé',\n normalizedArea: '100% empilé',\n histogramChart: 'Histogramme',\n polarChart: 'Polaire',\n radarLine: 'Ligne radar',\n radarArea: 'Aire radar',\n nightingale: 'Nightingale',\n radialColumn: 'Colonne radiale',\n radialBar: 'Barre radiale',\n statisticalChart: 'Statistique',\n boxPlot: 'Boîte à moustaches',\n rangeBar: 'Barre de plage',\n rangeArea: 'Aire de plage',\n hierarchicalChart: 'Hiérarchique',\n treemap: 'Arborescence',\n sunburst: 'Rayonnement',\n specializedChart: 'Spécialisé',\n waterfall: 'Cascade',\n heatmap: 'Carte thermique',\n combinationChart: 'Combinaison',\n columnLineCombo: 'Colonne et ligne',\n AreaColumnCombo: 'Aire et colonne',\n\n // Charts\n pivotChartTitle: 'Graphique croisé dynamique',\n rangeChartTitle: 'Graphique en plage',\n settings: 'Graphique',\n data: 'Configurer',\n format: 'Personnaliser',\n categories: 'Catégories',\n defaultCategory: '(Aucun)',\n series: 'Séries',\n switchCategorySeries: 'Changer Catégorie / Séries',\n categoryValues: 'Valeurs de catégorie',\n seriesLabels: 'Étiquettes de séries',\n aggregate: 'Agrégat',\n xyValues: 'Valeurs X Y',\n paired: 'Mode apparié',\n axis: 'Axe',\n xAxis: 'Axe horizontal',\n yAxis: 'Axe vertical',\n polarAxis: 'Axe polaire',\n radiusAxis: 'Axe de rayon',\n navigator: 'Navigateur',\n zoom: 'Zoom',\n animation: 'Animation',\n crosshair: 'Réticule',\n color: 'Couleur',\n thickness: 'Épaisseur',\n preferredLength: 'Longueur préférée',\n xType: 'Type X',\n axisType: \"Type d'axe\",\n automatic: 'Automatique',\n category: 'Catégorie',\n number: 'Nombre',\n time: 'Temps',\n timeFormat: 'Format de temps',\n autoRotate: 'Rotation auto',\n labelRotation: 'Rotation',\n circle: 'Cercle',\n polygon: 'Polygone',\n square: 'Carré',\n cross: 'Croix',\n diamond: 'Diamant',\n plus: 'Plus',\n triangle: 'Triangle',\n heart: 'Cœur',\n orientation: 'Orientation',\n fixed: 'Fixé',\n parallel: 'Parallèle',\n perpendicular: 'Perpendiculaire',\n radiusAxisPosition: 'Position',\n ticks: 'Graduations',\n gridLines: 'Lignes de grille',\n width: 'Largeur',\n height: 'Hauteur',\n length: 'Longueur',\n padding: 'Rembourrage',\n spacing: 'Espacement',\n chartStyle: 'Style de graphique',\n title: 'Titre',\n chartTitles: 'Titres',\n chartTitle: 'Titre du graphique',\n chartSubtitle: 'Sous-titre',\n horizontalAxisTitle: \"Titre de l'axe horizontal\",\n verticalAxisTitle: \"Titre de l'axe vertical\",\n polarAxisTitle: \"Titre de l'axe polaire\",\n titlePlaceholder: 'Titre du graphique',\n background: 'Arrière-plan',\n font: 'Police',\n weight: 'Poids',\n top: 'Haut',\n right: 'Droite',\n bottom: 'Bas',\n left: 'Gauche',\n labels: 'Étiquettes',\n calloutLabels: \"Étiquettes d'appel\",\n sectorLabels: 'Étiquettes de secteur',\n positionRatio: 'Ratio de position',\n size: 'Taille',\n shape: 'Forme',\n minSize: 'Taille minimum',\n maxSize: 'Taille maximum',\n legend: 'Légende',\n position: 'Position',\n markerSize: 'Taille du marqueur',\n markerStroke: 'Contour du marqueur',\n markerPadding: 'Rembourrage du marqueur',\n itemSpacing: 'Espacement des éléments',\n itemPaddingX: \"Rembourrage d'élément X\",\n itemPaddingY: \"Rembourrage d'élément Y\",\n layoutHorizontalSpacing: 'Espacement horizontal',\n layoutVerticalSpacing: 'Espacement vertical',\n strokeWidth: 'Épaisseur du trait',\n offset: 'Décalage',\n offsets: 'Décalages',\n tooltips: 'Info-bulles',\n callout: 'Appel',\n markers: 'Marqueurs',\n shadow: 'Ombre',\n blur: 'Flou',\n xOffset: 'Décalage X',\n yOffset: 'Décalage Y',\n lineWidth: 'Épaisseur de la ligne',\n lineDash: 'Tirets de la ligne',\n lineDashOffset: 'Décalage des tirets',\n scrollingZoom: 'Défilement',\n scrollingStep: 'Étape de défilement',\n selectingZoom: 'Sélection',\n durationMillis: 'Durée (ms)',\n crosshairLabel: 'Étiquette',\n crosshairSnap: 'Accrocher au nœud',\n normal: 'Normal',\n bold: 'Gras',\n italic: 'Italique',\n boldItalic: 'Gras Italique',\n predefined: 'Prédéfini',\n fillOpacity: 'Opacité de remplissage',\n strokeColor: 'Couleur du trait',\n strokeOpacity: 'Opacité du trait',\n miniChart: 'Mini-Graphique',\n histogramBinCount: 'Nombre de bins',\n connectorLine: 'Ligne de connexion',\n seriesItems: 'Éléments de série',\n seriesItemType: \"Type d'élément\",\n seriesItemPositive: 'Positif',\n seriesItemNegative: 'Négatif',\n seriesItemLabels: \"Étiquettes d'éléments\",\n columnGroup: 'Colonne',\n barGroup: 'Barre',\n pieGroup: 'Camembert',\n lineGroup: 'Ligne',\n scatterGroup: 'X Y (Nuage de points)',\n areaGroup: 'Zone',\n polarGroup: 'Polaire',\n statisticalGroup: 'Statistique',\n hierarchicalGroup: 'Hiérarchique',\n specializedGroup: 'Spécialisé',\n combinationGroup: 'Combinaison',\n groupedColumnTooltip: 'Groupe',\n stackedColumnTooltip: 'Empilé',\n normalizedColumnTooltip: '100% Empilé',\n groupedBarTooltip: 'Groupe',\n stackedBarTooltip: 'Empilé',\n normalizedBarTooltip: '100% Empilé',\n pieTooltip: 'Camembert',\n donutTooltip: 'Donut',\n lineTooltip: 'Ligne',\n stackedLineTooltip: 'Empilé',\n normalizedLineTooltip: '100% Empilé',\n groupedAreaTooltip: 'Zone',\n stackedAreaTooltip: 'Empilé',\n normalizedAreaTooltip: '100% Empilé',\n scatterTooltip: 'Nuage de points',\n bubbleTooltip: 'Bulle',\n histogramTooltip: 'Histogramme',\n radialColumnTooltip: 'Colonne radiale',\n radialBarTooltip: 'Barre radiale',\n radarLineTooltip: 'Ligne radar',\n radarAreaTooltip: 'Zone radar',\n nightingaleTooltip: 'Nightingale',\n rangeBarTooltip: 'Barre de plage',\n rangeAreaTooltip: 'Zone de plage',\n boxPlotTooltip: 'Boîte à moustaches',\n treemapTooltip: 'Treemap',\n sunburstTooltip: 'Rayon de soleil',\n waterfallTooltip: \"Chute d'eau\",\n heatmapTooltip: 'Carte thermique',\n columnLineComboTooltip: 'Colonne & Ligne',\n areaColumnComboTooltip: 'Zone & Colonne',\n customComboTooltip: 'Combinaison Personnalisée',\n innerRadius: 'Rayon intérieur',\n startAngle: 'Angle de départ',\n endAngle: 'Angle de fin',\n reverseDirection: 'Inverser la direction',\n groupPadding: 'Rembourrage de groupe',\n seriesPadding: 'Rembourrage de séries',\n tile: 'Tuile',\n whisker: 'Moustache',\n cap: 'Capuchon',\n capLengthRatio: 'Ratio de longueur',\n labelPlacement: 'Placement',\n inside: \"À l'intérieur\",\n outside: \"À l'extérieur\",\n noDataToChart: 'Aucune donnée disponible à afficher.',\n pivotChartRequiresPivotMode:\n 'Le graphique croisé dynamique nécessite le mode croisé activé.',\n chartSettingsToolbarTooltip: 'Menu',\n chartLinkToolbarTooltip: 'Lié à la grille',\n chartUnlinkToolbarTooltip: 'Détaché de la grille',\n chartDownloadToolbarTooltip: 'Télécharger le graphique',\n chartMenuToolbarTooltip: 'Menu',\n chartEdit: 'Modifier le graphique',\n chartAdvancedSettings: 'Paramètres avancés',\n chartLink: 'Lier à la grille',\n chartUnlink: 'Détacher de la grille',\n chartDownload: 'Télécharger le graphique',\n histogramFrequency: 'Fréquence',\n seriesChartType: 'Type de graphique de séries',\n seriesType: 'Type de série',\n secondaryAxis: 'Axe secondaire',\n seriesAdd: 'Ajouter une série',\n categoryAdd: 'Ajouter une catégorie',\n bar: 'Barre',\n column: 'Colonne',\n histogram: 'Histogramme',\n advancedSettings: 'Paramètres avancés',\n direction: 'Direction',\n horizontal: 'Horizontal',\n vertical: 'Vertical',\n seriesGroupType: 'Type de groupe',\n groupedSeriesGroupType: 'Groupé',\n stackedSeriesGroupType: 'Empilé',\n normalizedSeriesGroupType: '100% Empilé',\n legendEnabled: 'Activé',\n invalidColor: 'La valeur de couleur est invalide',\n groupedColumnFull: 'Colonne groupée',\n stackedColumnFull: 'Colonne empilée',\n normalizedColumnFull: 'Colonne 100% empilée',\n groupedBarFull: 'Barre groupée',\n stackedBarFull: 'Barre empilée',\n normalizedBarFull: 'Barre 100% empilée',\n stackedAreaFull: 'Zone empilée',\n normalizedAreaFull: 'Zone 100% empilée',\n customCombo: 'Combinaison personnalisée',\n funnel: 'Entonnoir',\n coneFunnel: 'Entonnoir Cône',\n pyramid: 'Pyramide',\n funnelGroup: 'Entonnoir',\n funnelTooltip: 'Entonnoir',\n coneFunnelTooltip: 'Entonnoir Cône',\n pyramidTooltip: 'Pyramide',\n dropOff: 'Abandon',\n stageLabels: 'Étiquettes de Stade',\n reverse: 'Inverser',\n tooltipMode: \"Mode d'info-bulle\",\n tooltipModeSingle: 'Unique',\n tooltipModeShared: 'Multiple',\n tooltipModeCompact: 'Compact',\n\n // ARIA\n ariaAdvancedFilterBuilderItem:\n '${variable}. Niveau ${variable}. Appuyez sur ENTER pour éditer.',\n ariaAdvancedFilterBuilderItemValidation:\n '${variable}. Niveau ${variable}. ${variable} Appuyez sur ENTER pour éditer.',\n ariaAdvancedFilterBuilderList: 'Liste de cadre de filtre avancé',\n ariaAdvancedFilterBuilderFilterItem: 'Condition de filtre',\n ariaAdvancedFilterBuilderGroupItem: 'Groupe de filtre',\n ariaAdvancedFilterBuilderColumn: 'Colonne',\n ariaAdvancedFilterBuilderOption: 'Option',\n ariaAdvancedFilterBuilderValueP: 'Valeur',\n ariaAdvancedFilterBuilderJoinOperator: 'Opérateur de jonction',\n ariaAdvancedFilterInput: 'Entrée de filtre avancé',\n ariaChecked: 'coché',\n ariaColumn: 'Colonne',\n ariaColumnGroup: 'Groupe de colonnes',\n ariaFilterActive: 'Filtre actif',\n ariaColumnFiltered: 'Colonne filtrée',\n ariaCalculatedColumn: 'Colonne calculée',\n ariaColumnShowValuesAs: 'Affichage des valeurs en tant que',\n ariaColumnSelectAll: 'Basculer la visibilité de toutes les colonnes',\n ariaDateFilterInput: 'Entrée de filtre de date',\n ariaDefaultListName: 'Liste',\n ariaFilterColumnsInput: 'Entrée de filtre de colonnes',\n ariaFilterFromValue: 'Filtrer depuis la valeur',\n ariaFilterInput: 'Entrée de filtre',\n ariaFilterList: 'Liste de filtres',\n ariaFilterToValue: \"Filtrer jusqu'à la valeur\",\n ariaFilterValue: 'Valeur du filtre',\n ariaFilterMenuOpen: 'Ouvrir le menu de filtre',\n ariaFilteringOperator: 'Opérateur de filtrage',\n ariaHidden: 'caché',\n ariaIndeterminate: 'indéterminé',\n ariaInputEditor: \"Éditeur d'entrée\",\n ariaMenuColumn: 'Appuyez sur ALT BAS pour ouvrir le menu de colonne',\n ariaFilterColumn: 'Appuyez sur CTRL ENTER pour ouvrir le filtre',\n ariaRowDeselect: 'Appuyez sur ESPACE pour désélectionner cette ligne',\n ariaHeaderSelection: \"Colonne avec sélection d'en-tête\",\n ariaSelectAllCells:\n 'Appuyez sur Espace ou Entrée pour sélectionner toutes les cellules',\n ariaSelectAllRowCells:\n 'Appuyez sur Entrée pour sélectionner toutes les cellules de cette ligne',\n ariaColumnCellSelection:\n 'Appuyez sur Entrée pour basculer la sélection de toutes les cellules visibles de cette colonne',\n ariaColumnGroupCellSelection:\n 'Appuyez sur Entrée pour basculer la sélection de toutes les cellules visibles de ce groupe de colonnes',\n ariaColumnGroupExpansion:\n 'Appuyez sur ENTER pour développer ou réduire ce groupe de colonnes',\n ariaColumnGroupCellSelectionAndExpansion:\n 'Appuyez sur Entrée pour basculer la sélection de toutes les cellules visibles de ce groupe de colonnes. Appuyez sur ALT ENTER pour développer ou réduire ce groupe de colonnes',\n ariaRowSelectAll:\n 'Appuyez sur ESPACE pour basculer la sélection de toutes les lignes',\n ariaRowToggleSelection:\n 'Appuyez sur ESPACE pour basculer la sélection de la ligne',\n ariaRowSelect: 'Appuyez sur ESPACE pour sélectionner cette ligne',\n ariaRowSelectionDisabled:\n 'La sélection de lignes est désactivée pour cette ligne',\n ariaSearch: 'Rechercher',\n ariaSortableColumn: 'Appuyez sur ENTER pour trier',\n ariaSortableColumnWithCellSelection: 'Appuyez sur ALT ENTER pour trier',\n ariaToggleVisibility: 'Appuyez sur ESPACE pour basculer la visibilité',\n ariaToggleCellValue:\n 'Appuyez sur ESPACE pour basculer la valeur de la cellule',\n ariaUnchecked: 'non coché',\n ariaVisible: 'visible',\n ariaSearchFilterValues: 'Rechercher les valeurs de filtre',\n ariaPageSizeSelectorLabel: 'Taille de page',\n ariaChartMenuClose: \"Fermer le menu d'édition de graphique\",\n ariaChartSelected: 'Sélectionné',\n ariaSparklineChartDescription:\n 'Sparkline - ${chartType} affichant ${count} valeurs entre ${min} et ${max}. Commence à ${start} et se termine à ${end}.',\n ariaSparklineChartDescriptionSingleValue:\n 'Sparkline - ${chartType} affichant 1 valeur : ${value}.',\n ariaSparklineChartDescriptionEmpty:\n \"Sparkline - ${chartType} n'affichant aucune valeur.\",\n ariaSkeletonCellLoadingFailed: 'Le chargement de la ligne a échoué',\n ariaSkeletonCellLoading:\n 'Les données de la ligne sont en cours de chargement',\n ariaDeferSkeletonCellLoading: 'La cellule est en cours de chargement',\n\n // ARIA for Batch Edit\n ariaPendingChange: 'Modification en attente',\n\n // ARIA Labels for Drop Zones\n ariaRowGroupDropZonePanelLabel: 'Groupes de lignes',\n ariaValuesDropZonePanelLabel: 'Valeurs',\n ariaPivotDropZonePanelLabel: 'Étiquettes de colonnes',\n ariaDropZoneColumnComponentDescription: 'Appuyez sur SUPPRIMER pour enlever',\n ariaDropZoneColumnValueItemDescription:\n \"Appuyez sur ENTRÉE pour changer le type d'agrégation\",\n ariaDropZoneColumnGroupItemDescription: 'Appuyez sur ENTRÉE pour trier',\n\n // used for aggregate drop zone, format: {aggregation}{ariaDropZoneColumnComponentAggFuncSeparator}{column name}\n ariaDropZoneColumnComponentAggFuncSeparator: ' de ',\n ariaDropZoneColumnComponentSortAscending: 'ascendant',\n ariaDropZoneColumnComponentSortDescending: 'descendant',\n ariaDropZoneColumnComponentSortAbsoluteAscending: 'ascendant absolu',\n ariaDropZoneColumnComponentSortAbsoluteDescending: 'descendant absolu',\n ariaLabelDialog: 'Dialogue',\n ariaLabelColumnMenu: 'Menu de colonne',\n ariaLabelColumnFilter: 'Filtre de colonne',\n ariaLabelSelectField: 'Champ de sélection',\n\n // Cell Editor\n ariaValidationErrorPrefix: \"Validation de l'éditeur de cellule\",\n ariaLabelLoadingContextMenu: 'Chargement du menu contextuel',\n\n // aria labels for rich select\n ariaLabelRichSelectField: 'Champ de sélection enrichie',\n ariaLabelRichSelectToggleSelection:\n 'Appuyez sur ESPACE pour basculer la sélection',\n ariaLabelRichSelectDeselectAllItems:\n 'Appuyez sur SUPPRIMER pour désélectionner tous les éléments',\n ariaLabelRichSelectDeleteSelection:\n \"Appuyez sur SUPPRIMER pour désélectionner l'élément\",\n ariaLabelTooltip: 'Info-bulle',\n ariaLabelContextMenu: 'Menu contextuel',\n ariaLabelSubMenu: 'Sous-menu',\n ariaLabelAggregationFunction: \"Fonction d'agrégation\",\n ariaLabelAdvancedFilterAutocomplete: 'Filtre avancé auto-complétion',\n ariaLabelAdvancedFilterBuilderAddField:\n 'Filtre avancé constructeur Ajouter un champ',\n ariaLabelAdvancedFilterBuilderColumnSelectField:\n 'Filtre avancé constructeur Sélectionnez le champ de colonne',\n ariaLabelAdvancedFilterBuilderOptionSelectField:\n \"Filtre avancé constructeur Sélectionnez le champ d'option\",\n ariaLabelAdvancedFilterBuilderJoinSelectField:\n \"Filtre avancé constructeur Sélectionnez le champ de l'opérateur de jointure\",\n\n // ARIA Labels for the Side Bar\n ariaColumnPanelList: 'Liste des colonnes',\n ariaFilterPanelList: 'Liste des filtres',\n\n // ARIA labels for new Filters Tool Panel\n ariaLabelAddFilterField: 'Ajouter un champ de filtre',\n ariaLabelFilterCardDelete: 'Supprimer le filtre',\n ariaLabelFilterCardHasEdits: 'A des modifications',\n ariaHasNote: 'Cette cellule a une note.',\n\n // Number Format (Status Bar, Pagination Panel)\n thousandSeparator: ',',\n decimalSeparator: '.',\n\n // Data types\n dataTypeText: 'Texte',\n dataTypeNumber: 'Nombre',\n dataTypeBigInt: 'BigInt',\n dataTypeBoolean: 'Booléen',\n dataTypeDate: 'Date',\n dataTypeDateString: 'Chaîne de date',\n dataTypeDateTime: 'Date et heure',\n dataTypeDateTimeString: 'Chaîne de date et heure',\n dataTypeObject: 'Objet',\n true: 'Vrai',\n false: 'Faux',\n invalidDate: 'Date invalide',\n invalidNumber: 'Nombre invalide',\n invalidBigInt: 'BigInt invalide',\n january: 'Janvier',\n february: 'Février',\n march: 'Mars',\n april: 'Avril',\n may: 'Mai',\n june: 'Juin',\n july: 'Juillet',\n august: 'Août',\n september: 'Septembre',\n october: 'Octobre',\n november: 'Novembre',\n december: 'Décembre',\n\n // Date-time parts\n year: 'Année',\n quarter: 'Trimestre',\n month: 'Mois',\n day: 'Jour',\n hour: 'Heure',\n minute: 'Minute',\n second: 'Seconde',\n\n // Time formats\n timeFormatSlashesDDMMYYYY: 'JJ/MM/AAAA',\n timeFormatSlashesMMDDYYYY: 'MM/JJ/AAAA',\n timeFormatSlashesDDMMYY: 'JJ/MM/AA',\n timeFormatSlashesMMDDYY: 'MM/JJ/AA',\n timeFormatDotsDDMYY: 'JJ.M.AA',\n timeFormatDotsMDDYY: 'M.JJ.AA',\n timeFormatDashesYYYYMMDD: 'AAAA-MM-JJ',\n timeFormatSpacesDDMMMMYYYY: 'JJ MMMM AAAA',\n timeFormatHHMMSS: 'HH:MM:SS',\n timeFormatHHMMSSAmPm: 'HH:MM:SS AM/PM',\n\n // Editable Column Header Name\n editColumnName: 'Modifier le nom de la colonne',\n ariaColumnHeaderNameEditor: 'Éditeur de nom de colonne',\n columnHeaderEditApply: 'Appliquer',\n columnHeaderEditCancel: 'Annuler',\n\n // Calculated Columns\n calculatedColumn: 'Colonne calculée',\n calculatedColumnAdd: 'Ajouter une colonne calculée',\n calculatedColumnEdit: 'Modifier la colonne calculée',\n calculatedColumnRemove: 'Supprimer la colonne calculée',\n calculatedColumnTitle: 'Titre',\n calculatedColumnType: 'Type',\n calculatedColumnExpression: 'Expression',\n calculatedColumnExpressionPlaceholder: 'Saisissez ici',\n calculatedColumnExpressionToolsLabel: 'Insérer',\n calculatedColumnColumns: 'Colonnes',\n calculatedColumnFunctions: 'Fonctions',\n calculatedColumnOperators: 'Opérateurs',\n calculatedColumnSuggestions: 'Suggestions de colonne calculée',\n calculatedColumnDefaultTitle: 'Sans titre',\n calculatedColumnExpressionAmbiguousReference:\n 'Référence de colonne ambiguë \"${variable}\". Utilisez la liste Colonnes ou un chemin de groupe plus spécifique.',\n calculatedColumnExpressionUnknownReference:\n 'Référence de colonne inconnue \"${variable}\".',\n calculatedColumnExpressionEmpty: 'Saisissez une expression',\n calculatedColumnTitleEmpty: 'Saisissez un titre',\n calculatedColumnApply: 'Appliquer',\n calculatedColumnCancel: 'Annuler',\n\n // Notes\n note: 'Note de cellule',\n addNote: 'Ajouter une note',\n viewNote: 'Afficher la note',\n editNote: 'Modifier la note',\n deleteNote: 'Supprimer la note',\n notePlaceholder: 'Ajouter une note...',\n};\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 inject,\n viewChild,\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 public readonly input = viewChild('skyCellEditorAutocomplete', {\n read: ElementRef,\n });\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 const input = this.input();\n if (input) {\n input.nativeElement.focus();\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n const charPress = this.#params?.eventKey as string;\n\n input.nativeElement.select();\n input.nativeElement.setRangeText(charPress);\n // Ensure the cursor is at the end of the text.\n input.nativeElement.setSelectionRange(\n charPress.length,\n charPress.length,\n );\n input.nativeElement.dispatchEvent(new Event('input'));\n }\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n 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 inject,\n viewChild,\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 public readonly input = viewChild('skyCellEditorCurrency', {\n read: ElementRef,\n });\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 ViewEncapsulation,\n inject,\n viewChild,\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 public readonly datepickerInput = viewChild('skyCellEditorDatepickerInput', {\n read: ElementRef,\n });\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 = SkyAgGridCellEditorUtils.subtractOrZero(\n this.columnWidth,\n 2,\n );\n this.rowHeightWithoutBorders = SkyAgGridCellEditorUtils.subtractOrZero(\n this.#params.node.rowHeight as number,\n 3,\n );\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 SkyAgGridCellEditorUtils.subtractOrZero(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 | 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 || undefined\"\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 const headerTooltip = params.colDef.headerTooltip;\n this.labelText = params.skyComponentProperties?.ariaLabelledBy\n ? undefined\n : params.skyComponentProperties?.ariaLabel ||\n params.colDef.headerName ||\n (typeof headerTooltip === 'string' ? headerTooltip : undefined) ||\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 public readonly input = viewChild('skyCellEditorNumber', {\n read: ElementRef,\n });\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 const input = this.input();\n if (input) {\n input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n 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 public readonly input = viewChild('skyCellEditorText', { read: ElementRef });\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 const input = this.input();\n if (input) {\n input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n 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 | 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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n inject,\n} 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 readonly #changeDetector = inject(ChangeDetectorRef);\n\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 this.#changeDetector.markForCheck();\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 inject,\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 readonly #changeDetector = inject(ChangeDetectorRef);\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 inject,\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 readonly #changeDetector = inject(ChangeDetectorRef);\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 {\n ChangeDetectionStrategy,\n Component,\n Signal,\n TemplateRef,\n isSignal,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-community';\n\nimport { SkyCellRendererTemplateContext } from '../../types/cell-renderer-template-context';\n\ntype CellState =\n | {\n hasTemplate: true;\n template: TemplateRef<SkyCellRendererTemplateContext>;\n context: SkyCellRendererTemplateContext;\n }\n | {\n hasTemplate: 'signal';\n template: Signal<TemplateRef<SkyCellRendererTemplateContext>>;\n context: SkyCellRendererTemplateContext;\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 changeDetection: ChangeDetectionStrategy.Eager,\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<SkyCellRendererTemplateContext>\n | Signal<TemplateRef<SkyCellRendererTemplateContext>>\n | undefined = hasTemplate\n ? (params.colDef?.cellRendererParams.template as\n | TemplateRef<SkyCellRendererTemplateContext>\n | Signal<TemplateRef<SkyCellRendererTemplateContext>>)\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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n computed,\n ElementRef,\n EnvironmentInjector,\n inject,\n linkedSignal,\n signal,\n viewChild,\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 { EMPTY, switchMap } from 'rxjs';\n\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\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, SkyI18nModule],\n})\nexport class SkyAgGridHeaderGroupComponent\n implements IHeaderGroupAngularComp, AfterViewInit\n{\n public readonly inlineHelpContainer = viewChild('inlineHelpContainer', {\n read: ElementRef,\n });\n\n protected readonly params = signal<SkyAgGridHeaderGroupParams | undefined>(\n undefined,\n );\n protected readonly isExpandable = computed(() =>\n this.#providedColumnGroup()?.isExpandable(),\n );\n protected readonly isExpanded = linkedSignal(() =>\n this.#providedColumnGroup()?.isExpanded(),\n );\n\n readonly #providedColumnGroup = computed<ProvidedColumnGroup | undefined>(\n () => this.params()?.columnGroup?.getProvidedColumnGroup(),\n );\n readonly #gridApi = toObservable(computed(() => this.params()?.api));\n readonly #columnGroupOpened = this.#gridApi.pipe(\n switchMap((api) => (api ? fromGridEvent(api, 'columnGroupOpened') : EMPTY)),\n );\n\n #agInitialized = false;\n #viewInitialized = false;\n #inlineHelpComponentRef: ComponentRef<unknown> | undefined;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dynamicComponentService = inject(SkyDynamicComponentService);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n constructor() {\n this.#columnGroupOpened.pipe(takeUntilDestroyed()).subscribe((event) => {\n const columnGroup = this.#providedColumnGroup();\n if (\n columnGroup &&\n columnGroup.isExpandable() &&\n event.columnGroups.includes(columnGroup)\n ) {\n this.isExpanded.set(columnGroup.isExpanded());\n }\n });\n }\n\n public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public agInit(params: SkyAgGridHeaderGroupParams | undefined): void {\n this.params.set(params);\n this.#agInitialized = true;\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 columnGroup = this.params()?.columnGroup;\n const colGroupDef = columnGroup?.getColGroupDef();\n const inlineHelpComponent =\n colGroupDef?.headerGroupComponentParams?.inlineHelpComponent;\n\n if (\n columnGroup &&\n inlineHelpComponent &&\n (!this.#inlineHelpComponentRef ||\n this.#inlineHelpComponentRef.componentType !== inlineHelpComponent)\n ) {\n this.#dynamicComponentService.removeComponent(\n this.#inlineHelpComponentRef,\n );\n\n const headerGroupInfo = new SkyAgGridHeaderGroupInfo();\n headerGroupInfo.columnGroup = columnGroup;\n headerGroupInfo.context = this.params()?.context;\n headerGroupInfo.displayName = this.params()?.displayName;\n\n this.#inlineHelpComponentRef =\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()) {\n @if (isExpanded()) {\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 effect,\n inject,\n model,\n signal,\n} from '@angular/core';\nimport { SkyCheckboxChange, SkyCheckboxModule } from '@skyux/forms';\n\nimport { IHeaderAngularComp } from 'ag-grid-angular';\nimport {\n GridApi,\n IHeaderParams,\n SelectionChangedEvent,\n} from 'ag-grid-community';\nimport { Subscription } from 'rxjs';\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 // Treat every `agInit()` call as a change (even if the params reference\n // is reused) so the grid-event listener effects below always tear down\n // and reattach rather than being skipped due to signal equality.\n equal: () => false,\n });\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 // Selection changes, for multi-select grids.\n effect((onCleanup) => {\n const api = this.params()?.api;\n if (!api || !this.multiSelect()) {\n return;\n }\n const handler = (change: SelectionChangedEvent): void => {\n if (api.isDestroyed()) {\n return;\n }\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 api.addEventListener('selectionChanged', handler);\n onCleanup(() => api.removeEventListener('selectionChanged', handler));\n });\n\n // Clear selection state when row data is replaced, for multi-select grids.\n effect((onCleanup) => {\n const api = this.params()?.api;\n if (!api || !this.multiSelect()) {\n return;\n }\n const handler = (): void => {\n if (api.isDestroyed()) {\n return;\n }\n this.indeterminate.set(!!api.getSelectedNodes().length);\n this.checked.set(false);\n };\n api.addEventListener('rowDataUpdated', handler);\n onCleanup(() => api.removeEventListener('rowDataUpdated', handler));\n });\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 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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EnvironmentInjector,\n computed,\n effect,\n inject,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\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 { EMPTY, switchMap } 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, SkyI18nModule],\n})\nexport class SkyAgGridHeaderComponent\n implements IHeaderAngularComp, AfterViewInit\n{\n public readonly filterEnabled = signal(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 protected readonly inlineHelpContainer = viewChild('inlineHelpContainer', {\n read: ElementRef,\n });\n\n protected readonly params = signal<SkyAgGridHeaderParams | undefined>(\n undefined,\n );\n protected sorted = '';\n protected readonly sortOrder = linkedSignal<'asc' | 'desc' | undefined>(\n () => this.params()?.column.getSort() || undefined,\n );\n protected readonly sortIndexDisplay = linkedSignal(() =>\n this.#computeSortIndexDisplay(),\n );\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 #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 readonly #paramsChanges = toObservable(this.params);\n readonly #sortChanged = this.#paramsChanges.pipe(\n switchMap((params) =>\n params?.enableSorting && params.api\n ? fromGridEvent(params.api, 'sortChanged')\n : EMPTY,\n ),\n );\n readonly #columnMoved = this.#paramsChanges.pipe(\n switchMap((params) =>\n params?.api ? fromGridEvent(params.api, 'columnMoved') : EMPTY,\n ),\n );\n\n constructor() {\n // Column filter state changes\n effect((onCleanup) => {\n const column = this.params()?.column;\n if (!column?.isFilterAllowed()) {\n this.filterEnabled.set(false);\n return;\n }\n this.filterEnabled.set(column.isFilterActive());\n const handler = (): void =>\n this.filterEnabled.set(column.isFilterActive());\n column.addEventListener('filterChanged', handler);\n onCleanup(() => column.removeEventListener('filterChanged', handler));\n });\n\n // Column sort state changes\n effect((onCleanup) => {\n const params = this.params();\n if (!params?.enableSorting) {\n return;\n }\n const column = params.column;\n const handler = (): void =>\n this.sortOrder.set(column.getSort() || undefined);\n column.addEventListener('sortChanged', handler);\n onCleanup(() => column.removeEventListener('sortChanged', handler));\n });\n\n // Other column sort state changes, for multi-column sorting\n this.#sortChanged.pipe(takeUntilDestroyed()).subscribe(() => {\n this.sortIndexDisplay.set(this.#computeSortIndexDisplay());\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.#columnMoved.pipe(takeUntilDestroyed()).subscribe((event) => {\n const params = this.params();\n const left = params?.column.getLeft() ?? 0;\n const oldLeft = this.#leftPosition;\n if (\n params &&\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 public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n }\n\n public agInit(params: SkyAgGridHeaderParams | undefined): void {\n this.#agInitialized = true;\n this.params.set(params);\n this.#leftPosition = params?.column.getLeft() ?? 0;\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 #computeSortIndexDisplay(): string {\n const params = this.params();\n const sortIndex = params?.column.getSortIndex();\n const otherSortColumns = params?.api\n ?.getColumns()\n ?.some(\n (column) =>\n column.getColId() !== params?.column.getColId() && !!column.getSort(),\n );\n return sortIndex !== undefined && sortIndex !== null && otherSortColumns\n ? `${sortIndex + 1}`\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()) {\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(); 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(); 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 {\n CSP_NONCE,\n DOCUMENT,\n Injectable,\n computed,\n inject,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { SkyLogService } from '@skyux/core';\nimport { SkyDateService } from '@skyux/datetime';\nimport { SkyAppLocaleProvider, 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 LocaleText,\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 { AG_GRID_LOCALE_ES } from '../shared/ag-grid-locale-es-ES';\nimport { AG_GRID_LOCALE_FR } from '../shared/ag-grid-locale-fr-FR';\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\nconst skyAgGridLocaleTextDefaults = {\n noRowsToShow: 'No data available',\n noMatchingRows: 'No matching rows',\n} satisfies LocaleText;\n\n/**\n * AG Grid's stock translations, keyed by the language subtag of the app's\n * locale. Locales without an entry supply no translations, leaving AG Grid to\n * use its own built-in English text.\n */\nconst agGridLocaleTextByLanguage: Record<string, LocaleText> = {\n es: AG_GRID_LOCALE_ES,\n fr: AG_GRID_LOCALE_FR,\n};\n\nconst skyAgGridLocaleTextResourceKeys: Record<\n keyof typeof skyAgGridLocaleTextDefaults,\n string\n> = {\n noRowsToShow: 'sky_ag_grid_locale_no_rows_to_show',\n noMatchingRows: 'sky_ag_grid_locale_no_matching_rows',\n};\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 * Locale text combines AG Grid's stock translations for the app's locale with SKY UX resource\n * strings, and is resolved once, when the grid options are created. [AG Grid does not re-read\n * locale text after a grid is created](https://www.ag-grid.com/angular-data-grid/localisation/),\n * so an application that changes locale at runtime must call this service again and destroy and\n * recreate the grid. Setting `gridOptions.getLocaleText` replaces SKY UX locale text entirely —\n * use `gridOptions.localeText` to override individual strings instead.\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 readonly #localeText = toSignal(\n this.#resources?.getStrings(skyAgGridLocaleTextResourceKeys) ??\n of(skyAgGridLocaleTextDefaults),\n { initialValue: skyAgGridLocaleTextDefaults },\n );\n readonly #locale = toSignal(inject(SkyAppLocaleProvider).getLocaleInfo());\n readonly #localeTextWithDefaults = computed(() => {\n // Split on the subtag delimiter rather than slicing a fixed width: a BCP 47\n // primary language subtag can be three letters (e.g. `fil-PH`), which a\n // two-character slice would silently turn into a different language.\n const [language] = (this.#locale()?.locale ?? 'en-US')\n .toLowerCase()\n .split('-');\n\n // SKY UX resource strings are applied last so they override AG Grid's\n // stock wording for the keys SKY UX intentionally rewords. Keys left\n // unset fall through to AG Grid's own built-in English text.\n return {\n ...agGridLocaleTextByLanguage[language],\n ...this.#localeText(),\n };\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 *\n * Locale text is resolved once, at call time. If the application's locale changes at\n * runtime, destroy and recreate the grid to pick up the new locale text.\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 *\n * Locale text is resolved once, at call time. If the application's locale changes at\n * runtime, destroy and recreate the grid to pick up the new locale text.\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 localeText: {\n ...defaultGridOptions.localeText,\n ...providedGridOptions.localeText,\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 | 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 localeText: this.#localeTextWithDefaults(),\n loadingOverlayComponent: SkyAgGridLoadingComponent,\n onCellFocused: (event: CellFocusedEvent) => this.#onCellFocused(event),\n paginationPageSizeSelector: false,\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n ColDef,\n ICellEditorParams,\n ICellRendererParams,\n} from 'ag-grid-community';\n\nimport { SkyCellEditorParamsByType } from './cell-editor-params-by-type';\nimport { SkyCellRendererParamsByType } from './cell-renderer-params-by-type';\nimport { SkyCellType } from './cell-type';\n\n// Merges the params of all cell types in a union into a single type. Cell\n// types that accept no params map to `never`, so the intersection stays `never`\n// (rejecting any params) instead of collapsing to `unknown`.\ntype UnionToIntersection<U> = [U] extends [never]\n ? never\n : (U extends unknown ? (u: U) => void : never) extends (i: infer I) => void\n ? I\n : never;\n\n/**\n * A column definition that validates `cellEditorParams` and\n * `cellRendererParams` against the SKY UX cell types in the column's `type`\n * property. Combine cell types by passing a union of `SkyCellType` values,\n * like `SkyAgGridColDef<SkyCellType.Number | SkyCellType.Validator>`.\n */\nexport type SkyAgGridColDef<\n T extends SkyCellType,\n TData = any,\n TValue = any,\n> = Omit<\n ColDef<TData, TValue>,\n 'type' | 'cellEditorParams' | 'cellRendererParams'\n> & {\n type: T | T[];\n cellEditorParams?:\n | UnionToIntersection<SkyCellEditorParamsByType[T]>\n | ((\n params: ICellEditorParams<TData, TValue>,\n ) => UnionToIntersection<SkyCellEditorParamsByType[T]>);\n cellRendererParams?:\n | UnionToIntersection<SkyCellRendererParamsByType<TData, TValue>[T]>\n | ((\n params: ICellRendererParams<TData, TValue>,\n ) => UnionToIntersection<SkyCellRendererParamsByType<TData, TValue>[T]>);\n};\n\n/**\n * Builds a column definition whose `cellEditorParams` and `cellRendererParams`\n * are validated against the SKY UX cell types in the `type` property. The cell\n * type is inferred, so no type arguments are needed:\n * ```\n * defineSkyAgGridColDef({\n * field: 'endDate',\n * type: [SkyCellType.Date, SkyCellType.Validator],\n * cellRendererParams: { skyComponentProperties: { validator: ... } },\n * })\n * ```\n */\n// `C` preserves the exact shape of the passed literal (like `satisfies`), `F`\n// keeps `field` narrowed to its literal type for row-typed grid options, and\n// the `Record` intersection rejects misspelled or unknown properties.\nexport function defineSkyAgGridColDef<\n T extends SkyCellType,\n F extends string = never,\n C extends SkyAgGridColDef<T> = SkyAgGridColDef<T>,\n>(\n colDef: C &\n SkyAgGridColDef<T> & { field?: F } & Record<\n Exclude<keyof C, keyof SkyAgGridColDef<T>>,\n never\n >,\n): C & { field?: F } {\n return colDef;\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 {\n defineSkyAgGridColDef,\n type SkyAgGridColDef,\n} from './lib/modules/ag-grid/types/ag-grid-col-def';\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 type { SkyCellEditorParamsByType } from './lib/modules/ag-grid/types/cell-editor-params-by-type';\nexport { SkyAgGridCellEditorUtils } from './lib/modules/ag-grid/types/cell-editor-utils';\nexport type { SkyCellRendererParamsByType } from './lib/modules/ag-grid/types/cell-renderer-params-by-type';\nexport type { SkyCellRendererTemplateContext } from './lib/modules/ag-grid/types/cell-renderer-template-context';\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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"}