From 3154205727fa37e0d1d2c646cc11be2e981b8cb3 Mon Sep 17 00:00:00 2001 From: David Skewis Date: Thu, 11 Jun 2026 09:24:18 +0100 Subject: [PATCH 1/6] AG-17420 enquiry type contact form (#14026) * AG-17420 enquiry type contact form * AG-17420 remove enquery field from studio --- .../contact-form/ContactForm.module.scss | 4 +++ .../components/contact-form/ContactForm.tsx | 33 +++++++++++++++++-- external/ag-website-shared/src/constants.ts | 4 +++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/external/ag-website-shared/src/components/contact-form/ContactForm.module.scss b/external/ag-website-shared/src/components/contact-form/ContactForm.module.scss index a042ab617fb..cb008677519 100644 --- a/external/ag-website-shared/src/components/contact-form/ContactForm.module.scss +++ b/external/ag-website-shared/src/components/contact-form/ContactForm.module.scss @@ -37,6 +37,10 @@ } } +.contactForm :global(select) { + width: 100%; +} + /* Textarea tweaks */ .contactForm :global(textarea) { min-height: 6rem; /* slightly higher than default */ diff --git a/external/ag-website-shared/src/components/contact-form/ContactForm.tsx b/external/ag-website-shared/src/components/contact-form/ContactForm.tsx index 1c72e20bcdd..87248597020 100644 --- a/external/ag-website-shared/src/components/contact-form/ContactForm.tsx +++ b/external/ag-website-shared/src/components/contact-form/ContactForm.tsx @@ -19,11 +19,21 @@ import { RETURN_URLS } from './constants'; const contactFormData = LIBRARY === 'studio' ? STUDIO_FORM_DATA : CONTACT_FORM_DATA; -const { actionUrl, orgId, textAreaId, leadSource, messagePlaceholder, formLocationId, captchaSettingsKeyName } = - getIsProduction() ? contactFormData.production : contactFormData.default; +const { + actionUrl, + orgId, + textAreaId, + leadSource, + messagePlaceholder, + formLocationId, + enquiryTypeId, + captchaSettingsKeyName, +} = getIsProduction() ? contactFormData.production : contactFormData.default; const isDev = getIsDev(); +const ENQUIRY_TYPE_OPTIONS = ['Sales', 'Technical Support', 'Press/Media', 'Partnerships', 'General'] as const; + type FormValues = { first_name: string; last_name: string; @@ -189,6 +199,25 @@ export const ContactForm: FunctionComponent = ({ {errors.email &&

{errors.email.message}

} + {enquiryTypeId && ( +
+ + +
+ {errors[enquiryTypeId] && ( +

{(errors as any)[enquiryTypeId]?.message as string}

+ )} +
+
+ )} + {!hideMessage && (
diff --git a/external/ag-website-shared/src/constants.ts b/external/ag-website-shared/src/constants.ts index aea3ca31b96..ac8f9ca71f4 100644 --- a/external/ag-website-shared/src/constants.ts +++ b/external/ag-website-shared/src/constants.ts @@ -15,6 +15,7 @@ export const CONTACT_FORM_DATA = { leadSource: 'AG Grid Contact Form', messagePlaceholder: 'Tell us about your interest in AG Grid', formLocationId: '00NS900000BCx1C', + enquiryTypeId: '00NQz00000NHthJ', captchaSettingsKeyName: 'agGridStagingV2', }, production: { @@ -24,6 +25,7 @@ export const CONTACT_FORM_DATA = { messagePlaceholder: 'Tell us about your interest in AG Grid', leadSource: 'AG Grid Contact Form', formLocationId: '00NQ500000CVgqT', + enquiryTypeId: '00NQz00000NHthJ', captchaSettingsKeyName: 'agGridComV2', }, }; @@ -36,6 +38,7 @@ export const STUDIO_FORM_DATA = { leadSource: 'Studio Lead', messagePlaceholder: 'Tell us about your interest in AG Studio', formLocationId: '00NS900000BCx1C', + enquiryTypeId: null, captchaSettingsKeyName: 'agGridStagingV2', }, production: { @@ -45,6 +48,7 @@ export const STUDIO_FORM_DATA = { leadSource: 'Studio Lead', messagePlaceholder: 'Tell us about your interest in AG Studio', formLocationId: '00NQ500000CVgqT', + enquiryTypeId: null, captchaSettingsKeyName: 'agGridComV2', }, }; From da94af4a4ab809a8b5be112e1437a2640db9a9f1 Mon Sep 17 00:00:00 2001 From: AgGitDeployment <80415517+AgGitDeployment@users.noreply.github.com> Date: Thu, 11 Jun 2026 13:54:33 +0100 Subject: [PATCH 2/6] Merge from latest. (#14035) --- 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 9ecc88c7eda..a932182892d 100644 --- a/documentation/ag-grid-docs/package.json +++ b/documentation/ag-grid-docs/package.json @@ -53,12 +53,12 @@ "@tweenjs/tween.js": "^18.6.4", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", - "ag-charts-angular": "13.3.0-beta.20260610", - "ag-charts-community": "13.3.0-beta.20260610", - "ag-charts-enterprise": "13.3.0-beta.20260610", - "ag-charts-types": "13.3.0-beta.20260610", - "ag-charts-react": "13.3.0-beta.20260610", - "ag-charts-vue3": "13.3.0-beta.20260610", + "ag-charts-angular": "13.3.0-beta.20260611", + "ag-charts-community": "13.3.0-beta.20260611", + "ag-charts-enterprise": "13.3.0-beta.20260611", + "ag-charts-types": "13.3.0-beta.20260611", + "ag-charts-react": "13.3.0-beta.20260611", + "ag-charts-vue3": "13.3.0-beta.20260611", "ag-grid-angular": "35.3.0-beta.20260610.1146", "ag-grid-community": "35.3.0-beta.20260610.1146", "ag-grid-enterprise": "35.3.0-beta.20260610.1146", diff --git a/packages/ag-grid-community/package.json b/packages/ag-grid-community/package.json index 56a14888768..89e8ca7af6c 100644 --- a/packages/ag-grid-community/package.json +++ b/packages/ag-grid-community/package.json @@ -120,7 +120,7 @@ "homepage": "https://www.ag-grid.com/", "dependencies": { "ag-stack": "35.3.0-beta.20260610.1146", - "ag-charts-types": "13.3.0-beta.20260610" + "ag-charts-types": "13.3.0-beta.20260611" }, "devDependencies": { "web-streams-polyfill": "^4.2.0", diff --git a/packages/ag-grid-enterprise/package.json b/packages/ag-grid-enterprise/package.json index b05969b80c4..cdd08756537 100644 --- a/packages/ag-grid-enterprise/package.json +++ b/packages/ag-grid-enterprise/package.json @@ -117,12 +117,12 @@ "ag-grid-community": "35.3.0-beta.20260610.1146" }, "optionalDependencies": { - "ag-charts-community": "13.3.0-beta.20260610", - "ag-charts-enterprise": "13.3.0-beta.20260610" + "ag-charts-community": "13.3.0-beta.20260611", + "ag-charts-enterprise": "13.3.0-beta.20260611" }, "devDependencies": { - "ag-charts-community": "13.3.0-beta.20260610", - "ag-charts-enterprise": "13.3.0-beta.20260610", + "ag-charts-community": "13.3.0-beta.20260611", + "ag-charts-enterprise": "13.3.0-beta.20260611", "canvas": "^3.2.3" } } diff --git a/testing/accessibility/package.json b/testing/accessibility/package.json index c65f8d33615..2f7819bb2d0 100644 --- a/testing/accessibility/package.json +++ b/testing/accessibility/package.json @@ -21,8 +21,8 @@ "ag-grid-angular": "35.3.0-beta.20260610.1146", "ag-grid-community": "35.3.0-beta.20260610.1146", "ag-grid-enterprise": "35.3.0-beta.20260610.1146", - "ag-charts-community": "13.3.0-beta.20260610", - "ag-charts-enterprise": "13.3.0-beta.20260610", + "ag-charts-community": "13.3.0-beta.20260611", + "ag-charts-enterprise": "13.3.0-beta.20260611", "rxjs": "~7.8.2", "tslib": "^2.8.1", "zone.js": "~0.15.0" diff --git a/testing/module-size-angular/package.json b/testing/module-size-angular/package.json index 5ee15860083..fcdcbbf01d1 100644 --- a/testing/module-size-angular/package.json +++ b/testing/module-size-angular/package.json @@ -23,8 +23,8 @@ "ag-grid-angular": "35.3.0-beta.20260610.1146", "ag-grid-community": "35.3.0-beta.20260610.1146", "ag-grid-enterprise": "35.3.0-beta.20260610.1146", - "ag-charts-community": "13.3.0-beta.20260610", - "ag-charts-enterprise": "13.3.0-beta.20260610", + "ag-charts-community": "13.3.0-beta.20260611", + "ag-charts-enterprise": "13.3.0-beta.20260611", "rxjs": "~7.8.2", "tslib": "^2.8.1", "zone.js": "~0.15.0" diff --git a/testing/module-size/package.json b/testing/module-size/package.json index a5660915c7b..04abeddb334 100644 --- a/testing/module-size/package.json +++ b/testing/module-size/package.json @@ -17,8 +17,8 @@ "ag-grid-react": "35.3.0-beta.20260610.1146", "ag-grid-community": "35.3.0-beta.20260610.1146", "ag-grid-enterprise": "35.3.0-beta.20260610.1146", - "ag-charts-community": "13.3.0-beta.20260610", - "ag-charts-enterprise": "13.3.0-beta.20260610", + "ag-charts-community": "13.3.0-beta.20260611", + "ag-charts-enterprise": "13.3.0-beta.20260611", "ag-shared": "0.0.1", "react": "^18.3.1", "react-dom": "^18.3.1" diff --git a/yarn.lock b/yarn.lock index ac332ffd557..bd7adf7020f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8557,61 +8557,61 @@ adm-zip@^0.5.10: resolved "https://registry.ag-grid.com/adm-zip/-/adm-zip-0.5.16.tgz#0b5e4c779f07dedea5805cdccb1147071d94a909" integrity sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ== -ag-charts-angular@13.3.0-beta.20260610: - version "13.3.0-beta.20260610" - resolved "https://registry.ag-grid.com/ag-charts-angular/-/ag-charts-angular-13.3.0-beta.20260610.tgz#25e9e7e5f2bc0745442bb7eab660f22cb38146cd" - integrity sha512-pPtCsQzyqUepUn1mNZFolfLeFF3JmpXP1BNjYEjit/N1Qu+A8Jt2aTq8odD809O5lfWJUKwkD46DhUVBDAqU1g== +ag-charts-angular@13.3.0-beta.20260611: + version "13.3.0-beta.20260611" + resolved "https://registry.ag-grid.com/ag-charts-angular/-/ag-charts-angular-13.3.0-beta.20260611.tgz#fa03802dfab62d0bf47adf8b059a161b96222c68" + integrity sha512-zeq7SM9ez8sTumo3pvT9uxwtD2GwcaLyRyRA7dRH+XmLB0c/3Ry+8BOBNu2IZZ8HIBfjHzyRge109MOAJt0imw== dependencies: - ag-charts-community "13.3.0-beta.20260610" + ag-charts-community "13.3.0-beta.20260611" tslib "^2.8.1" -ag-charts-community@13.3.0-beta.20260610: - version "13.3.0-beta.20260610" - resolved "https://registry.ag-grid.com/ag-charts-community/-/ag-charts-community-13.3.0-beta.20260610.tgz#56cca7d8990b1a4d8a14d76c6d8d30bb54007f04" - integrity sha512-x2PVBhZvlIMi+56M9WfT/VPse4hdd6xcMnJ0sFXUq6YBvjSnj2EI+wUuBCod/YCe2wAyKNtu38ERUMBGWHHYiw== +ag-charts-community@13.3.0-beta.20260611: + version "13.3.0-beta.20260611" + resolved "https://registry.ag-grid.com/ag-charts-community/-/ag-charts-community-13.3.0-beta.20260611.tgz#eec59dd761127973583ff6ef89ebef221440f31e" + integrity sha512-Nm02x4Tk9k0Bi0ji6uFXtjpSf7SEx/uPm5YC1uzfbsDTnLcGxlmbbY6V7vNmCO4zBNj2kBmBE2QgaY60YM3ZBw== dependencies: - ag-charts-core "13.3.0-beta.20260610" - ag-charts-locale "13.3.0-beta.20260610" - ag-charts-types "13.3.0-beta.20260610" + ag-charts-core "13.3.0-beta.20260611" + ag-charts-locale "13.3.0-beta.20260611" + ag-charts-types "13.3.0-beta.20260611" -ag-charts-core@13.3.0-beta.20260610: - version "13.3.0-beta.20260610" - resolved "https://registry.ag-grid.com/ag-charts-core/-/ag-charts-core-13.3.0-beta.20260610.tgz#9978c5016652617be6f77d1f5db9e8c5ea626ef6" - integrity sha512-CH9kdgoDQRXioObXS3iKyOdnxezPUxDdTgAF1FMtAcYHG1W+uQD4Rn0Jfh3g4hGfSlYJFsjZ28OzTYdDxkOorw== +ag-charts-core@13.3.0-beta.20260611: + version "13.3.0-beta.20260611" + resolved "https://registry.ag-grid.com/ag-charts-core/-/ag-charts-core-13.3.0-beta.20260611.tgz#483ef4e4d2634f7db6c0ed221d08cfefc7ce7860" + integrity sha512-byxighfoon0zEzlwsPsKGTLpvUBc/UEp3vjubpoX3ajXvKnx2YgHoWgKXUWGwSjIaPedCobksEe5a+5wZ0m0cg== dependencies: - ag-charts-types "13.3.0-beta.20260610" + ag-charts-types "13.3.0-beta.20260611" -ag-charts-enterprise@13.3.0-beta.20260610: - version "13.3.0-beta.20260610" - resolved "https://registry.ag-grid.com/ag-charts-enterprise/-/ag-charts-enterprise-13.3.0-beta.20260610.tgz#4dacd5cdfdef9aea7300a80bc0fe415b57613df8" - integrity sha512-9yBPaZpGfmuLA24yuOGhCc0l14awbTYhJ5Qz4f7EeVsbs1R+ZkLThnCgwqbdpifnwF7gvFusf/HJsVmE+0f8yA== +ag-charts-enterprise@13.3.0-beta.20260611: + version "13.3.0-beta.20260611" + resolved "https://registry.ag-grid.com/ag-charts-enterprise/-/ag-charts-enterprise-13.3.0-beta.20260611.tgz#d4e8e29b984db218f0767397d49dd5220b88f72a" + integrity sha512-BeSLbypq6BxG1OZwnVc/KwxArbm75I8H/VrR0Z5IHoli6hDiEufKy6+QOyQpDJgVee7533e4jSOBevP+QSUA2w== dependencies: - ag-charts-community "13.3.0-beta.20260610" - ag-charts-core "13.3.0-beta.20260610" + ag-charts-community "13.3.0-beta.20260611" + ag-charts-core "13.3.0-beta.20260611" -ag-charts-locale@13.3.0-beta.20260610: - version "13.3.0-beta.20260610" - resolved "https://registry.ag-grid.com/ag-charts-locale/-/ag-charts-locale-13.3.0-beta.20260610.tgz#00674618ce88343f38456954dedaf335bf111f2b" - integrity sha512-DGobzPDUPmSjryK+iMSJQTiGkL6ptSUShsUzLJWzi9/6ddMEfwJ2sYh2ifUtwpSuORvvWmB9fncWIbbCijmGxA== +ag-charts-locale@13.3.0-beta.20260611: + version "13.3.0-beta.20260611" + resolved "https://registry.ag-grid.com/ag-charts-locale/-/ag-charts-locale-13.3.0-beta.20260611.tgz#813f47d3c858bfb966a0d6701d46895025fd0b7d" + integrity sha512-M90lX9wKaBCgVrUugbRyhPJ0rbhhWuRX/M+Ld7wRQU8U3IqkFykHLMhkqEAkmt7k7bc7b+gsf6lqNlyjAPhtiA== -ag-charts-react@13.3.0-beta.20260610: - version "13.3.0-beta.20260610" - resolved "https://registry.ag-grid.com/ag-charts-react/-/ag-charts-react-13.3.0-beta.20260610.tgz#ad13c9fb89e2d2d27c0e0a37dd980e6e08db5568" - integrity sha512-WrmRGgQVHhITXG5uRi78rRlxgV/fLcxk/0/8ZMbiQqvLInmHEhHsLPbKU5rvNVVjU4W7FTqL+VjAqZ4tRODh+w== +ag-charts-react@13.3.0-beta.20260611: + version "13.3.0-beta.20260611" + resolved "https://registry.ag-grid.com/ag-charts-react/-/ag-charts-react-13.3.0-beta.20260611.tgz#f1efa25c713be2a5da7007f3b82316b68657f2d7" + integrity sha512-b96PPO3b9LGZ0mnL21VJdGPHRYsuAUtXs5mEQs4fSeR4McOhZrleIPCm3BnjW5BuD00QxF+lnvHVa1T+Eyx+iA== dependencies: - ag-charts-community "13.3.0-beta.20260610" + ag-charts-community "13.3.0-beta.20260611" -ag-charts-types@13.3.0-beta.20260610: - version "13.3.0-beta.20260610" - resolved "https://registry.ag-grid.com/ag-charts-types/-/ag-charts-types-13.3.0-beta.20260610.tgz#0404c8ad2b4fe1e88cf2a756e1dc51d85ce390e5" - integrity sha512-EVaKGlnTpfl64ATrdl/Ji/V33MPFAmPr1tAEHzwK5UNKICvX7gznnB+80V8NVtq54y5/pqn5PEJuY4WRSecXnQ== +ag-charts-types@13.3.0-beta.20260611: + version "13.3.0-beta.20260611" + resolved "https://registry.ag-grid.com/ag-charts-types/-/ag-charts-types-13.3.0-beta.20260611.tgz#8f65261a21bfbb5a2dbf7968a964fdf49f2af16e" + integrity sha512-GDBj7ozquaqyRmMao183eHHIa6lglIEJL/KmzZ6Vh5rOLNiFgOgXfbuukn2O+boCAakw+dLklZ/zurfUiXMV5g== -ag-charts-vue3@13.3.0-beta.20260610: - version "13.3.0-beta.20260610" - resolved "https://registry.ag-grid.com/ag-charts-vue3/-/ag-charts-vue3-13.3.0-beta.20260610.tgz#646ce087fee017b43cd9f2cca6abd9275cab7709" - integrity sha512-tF67BIHZXwf92tMqvW/kxmkeWl/W7rzM3Ixs8Fgc2CyeSBU2NqILas3Z2FBBc10DBNOor7JVvBIW7yqSxqU0OA== +ag-charts-vue3@13.3.0-beta.20260611: + version "13.3.0-beta.20260611" + resolved "https://registry.ag-grid.com/ag-charts-vue3/-/ag-charts-vue3-13.3.0-beta.20260611.tgz#9b28d90de09410ba87ccdafe3ecadb0d6fa2c98f" + integrity sha512-8vMllq0IGcmen10ozRNbcVmZ23HPN00QdoHpW7/kdecO1FyU5K40HPB8XTYS7ydZC3YryuWxq860qYl+vPWnRg== dependencies: - ag-charts-community "13.3.0-beta.20260610" + ag-charts-community "13.3.0-beta.20260611" agent-base@6, agent-base@^6.0.2: version "6.0.2" From 7690eb1ed178e76eeca03cec9d61d139271a3e3b Mon Sep 17 00:00:00 2001 From: AgGitDeployment <80415517+AgGitDeployment@users.noreply.github.com> Date: Thu, 11 Jun 2026 14:19:07 +0100 Subject: [PATCH 3/6] Merge from latest. (#14036) --- .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 | 4 ++-- packages/ag-grid-community/src/version.ts | 2 +- packages/ag-grid-enterprise/package.json | 6 +++--- packages/ag-grid-enterprise/src/version.ts | 2 +- packages/ag-grid-react/package.json | 6 +++--- packages/ag-grid-vue3/package.json | 4 ++-- packages/ag-stack/package.json | 2 +- packages/ag-stack/src/version.ts | 2 +- .../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/angular-tests/package.json | 6 +++--- 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 ++-- testing/vue3-tests/package.json | 8 ++++---- 28 files changed, 62 insertions(+), 62 deletions(-) diff --git a/.env b/.env index f20131068a4..3c0b3a24706 100644 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ # Production Build -BUILD_GRID_VERSION=35.3.0-beta.20260610.1146 -BUILD_CHARTS_VERSION=13.3.0-beta.20260610 +BUILD_GRID_VERSION=35.3.0-beta.20260611.1256 +BUILD_CHARTS_VERSION=13.3.0-beta.20260611 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 c76c08e297d..383719707d2 100644 --- a/community-modules/locale/package.json +++ b/community-modules/locale/package.json @@ -1,6 +1,6 @@ { "name": "@ag-grid-community/locale", - "version": "35.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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 f1cb677fdb3..460fa3aa6ab 100644 --- a/community-modules/styles/package.json +++ b/community-modules/styles/package.json @@ -1,6 +1,6 @@ { "name": "@ag-grid-community/styles", - "version": "35.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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 a932182892d..c01c04838e1 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "repository": { "type": "git", "url": "https://github.com/ag-grid/ag-grid.git" @@ -59,11 +59,11 @@ "ag-charts-types": "13.3.0-beta.20260611", "ag-charts-react": "13.3.0-beta.20260611", "ag-charts-vue3": "13.3.0-beta.20260611", - "ag-grid-angular": "35.3.0-beta.20260610.1146", - "ag-grid-community": "35.3.0-beta.20260610.1146", - "ag-grid-enterprise": "35.3.0-beta.20260610.1146", - "ag-grid-react": "35.3.0-beta.20260610.1146", - "ag-grid-vue3": "35.3.0-beta.20260610.1146", + "ag-grid-angular": "35.3.0-beta.20260611.1256", + "ag-grid-community": "35.3.0-beta.20260611.1256", + "ag-grid-enterprise": "35.3.0-beta.20260611.1256", + "ag-grid-react": "35.3.0-beta.20260611.1256", + "ag-grid-vue3": "35.3.0-beta.20260611.1256", "algoliasearch": "^5.51.0", "astro": "6.1.9", "cheerio": "^1.0.0", diff --git a/documentation/update-algolia-indices/package.json b/documentation/update-algolia-indices/package.json index 298369af14e..e48d5471b88 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "description": "Update algolia indices", "main": "src/index.ts", "type": "module", diff --git a/package.json b/package.json index 7be8ac36448..be70fd079bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid", - "version": "35.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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 9f8fb53f88b..1fe35fb01ad 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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.3.0-beta.20260610.1146", + "ag-grid-community": "35.3.0-beta.20260611.1256", "@angular/animations": "^20.0.0", "@angular/common": "^20.0.0", "@angular/compiler": "^20.0.0", @@ -27,7 +27,7 @@ "zone.js": "~0.15.1" }, "devDependencies": { - "ag-grid-community": "35.3.0-beta.20260610.1146", + "ag-grid-community": "35.3.0-beta.20260611.1256", "@angular/build": "^20.0.0", "@angular/cli": "^20.0.0", "@angular/forms": "^20.0.0", 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 0d8e69c8d48..fc5b3d39b9a 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "description": "AG Grid Angular Component", "license": "MIT", "peerDependencies": { @@ -8,7 +8,7 @@ "@angular/core": ">= 20.0.0" }, "dependencies": { - "ag-grid-community": "35.3.0-beta.20260610.1146", + "ag-grid-community": "35.3.0-beta.20260611.1256", "tslib": "^2.8.1" }, "repository": { diff --git a/packages/ag-grid-community/package.json b/packages/ag-grid-community/package.json index 89e8ca7af6c..1790664f107 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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", @@ -119,7 +119,7 @@ ], "homepage": "https://www.ag-grid.com/", "dependencies": { - "ag-stack": "35.3.0-beta.20260610.1146", + "ag-stack": "35.3.0-beta.20260611.1256", "ag-charts-types": "13.3.0-beta.20260611" }, "devDependencies": { diff --git a/packages/ag-grid-community/src/version.ts b/packages/ag-grid-community/src/version.ts index 033f6034e0c..5008e6b4f4b 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.3.0-beta.20260610.1146'; +export const VERSION = '35.3.0-beta.20260611.1256'; diff --git a/packages/ag-grid-enterprise/package.json b/packages/ag-grid-enterprise/package.json index cdd08756537..2efff5f767c 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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,8 +113,8 @@ ], "homepage": "https://www.ag-grid.com/", "dependencies": { - "ag-stack": "35.3.0-beta.20260610.1146", - "ag-grid-community": "35.3.0-beta.20260610.1146" + "ag-stack": "35.3.0-beta.20260611.1256", + "ag-grid-community": "35.3.0-beta.20260611.1256" }, "optionalDependencies": { "ag-charts-community": "13.3.0-beta.20260611", diff --git a/packages/ag-grid-enterprise/src/version.ts b/packages/ag-grid-enterprise/src/version.ts index 033f6034e0c..5008e6b4f4b 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.3.0-beta.20260610.1146'; +export const VERSION = '35.3.0-beta.20260611.1256'; diff --git a/packages/ag-grid-react/package.json b/packages/ag-grid-react/package.json index 73f72d488b3..8e95c42d11c 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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.29.2", "prop-types": "^15.6.2", - "ag-grid-community": "35.3.0-beta.20260610.1146", + "ag-grid-community": "35.3.0-beta.20260611.1256", "@babel/plugin-proposal-throw-expressions": "^7.27.1", "@babel/preset-typescript": "^7.28.5", "@types/react": "~18.3.26", @@ -44,7 +44,7 @@ }, "dependencies": { "prop-types": "^15.8.1", - "ag-grid-community": "35.3.0-beta.20260610.1146" + "ag-grid-community": "35.3.0-beta.20260611.1256" }, "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 9ea819a474d..5902f29af07 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "author": "Sean Landsman ", "license": "MIT", "files": [ @@ -44,7 +44,7 @@ "build-only:watch": "vite build --watch" }, "dependencies": { - "ag-grid-community": "35.3.0-beta.20260610.1146" + "ag-grid-community": "35.3.0-beta.20260611.1256" }, "devDependencies": { "vue": "^3.5.32", diff --git a/packages/ag-stack/package.json b/packages/ag-stack/package.json index 0bd04fb1218..ced1e6fe928 100644 --- a/packages/ag-stack/package.json +++ b/packages/ag-stack/package.json @@ -1,6 +1,6 @@ { "name": "ag-stack", - "version": "35.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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-stack/src/version.ts b/packages/ag-stack/src/version.ts index 033f6034e0c..5008e6b4f4b 100644 --- a/packages/ag-stack/src/version.ts +++ b/packages/ag-stack/src/version.ts @@ -1,2 +1,2 @@ // DO NOT UPDATE MANUALLY: Generated from script during build time -export const VERSION = '35.3.0-beta.20260610.1146'; +export const VERSION = '35.3.0-beta.20260611.1256'; diff --git a/plugins/ag-grid-generate-code-reference-files/package.json b/plugins/ag-grid-generate-code-reference-files/package.json index cc5afefaa77..6a74c27869e 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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 99250239bc6..1c49c2ac349 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "private": true, "dependencies": { "ag-shared": "0.0.1", - "ag-grid-community": "35.3.0-beta.20260610.1146", + "ag-grid-community": "35.3.0-beta.20260611.1256", "glob": "^11.1.0", "typescript": "~5.8.3", "cheerio": "^1.2.0", diff --git a/plugins/ag-grid-task-autogen/package.json b/plugins/ag-grid-task-autogen/package.json index 8ee0c62e3cf..fcef3979cbe 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "private": true, "dependencies": { "@nx/devkit": "20.8.4", diff --git a/testing/accessibility/package.json b/testing/accessibility/package.json index 2f7819bb2d0..1906cdbd6a3 100644 --- a/testing/accessibility/package.json +++ b/testing/accessibility/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-accessibility", - "version": "35.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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.3.0-beta.20260610.1146", - "ag-grid-community": "35.3.0-beta.20260610.1146", - "ag-grid-enterprise": "35.3.0-beta.20260610.1146", + "ag-grid-angular": "35.3.0-beta.20260611.1256", + "ag-grid-community": "35.3.0-beta.20260611.1256", + "ag-grid-enterprise": "35.3.0-beta.20260611.1256", "ag-charts-community": "13.3.0-beta.20260611", "ag-charts-enterprise": "13.3.0-beta.20260611", "rxjs": "~7.8.2", diff --git a/testing/angular-tests/package.json b/testing/angular-tests/package.json index 3b776cca68a..75078a3547d 100644 --- a/testing/angular-tests/package.json +++ b/testing/angular-tests/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-angular-tests", - "version": "35.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "private": true, "scripts": { "test:e2e": "jest --no-cache" @@ -11,8 +11,8 @@ "@angular/core": "^21.0.0", "@angular/platform-browser": "^21.0.0", "@angular/platform-browser-dynamic": "^21.0.0", - "ag-grid-angular": "35.3.0-beta.20260610.1146", - "ag-grid-community": "35.3.0-beta.20260610.1146", + "ag-grid-angular": "35.3.0-beta.20260611.1256", + "ag-grid-community": "35.3.0-beta.20260611.1256", "rxjs": "~7.8.2", "tslib": "^2.8.1", "zone.js": "~0.15.0" diff --git a/testing/behavioural/package.json b/testing/behavioural/package.json index 7776256f6d1..adbdd87dfdb 100644 --- a/testing/behavioural/package.json +++ b/testing/behavioural/package.json @@ -1,6 +1,6 @@ { "name": "ag-behavioural-testing", - "version": "35.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "private": true, "description": "Behavioural unit testing for ag-Grid", "dependencies": { @@ -8,9 +8,9 @@ }, "type": "module", "devDependencies": { - "ag-grid-community": "35.3.0-beta.20260610.1146", - "ag-grid-enterprise": "35.3.0-beta.20260610.1146", - "ag-grid-react": "35.3.0-beta.20260610.1146", + "ag-grid-community": "35.3.0-beta.20260611.1256", + "ag-grid-enterprise": "35.3.0-beta.20260611.1256", + "ag-grid-react": "35.3.0-beta.20260611.1256", "@types/react": "^18.3.23", "@types/react-dom": "^18.3.7", "@testing-library/dom": "^10.4.1", diff --git a/testing/behavioural/src/version.ts b/testing/behavioural/src/version.ts index 033f6034e0c..5008e6b4f4b 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.3.0-beta.20260610.1146'; +export const VERSION = '35.3.0-beta.20260611.1256'; diff --git a/testing/csp/package.json b/testing/csp/package.json index aa78a0c0305..e742a3f22e0 100644 --- a/testing/csp/package.json +++ b/testing/csp/package.json @@ -1,6 +1,6 @@ { "name": "ag-grid-csp", - "version": "35.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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 fcdcbbf01d1..f756d166e25 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "scripts": { "ng": "ng", "start": "ng serve", @@ -20,9 +20,9 @@ "@angular/platform-browser": "^20.0.0", "@angular/platform-browser-dynamic": "^20.0.0", "@angular/router": "^20.0.0", - "ag-grid-angular": "35.3.0-beta.20260610.1146", - "ag-grid-community": "35.3.0-beta.20260610.1146", - "ag-grid-enterprise": "35.3.0-beta.20260610.1146", + "ag-grid-angular": "35.3.0-beta.20260611.1256", + "ag-grid-community": "35.3.0-beta.20260611.1256", + "ag-grid-enterprise": "35.3.0-beta.20260611.1256", "ag-charts-community": "13.3.0-beta.20260611", "ag-charts-enterprise": "13.3.0-beta.20260611", "rxjs": "~7.8.2", diff --git a/testing/module-size/package.json b/testing/module-size/package.json index 04abeddb334..fb30ec0423d 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "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.3.0-beta.20260610.1146", - "ag-grid-community": "35.3.0-beta.20260610.1146", - "ag-grid-enterprise": "35.3.0-beta.20260610.1146", + "ag-grid-react": "35.3.0-beta.20260611.1256", + "ag-grid-community": "35.3.0-beta.20260611.1256", + "ag-grid-enterprise": "35.3.0-beta.20260611.1256", "ag-charts-community": "13.3.0-beta.20260611", "ag-charts-enterprise": "13.3.0-beta.20260611", "ag-shared": "0.0.1", diff --git a/testing/public-recipes/e2e/package.json b/testing/public-recipes/e2e/package.json index c98c08340b9..58c67714cc9 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.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "description": "Public E2E testing recipes for AG Grid", "main": "index.js", "scripts": {}, "license": "MIT", "devDependencies": { - "ag-grid-community": "35.3.0-beta.20260610.1146", + "ag-grid-community": "35.3.0-beta.20260611.1256", "playwright": "^1.59.1", "@playwright/test": "^1.59.1", "@types/node": "^22.15.3" diff --git a/testing/vue3-tests/package.json b/testing/vue3-tests/package.json index 08b69d13730..d817a1136f0 100644 --- a/testing/vue3-tests/package.json +++ b/testing/vue3-tests/package.json @@ -1,7 +1,7 @@ { "name": "ag-grid-vue3-tests", "private": true, - "version": "35.3.0-beta.20260610.1146", + "version": "35.3.0-beta.20260611.1256", "type": "module", "scripts": { "dev": "vite", @@ -15,9 +15,9 @@ "dependencies": { "vue": "^3.5.32", "vue-router": "^5.0.6", - "ag-grid-community": "35.3.0-beta.20260610.1146", - "ag-grid-enterprise": "35.3.0-beta.20260610.1146", - "ag-grid-vue3": "35.3.0-beta.20260610.1146", + "ag-grid-community": "35.3.0-beta.20260611.1256", + "ag-grid-enterprise": "35.3.0-beta.20260611.1256", + "ag-grid-vue3": "35.3.0-beta.20260611.1256", "decimal.js": "^10.6.0" }, "devDependencies": { From 6dcff8e1256833826ea6ca96051bb1a565d78b59 Mon Sep 17 00:00:00 2001 From: David Skewis Date: Thu, 11 Jun 2026 14:47:08 +0100 Subject: [PATCH 4/6] Ag 17545 remove prism (#14038) * AG-17545 remove prism code * AG-17545 update component name to be code * AG-17545 formatting --- documentation/ag-grid-docs/package.json | 1 - .../example-runner/components/CodeViewer.tsx | 4 +- .../license-setup/components/LicenseSetup.tsx | 17 +- .../module-mappings/ModuleMappings.tsx | 2 +- .../components/InterfaceDocumentation.astro | 4 +- .../components/Property.tsx | 4 +- .../components/Section.tsx | 4 +- .../src/components/snippet/Snippet.astro | 4 +- .../ThemeBuilderHomepage.tsx | 9 +- .../general/ThemeImportExportDialog.tsx | 4 +- .../src/components/code/Code.tsx | 193 +++++++++--------- ....module.scss => CodeHighlight.module.scss} | 0 .../src/components/code/CodeShiki.tsx | 162 --------------- .../src/components/snippet/Snippet.tsx | 26 +-- .../snippet/SnippetFromRemoteUrl.tsx | 2 +- 15 files changed, 125 insertions(+), 311 deletions(-) rename external/ag-website-shared/src/components/code/{CodeShiki.module.scss => CodeHighlight.module.scss} (100%) delete mode 100644 external/ag-website-shared/src/components/code/CodeShiki.tsx diff --git a/documentation/ag-grid-docs/package.json b/documentation/ag-grid-docs/package.json index c01c04838e1..6bc3f334609 100644 --- a/documentation/ag-grid-docs/package.json +++ b/documentation/ag-grid-docs/package.json @@ -80,7 +80,6 @@ "nanostores": "^1.3.0", "node-html-parser": "^7.1.0", "playwright-network-cache": "0.2.2", - "prismjs": "^1.29.0", "react": "~18.2.0", "react-animate-height": "^3.2.3", "react-colorful": "^5.6.1", diff --git a/documentation/ag-grid-docs/src/components/example-runner/components/CodeViewer.tsx b/documentation/ag-grid-docs/src/components/example-runner/components/CodeViewer.tsx index 4ad8bb84a96..4c9b0c2f28b 100644 --- a/documentation/ag-grid-docs/src/components/example-runner/components/CodeViewer.tsx +++ b/documentation/ag-grid-docs/src/components/example-runner/components/CodeViewer.tsx @@ -1,5 +1,5 @@ import type { InternalFramework } from '@ag-grid-types'; -import CodeShiki from '@ag-website-shared/components/code/CodeShiki'; +import Code from '@ag-website-shared/components/code/Code'; import { Icon } from '@ag-website-shared/components/icon/Icon'; import { CONSOLE_LOG_REGEX, @@ -165,7 +165,7 @@ const FileView = ({ path, code }) => { return ( <> - + ); }; diff --git a/documentation/ag-grid-docs/src/components/license-setup/components/LicenseSetup.tsx b/documentation/ag-grid-docs/src/components/license-setup/components/LicenseSetup.tsx index ae6d0772d72..38110e7d949 100644 --- a/documentation/ag-grid-docs/src/components/license-setup/components/LicenseSetup.tsx +++ b/documentation/ag-grid-docs/src/components/license-setup/components/LicenseSetup.tsx @@ -222,25 +222,13 @@ export const LicenseSetup: FunctionComponent = ({ library, framework, pat

{dependenciesSnippet && ( - + )}

Or install using npm:

{npmInstallSnippet && ( - + )}
@@ -267,7 +255,6 @@ export const LicenseSetup: FunctionComponent = ({ library, framework, pat diff --git a/documentation/ag-grid-docs/src/components/module-mappings/ModuleMappings.tsx b/documentation/ag-grid-docs/src/components/module-mappings/ModuleMappings.tsx index c38f0ec2a71..d231358fc83 100644 --- a/documentation/ag-grid-docs/src/components/module-mappings/ModuleMappings.tsx +++ b/documentation/ag-grid-docs/src/components/module-mappings/ModuleMappings.tsx @@ -207,7 +207,7 @@ export const ModuleMappings: FunctionComponent = ({ framework, modules })
{selectedDependenciesSnippet && (
- +
)} diff --git a/documentation/ag-grid-docs/src/components/reference-documentation/components/InterfaceDocumentation.astro b/documentation/ag-grid-docs/src/components/reference-documentation/components/InterfaceDocumentation.astro index 55b0b60c8d1..ed34a083fef 100644 --- a/documentation/ag-grid-docs/src/components/reference-documentation/components/InterfaceDocumentation.astro +++ b/documentation/ag-grid-docs/src/components/reference-documentation/components/InterfaceDocumentation.astro @@ -4,7 +4,7 @@ import { getFrameworkFromPath } from '@components/docs/utils/urlPaths'; import { getInterfaceDocumentationModel } from '../utils/getInterfaceDocumentationModel'; import { getOverrides } from '../utils/getOverrides'; import { getJsonFile } from '@utils/pages'; -import CodeShiki from '@ag-website-shared/components/code/CodeShiki'; +import Code from '@ag-website-shared/components/code/Code'; import { codeToHtml } from 'shiki'; import agDocsTheme from '@ag-website-shared/components/code/theme.json'; import { extractDecorations } from '@ag-website-shared/components/code/keepMarkup'; @@ -40,7 +40,7 @@ if (model.type === 'code') { { model.type === 'code' ? ( - + ) : ( - {detailsCode && } + {detailsCode && } )} diff --git a/documentation/ag-grid-docs/src/components/reference-documentation/components/Section.tsx b/documentation/ag-grid-docs/src/components/reference-documentation/components/Section.tsx index 1c9b51a751f..497219c23e6 100644 --- a/documentation/ag-grid-docs/src/components/reference-documentation/components/Section.tsx +++ b/documentation/ag-grid-docs/src/components/reference-documentation/components/Section.tsx @@ -1,5 +1,5 @@ import type { Framework } from '@ag-grid-types'; -import CodeShiki from '@ag-website-shared/components/code/CodeShiki'; +import Code from '@ag-website-shared/components/code/Code'; import { Icon } from '@ag-website-shared/components/icon/Icon'; import styles from '@ag-website-shared/components/reference-documentation/ApiReference.module.scss'; import { urlWithPrefix } from '@utils/urlWithPrefix'; @@ -104,7 +104,7 @@ const ObjectCodeSample: React.FC = ({ framework, id, breadcrumbs = { } const escapedLines = escapeGenericCode(lines); - return ; + return ; }; const SectionHeader = ({ diff --git a/documentation/ag-grid-docs/src/components/snippet/Snippet.astro b/documentation/ag-grid-docs/src/components/snippet/Snippet.astro index 85923741495..da874ffbdf5 100644 --- a/documentation/ag-grid-docs/src/components/snippet/Snippet.astro +++ b/documentation/ag-grid-docs/src/components/snippet/Snippet.astro @@ -1,5 +1,5 @@ --- -import CodeShiki, { LanguageMap } from '@ag-website-shared/components/code/CodeShiki'; +import Code, { LanguageMap } from '@ag-website-shared/components/code/Code'; import agDocsTheme from '@ag-website-shared/components/code/theme.json'; import { getFrameworkFromPath } from '@components/docs/utils/urlPaths'; import he from 'he'; @@ -48,7 +48,7 @@ const preHighlightedHtml = await codeToHtml(snippet.trimEnd(), { } as any); --- - = ({ gridHeight = null }) =>
- + diff --git a/documentation/ag-grid-docs/src/components/theme-builder/components/general/ThemeImportExportDialog.tsx b/documentation/ag-grid-docs/src/components/theme-builder/components/general/ThemeImportExportDialog.tsx index c111089dde6..91d11fec66c 100644 --- a/documentation/ag-grid-docs/src/components/theme-builder/components/general/ThemeImportExportDialog.tsx +++ b/documentation/ag-grid-docs/src/components/theme-builder/components/general/ThemeImportExportDialog.tsx @@ -1,5 +1,5 @@ import { Alert } from '@ag-website-shared/components/alert/Alert'; -import CodeShiki from '@ag-website-shared/components/code/CodeShiki'; +import Code from '@ag-website-shared/components/code/Code'; import { Tabs } from '@ag-website-shared/components/tabs/Tabs'; import { Checkmark, Copy, Upload } from '@carbon/icons-react'; import styled from '@emotion/styled'; @@ -101,7 +101,7 @@ const ExportTabContent = ({ codeRef }: { codeRef: RefObject - + diff --git a/external/ag-website-shared/src/components/code/Code.tsx b/external/ag-website-shared/src/components/code/Code.tsx index bc268e85f9a..8848332a5da 100644 --- a/external/ag-website-shared/src/components/code/Code.tsx +++ b/external/ag-website-shared/src/components/code/Code.tsx @@ -1,58 +1,91 @@ import { Icon } from '@ag-website-shared/components/icon/Icon'; import classnames from 'classnames'; -import Prism from 'prismjs'; -import 'prismjs/components/prism-bash'; -import 'prismjs/components/prism-diff'; -import 'prismjs/components/prism-java'; -import 'prismjs/components/prism-json'; -import 'prismjs/components/prism-jsx'; -import 'prismjs/components/prism-scss'; -import 'prismjs/components/prism-shell-session'; -import 'prismjs/components/prism-sql'; -import 'prismjs/components/prism-typescript'; -import 'prismjs/components/prism-xml-doc'; -import 'prismjs/plugins/keep-markup/prism-keep-markup'; -import 'prismjs/plugins/line-numbers/prism-line-numbers'; -import { memo, useEffect, useRef, useState } from 'react'; +import { memo, useEffect, useState } from 'react'; +import { getSingletonHighlighter } from 'shiki'; import styles from './Code.module.scss'; +import codeStyles from './CodeHighlight.module.scss'; +import { extractDecorations } from './keepMarkup'; +import agDocsTheme from './theme.json'; -const GrammarMap = { - js: Prism.languages.javascript, - json: Prism.languages.json, - ts: Prism.languages.typescript, - css: Prism.languages.css, - bash: Prism.languages.bash, - shell: Prism.languages.shellsession, - html: Prism.languages.html, - jsx: Prism.languages.jsx, - java: Prism.languages.java, - sql: Prism.languages.sql, - diff: Prism.languages.diff, - scss: Prism.languages.scss, - xml: Prism.languages.xml, - plain: Prism.languages.plain, -}; - -export type Language = keyof typeof GrammarMap; - -function CopyToClipboardButton({ code }: { code: string | string[] }) { +const LANGS = [ + 'javascript', + 'typescript', + 'json', + 'css', + 'scss', + 'bash', + 'html', + 'jsx', + 'tsx', + 'java', + 'sql', + 'diff', + 'xml', + 'shellsession', +] as const; + +export const LanguageMap = { + js: 'javascript', + json: 'json', + ts: 'typescript', + css: 'css', + bash: 'bash', + shell: 'shellsession', + html: 'html', + jsx: 'jsx', + java: 'java', + sql: 'sql', + diff: 'diff', + scss: 'scss', + xml: 'xml', +} as const; + +export type Language = keyof typeof LanguageMap; + +// Initialise once at module load — promise is shared across all component instances. +const highlighterPromise = getSingletonHighlighter({ + langs: [...LANGS], + themes: [agDocsTheme as Parameters[0]['themes'][number]], +}); + +// In-memory cache keyed by `keepMarkup:lang:code` to avoid redundant re-highlighting. +const cache = new Map(); + +function highlight(code: string, language: Language, keepMarkup: boolean): Promise { + const key = `${keepMarkup}:${language}:${code}`; + if (cache.has(key)) { + return Promise.resolve(cache.get(key)!); + } + + const { cleanCode, decorations } = keepMarkup + ? extractDecorations(code.trimEnd()) + : { cleanCode: code.trimEnd(), decorations: [] }; + + return highlighterPromise.then((hl) => { + const html = hl.codeToHtml(cleanCode, { + lang: LanguageMap[language], + theme: 'ag-docs', + decorations, + }); + cache.set(key, html); + return html; + }); +} + +function CopyToClipboardButton({ code }: { code: string }) { const [hasCopied, setHasCopied] = useState(false); - const copyToClipboard = async (code) => { + const copyToClipboard = async () => { await navigator.clipboard.writeText(code); - await setHasCopied(true); - await setTimeout(() => { - setHasCopied(false); - }, 2000); + setHasCopied(true); + setTimeout(() => setHasCopied(false), 2000); }; return ( { - copyToClipboard(code); - }} + onClick={copyToClipboard} > {hasCopied ? ( @@ -68,84 +101,62 @@ function CopyToClipboardButton({ code }: { code: string | string[] }) { ); } -/** - * This uses Prism to highlight a provided code snippet. - */ function Code({ code, language = 'ts', className, - keepMarkup = false, lineNumbers = false, copyToClipboard = false, + keepMarkup = false, + preHighlightedHtml, ...props }: { code: string | string[]; language?: Language; className?: string; - keepMarkup?: boolean; lineNumbers?: boolean; copyToClipboard?: boolean; + keepMarkup?: boolean; + preHighlightedHtml?: string; }) { - if (Array.isArray(code)) { - code = code.join('\n'); - } + const [highlightedHtml, setHighlightedHtml] = useState(preHighlightedHtml ?? null); + + useEffect(() => { + // keepMarkup content is dynamic (runtime links) so cannot use pre-highlighted HTML. + // For all other cases, pre-highlighted HTML from build time is used as-is. + if (preHighlightedHtml && !keepMarkup) return; + let cancelled = false; + highlight(code as string, language, keepMarkup).then((html) => { + if (!cancelled) setHighlightedHtml(html); + }); + return () => { + cancelled = true; + }; + }, [code, language, keepMarkup, preHighlightedHtml]); return (
-            {copyToClipboard && }
-
-            {keepMarkup || lineNumbers ? (
-                
-            ) : (
-                
-            )}
+            {copyToClipboard && }
+            {highlightedHtml ?  : {code}}
         
); } -/** - * This component uses Prism.highlightElement() rather than Prism.highlight() which utilises more of the Prism lifecycle, - * allowing us to use plugins (e.g. keep-markup), but is much less performant, so should only be used where plugins - * are required. - */ -const CodeWithPrismPlugins = ({ code, keepMarkup }: { code: string; keepMarkup: boolean }) => { - const ref = useRef(null); - - useEffect(() => { - if (ref.current) { - Prism.highlightElement(ref.current); - } - }); +function ShikiCode({ html }: { html: string }) { + const codeMatch = html.match(/]*>([\s\S]*)<\/code>/); + const innerHtml = codeMatch ? codeMatch[1] : html; - return keepMarkup ? ( - - ) : ( - - {code} - - ); -}; - -/** - * This uses Prism.highlight() which is the most-performant method for syntax highlighting because it only executes a - * small part of the Prism lifecycle. - */ -const CodeWithoutPrismPlugins = ({ code, language }: { code: string; language: Language }) => ( - -); + return ; +} export default memo(Code); diff --git a/external/ag-website-shared/src/components/code/CodeShiki.module.scss b/external/ag-website-shared/src/components/code/CodeHighlight.module.scss similarity index 100% rename from external/ag-website-shared/src/components/code/CodeShiki.module.scss rename to external/ag-website-shared/src/components/code/CodeHighlight.module.scss diff --git a/external/ag-website-shared/src/components/code/CodeShiki.tsx b/external/ag-website-shared/src/components/code/CodeShiki.tsx deleted file mode 100644 index a2c6daa8d1b..00000000000 --- a/external/ag-website-shared/src/components/code/CodeShiki.tsx +++ /dev/null @@ -1,162 +0,0 @@ -import { Icon } from '@ag-website-shared/components/icon/Icon'; -import classnames from 'classnames'; -import { memo, useEffect, useState } from 'react'; -import { getSingletonHighlighter } from 'shiki'; - -import styles from './Code.module.scss'; -import shikiStyles from './CodeShiki.module.scss'; -import { extractDecorations } from './keepMarkup'; -import agDocsTheme from './theme.json'; - -const LANGS = [ - 'javascript', - 'typescript', - 'json', - 'css', - 'scss', - 'bash', - 'html', - 'jsx', - 'tsx', - 'java', - 'sql', - 'diff', - 'xml', - 'shellsession', -] as const; - -export const LanguageMap = { - js: 'javascript', - json: 'json', - ts: 'typescript', - css: 'css', - bash: 'bash', - shell: 'shellsession', - html: 'html', - jsx: 'jsx', - java: 'java', - sql: 'sql', - diff: 'diff', - scss: 'scss', - xml: 'xml', -} as const; - -export type Language = keyof typeof LanguageMap; - -// Initialise once at module load — promise is shared across all component instances. -const highlighterPromise = getSingletonHighlighter({ - langs: [...LANGS], - themes: [agDocsTheme as Parameters[0]['themes'][number]], -}); - -// In-memory cache keyed by `keepMarkup:lang:code` to avoid redundant re-highlighting. -const cache = new Map(); - -function highlight(code: string, language: Language, keepMarkup: boolean): Promise { - const key = `${keepMarkup}:${language}:${code}`; - if (cache.has(key)) { - return Promise.resolve(cache.get(key)!); - } - - const { cleanCode, decorations } = keepMarkup - ? extractDecorations(code.trimEnd()) - : { cleanCode: code.trimEnd(), decorations: [] }; - - return highlighterPromise.then((hl) => { - const html = hl.codeToHtml(cleanCode, { - lang: LanguageMap[language], - theme: 'ag-docs', - decorations, - }); - cache.set(key, html); - return html; - }); -} - -function CopyToClipboardButton({ code }: { code: string }) { - const [hasCopied, setHasCopied] = useState(false); - - const copyToClipboard = async () => { - await navigator.clipboard.writeText(code); - setHasCopied(true); - setTimeout(() => setHasCopied(false), 2000); - }; - - return ( - - - {hasCopied ? ( - Copied - ) : ( - Copy - )} - - - {hasCopied ? : } - - - ); -} - -function CodeShiki({ - code, - language = 'ts', - className, - lineNumbers = false, - copyToClipboard = false, - keepMarkup = false, - preHighlightedHtml, - ...props -}: { - code: string | string[]; - language?: Language; - className?: string; - lineNumbers?: boolean; - copyToClipboard?: boolean; - keepMarkup?: boolean; - preHighlightedHtml?: string; -}) { - const [highlightedHtml, setHighlightedHtml] = useState(preHighlightedHtml ?? null); - - useEffect(() => { - // keepMarkup content is dynamic (runtime links) so cannot use pre-highlighted HTML. - // For all other cases, pre-highlighted HTML from build time is used as-is. - if (preHighlightedHtml && !keepMarkup) return; - let cancelled = false; - highlight(code as string, language, keepMarkup).then((html) => { - if (!cancelled) setHighlightedHtml(html); - }); - return () => { - cancelled = true; - }; - }, [code, language, keepMarkup, preHighlightedHtml]); - - return ( -
-            {copyToClipboard && }
-            {highlightedHtml ?  : {code}}
-        
- ); -} - -function ShikiCode({ html }: { html: string }) { - const codeMatch = html.match(/]*>([\s\S]*)<\/code>/); - const innerHtml = codeMatch ? codeMatch[1] : html; - - return ; -} - -export default memo(CodeShiki); diff --git a/external/ag-website-shared/src/components/snippet/Snippet.tsx b/external/ag-website-shared/src/components/snippet/Snippet.tsx index f9662493d4f..498ae2c0a3d 100644 --- a/external/ag-website-shared/src/components/snippet/Snippet.tsx +++ b/external/ag-website-shared/src/components/snippet/Snippet.tsx @@ -1,7 +1,6 @@ import type { Framework } from '@ag-grid-types'; import type { Language } from '@ag-website-shared/components/code/Code'; import Code from '@ag-website-shared/components/code/Code'; -import CodeShiki from '@ag-website-shared/components/code/CodeShiki'; import { throwDevWarning } from '@ag-website-shared/utils/throwDevWarning'; import * as snippetTransformer from '@components/snippet/snippetTransformer'; @@ -16,7 +15,6 @@ interface Props { framework: Framework; content: string; transform?: boolean; - shiki?: boolean; language?: Language; lineNumbers?: boolean; suppressFrameworkContext?: boolean; @@ -41,7 +39,6 @@ export const Snippet = (props: Props) => { spaceBetweenProperties, inlineReactProperties, copyToClipboard, - shiki, } = props; if (!content) { @@ -59,22 +56,11 @@ export const Snippet = (props: Props) => { : content; return ( - <> - {shiki ? ( - - ) : ( - - )} - + ); }; diff --git a/external/ag-website-shared/src/components/snippet/SnippetFromRemoteUrl.tsx b/external/ag-website-shared/src/components/snippet/SnippetFromRemoteUrl.tsx index f103ef972cb..c126f4a7020 100644 --- a/external/ag-website-shared/src/components/snippet/SnippetFromRemoteUrl.tsx +++ b/external/ag-website-shared/src/components/snippet/SnippetFromRemoteUrl.tsx @@ -1,5 +1,5 @@ -import Code from '@ag-website-shared/components/code/Code'; import type { Language } from '@ag-website-shared/components/code/Code'; +import Code from '@ag-website-shared/components/code/Code'; import type { FunctionComponent } from 'react'; import { QueryClient, QueryClientProvider, useQuery } from 'react-query'; From adfc57f3fbc0993fdc50c32faa06d890a1bb8438 Mon Sep 17 00:00:00 2001 From: Guilherme Lopes Date: Thu, 11 Jun 2026 10:58:14 -0300 Subject: [PATCH 5/6] [Calculated Columns] - Small fixes and tweaks (#14039) --- .../floatingFilter/headerFilterCellCtrl.ts | 16 +++++++ .../calculatedColumns/calculatedColumnForm.ts | 8 ++++ .../calculatedColumnsService.ts | 1 + .../src/formulas/calculated-columns.test.ts | 48 +++++++++++++++++++ 4 files changed, 73 insertions(+) diff --git a/packages/ag-grid-community/src/headerRendering/cells/floatingFilter/headerFilterCellCtrl.ts b/packages/ag-grid-community/src/headerRendering/cells/floatingFilter/headerFilterCellCtrl.ts index e7acaf04e21..2c3ab3719a4 100644 --- a/packages/ag-grid-community/src/headerRendering/cells/floatingFilter/headerFilterCellCtrl.ts +++ b/packages/ag-grid-community/src/headerRendering/cells/floatingFilter/headerFilterCellCtrl.ts @@ -16,10 +16,12 @@ import { _getFilterModel } from '../../../filter/columnFilterUtils'; import { _addGridCommonParams, _isLegacyMenuEnabled } from '../../../gridOptionsUtils'; import type { UserCompDetails } from '../../../interfaces/iUserCompDetails'; import { SetLeftFeature } from '../../../rendering/features/setLeftFeature'; +import { _getCalculatedColumnCssClasses } from '../../../styling/calculatedColumnCss'; import { _stopPropagationForAgGrid } from '../../../utils/gridEvent'; import { _createIconNoSpan } from '../../../utils/icon'; import { ManagedFocusFeature } from '../../../widgets/managedFocusFeature'; import { AbstractHeaderCellCtrl } from '../abstractCell/abstractHeaderCellCtrl'; +import { _refreshCssClasses } from '../cssClassApplier'; import type { IHeaderFilterCellComp } from './iHeaderFilterCellComp'; /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ @@ -34,6 +36,7 @@ export class HeaderFilterCellCtrl extends AbstractHeaderCellCtrl null; private destroyFilterChangedListener: () => null; + private userHeaderClasses: Set | undefined; public override wireComp( comp: IHeaderFilterCellComp, @@ -51,6 +54,7 @@ export class HeaderFilterCellCtrl extends AbstractHeaderCellCtrl { + this.hideSuggestions(); + showTypePicker(); + }; this.eTitle .setLabel(translate('calculatedColumnTitle', 'Title')) @@ -381,6 +387,8 @@ export class CalculatedColumnForm extends Component { replacement: { start: number; end: number } | null = null, source: HTMLElement = this.eExpression.getInputElement() ): void { + this.eType.hidePicker(); + const suggestions = this.getSuggestionsForType(type); const searchLower = search.toLocaleLowerCase(); const hasMatch = diff --git a/packages/ag-grid-enterprise/src/calculatedColumns/calculatedColumnsService.ts b/packages/ag-grid-enterprise/src/calculatedColumns/calculatedColumnsService.ts index cdb2df1100e..c1e42d15030 100644 --- a/packages/ag-grid-enterprise/src/calculatedColumns/calculatedColumnsService.ts +++ b/packages/ag-grid-enterprise/src/calculatedColumns/calculatedColumnsService.ts @@ -524,6 +524,7 @@ export class CalculatedColumnsService extends BeanStub implements NamedBean, ICa ): void { const openDialogState = this.openDialogsByColId.get(draft.colId); if (openDialogState) { + this.beans.menuSvc?.hidePopupMenu(); if (focusDialog) { openDialogState.dialog.getGui().focus({ preventScroll: true }); } diff --git a/testing/behavioural/src/formulas/calculated-columns.test.ts b/testing/behavioural/src/formulas/calculated-columns.test.ts index 9edfb44ee12..b1739203cd9 100644 --- a/testing/behavioural/src/formulas/calculated-columns.test.ts +++ b/testing/behavioural/src/formulas/calculated-columns.test.ts @@ -1560,6 +1560,39 @@ describe('ag-grid calculated columns', () => { expect(input.selectionStart).toBe('[Age] * '.length); }); + test('dialog keeps expression and type pickers mutually exclusive', async () => { + const api = createGrid('calculated-dialog-single-picker', { + calculatedColumns: { applyMode: 'deferred' }, + rowData: [{ id: 'r1', age: 23, medals: 8 }], + columnDefs: [{ field: 'age' }, { field: 'medals' }], + }); + + showColumnMenu(api, 'age'); + await asyncSetTimeout(10); + await clickColumnMenuItem('Add Calculated Column'); + await asyncSetTimeout(1); + + clickDialogButton('Operators'); + await asyncSetTimeout(1); + + expect(document.querySelector('.ag-autocomplete-list-popup')).toBeTruthy(); + expect(document.querySelector('.ag-select-list')).toBeFalsy(); + + getCalculatedColumnDialog() + .querySelector('.ag-select .ag-picker-field-wrapper')! + .dispatchEvent(new MouseEvent('mousedown', { bubbles: true })); + await asyncSetTimeout(1); + + expect(document.querySelector('.ag-autocomplete-list-popup')).toBeFalsy(); + expect(document.querySelector('.ag-select-list')).toBeTruthy(); + + clickDialogButton('Operators'); + await asyncSetTimeout(1); + + expect(document.querySelector('.ag-autocomplete-list-popup')).toBeTruthy(); + expect(document.querySelector('.ag-select-list')).toBeFalsy(); + }); + test('dialog adds calculated columns inside groups without mutating provided column definitions', async () => { const year2025: ColGroupDef = { groupId: 'year_2025', @@ -2639,6 +2672,10 @@ describe('ag-grid calculated columns', () => { test('calculated columns add calculated column classes and edit highlighting by default', async () => { const api = createGrid('calculated-column-classes', { calculatedColumns: { applyMode: 'deferred' }, + defaultColDef: { + filter: 'agNumberColumnFilter', + floatingFilter: true, + }, rowData: [{ id: 'r1', revenue: 10, cost: 3 }], columnDefs: [ { field: 'revenue' }, @@ -2654,11 +2691,15 @@ describe('ag-grid calculated columns', () => { const gridDiv = document.querySelector('#calculated-column-classes')!; expect(gridDiv.querySelector('[col-id="revenue"].ag-header-cell')).not.toHaveClass('ag-calculated-column'); expect(gridDiv.querySelector('[col-id="profit"].ag-header-cell')).toHaveClass('ag-calculated-column'); + expect(gridDiv.querySelector('[col-id="profit"].ag-floating-filter')).toHaveClass('ag-calculated-column'); expect(gridDiv.querySelector('[row-index="0"] [col-id="revenue"]')).not.toHaveClass('ag-calculated-column'); expect(gridDiv.querySelector('[row-index="0"] [col-id="profit"]')).toHaveClass('ag-calculated-column'); expect(gridDiv.querySelector('[col-id="profit"].ag-header-cell')).not.toHaveClass( 'ag-calculated-column-highlighted' ); + expect(gridDiv.querySelector('[col-id="profit"].ag-floating-filter')).not.toHaveClass( + 'ag-calculated-column-highlighted' + ); expect(gridDiv.querySelector('[row-index="0"] [col-id="profit"]')).not.toHaveClass( 'ag-calculated-column-highlighted' ); @@ -2672,6 +2713,9 @@ describe('ag-grid calculated columns', () => { expect(gridDiv.querySelector('[col-id="profit"].ag-header-cell')).toHaveClass( 'ag-calculated-column-highlighted' ); + expect(gridDiv.querySelector('[col-id="profit"].ag-floating-filter')).toHaveClass( + 'ag-calculated-column-highlighted' + ); expect(gridDiv.querySelector('[row-index="0"] [col-id="profit"]')).toHaveClass( 'ag-calculated-column-highlighted' ); @@ -2682,6 +2726,9 @@ describe('ag-grid calculated columns', () => { expect(gridDiv.querySelector('[col-id="profit"].ag-header-cell')).not.toHaveClass( 'ag-calculated-column-highlighted' ); + expect(gridDiv.querySelector('[col-id="profit"].ag-floating-filter')).not.toHaveClass( + 'ag-calculated-column-highlighted' + ); expect(gridDiv.querySelector('[row-index="0"] [col-id="profit"]')).not.toHaveClass( 'ag-calculated-column-highlighted' ); @@ -2852,6 +2899,7 @@ describe('ag-grid calculated columns', () => { await openEditDialogViaMenu(api, 'profit'); expect(document.querySelectorAll('.ag-calculated-column-form')).toHaveLength(1); + expect(document.querySelector('.ag-menu')).toBeFalsy(); clickDialogButton('Cancel'); }); From c736277797a4b7dc37ec0b63fba7134cfeb7b334 Mon Sep 17 00:00:00 2001 From: Stephen Cooper Date: Thu, 11 Jun 2026 16:07:23 +0200 Subject: [PATCH 6/6] AG-5835 Enable export in context menu on iOS (#14032) The download attribute on has been supported in Safari iOS since iOS 13 (2019). AG Grid's supported range (iOS 17+) is well past that threshold, so the iOS guard suppressing the export menu item is no longer needed. --- packages/ag-grid-enterprise/src/menu/contextMenu.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/ag-grid-enterprise/src/menu/contextMenu.ts b/packages/ag-grid-enterprise/src/menu/contextMenu.ts index c57e5c7dd6a..8af890a6b72 100644 --- a/packages/ag-grid-enterprise/src/menu/contextMenu.ts +++ b/packages/ag-grid-enterprise/src/menu/contextMenu.ts @@ -1,4 +1,4 @@ -import { _exists, _isIOSUserAgent } from 'ag-stack'; +import { _exists } from 'ag-stack'; import type { AgColumn, @@ -143,8 +143,7 @@ export class ContextMenuService extends BeanStub implements NamedBean, IContextM const suppressExcel = gos.get('suppressExcelExport') || !excelCreator; const suppressCsv = gos.get('suppressCsvExport') || !csvCreator; - const onIPad = _isIOSUserAgent(); - const anyExport = !onIPad && (!suppressExcel || !suppressCsv); + const anyExport = !suppressExcel || !suppressCsv; if (anyExport) { defaultMenuOptions.push('export'); }