From 4eb362521c7237dac863a357404c37753bc2a457 Mon Sep 17 00:00:00 2001 From: Mark Durrant Date: Tue, 20 Jan 2026 14:25:11 +0000 Subject: [PATCH 1/5] AG-16219 - Fix indent css specificity bug (#12928) --- .../pages-navigation/components/SideNavigation.module.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/ag-grid-docs/src/components/pages-navigation/components/SideNavigation.module.scss b/documentation/ag-grid-docs/src/components/pages-navigation/components/SideNavigation.module.scss index 07d33ae5cf4..f661d37986a 100644 --- a/documentation/ag-grid-docs/src/components/pages-navigation/components/SideNavigation.module.scss +++ b/documentation/ag-grid-docs/src/components/pages-navigation/components/SideNavigation.module.scss @@ -71,7 +71,7 @@ } } -.sideNav li:not(.level1) { +.sideNav li:where(:not(.level1)) { --item-gap: 0.875em; position: relative; From 4dfe99b888b82c89f203d13db5530ba2ec11e4bd Mon Sep 17 00:00:00 2001 From: AgGitDeployment Date: Tue, 20 Jan 2026 14:59:01 +0000 Subject: [PATCH 2/5] Merge from latest. --- documentation/ag-grid-docs/package.json | 12 ++-- packages/ag-grid-community/package.json | 2 +- packages/ag-grid-enterprise/package.json | 8 +-- testing/accessibility/package.json | 4 +- testing/module-size-angular/package.json | 4 +- testing/module-size/package.json | 4 +- yarn.lock | 82 ++++++++++++------------ 7 files changed, 58 insertions(+), 58 deletions(-) diff --git a/documentation/ag-grid-docs/package.json b/documentation/ag-grid-docs/package.json index da6227c46ef..98b69fd8fc8 100644 --- a/documentation/ag-grid-docs/package.json +++ b/documentation/ag-grid-docs/package.json @@ -53,12 +53,12 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@pqina/flip": "^1.8.4", - "ag-charts-angular": "13.0.0-beta.20260118", - "ag-charts-community": "13.0.0-beta.20260118", - "ag-charts-enterprise": "13.0.0-beta.20260118", - "ag-charts-types": "13.0.0-beta.20260118", - "ag-charts-react": "13.0.0-beta.20260118", - "ag-charts-vue3": "13.0.0-beta.20260118", + "ag-charts-angular": "13.0.0-beta.20260120", + "ag-charts-community": "13.0.0-beta.20260120", + "ag-charts-enterprise": "13.0.0-beta.20260120", + "ag-charts-types": "13.0.0-beta.20260120", + "ag-charts-react": "13.0.0-beta.20260120", + "ag-charts-vue3": "13.0.0-beta.20260120", "ag-grid-angular": "35.0.0-beta.20260118.2037", "ag-grid-community": "35.0.0-beta.20260118.2037", "ag-grid-enterprise": "35.0.0-beta.20260118.2037", diff --git a/packages/ag-grid-community/package.json b/packages/ag-grid-community/package.json index 629aca0b128..cdf795e965a 100644 --- a/packages/ag-grid-community/package.json +++ b/packages/ag-grid-community/package.json @@ -119,7 +119,7 @@ ], "homepage": "https://www.ag-grid.com/", "dependencies": { - "ag-charts-types": "13.0.0-beta.20260118" + "ag-charts-types": "13.0.0-beta.20260120" }, "devDependencies": { "source-map-loader": "^5.0.0", diff --git a/packages/ag-grid-enterprise/package.json b/packages/ag-grid-enterprise/package.json index c62ad5e355e..4d7599f2a96 100644 --- a/packages/ag-grid-enterprise/package.json +++ b/packages/ag-grid-enterprise/package.json @@ -116,13 +116,13 @@ "ag-grid-community": "35.0.0-beta.20260118.2037" }, "optionalDependencies": { - "ag-charts-community": "13.0.0-beta.20260118", - "ag-charts-enterprise": "13.0.0-beta.20260118" + "ag-charts-community": "13.0.0-beta.20260120", + "ag-charts-enterprise": "13.0.0-beta.20260120" }, "devDependencies": { "source-map-loader": "^5.0.0", - "ag-charts-community": "13.0.0-beta.20260118", - "ag-charts-enterprise": "13.0.0-beta.20260118", + "ag-charts-community": "13.0.0-beta.20260120", + "ag-charts-enterprise": "13.0.0-beta.20260120", "ts-loader": "^9.5.1", "esbuild-loader": "^4.4.0", "style-loader": "^3.3.4", diff --git a/testing/accessibility/package.json b/testing/accessibility/package.json index 373ffc1a6e5..948cf730814 100644 --- a/testing/accessibility/package.json +++ b/testing/accessibility/package.json @@ -21,8 +21,8 @@ "ag-grid-angular": "35.0.0-beta.20260118.2037", "ag-grid-community": "35.0.0-beta.20260118.2037", "ag-grid-enterprise": "35.0.0-beta.20260118.2037", - "ag-charts-community": "13.0.0-beta.20260118", - "ag-charts-enterprise": "13.0.0-beta.20260118", + "ag-charts-community": "13.0.0-beta.20260120", + "ag-charts-enterprise": "13.0.0-beta.20260120", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" diff --git a/testing/module-size-angular/package.json b/testing/module-size-angular/package.json index 481afd70722..bd47fd89a13 100644 --- a/testing/module-size-angular/package.json +++ b/testing/module-size-angular/package.json @@ -23,8 +23,8 @@ "ag-grid-angular": "35.0.0-beta.20260118.2037", "ag-grid-community": "35.0.0-beta.20260118.2037", "ag-grid-enterprise": "35.0.0-beta.20260118.2037", - "ag-charts-community": "13.0.0-beta.20260118", - "ag-charts-enterprise": "13.0.0-beta.20260118", + "ag-charts-community": "13.0.0-beta.20260120", + "ag-charts-enterprise": "13.0.0-beta.20260120", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" diff --git a/testing/module-size/package.json b/testing/module-size/package.json index 4805c9c2a99..74c3fccf0c5 100644 --- a/testing/module-size/package.json +++ b/testing/module-size/package.json @@ -17,8 +17,8 @@ "ag-grid-react": "35.0.0-beta.20260118.2037", "ag-grid-community": "35.0.0-beta.20260118.2037", "ag-grid-enterprise": "35.0.0-beta.20260118.2037", - "ag-charts-community": "13.0.0-beta.20260118", - "ag-charts-enterprise": "13.0.0-beta.20260118", + "ag-charts-community": "13.0.0-beta.20260120", + "ag-charts-enterprise": "13.0.0-beta.20260120", "ag-shared": "0.0.1", "react": "^18.3.1", "react-dom": "^18.3.1" diff --git a/yarn.lock b/yarn.lock index 70e75a3f78f..24081ab9914 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9049,61 +9049,61 @@ adm-zip@^0.5.10: resolved "http://52.50.158.57:4873/adm-zip/-/adm-zip-0.5.16.tgz#0b5e4c779f07dedea5805cdccb1147071d94a909" integrity sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ== -ag-charts-angular@13.0.0-beta.20260118: - version "13.0.0-beta.20260118" - resolved "https://registry.ag-grid.com/ag-charts-angular/-/ag-charts-angular-13.0.0-beta.20260118.tgz#4cc726c2f1c8c75a0886023ece2b5ef331803aa5" - integrity sha512-UgdIwERaVxdH7JmlA4TcaschuCCHirVWz8J/cHNFNnMiFwynrpttbuE4D6yRUlsvTyR08V8kQNbdn1U6dLgG2g== +ag-charts-angular@13.0.0-beta.20260120: + version "13.0.0-beta.20260120" + resolved "https://registry.ag-grid.com/ag-charts-angular/-/ag-charts-angular-13.0.0-beta.20260120.tgz#ba0f72d85468382a94c7916edd93e5b10d85a25f" + integrity sha512-8HbI44hp+U9b8TG7rdjGhHkpQaetSj9inuFDZ36J6XYb7wHtnOSMmNb/DhjGMd2x4UBYEtPS0YmEIpgPi7IUGg== dependencies: - ag-charts-community "13.0.0-beta.20260118" + ag-charts-community "13.0.0-beta.20260120" tslib "^2.3.0" -ag-charts-community@13.0.0-beta.20260118: - version "13.0.0-beta.20260118" - resolved "https://registry.ag-grid.com/ag-charts-community/-/ag-charts-community-13.0.0-beta.20260118.tgz#9200371912be10167216c9b41aae03dcb560a225" - integrity sha512-Kq94Egfrf3wMv0qgzBcNFRi4D/7hbNKRpBNHjTpR6KifQmluXa+LftWMvexkMTadtaOKVwolNbgb0qZXH3LjSw== +ag-charts-community@13.0.0-beta.20260120: + version "13.0.0-beta.20260120" + resolved "https://registry.ag-grid.com/ag-charts-community/-/ag-charts-community-13.0.0-beta.20260120.tgz#da867ef9b1268ff74d8b1cfa527bf7a2091b1971" + integrity sha512-2SOKzHo4sxeseuzyWa6qJeP2Iiww9zo3XbYCKpo2rk9SeQexMZCd32+TOv8dJ/Fu46yONv+fiBQJn4/qtH+5WA== dependencies: - ag-charts-core "13.0.0-beta.20260118" - ag-charts-locale "13.0.0-beta.20260118" - ag-charts-types "13.0.0-beta.20260118" + ag-charts-core "13.0.0-beta.20260120" + ag-charts-locale "13.0.0-beta.20260120" + ag-charts-types "13.0.0-beta.20260120" -ag-charts-core@13.0.0-beta.20260118: - version "13.0.0-beta.20260118" - resolved "https://registry.ag-grid.com/ag-charts-core/-/ag-charts-core-13.0.0-beta.20260118.tgz#4d2657229d82aabc1eaf65637e4bc4fcdd97a3e6" - integrity sha512-MF+Uox0gqgxD5NB9RrR/7AQAc+r7dhhiXubYnsUB2Dw4jxcWnv3SlDw3BjVM0VHsoWndBjkJYLb8n8aFQB9jsQ== +ag-charts-core@13.0.0-beta.20260120: + version "13.0.0-beta.20260120" + resolved "https://registry.ag-grid.com/ag-charts-core/-/ag-charts-core-13.0.0-beta.20260120.tgz#839fb228cd0dd762e8e513901dffc4352e4e995e" + integrity sha512-4ZQwj9B3APnzX8tx4GDb0YpFUcc3Ow43VoAOeRz6UbSlx9/MEStU4uhEcWObMjLj9KlsANgUENJVYu+d5//Yfw== dependencies: - ag-charts-types "13.0.0-beta.20260118" + ag-charts-types "13.0.0-beta.20260120" -ag-charts-enterprise@13.0.0-beta.20260118: - version "13.0.0-beta.20260118" - resolved "https://registry.ag-grid.com/ag-charts-enterprise/-/ag-charts-enterprise-13.0.0-beta.20260118.tgz#190a0675b7954c6a090ca35161287d371fc9144f" - integrity sha512-gruTToaGJBaCGgWjYcEG/zhnsmhvVIbKWqwUmScsXwtJe38N/YtIFeH9UVNM3SEMcxyGOLAzCyF9w/3EWv/fpg== +ag-charts-enterprise@13.0.0-beta.20260120: + version "13.0.0-beta.20260120" + resolved "https://registry.ag-grid.com/ag-charts-enterprise/-/ag-charts-enterprise-13.0.0-beta.20260120.tgz#1b1ddfcb4ee95572289f8e707714ea4cb29fb1ce" + integrity sha512-+DSzqnBaJzsDi8EXs0nD2lJ63L6GxQP1vkhYhlcEd+gtUfFYyLQ8kG9FaoaP/korBRkinIYj0HXYIs1VB6LpPQ== dependencies: - ag-charts-community "13.0.0-beta.20260118" - ag-charts-core "13.0.0-beta.20260118" + ag-charts-community "13.0.0-beta.20260120" + ag-charts-core "13.0.0-beta.20260120" -ag-charts-locale@13.0.0-beta.20260118: - version "13.0.0-beta.20260118" - resolved "https://registry.ag-grid.com/ag-charts-locale/-/ag-charts-locale-13.0.0-beta.20260118.tgz#61e11666a9b51748bd3a2da2874ac9cb80074c06" - integrity sha512-rBSFerVLnVm+RyJRT9oEoaqMYvl6F9Jg/aAUoR0Kr+O5akiSrBwz+oyZ5WGUPrFU1c7Xjx1dKuYhzZvy29Fxmw== +ag-charts-locale@13.0.0-beta.20260120: + version "13.0.0-beta.20260120" + resolved "https://registry.ag-grid.com/ag-charts-locale/-/ag-charts-locale-13.0.0-beta.20260120.tgz#979794164e634f57e7fb5b20ea25a312092cd519" + integrity sha512-VMjOw3qeRGmyex/4QxjjpDCrEoXMFKLkxyBeyaf/GWNiOXzCvEauopQTK3+HcPooY705T8AkI/AIqjHewPkHWA== -ag-charts-react@13.0.0-beta.20260118: - version "13.0.0-beta.20260118" - resolved "https://registry.ag-grid.com/ag-charts-react/-/ag-charts-react-13.0.0-beta.20260118.tgz#059683f61fd187a363df40cb4593189aa91ebb7a" - integrity sha512-DE4Zx7LKU84g06v+SJT6Uji3DP9NzojYIxdM4amWTKYlc3X7a9+HjdrkSLAk9BrYpS5FCkeaHLHjHhu+RLv7iA== +ag-charts-react@13.0.0-beta.20260120: + version "13.0.0-beta.20260120" + resolved "https://registry.ag-grid.com/ag-charts-react/-/ag-charts-react-13.0.0-beta.20260120.tgz#3f8dc680674f08931b368e54576588acd92f9010" + integrity sha512-0R9+OmfkujY7lLxiMD76oIshu/vw3c2+Ks//vbwba6oF3JVKnVaJlC4bsBZg9jOZtJxQD2MZog35tvBPeKC6Hg== dependencies: - ag-charts-community "13.0.0-beta.20260118" + ag-charts-community "13.0.0-beta.20260120" -ag-charts-types@13.0.0-beta.20260118: - version "13.0.0-beta.20260118" - resolved "https://registry.ag-grid.com/ag-charts-types/-/ag-charts-types-13.0.0-beta.20260118.tgz#e6167dd8394419b4ca866d8ba6d1031e535d74e5" - integrity sha512-ZNCWq9CwiKtRKHYgT43+wqd25OB2m7QiPqAd68u5jnlIJx0GJBL8vuU6uWuTL4xexYxFHuaAIXrwTj5Kr0yoTw== +ag-charts-types@13.0.0-beta.20260120: + version "13.0.0-beta.20260120" + resolved "https://registry.ag-grid.com/ag-charts-types/-/ag-charts-types-13.0.0-beta.20260120.tgz#0458084e709b8a0e69b3d2c0f471ff6c2bd8b3a3" + integrity sha512-i5Jq/0z0Q5/5tar6QyuuMw2hwZ0K3sKedpaMfb8kNTfP5UXXHRO6RDWHb9M3y7pFi6J6QA3peq0jAJ0gmtievg== -ag-charts-vue3@13.0.0-beta.20260118: - version "13.0.0-beta.20260118" - resolved "https://registry.ag-grid.com/ag-charts-vue3/-/ag-charts-vue3-13.0.0-beta.20260118.tgz#7ef54290a8ae8ebed57ba0fbf373c2e11e91c0cf" - integrity sha512-S7IJU3F0VrA8xHMOV7s/k/HAd1KuAqHTxcQ/RhpdxNoZuACcIZRrUUBU15FOdd2JFOetzKYubBHtxS1wq2Rmag== +ag-charts-vue3@13.0.0-beta.20260120: + version "13.0.0-beta.20260120" + resolved "https://registry.ag-grid.com/ag-charts-vue3/-/ag-charts-vue3-13.0.0-beta.20260120.tgz#ea0c7d23bfe81e9f045958e3dc455d22174dd869" + integrity sha512-pqKOHwCwGXD7hcPU2jamVSie76CGhpI4PqNN+nUGoC7aLEY6xC3FGebWjcnIWf1+fuKa1aQtIj7YoMExt4KJcw== dependencies: - ag-charts-community "13.0.0-beta.20260118" + ag-charts-community "13.0.0-beta.20260120" agent-base@6, agent-base@^6.0.2: version "6.0.2" From fc0c6020f140f91290d743fcbe51e3f329206cd2 Mon Sep 17 00:00:00 2001 From: Guilherme Lopes Date: Tue, 20 Jan 2026 12:22:39 -0300 Subject: [PATCH 3/5] AG-16441 - [formula-cell-editor] - Fixed AutoComplete Bugs (#12919) * AG-16441 - [formula-cell-editor] - Fixed AutoComplete Bugs * fixed range issues * fixed rowModel row reference for formulas --- .../autocomplete/agAutocompleteList.ts | 14 ++++- .../src/widgets/agFormulaInputField.ts | 46 ++++++++++---- .../formulaInputAutocompleteFeature.ts | 63 ++++++++++++++++--- .../widgets/formulaInputRangeSyncFeature.ts | 4 +- .../src/widgets/formulaRangeUtils.ts | 41 +++++++++++- 5 files changed, 141 insertions(+), 27 deletions(-) diff --git a/packages/ag-grid-enterprise/src/advancedFilter/autocomplete/agAutocompleteList.ts b/packages/ag-grid-enterprise/src/advancedFilter/autocomplete/agAutocompleteList.ts index 7b109fa2273..a8fd9b232e0 100644 --- a/packages/ag-grid-enterprise/src/advancedFilter/autocomplete/agAutocompleteList.ts +++ b/packages/ag-grid-enterprise/src/advancedFilter/autocomplete/agAutocompleteList.ts @@ -8,7 +8,7 @@ import type { GridOptionsService, GridOptionsWithDefaults, } from 'ag-grid-community'; -import { AgPopupComponent, KeyCode, RefPlaceholder, _exists, _fuzzySuggestions } from 'ag-grid-community'; +import { AgPopupComponent, KeyCode, RefPlaceholder, _exists, _fuzzySuggestions, _isVisible } from 'ag-grid-community'; import { VirtualList } from '../../widgets/virtualList'; import { AgAutocompleteRow } from './agAutocompleteRow'; @@ -43,6 +43,7 @@ export class AgAutocompleteList extends AgPopupComponent< private selectedValue: AutocompleteEntry; private searchString = ''; + private lastAutoListHeight: number | null = null; constructor( private readonly params: { @@ -52,6 +53,7 @@ export class AgAutocompleteList extends AgPopupComponent< useStartsWithSearch?: boolean; autoSizeList?: boolean; maxVisibleItems?: number; + onListHeightChanged?: () => void; forceLastSelection?: (lastSelection: AutocompleteEntry, searchString: string) => boolean; } ) { @@ -209,7 +211,16 @@ export class AgAutocompleteList extends AgPopupComponent< height = rowHeight; } + if (this.lastAutoListHeight === height) { + return; + } + + this.lastAutoListHeight = height; this.eList.style.height = `${height}px`; + + if (_isVisible(this.eList)) { + this.params.onListHeightChanged?.(); + } } private checkSetSelectedValue(index: number): void { @@ -254,6 +265,7 @@ export class AgAutocompleteList extends AgPopupComponent< public afterGuiAttached(): void { this.virtualList.refresh(); + this.updateListHeight(); } public getSelectedValue(): AutocompleteEntry | null { diff --git a/packages/ag-grid-enterprise/src/widgets/agFormulaInputField.ts b/packages/ag-grid-enterprise/src/widgets/agFormulaInputField.ts index 403f714d2fe..57032864a00 100644 --- a/packages/ag-grid-enterprise/src/widgets/agFormulaInputField.ts +++ b/packages/ag-grid-enterprise/src/widgets/agFormulaInputField.ts @@ -14,7 +14,7 @@ import { agFormulaInputFieldCSS } from './agFormulaInputField.css-GENERATED'; import { FormulaInputAutocompleteFeature } from './formulaInputAutocompleteFeature'; import { FormulaInputRangeSyncFeature } from './formulaInputRangeSyncFeature'; import { TOKEN_INSERT_AFTER_CHARS, getPreviousNonSpaceChar } from './formulaInputTokenUtils'; -import { getColorClassesForRef } from './formulaRangeUtils'; +import { getColorClassesForRef, getRefTokenMatchesForFormula } from './formulaRangeUtils'; const FORMULA_TOKEN_COLOR_COUNT = 7; const DISPLAY_OPERATOR_LOOKUP: Record = { @@ -205,7 +205,7 @@ export class AgFormulaInputField extends AgContentEditableField< return; } - const refsInOrder = getOrderedRefs(value); + const refsInOrder = getOrderedRefs(this.beans, value); let changed = refsInOrder.length !== this.formulaColorByRef.size; const nextColors = new Map(); refsInOrder.forEach((ref, index) => { @@ -285,7 +285,7 @@ export class AgFormulaInputField extends AgContentEditableField< const replaceLen = isNew || this.lastTokenValueLength == null ? 0 : this.lastTokenValueLength; const value = this.getCurrentValue(); const updatedValue = value.slice(0, valueOffset) + ref + value.slice(valueOffset + replaceLen); - const tokenIndex = getTokenMatchAtOffset(updatedValue, valueOffset)?.index ?? null; + const tokenIndex = getTokenMatchAtOffset(this.beans, updatedValue, valueOffset)?.index ?? null; let previousRef: string | undefined; this.applyFormulaValueChange({ currentValue: value, @@ -301,7 +301,7 @@ export class AgFormulaInputField extends AgContentEditableField< public removeTokenRef(ref: string, tokenIndex?: number | null): boolean { const value = this.getCurrentValue(); - const matches = getRefTokenMatches(value); + const matches = getRefTokenMatchesForFormula(this.beans, value); let token: TokenMatch | undefined; if (tokenIndex != null) { @@ -353,7 +353,7 @@ export class AgFormulaInputField extends AgContentEditableField< const { valueOffset } = caretOffsets; // if the caret is inside/adjacent to a token, replace that token. - const tokenMatch = getTokenMatchAtOffset(value, valueOffset); + const tokenMatch = getTokenMatchAtOffset(this.beans, value, valueOffset); if (tokenMatch) { const { end: tokenEnd, ref: tokenRef } = tokenMatch; @@ -366,6 +366,15 @@ export class AgFormulaInputField extends AgContentEditableField< return { action: 'replace', previousRef, tokenIndex }; } + // allow replacement for A1-like refs even when they are invalid for the current grid state. + const rawTokenMatch = getRawTokenMatchAtOffset(value, valueOffset); + if (rawTokenMatch) { + const updated = value.slice(0, rawTokenMatch.start) + ref + value.slice(rawTokenMatch.end); + const tokenIndex = getTokenMatchAtOffset(this.beans, updated, rawTokenMatch.start)?.index ?? null; + const { previousRef } = this.replaceTokenAtMatch(rawTokenMatch, ref, tokenIndex); + return { action: 'replace', previousRef, tokenIndex }; + } + // only insert new refs after operator-like chars; otherwise we end the edit on click. if (!shouldInsertTokenAtOffset(value, valueOffset)) { return { action: 'none' }; @@ -397,7 +406,11 @@ export class AgFormulaInputField extends AgContentEditableField< }); } - private replaceTokenAtMatch(token: TokenMatch, nextRef: string): TokenInsertResult { + private replaceTokenAtMatch( + token: TokenMatch, + nextRef: string, + tokenIndexOverride?: number | null + ): TokenInsertResult { // replace the exact token span so we don't accidentally touch adjacent text. const value = this.getCurrentValue(); const updated = value.slice(0, token.start) + nextRef + value.slice(token.end); @@ -411,7 +424,8 @@ export class AgFormulaInputField extends AgContentEditableField< }, }); - return { previousRef: token.ref, tokenIndex: token.index }; + // preserve the caller's token index if it was recomputed for the updated value. + return { previousRef: token.ref, tokenIndex: tokenIndexOverride ?? token.index }; } private getValueOffsetFromCaret(caretOffset: number): number | null { @@ -620,11 +634,11 @@ const shouldUseTokenColors = (beans: BeanCollection): boolean => { // walk the formula left-to-right, capture the first occurrence of each distinct ref, // and assign colors in encounter order so token colors stay stable every time the // user re-enters the editor (A1 -> color1, next ref -> color2, etc.). -const getOrderedRefs = (value: string): string[] => { +const getOrderedRefs = (beans: BeanCollection, value: string): string[] => { // collect unique refs in their first-seen order to keep colors stable across re-entry. const refsInOrder: string[] = []; const seen = new Set(); - for (const match of getRefTokenMatches(value)) { + for (const match of getRefTokenMatchesForFormula(beans, value)) { const ref = match.ref; if (seen.has(ref)) { continue; @@ -635,8 +649,18 @@ const getOrderedRefs = (value: string): string[] => { return refsInOrder; }; -const getTokenMatchAtOffset = (value: string, offset: number): TokenMatch | null => { +const getTokenMatchAtOffset = (beans: BeanCollection, value: string, offset: number): TokenMatch | null => { // locate the token (if any) that covers the given value offset. + for (const match of getRefTokenMatchesForFormula(beans, value)) { + if (offset >= match.start && offset <= match.end) { + return { ref: match.ref, start: match.start, end: match.end, index: match.index }; + } + } + return null; +}; + +const getRawTokenMatchAtOffset = (value: string, offset: number): TokenMatch | null => { + // match any A1-like token so invalid refs can still be replaced. for (const match of getRefTokenMatches(value)) { if (offset >= match.start && offset <= match.end) { return { ref: match.ref, start: match.start, end: match.end, index: match.index }; @@ -660,7 +684,7 @@ const tokenize = ( // split the formula into text + token nodes while preserving operators for display. const nodes: Node[] = []; let lastIndex = 0; - const matches = getRefTokenMatches(value); + const matches = getRefTokenMatchesForFormula(beans, value); const doc = _getDocument(beans); for (const match of matches) { diff --git a/packages/ag-grid-enterprise/src/widgets/formulaInputAutocompleteFeature.ts b/packages/ag-grid-enterprise/src/widgets/formulaInputAutocompleteFeature.ts index e368a76784b..428d50160c9 100644 --- a/packages/ag-grid-enterprise/src/widgets/formulaInputAutocompleteFeature.ts +++ b/packages/ag-grid-enterprise/src/widgets/formulaInputAutocompleteFeature.ts @@ -1,11 +1,17 @@ -import type { AgComponentPopupPositionParams, PopupPositionParams } from 'ag-grid-community'; +import type { + AgComponentPopupPositionParams, + BeanCollection, + IFormulaService, + PopupPositionParams, +} from 'ag-grid-community'; import { BeanStub, KeyCode, _getDocument } from 'ag-grid-community'; import { AgAutocompleteList } from '../advancedFilter/autocomplete/agAutocompleteList'; import type { AutocompleteEntry } from '../advancedFilter/autocomplete/autocompleteParams'; -import { isFormulaIdentChar, isFormulaIdentStart } from '../formula/refUtils'; +import { isFormulaIdentChar, isFormulaIdentStart, parseA1Ref } from '../formula/refUtils'; import type { AgFormulaInputField } from './agFormulaInputField'; import { TOKEN_INSERT_AFTER_CHARS, getPreviousNonSpaceChar } from './formulaInputTokenUtils'; +import { getRefTokenMatchesForFormula } from './formulaRangeUtils'; type FunctionTokenMatch = { start: number; end: number; prefix: string }; @@ -98,7 +104,12 @@ export class FormulaInputAutocompleteFeature extends BeanStub { return; } - const token = getFunctionTokenAtOffset(value, caretOffsets.valueOffset); + if (isCaretInsideRefToken(this.beans, value, caretOffsets.valueOffset)) { + this.closeFunctionAutocomplete(); + return; + } + + const token = getFunctionTokenAtOffset(value, caretOffsets.valueOffset, this.beans.formula ?? null); if (!token) { this.closeFunctionAutocomplete(); return; @@ -148,6 +159,13 @@ export class FormulaInputAutocompleteFeature extends BeanStub { return; } + let positionParams: AgComponentPopupPositionParams | null = null; + const repositionList = () => { + if (this.functionAutocompleteList && positionParams) { + popupSvc.positionPopupByComponent(positionParams); + } + }; + this.functionAutocompleteList = this.createManagedBean( new AgAutocompleteList({ autocompleteEntries: entries, @@ -155,12 +173,13 @@ export class FormulaInputAutocompleteFeature extends BeanStub { useStartsWithSearch: true, autoSizeList: true, maxVisibleItems: 10, + onListHeightChanged: repositionList, }) ); const ePopupGui = this.functionAutocompleteList.getGui(); - const positionParams: AgComponentPopupPositionParams = { + positionParams = { ePopup: ePopupGui, type: 'autocomplete', eventSource: this.field.getGui(), @@ -172,7 +191,7 @@ export class FormulaInputAutocompleteFeature extends BeanStub { const addPopupRes = popupSvc.addPopup({ eChild: ePopupGui, anchorToElement: this.field.getGui(), - positionCallback: () => popupSvc.positionPopupByComponent(positionParams), + positionCallback: repositionList, ariaLabel: 'Formula functions', }); @@ -225,8 +244,12 @@ export class FormulaInputAutocompleteFeature extends BeanStub { } } -const getFunctionTokenAtOffset = (value: string, caretOffset: number): FunctionTokenMatch | null => { - // show functions only when the caret is at the end of a formula identifier. +const getFunctionTokenAtOffset = ( + value: string, + caretOffset: number, + formula: IFormulaService | null +): FunctionTokenMatch | null => { + // show functions when the caret is within a formula identifier. if (caretOffset < 0 || caretOffset > value.length || isInsideStringLiteral(value, caretOffset)) { return null; } @@ -241,11 +264,22 @@ const getFunctionTokenAtOffset = (value: string, caretOffset: number): FunctionT end++; } - if (start === end || caretOffset !== end) { + if (start === end) { return null; } - const token = value.slice(start, end); + let tokenEnd = end; + if (caretOffset !== end) { + // allow typing a function name immediately before an existing ref (e.g. "*COUNT|C2"). + const suffix = value.slice(caretOffset, end); + const parsed = parseA1Ref(suffix); + const isRefSuffix = !!parsed && (!formula || !!formula.getColByRef(parsed.startCol)); + if (isRefSuffix) { + tokenEnd = caretOffset; + } + } + + const token = value.slice(start, tokenEnd); if (!token || !isFormulaIdentStart(token[0])) { return null; } @@ -261,11 +295,20 @@ const getFunctionTokenAtOffset = (value: string, caretOffset: number): FunctionT return { start, - end, + end: tokenEnd, prefix: value.slice(start, caretOffset), }; }; +const isCaretInsideRefToken = (beans: BeanCollection, value: string, caretOffset: number): boolean => { + for (const match of getRefTokenMatchesForFormula(beans, value)) { + if (caretOffset >= match.start && caretOffset <= match.end) { + return true; + } + } + return false; +}; + const isInsideStringLiteral = (value: string, offset: number): boolean => { // treat doubled quotes as escaped quotes when scanning. let inString = false; diff --git a/packages/ag-grid-enterprise/src/widgets/formulaInputRangeSyncFeature.ts b/packages/ag-grid-enterprise/src/widgets/formulaInputRangeSyncFeature.ts index 273fdc1fd7f..af442b0168b 100644 --- a/packages/ag-grid-enterprise/src/widgets/formulaInputRangeSyncFeature.ts +++ b/packages/ag-grid-enterprise/src/widgets/formulaInputRangeSyncFeature.ts @@ -303,7 +303,7 @@ export class FormulaInputRangeSyncFeature extends BeanStub { return; } - const refTokens = getRefTokensFromText(text); + const refTokens = getRefTokensFromText(this.beans, text); // group token indices by ref so duplicates map to distinct ranges. const desiredByRef = new Map(); @@ -678,7 +678,7 @@ export class FormulaInputRangeSyncFeature extends BeanStub { } const value = this.field.getCurrentValue(); - const tokens = getRefTokensFromText(value).filter(({ ref }) => ref !== this.editingCellRef); + const tokens = getRefTokensFromText(this.beans, value).filter(({ ref }) => ref !== this.editingCellRef); if (!tokens.length) { return false; } diff --git a/packages/ag-grid-enterprise/src/widgets/formulaRangeUtils.ts b/packages/ag-grid-enterprise/src/widgets/formulaRangeUtils.ts index 3e213b10999..25519ad932b 100644 --- a/packages/ag-grid-enterprise/src/widgets/formulaRangeUtils.ts +++ b/packages/ag-grid-enterprise/src/widgets/formulaRangeUtils.ts @@ -1,4 +1,4 @@ -import type { BeanCollection, CellRange } from 'ag-grid-community'; +import type { BeanCollection, CellRange, IClientSideRowModel } from 'ag-grid-community'; import { getRefTokenMatches, parseA1Ref } from '../formula/refUtils'; @@ -70,6 +70,17 @@ export const getCellRangeParams = (beans: BeanCollection, ref: string) => { const rowStartIndex = parseInt(startRow, 10) - 1; const rowEndIndex = endRow ? parseInt(endRow, 10) - 1 : rowStartIndex; + // guard against invalid rows so we don't tokenise refs outside the known row set. + if (rowStartIndex < 0 || rowEndIndex < 0) { + return null; + } + + const rowModel = beans.rowModel as IClientSideRowModel | null; + // formulas run on the client-side row model, so use formula rows to validate. + if (!rowModel?.getFormulaRow(rowStartIndex) || !rowModel.getFormulaRow(rowEndIndex)) { + return null; + } + return { rowStartIndex, rowEndIndex, @@ -134,8 +145,32 @@ export const rangeToRef = (beans: BeanCollection, range: CellRange): string | nu }; type RefToken = { ref: string; index: number }; +type RefTokenMatch = { ref: string; start: number; end: number; index: number }; + +export const getRefTokenMatchesForFormula = (beans: BeanCollection, text: string): RefTokenMatch[] => { + const matches = getRefTokenMatches(text); + const { formula } = beans; + + if (!formula) { + return matches; + } + + const valid: RefTokenMatch[] = []; + let index = 0; + + for (const match of matches) { + if (!getCellRangeParams(beans, match.ref)) { + continue; + } + valid.push({ ...match, index }); + index += 1; + } + + return valid; +}; -export const getRefTokensFromText = (text: string): RefToken[] => { +export const getRefTokensFromText = (beans: BeanCollection, text: string): RefToken[] => { // Extract A1-style refs/ranges with their occurrence index (left-to-right). - return getRefTokenMatches(text).map(({ ref, index }) => ({ ref, index })); + const matches = getRefTokenMatchesForFormula(beans, text); + return matches.map(({ ref, index }) => ({ ref, index })); }; From 77d6e5e38916305fb8dd427edd7dc0de0e9ec637 Mon Sep 17 00:00:00 2001 From: AgGitDeployment Date: Tue, 20 Jan 2026 15:30:59 +0000 Subject: [PATCH 4/5] Merge from latest. --- .env | 4 ++-- community-modules/locale/package.json | 2 +- community-modules/styles/package.json | 2 +- documentation/ag-grid-docs/package.json | 12 ++++++------ documentation/update-algolia-indices/package.json | 2 +- package.json | 2 +- packages/ag-grid-angular/package.json | 6 +++--- .../projects/ag-grid-angular/package.json | 4 ++-- packages/ag-grid-community/package.json | 2 +- packages/ag-grid-community/src/version.ts | 2 +- packages/ag-grid-enterprise/package.json | 4 ++-- packages/ag-grid-enterprise/src/version.ts | 2 +- packages/ag-grid-react/package.json | 6 +++--- packages/ag-grid-vue3/package.json | 4 ++-- .../package.json | 2 +- plugins/ag-grid-generate-example-files/package.json | 4 ++-- plugins/ag-grid-task-autogen/package.json | 2 +- testing/accessibility/package.json | 8 ++++---- testing/behavioural/package.json | 8 ++++---- testing/behavioural/src/version.ts | 2 +- testing/csp/package.json | 2 +- testing/module-size-angular/package.json | 8 ++++---- testing/module-size/package.json | 8 ++++---- testing/public-recipes/e2e/package.json | 4 ++-- 24 files changed, 51 insertions(+), 51 deletions(-) diff --git a/.env b/.env index 46368d64941..7243be70a23 100644 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ # Production Build -BUILD_GRID_VERSION=35.0.0-beta.20260118.2037 -BUILD_CHARTS_VERSION=13.0.0-beta.20260118 +BUILD_GRID_VERSION=35.0.0-beta.20260120.1527 +BUILD_CHARTS_VERSION=13.0.0-beta.20260120 ENV=local NX_BATCH_MODE=true NX_ADD_PLUGINS=false diff --git a/community-modules/locale/package.json b/community-modules/locale/package.json index b71608e266e..fce864531dd 100644 --- a/community-modules/locale/package.json +++ b/community-modules/locale/package.json @@ -1,6 +1,6 @@ { "name": "@ag-grid-community/locale", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "description": "Localisation Module for AG Grid, providing translations in 31 languages.", "main": "./dist/package/main.cjs.js", "types": "./dist/types/src/main.d.ts", diff --git a/community-modules/styles/package.json b/community-modules/styles/package.json index ebae3ba06de..1942f4c6ac9 100644 --- a/community-modules/styles/package.json +++ b/community-modules/styles/package.json @@ -1,6 +1,6 @@ { "name": "@ag-grid-community/styles", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "description": "AG Grid Styles and Themes", "main": "_index.scss", "files": [ diff --git a/documentation/ag-grid-docs/package.json b/documentation/ag-grid-docs/package.json index 98b69fd8fc8..530932ce5fd 100644 --- a/documentation/ag-grid-docs/package.json +++ b/documentation/ag-grid-docs/package.json @@ -2,7 +2,7 @@ "name": "ag-grid-docs", "description": "Documentation for AG Grid", "type": "module", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "repository": { "type": "git", "url": "https://github.com/ag-grid/ag-grid.git" @@ -59,11 +59,11 @@ "ag-charts-types": "13.0.0-beta.20260120", "ag-charts-react": "13.0.0-beta.20260120", "ag-charts-vue3": "13.0.0-beta.20260120", - "ag-grid-angular": "35.0.0-beta.20260118.2037", - "ag-grid-community": "35.0.0-beta.20260118.2037", - "ag-grid-enterprise": "35.0.0-beta.20260118.2037", - "ag-grid-react": "35.0.0-beta.20260118.2037", - "ag-grid-vue3": "35.0.0-beta.20260118.2037", + "ag-grid-angular": "35.0.0-beta.20260120.1527", + "ag-grid-community": "35.0.0-beta.20260120.1527", + "ag-grid-enterprise": "35.0.0-beta.20260120.1527", + "ag-grid-react": "35.0.0-beta.20260120.1527", + "ag-grid-vue3": "35.0.0-beta.20260120.1527", "algoliasearch": "^4.18.0", "astro": "5.16.6", "cheerio": "^1.0.0", diff --git a/documentation/update-algolia-indices/package.json b/documentation/update-algolia-indices/package.json index 6916f3dfd01..1fca4e7150d 100644 --- a/documentation/update-algolia-indices/package.json +++ b/documentation/update-algolia-indices/package.json @@ -1,6 +1,6 @@ { "name": "update-algolia-indices", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "description": "Update algolia indices", "main": "src/index.ts", "type": "module", diff --git a/package.json b/package.json index 25632acda2c..4e4e0c0cecd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "license": "MIT", "scripts": { "compressVideo": "tsx external/ag-website-shared/scripts/compress-video", diff --git a/packages/ag-grid-angular/package.json b/packages/ag-grid-angular/package.json index 1fafb09f97b..a314cc1f091 100644 --- a/packages/ag-grid-angular/package.json +++ b/packages/ag-grid-angular/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-angular", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "description": "AG Grid Angular Component", "scripts": { "clean": "rimraf dist", @@ -15,7 +15,7 @@ "module": "./dist/ag-grid-angular/fesm2022/ag-grid-angular.mjs", "typings": "./dist/ag-grid-angular/index.d.ts", "dependencies": { - "ag-grid-community": "35.0.0-beta.20260118.2037", + "ag-grid-community": "35.0.0-beta.20260120.1527", "@angular/animations": "^18.0.7", "@angular/common": "^18.0.7", "@angular/compiler": "^18.0.7", @@ -27,7 +27,7 @@ "zone.js": "~0.15.1" }, "devDependencies": { - "ag-grid-community": "35.0.0-beta.20260118.2037", + "ag-grid-community": "35.0.0-beta.20260120.1527", "@angular-devkit/build-angular": "^18.0.7", "@angular/cli": "^18.0.7", "@angular/forms": "^18.0.7", diff --git a/packages/ag-grid-angular/projects/ag-grid-angular/package.json b/packages/ag-grid-angular/projects/ag-grid-angular/package.json index ef83e8c51ca..f7eea754109 100644 --- a/packages/ag-grid-angular/projects/ag-grid-angular/package.json +++ b/packages/ag-grid-angular/projects/ag-grid-angular/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-angular", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "description": "AG Grid Angular Component", "license": "MIT", "peerDependencies": { @@ -8,7 +8,7 @@ "@angular/core": ">= 18.0.0" }, "dependencies": { - "ag-grid-community": "35.0.0-beta.20260118.2037", + "ag-grid-community": "35.0.0-beta.20260120.1527", "tslib": "^2.3.0" }, "repository": { diff --git a/packages/ag-grid-community/package.json b/packages/ag-grid-community/package.json index cdf795e965a..20bf6a84675 100644 --- a/packages/ag-grid-community/package.json +++ b/packages/ag-grid-community/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-community", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "description": "Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue", "main": "./dist/package/main.cjs.js", "types": "./dist/types/src/main.d.ts", diff --git a/packages/ag-grid-community/src/version.ts b/packages/ag-grid-community/src/version.ts index 5b526c69dd2..2e1144da244 100644 --- a/packages/ag-grid-community/src/version.ts +++ b/packages/ag-grid-community/src/version.ts @@ -1,2 +1,2 @@ // DO NOT UPDATE MANUALLY: Generated from script during build time -export const VERSION = '35.0.0-beta.20260118.2037'; +export const VERSION = '35.0.0-beta.20260120.1527'; diff --git a/packages/ag-grid-enterprise/package.json b/packages/ag-grid-enterprise/package.json index 4d7599f2a96..4d3c2742102 100644 --- a/packages/ag-grid-enterprise/package.json +++ b/packages/ag-grid-enterprise/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-enterprise", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "description": "Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue", "main": "./dist/package/main.cjs.js", "types": "./dist/types/src/main.d.ts", @@ -113,7 +113,7 @@ ], "homepage": "https://www.ag-grid.com/", "dependencies": { - "ag-grid-community": "35.0.0-beta.20260118.2037" + "ag-grid-community": "35.0.0-beta.20260120.1527" }, "optionalDependencies": { "ag-charts-community": "13.0.0-beta.20260120", diff --git a/packages/ag-grid-enterprise/src/version.ts b/packages/ag-grid-enterprise/src/version.ts index 5b526c69dd2..2e1144da244 100644 --- a/packages/ag-grid-enterprise/src/version.ts +++ b/packages/ag-grid-enterprise/src/version.ts @@ -1,2 +1,2 @@ // DO NOT UPDATE MANUALLY: Generated from script during build time -export const VERSION = '35.0.0-beta.20260118.2037'; +export const VERSION = '35.0.0-beta.20260120.1527'; diff --git a/packages/ag-grid-react/package.json b/packages/ag-grid-react/package.json index 45ffe4c653e..8886f324231 100644 --- a/packages/ag-grid-react/package.json +++ b/packages/ag-grid-react/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-react", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "description": "AG Grid React Component", "main": "./dist/package/index.cjs.js", "types": "./dist/types/src/index.d.ts", @@ -31,7 +31,7 @@ "devDependencies": { "@babel/runtime": "^7.27.1", "prop-types": "^15.6.2", - "ag-grid-community": "35.0.0-beta.20260118.2037", + "ag-grid-community": "35.0.0-beta.20260120.1527", "@babel/plugin-proposal-throw-expressions": "^7.27.1", "@babel/preset-typescript": "^7.27.1", "@types/react": "~18.3.26", @@ -44,7 +44,7 @@ }, "dependencies": { "prop-types": "^15.8.1", - "ag-grid-community": "35.0.0-beta.20260118.2037" + "ag-grid-community": "35.0.0-beta.20260120.1527" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", diff --git a/packages/ag-grid-vue3/package.json b/packages/ag-grid-vue3/package.json index e535b19c83d..a7a28c30a59 100644 --- a/packages/ag-grid-vue3/package.json +++ b/packages/ag-grid-vue3/package.json @@ -1,7 +1,7 @@ { "name": "ag-grid-vue3", "description": "AG Grid Vue 3 Component", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "author": "Sean Landsman ", "license": "MIT", "files": [ @@ -44,7 +44,7 @@ "build-only:watch": "vite build --watch" }, "dependencies": { - "ag-grid-community": "35.0.0-beta.20260118.2037" + "ag-grid-community": "35.0.0-beta.20260120.1527" }, "devDependencies": { "vue": "^3.5.0", diff --git a/plugins/ag-grid-generate-code-reference-files/package.json b/plugins/ag-grid-generate-code-reference-files/package.json index 869f0a704a3..b470b5a6bcd 100644 --- a/plugins/ag-grid-generate-code-reference-files/package.json +++ b/plugins/ag-grid-generate-code-reference-files/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-generate-code-reference-files", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "private": true, "dependencies": { "ag-shared": "0.0.1", diff --git a/plugins/ag-grid-generate-example-files/package.json b/plugins/ag-grid-generate-example-files/package.json index 9f7010beff2..c1fa06af61b 100644 --- a/plugins/ag-grid-generate-example-files/package.json +++ b/plugins/ag-grid-generate-example-files/package.json @@ -1,10 +1,10 @@ { "name": "ag-grid-generate-example-files", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "private": true, "dependencies": { "ag-shared": "0.0.1", - "ag-grid-community": "35.0.0-beta.20260118.2037", + "ag-grid-community": "35.0.0-beta.20260120.1527", "glob": "8.0.3", "typescript": "~5.4.5", "cheerio": "^1.0.0", diff --git a/plugins/ag-grid-task-autogen/package.json b/plugins/ag-grid-task-autogen/package.json index 8a94e78df74..4fe9c51e940 100644 --- a/plugins/ag-grid-task-autogen/package.json +++ b/plugins/ag-grid-task-autogen/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-task-autogen", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "private": true, "dependencies": { "@nx/devkit": "20.3.1", diff --git a/testing/accessibility/package.json b/testing/accessibility/package.json index 948cf730814..644cb072b58 100644 --- a/testing/accessibility/package.json +++ b/testing/accessibility/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-accessibility", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "scripts": { "download-examples": "curl --retry 5 -retry-all-errors https://grid-staging.ag-grid.com/debug/all-examples.json > ./all-examples.json", "download-examples-local": "curl https://localhost:4610/debug/all-examples.json > ./all-examples.json", @@ -18,9 +18,9 @@ "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", - "ag-grid-angular": "35.0.0-beta.20260118.2037", - "ag-grid-community": "35.0.0-beta.20260118.2037", - "ag-grid-enterprise": "35.0.0-beta.20260118.2037", + "ag-grid-angular": "35.0.0-beta.20260120.1527", + "ag-grid-community": "35.0.0-beta.20260120.1527", + "ag-grid-enterprise": "35.0.0-beta.20260120.1527", "ag-charts-community": "13.0.0-beta.20260120", "ag-charts-enterprise": "13.0.0-beta.20260120", "rxjs": "~7.8.0", diff --git a/testing/behavioural/package.json b/testing/behavioural/package.json index 174ac367c40..ed7a175b9f0 100644 --- a/testing/behavioural/package.json +++ b/testing/behavioural/package.json @@ -1,6 +1,6 @@ { "name": "ag-behavioural-testing", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "private": true, "description": "Behavioural unit testing for ag-Grid", "dependencies": { @@ -8,9 +8,9 @@ }, "type": "module", "devDependencies": { - "ag-grid-community": "35.0.0-beta.20260118.2037", - "ag-grid-enterprise": "35.0.0-beta.20260118.2037", - "ag-grid-react": "35.0.0-beta.20260118.2037", + "ag-grid-community": "35.0.0-beta.20260120.1527", + "ag-grid-enterprise": "35.0.0-beta.20260120.1527", + "ag-grid-react": "35.0.0-beta.20260120.1527", "@vitejs/plugin-react": "^4.5.1", "@types/react": "^18.3.23", "@types/react-dom": "^18.3.7", diff --git a/testing/behavioural/src/version.ts b/testing/behavioural/src/version.ts index 5b526c69dd2..2e1144da244 100644 --- a/testing/behavioural/src/version.ts +++ b/testing/behavioural/src/version.ts @@ -1,2 +1,2 @@ // DO NOT UPDATE MANUALLY: Generated from script during build time -export const VERSION = '35.0.0-beta.20260118.2037'; +export const VERSION = '35.0.0-beta.20260120.1527'; diff --git a/testing/csp/package.json b/testing/csp/package.json index ca0c2e1a8ce..92ced662fc2 100644 --- a/testing/csp/package.json +++ b/testing/csp/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-csp", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "description": "CSP testing for AG Grid", "main": "index.js", "scripts": {}, diff --git a/testing/module-size-angular/package.json b/testing/module-size-angular/package.json index bd47fd89a13..88a9bc36634 100644 --- a/testing/module-size-angular/package.json +++ b/testing/module-size-angular/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-module-size-angular", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "scripts": { "ng": "ng", "start": "ng serve", @@ -20,9 +20,9 @@ "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", - "ag-grid-angular": "35.0.0-beta.20260118.2037", - "ag-grid-community": "35.0.0-beta.20260118.2037", - "ag-grid-enterprise": "35.0.0-beta.20260118.2037", + "ag-grid-angular": "35.0.0-beta.20260120.1527", + "ag-grid-community": "35.0.0-beta.20260120.1527", + "ag-grid-enterprise": "35.0.0-beta.20260120.1527", "ag-charts-community": "13.0.0-beta.20260120", "ag-charts-enterprise": "13.0.0-beta.20260120", "rxjs": "~7.8.0", diff --git a/testing/module-size/package.json b/testing/module-size/package.json index 74c3fccf0c5..4959be5d3a6 100644 --- a/testing/module-size/package.json +++ b/testing/module-size/package.json @@ -1,7 +1,7 @@ { "name": "ag-grid-module-size", "private": true, - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "scripts": { "dev": "vite", "cp-app": "cp ./src/App_Src.tsx ./src/App_AUTO.tsx", @@ -14,9 +14,9 @@ "test:e2e": "run-s \"module-combinations -- {1}\" module-validate --" }, "dependencies": { - "ag-grid-react": "35.0.0-beta.20260118.2037", - "ag-grid-community": "35.0.0-beta.20260118.2037", - "ag-grid-enterprise": "35.0.0-beta.20260118.2037", + "ag-grid-react": "35.0.0-beta.20260120.1527", + "ag-grid-community": "35.0.0-beta.20260120.1527", + "ag-grid-enterprise": "35.0.0-beta.20260120.1527", "ag-charts-community": "13.0.0-beta.20260120", "ag-charts-enterprise": "13.0.0-beta.20260120", "ag-shared": "0.0.1", diff --git a/testing/public-recipes/e2e/package.json b/testing/public-recipes/e2e/package.json index 704ae43d6e7..cbe2b8f6da4 100644 --- a/testing/public-recipes/e2e/package.json +++ b/testing/public-recipes/e2e/package.json @@ -1,12 +1,12 @@ { "name": "ag-grid-public-e2e-testing-recipes", - "version": "35.0.0-beta.20260118.2037", + "version": "35.0.0-beta.20260120.1527", "description": "Public E2E testing recipes for AG Grid", "main": "index.js", "scripts": {}, "license": "MIT", "devDependencies": { - "ag-grid-community": "35.0.0-beta.20260118.2037", + "ag-grid-community": "35.0.0-beta.20260120.1527", "playwright": "^1.56.0", "@playwright/test": "^1.56.0", "@types/node": "^24.0.3" From 1d8db7bb942000b1d1d8c7cdd89b162ea640c91a Mon Sep 17 00:00:00 2001 From: Kyler Phillips Date: Tue, 20 Jan 2026 15:51:22 +0000 Subject: [PATCH 5/5] AG-16219 Remove top margin from ul sideNav (#12929) * AG-16219 Remove top margin from ul sideNav * AG-16219 Remove padding between on this page and sideNav li --- .../pages-navigation/components/SideNavigation.module.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/ag-grid-docs/src/components/pages-navigation/components/SideNavigation.module.scss b/documentation/ag-grid-docs/src/components/pages-navigation/components/SideNavigation.module.scss index f661d37986a..d36b7fe3bd8 100644 --- a/documentation/ag-grid-docs/src/components/pages-navigation/components/SideNavigation.module.scss +++ b/documentation/ag-grid-docs/src/components/pages-navigation/components/SideNavigation.module.scss @@ -62,6 +62,7 @@ flex-direction: column; padding-left: 0; padding-bottom: 0; + margin-top: 0; margin-bottom: 0; list-style: none; z-index: -2; @@ -142,7 +143,6 @@ .sideNav .level1 { margin-top: 0; - padding-bottom: 16px; a { display: inline-flex;