Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
a6f750c
feat(components/ag-grid): create an easy mode for data grid
johnhwhite Oct 31, 2025
c62a986
Add tests
johnhwhite Oct 31, 2025
45e3e2e
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Oct 31, 2025
19a1b98
Fix test coverage, linting
johnhwhite Nov 1, 2025
9f6ee2b
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Nov 1, 2025
7360dfd
Prettier, address peer issue
johnhwhite Nov 3, 2025
8ec6e0a
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Nov 7, 2025
8462e38
Updates from swap-grids branch
johnhwhite Nov 7, 2025
03be130
Merge branch 'main' into data-grid
johnhwhite Nov 24, 2025
21fad02
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Dec 3, 2025
7aca9e8
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Dec 16, 2025
ed82a6c
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Dec 16, 2025
b1a3f57
Missing peers
johnhwhite Dec 16, 2025
eecb818
Fix header display
johnhwhite Dec 17, 2025
a65c565
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Jan 7, 2026
c6bedbb
fix(components/ag-grid): integrate filter bar with data grid (#4131)
johnhwhite Jan 9, 2026
221e2f5
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Jan 9, 2026
14c65ba
Merge branch 'main' into data-grid
johnhwhite Jan 9, 2026
2c0c9ee
Create data-grid package
johnhwhite Jan 10, 2026
531335f
Additional code examples
johnhwhite Jan 12, 2026
efb7d62
Create visual test
johnhwhite Jan 12, 2026
3587fd6
Fix lint issues
johnhwhite Jan 12, 2026
edbcbbc
Fix missing peers
johnhwhite Jan 12, 2026
4b6e2b3
Use @preview annotations
johnhwhite Jan 12, 2026
5e50d10
Add AG Grid test harnesses, update capitalization on example, remove …
johnhwhite Jan 12, 2026
478a709
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Jan 12, 2026
5282f90
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Jan 12, 2026
2891c14
Update dependencies, add project to validation list
johnhwhite Jan 12, 2026
78761cd
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Jan 12, 2026
b43595d
Simplify changes
johnhwhite Jan 12, 2026
cd79425
Fix for dependency check
johnhwhite Jan 12, 2026
56eec3f
Switch help-inline to not require changes
johnhwhite Jan 13, 2026
cfbb5cd
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Jan 13, 2026
5e0480e
Merge remote-tracking branch 'origin/main' into data-grid
johnhwhite Jan 15, 2026
1d699bc
Data manager, selection, and inline delete example
johnhwhite Jan 16, 2026
dc28058
Add tests
johnhwhite Jan 16, 2026
3abd010
Merge remote-tracking branch 'origin/13.x.x' into data-grid
johnhwhite Jan 16, 2026
53ea654
Update peers
johnhwhite Jan 17, 2026
5af2b9f
Additional column size options, text wrap, data-view handling
johnhwhite Jan 20, 2026
23affea
Create path for server data source
johnhwhite Jan 21, 2026
ede88af
Fix example, update some docs
johnhwhite Jan 21, 2026
b14c664
Configure and test the sort event
johnhwhite Jan 21, 2026
4c16057
Simplify the signal graph for gridOptions.
johnhwhite Jan 21, 2026
bd4a83b
Documentation updates
johnhwhite Jan 21, 2026
49cbd33
Build out data manager and custom filter examples
johnhwhite Jan 22, 2026
19f94fd
Update docs, simplify type, fix test
johnhwhite Jan 22, 2026
5c83b55
Date is a valid filter value
johnhwhite Jan 22, 2026
6529e95
Add loading input to show progress overlay
johnhwhite Jan 23, 2026
4a04ed0
Update loading docs
johnhwhite Jan 23, 2026
b01db73
Merge remote-tracking branch 'origin/13.x.x' into data-grid
johnhwhite Jan 23, 2026
e013f87
Update names for inputs, remove loading input
johnhwhite Jan 27, 2026
69fa91d
Demo more things
johnhwhite Jan 28, 2026
a17cdcd
Fix lint and test issues
johnhwhite Jan 28, 2026
88393ef
Conditionally use router in the paging example
johnhwhite Jan 28, 2026
cb598ab
Use 'displayedColumnIds', update code example title
johnhwhite Jan 28, 2026
544e3a8
Async grid leans on data manager more
johnhwhite Jan 28, 2026
eb92c80
Lint.
johnhwhite Jan 29, 2026
d0d2d5a
Rename the async example
johnhwhite Jan 29, 2026
03db731
Read page query param from activated route, not requiring an input
johnhwhite Jan 29, 2026
fe13d3b
Fix code examples build
johnhwhite Jan 29, 2026
489e851
Fix data manager example
johnhwhite Jan 29, 2026
2df56e6
Remove default value annotations where the value is not significant, …
johnhwhite Jan 29, 2026
04dbece
Merge remote-tracking branch 'origin/13.x.x' into data-grid
johnhwhite Jan 29, 2026
2b31dd5
Missing header text
johnhwhite Jan 29, 2026
fd4605f
Fix e2e
johnhwhite Jan 29, 2026
d928843
refactor(components/data-grid): change data manager integration pattern
johnhwhite Feb 2, 2026
a858dfe
Handle overlap of data grid and ag-grid data manager directive, use v…
johnhwhite Feb 4, 2026
f4691f9
Merge remote-tracking branch 'origin/13.x.x' into data-grid
johnhwhite Feb 4, 2026
c2b18af
Prettier.
johnhwhite Feb 4, 2026
6aa5c9f
Update naming
johnhwhite Feb 4, 2026
2ea7e6a
Viewkeeper only when not using data manager
johnhwhite Feb 4, 2026
e98d33c
Merge remote-tracking branch 'origin/13.x.x' into data-grid
johnhwhite Feb 6, 2026
332e5b5
Cleanup changes
johnhwhite Feb 6, 2026
e8abe9f
Updates based on feedback
johnhwhite Feb 9, 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
10 changes: 10 additions & 0 deletions apps/code-examples/src/app/app.component.scss
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
:host {
display: block;
width: calc(100vw - var(--sky-viewport-left) - var(--sky-viewport-right));
height: calc(100vh - var(--sky-viewport-top) - var(--sky-viewport-bottom));
position: relative;
}

#home-btn {
display: block;
margin: 5px;
Expand All @@ -6,6 +13,9 @@
#content {
// Value set in the app component.
margin-top: var(--sky-viewport-top);
overflow-y: auto;
position: absolute;
inset: 0;
}

