Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
54 changes: 39 additions & 15 deletions .github/workflows/module-size-vs-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ on:
description: 'Release tag to compare against (e.g., b35.1.0) or leave empty to auto-detect latest release'
type: string
required: false
test_branch:
description: 'Branch to test (defaults to latest for push events, current branch for workflow_dispatch)'
type: string
required: false

env:
NX_NO_CLOUD: true
Expand All @@ -34,19 +38,31 @@ jobs:
outputs:
release-tag: ${{ steps.resolve.outputs.release-tag }}
shard-matrix: ${{ steps.resolve.outputs.shard-matrix }}
test-branch: ${{ steps.resolve.outputs.test-branch }}
steps:
- name: Resolve release tag
- name: Resolve release tag and test branch
id: resolve
uses: actions/github-script@v7
env:
SHARD_COUNT: ${{ env.SHARD_COUNT }}
INPUT_TAG: ${{ inputs.release_tag }}
INPUT_BRANCH: ${{ inputs.test_branch }}
EVENT_NAME: ${{ github.event_name }}
REF_NAME: ${{ github.ref_name }}
with:
script: |
const shardCount = parseInt(process.env.SHARD_COUNT, 10);
const shards = Array.from({ length: shardCount }, (_, i) => i + 1);
core.setOutput('shard-matrix', JSON.stringify(shards));

// Resolve test branch: input > current branch (for workflow_dispatch) > latest (for push)
let testBranch = process.env.INPUT_BRANCH;
if (!testBranch) {
testBranch = process.env.EVENT_NAME === 'workflow_dispatch' ? process.env.REF_NAME : 'latest';
}
core.setOutput('test-branch', testBranch);
console.log(`Using test branch: ${testBranch}`);

let releaseTag = process.env.INPUT_TAG;

// If no tag provided (scheduled run), find the latest release tag
Expand Down Expand Up @@ -86,34 +102,35 @@ jobs:
key: module-size-release-${{ needs.prepare.outputs.release-tag }}
lookup-only: true

# Build and run module size tests on latest branch (sharded)
# Build and run module size tests on test branch (sharded)
module-size-latest:
name: Module Size Latest (${{ matrix.shard }}/${{ strategy.job-total }})
name: Module Size ${{ needs.prepare.outputs.test-branch }} (${{ matrix.shard }}/${{ strategy.job-total }})
runs-on: ubuntu-latest
needs: prepare
strategy:
matrix:
shard: ${{ fromJSON(needs.prepare.outputs.shard-matrix) }}
fail-fast: false
env:
TEST_BRANCH: ${{ needs.prepare.outputs.test-branch }}
steps:
- name: Checkout for actions
uses: actions/checkout@v4
with:
ref: latest
ref: ${{ env.TEST_BRANCH }}
fetch-depth: 1


- name: Run module size tests
uses: ./.github/actions/module-size-test
with:
ref: latest
ref: ${{ env.TEST_BRANCH }}
shard: ${{ matrix.shard }}
total-shards: ${{ strategy.job-total }}
artifact-prefix: module-size-latest
base-ref: latest
base-ref: ${{ env.TEST_BRANCH }}

# Build and run module size tests on release tag (sharded) - only if cache miss
# Uses latest branch tooling with source code from the release tag
# Uses test branch tooling with source code from the release tag
module-size-release:
name: Module Size Release (${{ matrix.shard }}/${{ strategy.job-total }})
runs-on: ubuntu-latest
Expand All @@ -123,21 +140,23 @@ jobs:
matrix:
shard: ${{ fromJSON(needs.prepare.outputs.shard-matrix) }}
fail-fast: false
env:
TEST_BRANCH: ${{ needs.prepare.outputs.test-branch }}
steps:
- name: Checkout for actions
uses: actions/checkout@v4
with:
ref: latest
ref: ${{ env.TEST_BRANCH }}
fetch-depth: 1

