Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
bb37a57
git subrepo pull external/ag-shared
alantreadway Jan 30, 2026
7b2e23e
Sync prompts from ag-shared.
alantreadway Jan 30, 2026
c0e2280
Apply approaches from ag-charts.
alantreadway Jan 30, 2026
cdb485f
Apply approaches from ag-charts.
alantreadway Jan 30, 2026
6520e1d
git subrepo push external/ag-shared
alantreadway Jan 30, 2026
61a4423
Apply approaches from ag-charts.
alantreadway Jan 30, 2026
8070d74
Fix ag-grid-docs:test:vitest missing dependencies.
alantreadway Jan 30, 2026
18df157
Merge pull request #13012 from ag-grid/ajt/sync-ag-shared
alantreadway Jan 30, 2026
c7abae4
fixed regex to avoid backtracking (#13013)
gportela85 Jan 30, 2026
af43980
AG-16473 - expose frameworks override ag stack (#12986)
peterjrreynolds Jan 30, 2026
8b61977
[AG-16651] Fix(website): update css to make buttons more fluid depend…
sdwvit Jan 30, 2026
b95514d
Enable PR Review GHA action.
alantreadway Jan 30, 2026
e0f3926
AG-3390 - Sync `ag-website-shared` (#13011)
taktran Jan 30, 2026
84366e6
Enable PR Review GHA action.
alantreadway Jan 30, 2026
03c426e
[AG-14571] Fix(column): filters built in named relative date ranges (…
sdwvit Jan 30, 2026
58363a5
AG-16664 - fixed mismatch of mouse events across the grid (#13004)
gportela85 Jan 30, 2026
17685a3
AG-16663 destroyed pinned rows fix (#13002)
SalvatorePreviti Jan 30, 2026
3f37044
Fix merge-base handling in shallow git clone for pr-review job.
alantreadway Jan 30, 2026
0a44f00
git subrepo push external/ag-shared
alantreadway Jan 30, 2026
bffecdb
Merge pull request #13014 from ag-grid/ajt/enable-ci-codex-pr-review
alantreadway Jan 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions .github/workflows/pr-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: PR Review

on:
pull_request:
types: [opened, ready_for_review]
issue_comment:
types: [created]
workflow_dispatch:
inputs:
pr_number:
description: 'PR number to review'
type: string
required: true

env:
NX_NO_CLOUD: true

permissions:
contents: read

jobs:
# Check permissions for issue_comment events
check-permissions:
runs-on: ubuntu-latest
outputs:
allowed: ${{ steps.check.outputs.allowed }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Check user permissions
id: check
uses: ./external/ag-shared/github/actions/check-issue-comment-permissions
with:
command: '/pr-review'

# Run the Codex PR review
pr-review:
runs-on: ubuntu-latest
needs: check-permissions
permissions:
contents: read
pull-requests: write
issues: write
# Only run if permissions check passed and PR is not a draft
# For issue_comment, also verify it's on a PR (not a regular issue)
if: |
needs.check-permissions.result == 'success' && (
(github.event_name == 'pull_request' && github.event.pull_request.draft == false) ||
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'issue_comment' && needs.check-permissions.outputs.allowed == 'true' && github.event.issue.pull_request)
)
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Run Codex PR Review
uses: ./external/ag-shared/github/actions/codex-pr-review
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
codex-auth-json-b64: ${{ secrets.CODEX_AUTH_JSON_B64 }}
pr-number: ${{ github.event.pull_request.number || github.event.issue.number || inputs.pr_number }}
base-ref: ${{ github.event.pull_request.base.ref || 'latest' }}
head-ref: ${{ github.event.pull_request.head.ref || '' }}
pr-title: ${{ github.event.pull_request.title || '' }}
pr-author: ${{ github.event.pull_request.user.login || '' }}
github-token: ${{ github.token }}
comment-id: ${{ github.event.comment.id }}
inline-comments: 'true'
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@ documentation/ag-grid-docs/test-results/.last-run.json
/.gemini/
/.github/prompts/

# Branch context files for agentic sessions
.context/

# Generated by Rulesync
**/.agent/
**/.agent/rules/
Expand Down
1 change: 1 addition & 0 deletions .rulesync/commands/git-branch-load-context.md
1 change: 1 addition & 0 deletions .rulesync/commands/git-branch-save-context.md
1 change: 1 addition & 0 deletions .rulesync/commands/git-worktree-clean.md
1 change: 1 addition & 0 deletions .rulesync/commands/plan-implementation-review.md
1 change: 1 addition & 0 deletions .rulesync/commands/plan-review.md
1 change: 1 addition & 0 deletions .rulesync/commands/pr-review-json.md
1 change: 1 addition & 0 deletions .rulesync/commands/pr-split.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
targets: ['*']
description: 'Development server setup and build watch monitoring'
globs: ['documentation/**/*', 'packages/*/src/**/*']
name: dev-server
description: 'Development server setup and build watch monitoring. Use when starting dev work, checking build status, or troubleshooting the dev server.'
---

# Development Server Guide
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
targets: ['*']
description: 'Technology choices and architectural constraints for AG Grid'
globs: ['packages/*/src/**/*.ts']
name: technology-stack
description: 'Technology choices and architectural constraints for AG Grid. Use when choosing technologies, adding dependencies, or understanding zero-dependency requirements.'
---

# Technology Stack
Expand Down
23 changes: 23 additions & 0 deletions community-modules/locale/src/en-US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,29 @@ export const AG_GRID_LOCALE_EN = {
before: 'Before',
after: 'After',

yesterday: 'Yesterday',
today: 'Today',
tomorrow: 'Tomorrow',
last7Days: 'Last 7 Days',
lastWeek: 'Last Week',
thisWeek: 'This Week',
nextWeek: 'Next Week',
last30Days: 'Last 30 Days',
lastMonth: 'Last Month',
thisMonth: 'This Month',
nextMonth: 'Next Month',
last90Days: 'Last 90 Days',
lastQuarter: 'Last Quarter',
thisQuarter: 'This Quarter',
nextQuarter: 'Next Quarter',
lastYear: 'Last Year',
thisYear: 'This Year',
yearToDate: 'Year To Date',
nextYear: 'Next Year',
last6Months: 'Last 6 Months',
last12Months: 'Last 12 Months',
last24Months: 'Last 24 Months',

// Filter Conditions
andCondition: 'AND',
orCondition: 'OR',
Expand Down
6 changes: 5 additions & 1 deletion community-modules/styles/src/internal/base/parts/_menu.scss
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,11 @@
}

.ag-simple-filter-body-wrapper {
@include ag.vertical-widget-container();
display: flex;
flex-direction: column;
gap: var(--ag-widget-vertical-spacing);
padding: var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);
padding-bottom: var(--ag-widget-container-vertical-padding);
overflow-y: auto;
min-height: calc(
var(--ag-list-item-height) + var(--ag-widget-container-vertical-padding) + var(--ag-widget-vertical-spacing)
Expand Down
2 changes: 1 addition & 1 deletion documentation/ag-grid-docs/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@
"test:vitest": {
"command": "npx vitest",
"outputs": ["{workspaceRoot}/reports/ag-grid-website.xml"],
"dependsOn": ["ag-grid-community:build:css", "ag-grid-enterprise:build:css", "generate-doc-references"],
"dependsOn": ["ag-grid-community:build", "ag-grid-enterprise:build", "generate-doc-references"],
"options": {
"cwd": "{projectRoot}",
"config": "vitest.config.ts",
Expand Down
66 changes: 39 additions & 27 deletions documentation/ag-grid-docs/src/content/docs/filter-date/index.mdoc
Original file line number Diff line number Diff line change
Expand Up @@ -201,13 +201,19 @@ When providing filter options, the default filter option (or the first option if

Date Filter supports a set of predefined named and relative date ranges to make common filtering tasks easier. These ranges are relative to the browser local time. These are ideal for users who want to filter by familiar time periods like "Last Week", "Year to Date", or "Next 30 Days" without extending a grid with a custom solution.

{% note %}
Built-in named and relative date ranges are evaluated using the browser’s local time zone, not server time. This means results can differ between users in different time zones, and results can change when the local date changes and the filter is re-applied.

Week-based ranges (such as `thisWeek` and `lastWeek`) use the first day of the week from the browser’s locale settings. If the locale does not provide this information, Monday is used.
{% /note %}

### Enabling Built-in Date Ranges

To enable the built-in date ranges, add them to the `filterOptions` array in your date filter configuration. The options are not included by default.

#### Example: Enable Built-in Date Ranges

{% gridExampleRunner title="Built-in Date Ranges" name="built-in-date-ranges" /%}
{% gridExampleRunner title="Built-in Date Ranges" name="built-in-date-ranges" exampleHeight=640 /%}

Example above uses following configuration:

Expand Down Expand Up @@ -239,36 +245,42 @@ const columnDefs: ColDef[] = [

### Available Built-in Date Filter Options

| Option Name | Option Key | Time Range Start >= | Time Range End < |
|--------------------|----------------|----------------------------------|:------------------------------|
| Today | `today` | `Start Of Today` | `Start Of Tomorrow` |
| Yesterday | `yesterday` | `Start Of Yesterday` | `Start Of Today` |
| Tomorrow | `tomorrow` | `Start Of Tomorrow` | `Start Of Day After Tomorrow` |
| This Week | `thisWeek` | `Start Of Current Week` | `Start Of Next Week` |
| Last Week | `lastWeek` | `Start Of Previous Week` | `Start Of Current Week` |
| Next Week | `nextWeek` | `Start Of Next Week` | `Start Of Week After Next` |
| This Month | `thisMonth` | `Start Of Current Month` | `Start Of Next Month` |
| Last Month | `lastMonth` | `Start Of Previous Month` | `Start Of Current Month` |
| Next Month | `nextMonth` | `Start Of Next Month` | `Start Of Month After Next` |
| This Quarter | `thisQuarter` | `Start Of Current Quarter` | `Start Of Next Quarter` |
| Last Quarter | `lastQuarter` | `Start Of Previous Quarter` | `Start Of Current Quarter` |
| Next Quarter | `nextQuarter` | `Start Of Next Quarter` | `Start Of Quarter After Next` |
| This Year | `thisYear` | `Start Of Current Year` | `Start Of Next Year` |
| Last Year | `lastYear` | `Start Of Previous Year` | `Start Of Current Year` |
| Next Year | `nextYear` | `Start Of Next Year` | `Start Of Year After Next` |
| Year to Date (YTD) | `yearToDate` | `Start Of Current Year` | `Start Of Tomorrow` |
| Last 7 Days | `last7Days` | `Start Of Today minus 7 days` | `Start Of Tomorrow` |
| Last 30 Days | `last30Days` | `Start Of Today minus 30 days` | `Start Of Tomorrow` |
| Last 90 Days | `last90Days` | `Start Of Today minus 90 days` | `Start Of Tomorrow` |
| Last 6 Months | `last6Months` | `Start Of Today minus 6 months` | `Start Of Tomorrow` |
| Last 12 Months | `last12Months` | `Start Of Today minus 12 months` | `Start Of Tomorrow` |
| Last 24 Months | `last24Months` | `Start Of Today minus 24 months` | `Start Of Tomorrow` |
| Option Name | Option Key | Time Range Start >= | Time Range End < |
|--------------------|----------------|----------------------------------------|:------------------------------|
| Today | `today` | `Start Of Today` | `Start Of Tomorrow` |
| Yesterday | `yesterday` | `Start Of Yesterday` | `Start Of Today` |
| Tomorrow | `tomorrow` | `Start Of Tomorrow` | `Start Of Day After Tomorrow` |
| This Week | `thisWeek` | `Start Of Current Week` | `Start Of Next Week` |
| Last Week | `lastWeek` | `Start Of Previous Week` | `Start Of Current Week` |
| Next Week | `nextWeek` | `Start Of Next Week` | `Start Of Week After Next` |
| This Month | `thisMonth` | `Start Of Current Month` | `Start Of Next Month` |
| Last Month | `lastMonth` | `Start Of Previous Month` | `Start Of Current Month` |
| Next Month | `nextMonth` | `Start Of Next Month` | `Start Of Month After Next` |
| This Quarter | `thisQuarter` | `Start Of Current Quarter` | `Start Of Next Quarter` |
| Last Quarter | `lastQuarter` | `Start Of Previous Quarter` | `Start Of Current Quarter` |
| Next Quarter | `nextQuarter` | `Start Of Next Quarter` | `Start Of Quarter After Next` |
| This Year | `thisYear` | `Start Of Current Year` | `Start Of Next Year` |
| Last Year | `lastYear` | `Start Of Previous Year` | `Start Of Current Year` |
| Next Year | `nextYear` | `Start Of Next Year` | `Start Of Year After Next` |
| Year to Date (YTD) | `yearToDate` | `Start Of Current Year` | `Start Of Tomorrow` |
| Last 7 Days | `last7Days` | `Start of the day 7 days before today` | `Start Of Tomorrow` |
| Last 30 Days | `last30Days` | `Start Of Today minus 30 days` | `Start Of Tomorrow` |
| Last 90 Days | `last90Days` | `Start Of Today minus 90 days` | `Start Of Tomorrow` |
| Last 6 Months | `last6Months` | `Start Of Today minus 6 months` | `Start Of Tomorrow` |
| Last 12 Months | `last12Months` | `Start Of Today minus 12 months` | `Start Of Tomorrow` |
| Last 24 Months | `last24Months` | `Start Of Today minus 24 months` | `Start Of Tomorrow` |


{% note %}
`Start Of Today`, `Start Of Tomorrow`, `Start Of XXX` point to the beginning of the corresponding day, e.g. `00:00:00.000` in browser local timezone.
`Start Of Today`, `Start Of Tomorrow`, `Start Of XXX` point to the beginning of the corresponding day, e.g. `00:00:00.000` in the browser’s local time zone.
{% /note %}

### Server-Side Row Model (SSRM)

When a user selects one of built-in date ranges, the filter model sent to the server includes the preset `type` (for example, `today` or `last7Days`) and leaves `dateFrom`/`dateTo` undefined. The server / user defined code is responsible for interpreting the preset and applying the equivalent date range logic using its own time zone and locale rules.

See [SSRM Filtering](./server-side-model-filtering/) for the server-side filtering contract.

## Range Input Validation and Error States

When using the `inRange` filter type, the grid performs input validation to ensure the bounds of the range produce a valid filter; that is, where the start date is earlier than the end date.
Expand Down Expand Up @@ -340,4 +352,4 @@ The Date Filter is not affected by data changes. When the grid data is updated,

## Next Up

Continue to the next section to learn about [Set Filters](./filter-set/).
Continue to the next section to learn about [Set Filters](./filter-set/).
39 changes: 22 additions & 17 deletions documentation/ag-grid-docs/src/pages-styles/example.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,17 @@

$nav-height: 200px;

.githubIcon {
padding: 4px;
.githubIcon,
.youtubeIcon {
padding: $spacing-size-1;
}

.youtubeIcon {
fill: red !important;

#{$selector-darkmode} & {
fill: white !important;
}
}

.headerHeading {
Expand All @@ -19,22 +28,26 @@ $nav-height: 200px;
flex-wrap: wrap;
gap: $spacing-size-3;
padding-bottom: $spacing-size-1;
container-type: inline-size;
container-type: normal;
container-name: header-title;

@media screen and (min-width: 700px) {
flex-wrap: nowrap;
}
}

.headerActions {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: center;
gap: $spacing-size-2;

> a {
white-space: nowrap;
display: flex;
align-items: center;
padding: $spacing-size-2 $spacing-size-4;

> * {
display: block;
}
}
}

Expand All @@ -46,6 +59,8 @@ $nav-height: 200px;
width: 100%;
margin: 0 auto $spacing-size-3;
padding-top: $spacing-size-8;
container-type: inline-size;
container-name: top-header;

@media screen and (max-width: 700px) {
flex-direction: column;
Expand All @@ -62,8 +77,6 @@ $nav-height: 200px;
}

@media screen and (min-width: 720px) {
height: 148px;

> div:first-child {
width: auto;
}
Expand Down Expand Up @@ -179,11 +192,3 @@ $nav-height: 200px;
}
}
}

.youtubeIcon {
fill: red !important;

#{$selector-darkmode} & {
fill: white !important;
}
}
7 changes: 6 additions & 1 deletion documentation/ag-grid-docs/src/pages/example-finance.astro
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@ import LogoMark from '@components/logo/LogoMark';
<div>
<div class={styles.headerTitle}>
<h1 class={styles.headerHeading}>Finance</h1>
<a class="button-secondary" href="https://github.com/ag-grid/ag-grid-demos/tree/main/finance">
<a
class="button-secondary"
target="_blank"
rel="noopener noreferrer"
href="https://github.com/ag-grid/ag-grid-demos/tree/main/finance"
>
<Icon name="github" svgClasses={styles.githubIcon} />
<span>See on GitHub</span>
</a>
Expand Down
7 changes: 6 additions & 1 deletion documentation/ag-grid-docs/src/pages/example-hr.astro
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@ import LogoMark from '@components/logo/LogoMark';
<div>
<div class={styles.headerTitle}>
<h1 class={styles.headerHeading}>HR</h1>
<a class="button-secondary" href="https://github.com/ag-grid/ag-grid-demos/tree/main/hr">
<a
class="button-secondary"
target="_blank"
rel="noopener noreferrer"
href="https://github.com/ag-grid/ag-grid-demos/tree/main/hr"
>
<Icon name="github" svgClasses={styles.githubIcon} />
<span>See on GitHub</span>
</a>
Expand Down
7 changes: 6 additions & 1 deletion documentation/ag-grid-docs/src/pages/example-inventory.astro
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@ import LogoMark from '@components/logo/LogoMark';
<div>
<div class={styles.headerTitle}>
<h1 class={styles.headerHeading}>Inventory</h1>
<a class="button-secondary" href="https://github.com/ag-grid/ag-grid-demos/tree/main/inventory">
<a
class="button-secondary"
target="_blank"
rel="noopener noreferrer"
href="https://github.com/ag-grid/ag-grid-demos/tree/main/inventory"
>
<Icon name="github" svgClasses={styles.githubIcon} />
<span>See on GitHub</span>
</a>
Expand Down
Loading