#controls {
Expand Down
1 change: 0 additions & 1 deletion apps/code-examples/src/styles.scss
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
html,
body {
min-height: 100%;
scroll-behavior: smooth;
}

Expand Down
14 changes: 14 additions & 0 deletions apps/e2e/data-grid-storybook-e2e/cypress.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { sendCypressScreenshotsToPercy } from '@skyux-sdk/e2e-schematics';
import { skyE2ePreset } from '@skyux-sdk/e2e-schematics/cypress-preset';

import { defineConfig } from 'cypress';

export default defineConfig({
e2e: {
...skyE2ePreset(__dirname, {
setupNodeEvents: (on, config) => {
sendCypressScreenshotsToPercy(on, config);
},
}),
},
});
3 changes: 3 additions & 0 deletions apps/e2e/data-grid-storybook-e2e/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const config = require('../../../eslint-e2e.config');

module.exports = config;
37 changes: 37 additions & 0 deletions apps/e2e/data-grid-storybook-e2e/project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"name": "data-grid-storybook-e2e",
"$schema": "../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/e2e/data-grid-storybook-e2e/src",
"projectType": "application",
"targets": {
"e2e": {
"executor": "@nx/cypress:cypress",
"options": {
"cypressConfig": "apps/e2e/data-grid-storybook-e2e/cypress.config.ts",
"devServerTarget": "data-grid-storybook:storybook",
"baseUrl": "http://localhost:4400",
"browser": "chrome",
"testingType": "e2e"
},
"configurations": {
"ci": {
"baseUrl": "http://localhost:4200",
"browser": "chrome",
"devServerTarget": "data-grid-storybook:static-storybook:ci"
},
"prebuilt": {
"devServerTarget": "data-grid-storybook:static-storybook:prebuilt",
"baseUrl": ""
}
}
},
"lint": {
"executor": "@nx/eslint:lint",
"options": {
"lintFilePatterns": ["{projectRoot}/**/*.{js,ts}"]
}
}
},
"tags": [],
"implicitDependencies": ["data-grid-storybook"]
}
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { E2eVariations } from '@skyux-sdk/e2e-schematics';