- name: Run module size tests
uses: ./.github/actions/module-size-test
with:
ref: latest
ref: ${{ env.TEST_BRANCH }}
shard: ${{ matrix.shard }}
total-shards: ${{ strategy.job-total }}
artifact-prefix: module-size-release
base-ref: latest
base-ref: ${{ env.TEST_BRANCH }}
source-ref: ${{ needs.prepare.outputs.release-tag }}

# Cache release results (only when we had to build)
Expand All @@ -146,11 +165,13 @@ jobs:
runs-on: ubuntu-latest
needs: [prepare, check-release-cache, module-size-release]
if: always() && needs.module-size-release.result == 'success'
env:
TEST_BRANCH: ${{ needs.prepare.outputs.test-branch }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: latest
ref: ${{ env.TEST_BRANCH }}
sparse-checkout: |
scripts/ci/merge-module-size-results.mjs

Expand Down Expand Up @@ -188,11 +209,12 @@ jobs:
env:
RELEASE_TAG: ${{ needs.prepare.outputs.release-tag }}
CACHE_HIT: ${{ needs.check-release-cache.outputs.cache-hit }}
TEST_BRANCH: ${{ needs.prepare.outputs.test-branch }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: latest
ref: ${{ env.TEST_BRANCH }}
sparse-checkout: |
scripts/ci/compare-module-sizes.mjs
scripts/ci/merge-module-size-results.mjs
Expand Down Expand Up @@ -245,7 +267,7 @@ jobs:

- name: Output report to summary
run: |
echo "# Module Size Comparison: \`latest\` vs \`${{ env.RELEASE_TAG }}\`" >> $GITHUB_STEP_SUMMARY
echo "# Module Size Comparison: \`${{ env.TEST_BRANCH }}\` vs \`${{ env.RELEASE_TAG }}\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
cat ./comparison-report.md >> $GITHUB_STEP_SUMMARY

Expand All @@ -266,14 +288,15 @@ jobs:
needs.compare-and-report.result == 'skipped'
env:
RELEASE_TAG: ${{ needs.prepare.outputs.release-tag }}
TEST_BRANCH: ${{ needs.prepare.outputs.test-branch }}
LATEST_RESULT: ${{ needs.module-size-latest.result }}
RELEASE_RESULT: ${{ needs.module-size-release.result }}
CACHE_HIT: ${{ needs.check-release-cache.outputs.cache-hit }}
steps:
- name: Report failure
run: |
if [[ "$LATEST_RESULT" != "success" ]]; then
REASON="Latest branch module size tests failed ($LATEST_RESULT)"
REASON="$TEST_BRANCH branch module size tests failed ($LATEST_RESULT)"
elif [[ "$CACHE_HIT" != "true" && "$RELEASE_RESULT" != "success" ]]; then
REASON="Release $RELEASE_TAG module size tests failed ($RELEASE_RESULT)"
else
Expand All @@ -282,6 +305,7 @@ jobs:

echo "# Module Size Comparison Failed" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Test branch:** $TEST_BRANCH" >> $GITHUB_STEP_SUMMARY
echo "**Release tag:** $RELEASE_TAG" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Reason:** $REASON" >> $GITHUB_STEP_SUMMARY
Expand Down
2 changes: 2 additions & 0 deletions community-modules/styles/src/internal/base/parts/_footer.scss
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
.ag-paging-button,
.ag-paging-description {
margin: 0 var(--ag-grid-size);
// avoids misalignment of buttons and text
line-height: 0;
}

.ag-status-bar {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,6 @@
padding: 16px;
}

:global(.ag-theme-quartz .ag-paging-panel) {
height: 40px;
}

:global(.ag-theme-quartz .ag-paging-panel > span:last-child) {
margin-right: 0;
}
Expand Down
2 changes: 1 addition & 1 deletion documentation/ag-grid-docs/src/content/footer/footer.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
},
{
"name": "Blog",
"url": "https://blog.ag-grid.com/?_ga=2.213149716.106872681.1607518091-965402545.1605286673"
"url": "https://blog.ag-grid.com"
},
{
"name": "Privacy Policy",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,14 @@
---
import { getCollection, getEntry } from 'astro:content';
import { getEntry } from 'astro:content';
import Layout from '../layouts/Layout.astro';
import { DocsNavFromLocalStorage } from '@ag-website-shared/components/docs-navigation/DocsNavFromLocalStorage';
import { getDocsPages } from '../components/docs/utils/pageData';
import { parseVersion } from '@ag-website-shared/utils/parseVersion';
import { SideNavigation } from '@components/pages-navigation/components/SideNavigation';
import MajorTable from '@ag-website-shared/components/major-table/MajorTable.astro';
import docsStyles from '@ag-website-shared/components/page-styles/docs.module.scss';

import type { CollectionEntry } from 'astro:content';

export async function getStaticPaths() {
const pages = await getCollection('docs');
return getDocsPages(pages);
}

const { data: docsNavData } = (await getEntry('docsNav', 'nav')) as CollectionEntry<'docsNav'>;

const versionsContent = await getEntry('versions', 'ag-grid-versions');
Expand Down
4 changes: 2 additions & 2 deletions external/ag-website-shared/.gitrepo
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
[subrepo]
remote = git@github.com:ag-grid/ag-website-shared.git
branch = latest
commit = ef0ca8147898c5da17fe4c9c59c553203d2312af
parent = 75ed3bad6376e13579ea7f87895ce1ba720dc5e8
commit = 4bb2767820cd72e900ae153723fba692f67a138f
parent = 51a50d5f5ff518bce94496119d4c249a4b2a1fb5
method = rebase
cmdver = 0.4.9
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { initCaptcha } from '@ag-website-shared/components/contact-form/initCaptcha';
import { Icon } from '@ag-website-shared/components/icon/Icon';
import { CONTACT_FORM_DATA, RECAPTCHA_SITE_KEY, RECAPTCHA_URL } from '@ag-website-shared/constants';
import { CONTACT_FORM_DATA, PRIVACY_POLICY_URL, RECAPTCHA_SITE_KEY, RECAPTCHA_URL } from '@ag-website-shared/constants';
import { getIsDev, getIsProduction } from '@utils/env';
import classnames from 'classnames';
import type { FunctionComponent } from 'react';
Expand Down Expand Up @@ -207,7 +207,7 @@ export const ContactForm: FunctionComponent<Props> = ({ formLocation = 'About pa
value="Send us a message"
/>
<p className={styles.privacyMessage}>
By submitting this form you agree to our <a href="/privacy/">Privacy Policy</a>.
By submitting this form you agree to our <a href={PRIVACY_POLICY_URL}>Privacy Policy</a>.
</p>
</form>
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Icon } from '@ag-website-shared/components/icon/Icon';
import { PRIVACY_POLICY_URL } from '@ag-website-shared/constants';
import { TRIAL_LICENCE_FORM_URL, ZI_FORM_ID } from '@constants';
import { trackTrialLicenseFormError, trackTrialLicenseFormSuccess } from '@utils/analytics';
import { urlWithBaseUrl } from '@utils/urlWithBaseUrl';
import classnames from 'classnames';
import { useCallback, useState } from 'react';
import type { ChangeEventHandler, FormEventHandler, FunctionComponent } from 'react';
Expand Down Expand Up @@ -294,8 +294,8 @@ export const TrialLicenceFormAllFields: FunctionComponent = ({ submitUrl }: Prop
</button>

<p className={styles.privacyMessage}>
By clicking "Request trial licence" you agree to our{' '}
<a href={urlWithBaseUrl('/privacy/')}>Privacy Policy</a>.
By clicking "Request trial licence" you agree to our <a href={PRIVACY_POLICY_URL}>Privacy Policy</a>
.
</p>

{formState === 'success' && (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Icon } from '@ag-website-shared/components/icon/Icon';
import { PRIVACY_POLICY_URL } from '@ag-website-shared/constants';
import { TRIAL_LICENCE_FORM_URL } from '@constants';
import { ZI_FORM_ID } from '@constants';
import { trackTrialLicenseFormError, trackTrialLicenseFormSuccess } from '@utils/analytics';
import { urlWithBaseUrl } from '@utils/urlWithBaseUrl';
import classnames from 'classnames';
import { useCallback, useState } from 'react';
import type { ChangeEventHandler, FormEventHandler, FunctionComponent, ReactElement } from 'react';
Expand Down Expand Up @@ -202,8 +202,8 @@ export const TrialLicenceFormEmailOnly: FunctionComponent = ({ submitUrl }: Prop
</button>

<p className={styles.privacyMessage}>
By clicking "Request trial licence" you agree to our{' '}
<a href={urlWithBaseUrl('/privacy/')}>Privacy Policy</a>.
By clicking "Request trial licence" you agree to our <a href={PRIVACY_POLICY_URL}>Privacy Policy</a>
.
</p>

{formState === 'success' && (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Icon } from '@ag-website-shared/components/icon/Icon';
import { PRIVACY_POLICY_URL } from '@ag-website-shared/constants';
import { TRIAL_LICENCE_FORM_URL } from '@constants';
import { trackTrialLicenseFormError, trackTrialLicenseFormSuccess } from '@utils/analytics';
import { urlWithBaseUrl } from '@utils/urlWithBaseUrl';
import classnames from 'classnames';
import { useCallback, useState } from 'react';
import type { ChangeEventHandler, FormEventHandler, FunctionComponent } from 'react';
Expand Down Expand Up @@ -289,8 +289,8 @@ export const TrialLicenceFormOriginal: FunctionComponent = ({ submitUrl }: Props
</button>

<p className={styles.privacyMessage}>
By clicking "Request trial licence" you agree to our{' '}
<a href={urlWithBaseUrl('/privacy/')}>Privacy Policy</a>.
By clicking "Request trial licence" you agree to our <a href={PRIVACY_POLICY_URL}>Privacy Policy</a>
.
</p>

{formState === 'success' && (
Expand Down
2 changes: 2 additions & 0 deletions external/ag-website-shared/src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,5 @@ export const CONTACT_FORM_DATA = {

// Relative to website folder
export const SITEMAP_CACHE_DIR = '.astro/cache/sitemap';

export const PRIVACY_POLICY_URL = 'https://www.ag-grid.com/privacy';
19 changes: 18 additions & 1 deletion packages/ag-grid-community/src/pagination/paginationComp.css
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,26 @@
justify-content: flex-end;
gap: calc(var(--ag-spacing) * 4);
padding: 0 var(--ag-cell-horizontal-padding);
height: var(--ag-pagination-panel-height);
min-height: var(--ag-pagination-panel-height);
border-top: var(--ag-footer-row-border);
flex-wrap: wrap-reverse;
row-gap: 0;

@container (width < 600px) {
justify-content: center;
}
}

:where(.ag-paging-page-size) .ag-wrapper {
min-width: 50px;
}

.ag-paging-page-size,
.ag-paging-row-summary-panel,
.ag-paging-page-summary-panel {
margin: calc(var(--ag-spacing) * 0.5);
}

.ag-paging-page-summary-panel {
display: flex;
align-items: center;
Expand All @@ -36,3 +48,8 @@
.ag-paging-row-summary-panel-number {
font-weight: 500;
}

.ag-paging-description {
/* avoids misalignment of buttons and text */
line-height: 0;
}
1 change: 1 addition & 0 deletions packages/ag-grid-community/src/theming/core/css/_root.css
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ ag-grid-angular {
}

.ag-root-wrapper {
container-type: inline-size;
position: relative;
display: flex;
flex-direction: column;
Expand Down
Loading
Loading