describe('data-grid', () => {
E2eVariations.forEachTheme((theme) => {
describe(`in ${theme} theme`, () => {
beforeEach(() =>
cy.visit(
`/iframe.html?globals=theme:${theme}&id=data-gridcomponent--data-grid`,
),
);

it('should render the component', () => {
cy.skyReady();
cy.get('app-data-grid').should('exist').should('be.visible');
cy.get(
'[row-index="6"] [col-id="jobTitle"] sky-ag-grid-cell-renderer-template',
)
.should('exist')
.should('be.visible')
.should('have.text', 'UX Designer');
cy.get('[row-index="6"] [col-id="context"] button.sky-dropdown-button')
.should('exist')
.should('be.visible')
.should('be.enabled');
cy.skyVisualTest(`data-grid-${theme}`);
});
});
});
});
Empty file.
19 changes: 19 additions & 0 deletions apps/e2e/data-grid-storybook-e2e/src/support/e2e.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// ***********************************************************
// This example support/e2e.ts is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.ts using ES2015 syntax:
import '@percy/cypress';
import '@skyux-sdk/cypress-commands';

import './commands';
10 changes: 10 additions & 0 deletions apps/e2e/data-grid-storybook-e2e/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"extends": "../../../tsconfig.base.json",
"compilerOptions": {
"sourceMap": false,
"outDir": "../../../dist/out-tsc",
"allowJs": true,
"types": ["cypress", "node"]
},
"include": ["src/**/*.ts", "src/**/*.js", "cypress.config.ts"]
}
10 changes: 10 additions & 0 deletions apps/e2e/data-grid-storybook/.storybook/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import type { StorybookConfig } from 'storybook/internal/types';

// eslint-disable-next-line @nx/enforce-module-boundaries
import { rootMain } from '../../../../.storybook/main';

const config: StorybookConfig = {
...rootMain,
stories: ['../src/app/**/*.stories.@(js|ts)'],
};
export default config;
2 changes: 2 additions & 0 deletions apps/e2e/data-grid-storybook/.storybook/manager.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// eslint-disable-next-line @nx/enforce-module-boundaries, no-restricted-syntax
export * from '../../../../.storybook/manager';
21 changes: 21 additions & 0 deletions apps/e2e/data-grid-storybook/.storybook/preview.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import {
previewWrapperDecorators,
previewWrapperGlobalTypes,
previewWrapperParameters,
} from '@skyux/storybook';
import { moduleMetadata } from '@storybook/angular';

export const parameters = {
...previewWrapperParameters,
};

export const globalTypes = {
...previewWrapperGlobalTypes,
};

export const decorators = [
...previewWrapperDecorators,
moduleMetadata({
imports: [],
}),
];
19 changes: 19 additions & 0 deletions apps/e2e/data-grid-storybook/.storybook/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"emitDecoratorMetadata": true,
"esModuleInterop": true,
"resolveJsonModule": true
},
"exclude": ["../**/*.spec.ts"],
"include": [
"../src/**/*.stories.ts",
"../src/**/*.stories.js",
"../src/**/*.stories.jsx",
"../src/**/*.stories.tsx",

"*.ts",
"*.js",
"./*"
]
}
3 changes: 3 additions & 0 deletions apps/e2e/data-grid-storybook/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const config = require('../../../eslint-storybook.config');

module.exports = config;
146 changes: 146 additions & 0 deletions apps/e2e/data-grid-storybook/project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
{
"name": "data-grid-storybook",
"$schema": "../../../node_modules/nx/schemas/project-schema.json",
"projectType": "application",
"sourceRoot": "apps/e2e/data-grid-storybook/src",
"prefix": "app",
"tags": ["component-e2e"],
"targets": {
"build": {
"executor": "@angular/build:application",
"outputs": ["{options.outputPath.base}"],
"options": {
"outputPath": {
"base": "dist/apps/e2e/data-grid-storybook"
},
"index": "apps/e2e/data-grid-storybook/src/index.html",
"browser": "apps/e2e/data-grid-storybook/src/main.ts",
"polyfills": ["zone.js", "libs/components/packages/src/polyfills.js"],
"tsConfig": "apps/e2e/data-grid-storybook/tsconfig.app.json",
"inlineStyleLanguage": "scss",
"stylePreprocessorOptions": {
"includePaths": ["{workspaceRoot}"]
},
"styles": [
"apps/e2e/data-grid-storybook/src/styles.scss",
"libs/components/theme/src/lib/styles/sky.scss",
"libs/components/theme/src/lib/styles/themes/modern/styles.scss",
"libs/components/ag-grid/src/lib/styles/ag-grid-styles.scss"
]
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb",
"maximumError": "10kb"
}
],
"outputHashing": "all"
},
"development": {
"buildOptimizer": false,
"optimization": false,
"vendorChunk": true,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": true
}
},
"defaultConfiguration": "production"
},
"serve": {
"continuous": true,
"executor": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "data-grid-storybook:build:production"
},
"development": {
"buildTarget": "data-grid-storybook:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "data-grid-storybook:build"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"options": {
"lintFilePatterns": ["{projectRoot}/**/*.ts", "{projectRoot}/**/*.html"]
}
},
"storybook": {
"executor": "@storybook/angular:start-storybook",
"options": {
"port": 4400,
"configDir": "apps/e2e/data-grid-storybook/.storybook",
"browserTarget": "data-grid-storybook:build",
"compodoc": false,
"styles": [
"apps/e2e/data-grid-storybook/src/styles.scss",
"libs/components/theme/src/lib/styles/sky.scss",
"libs/components/theme/src/lib/styles/themes/modern/styles.scss",
"libs/components/ag-grid/src/lib/styles/ag-grid-styles.scss"
]
},
"configurations": {
"ci": {
"quiet": true,
"ci": true
}
}
},
"build-storybook": {
"executor": "@storybook/angular:build-storybook",
"outputs": ["{options.outputDir}"],
"options": {
"outputDir": "dist/storybook/data-grid-storybook",
"configDir": "apps/e2e/data-grid-storybook/.storybook",
"browserTarget": "data-grid-storybook:build",
"compodoc": false,
"styles": [
"apps/e2e/data-grid-storybook/src/styles.scss",
"libs/components/theme/src/lib/styles/sky.scss",
"libs/components/theme/src/lib/styles/themes/modern/styles.scss",
"libs/components/ag-grid/src/lib/styles/ag-grid-styles.scss"
]
},
"configurations": {
"ci": {
"quiet": true
}
}
},
"static-storybook": {
"executor": "@nx/web:file-server",
"dependsOn": ["build-storybook"],
"options": {
"buildTarget": "data-grid-storybook:build-storybook",
"staticFilePath": "dist/storybook/data-grid-storybook",
"spa": true
},
"configurations": {
"ci": {
"buildTarget": "data-grid-storybook:build-storybook:ci"
},
"prebuilt": {
"buildTarget": "data-grid-storybook:noop"
}
}
},
"noop": {
"executor": "nx:noop"
}
}
}
9 changes: 9 additions & 0 deletions apps/e2e/data-grid-storybook/src/app/app.component.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';

@Component({
selector: 'app-root',
template: `<router-outlet />`,
imports: [RouterOutlet],
})
export class AppComponent {}
13 changes: 13 additions & 0 deletions apps/e2e/data-grid-storybook/src/app/app.routes.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { Route } from '@angular/router';

export const routes: Route[] = [
{
path: '',
pathMatch: 'full',
redirectTo: 'data-grid',
},
{
path: 'data-grid',
loadComponent: () => import('./data-grid/data-grid.component'),
},
];
Loading
Loading