@dxos/lit-grid 0.7.1 → 0.7.2-main.f1adc9f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/dx-grid.d.ts +2 -0
- package/dist/src/dx-grid.d.ts.map +1 -1
- package/dist/src/dx-grid.js +37 -5
- package/dist/src/dx-grid.js.map +1 -1
- package/dist/src/dx-grid.lit-stories.d.ts +4 -1
- package/dist/src/dx-grid.lit-stories.d.ts.map +1 -1
- package/dist/src/dx-grid.lit-stories.js +14 -12
- package/dist/src/dx-grid.lit-stories.js.map +1 -1
- package/dist/src/testing/index.d.ts +2 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +5 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/testing/playwright/dx-grid-manager.d.ts +24 -0
- package/dist/src/testing/playwright/dx-grid-manager.d.ts.map +1 -0
- package/dist/src/testing/playwright/dx-grid-manager.js +79 -0
- package/dist/src/testing/playwright/dx-grid-manager.js.map +1 -0
- package/dist/src/testing/playwright/dx-grid.spec.d.ts +2 -0
- package/dist/src/testing/playwright/dx-grid.spec.d.ts.map +1 -0
- package/dist/src/testing/playwright/dx-grid.spec.js +92 -0
- package/dist/src/testing/playwright/dx-grid.spec.js.map +1 -0
- package/dist/src/testing/playwright/playwright.config.d.ts +3 -0
- package/dist/src/testing/playwright/playwright.config.d.ts.map +1 -0
- package/dist/src/testing/playwright/playwright.config.js +16 -0
- package/dist/src/testing/playwright/playwright.config.js.map +1 -0
- package/dist/src/types.d.ts +5 -3
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +4 -3
- package/dist/src/types.js.map +1 -1
- package/dist/src/util.d.ts +2 -5
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +3 -5
- package/dist/src/util.js.map +1 -1
- package/dist/types/src/dx-grid.d.ts +2 -0
- package/dist/types/src/dx-grid.d.ts.map +1 -1
- package/dist/types/src/dx-grid.js +37 -5
- package/dist/types/src/dx-grid.js.map +1 -1
- package/dist/types/src/dx-grid.lit-stories.d.ts +4 -1
- package/dist/types/src/dx-grid.lit-stories.d.ts.map +1 -1
- package/dist/types/src/dx-grid.lit-stories.js +14 -12
- package/dist/types/src/dx-grid.lit-stories.js.map +1 -1
- package/dist/types/src/testing/index.d.ts +2 -0
- package/dist/types/src/testing/index.d.ts.map +1 -0
- package/dist/types/src/testing/index.js +5 -0
- package/dist/types/src/testing/index.js.map +1 -0
- package/dist/types/src/testing/playwright/dx-grid-manager.d.ts +24 -0
- package/dist/types/src/testing/playwright/dx-grid-manager.d.ts.map +1 -0
- package/dist/types/src/testing/playwright/dx-grid-manager.js +79 -0
- package/dist/types/src/testing/playwright/dx-grid-manager.js.map +1 -0
- package/dist/types/src/testing/playwright/dx-grid.spec.d.ts +2 -0
- package/dist/types/src/testing/playwright/dx-grid.spec.d.ts.map +1 -0
- package/dist/types/src/testing/playwright/dx-grid.spec.js +92 -0
- package/dist/types/src/testing/playwright/dx-grid.spec.js.map +1 -0
- package/dist/types/src/testing/playwright/playwright.config.d.ts +3 -0
- package/dist/types/src/testing/playwright/playwright.config.d.ts.map +1 -0
- package/dist/types/src/testing/playwright/playwright.config.js +16 -0
- package/dist/types/src/testing/playwright/playwright.config.js.map +1 -0
- package/dist/types/src/types.d.ts +5 -3
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/types.js +4 -3
- package/dist/types/src/types.js.map +1 -1
- package/dist/types/src/util.d.ts +2 -5
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/src/util.js +3 -5
- package/dist/types/src/util.js.map +1 -1
- package/package.json +19 -3
- package/src/dx-grid.lit-stories.ts +14 -12
- package/src/dx-grid.pcss +3 -2
- package/src/dx-grid.ts +43 -7
- package/src/testing/index.ts +5 -0
- package/src/testing/playwright/dx-grid-manager.ts +110 -0
- package/src/testing/playwright/dx-grid.spec.ts +118 -0
- package/src/testing/playwright/playwright.config.ts +18 -0
- package/src/types.ts +9 -6
- package/src/util.ts +6 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright.config.js","sourceRoot":"","sources":["../../../../../src/testing/playwright/playwright.config.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,eAAe,YAAY,CAAC;IAC1B,GAAG,WAAW,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAClD,GAAG,SAAS,CAAC,SAAS,CAAC;IACvB,SAAS,EAAE;QACT,OAAO,EAAE,kCAAkC;QAC3C,IAAI,EAAE,IAAI;QACV,mBAAmB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;KACrC;CACF,CAAC,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type DxGrid } from './dx-grid';
|
|
2
|
-
export
|
|
2
|
+
export declare const separator: ",";
|
|
3
|
+
export type DxGridPlaneCellIndex = `${string}${typeof separator}${string}`;
|
|
4
|
+
export type DxGridCellIndex = `${DxGridPlane}${typeof separator}${string}${typeof separator}${string}`;
|
|
3
5
|
export type DxGridAxis = 'row' | 'col';
|
|
4
6
|
export type DxGridFrozenColsPlane = `frozenCols${'Start' | 'End'}`;
|
|
5
7
|
export type DxGridFrozenRowsPlane = `frozenRows${'Start' | 'End'}`;
|
|
@@ -20,7 +22,7 @@ export type DxGridAnnotatedPanEvent = (WheelEvent | PointerEvent) & {
|
|
|
20
22
|
overscrollBlock: number;
|
|
21
23
|
gridId: string;
|
|
22
24
|
}>;
|
|
23
|
-
export type DxGridPlaneCells = Record<
|
|
25
|
+
export type DxGridPlaneCells = Record<DxGridPlaneCellIndex, DxGridCellValue>;
|
|
24
26
|
export type DxGridCells = {
|
|
25
27
|
grid: DxGridPlaneCells;
|
|
26
28
|
} & Partial<Record<DxGridFixedPlane | DxGridFrozenPlane, DxGridPlaneCells>>;
|
|
@@ -108,7 +110,7 @@ export declare class DxAxisResizeInternal extends Event {
|
|
|
108
110
|
}
|
|
109
111
|
export type DxEditRequestProps = Pick<DxEditRequest, 'cellIndex' | 'cellBox' | 'initialContent'>;
|
|
110
112
|
export declare class DxEditRequest extends Event {
|
|
111
|
-
readonly cellIndex:
|
|
113
|
+
readonly cellIndex: DxGridPlaneCellIndex;
|
|
112
114
|
readonly cellBox: Record<'insetInlineStart' | 'insetBlockStart' | 'inlineSize' | 'blockSize', number>;
|
|
113
115
|
readonly initialContent?: string;
|
|
114
116
|
constructor(props: DxEditRequestProps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAGxC,MAAM,MAAM,eAAe,GAAG,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types/src/types.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
//
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
|
-
import {
|
|
4
|
+
import { toPlaneCellIndex } from './util';
|
|
5
|
+
export const separator = ',';
|
|
5
6
|
export class DxAxisResize extends Event {
|
|
6
7
|
constructor(props) {
|
|
7
8
|
super('dx-axis-resize');
|
|
@@ -33,8 +34,8 @@ export class DxEditRequest extends Event {
|
|
|
33
34
|
export class DxGridCellsSelect extends Event {
|
|
34
35
|
constructor({ start, end }) {
|
|
35
36
|
super('dx-grid-cells-select');
|
|
36
|
-
this.start =
|
|
37
|
-
this.end =
|
|
37
|
+
this.start = toPlaneCellIndex(start);
|
|
38
|
+
this.end = toPlaneCellIndex(end);
|
|
38
39
|
this.minCol = Math.min(start.col, end.col);
|
|
39
40
|
this.maxCol = Math.max(start.col, end.col);
|
|
40
41
|
this.minRow = Math.min(start.row, end.row);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAGF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAGF,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,CAAC,MAAM,SAAS,GAAG,GAAY,CAAC;AAkHtC,MAAM,OAAO,YAAa,SAAQ,KAAK;IAKrC,YAAY,KAAwB;QAClC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAO7C,YAAY,KAAgC;QAC1C,KAAK,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3B,CAAC;CACF;AAID,MAAM,OAAO,aAAc,SAAQ,KAAK;IAItC,YAAY,KAAyB;QACnC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;IAC7C,CAAC;CACF;AAKD,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAO1C,YAAY,EAAE,KAAK,EAAE,GAAG,EAAe;QACrC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;CACF"}
|
package/dist/types/src/util.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import { type DxGridCellIndex, type DxGridPosition, type DxGridPointer, type DxGridSelectionProps, type DxGridPositionNullable, type DxGridPlane, type DxGridFrozenRowsPlane, type DxGridFrozenColsPlane, type DxGridFrozenPlane, type DxGridAxis } from './types';
|
|
2
|
-
|
|
3
|
-
* Separator for serializing cell position vectors
|
|
4
|
-
*/
|
|
5
|
-
export declare const separator = ",";
|
|
1
|
+
import { type DxGridPlaneCellIndex, type DxGridCellIndex, type DxGridPosition, type DxGridPointer, type DxGridSelectionProps, type DxGridPositionNullable, type DxGridPlane, type DxGridFrozenRowsPlane, type DxGridFrozenColsPlane, type DxGridFrozenPlane, type DxGridAxis, type DxGridPlanePosition } from './types';
|
|
2
|
+
export declare const toPlaneCellIndex: (cellCoords: Partial<DxGridPosition> & DxGridPlanePosition) => DxGridPlaneCellIndex;
|
|
6
3
|
export declare const toCellIndex: (cellCoords: DxGridPosition) => DxGridCellIndex;
|
|
7
4
|
export declare const colToA1Notation: (col: number) => string;
|
|
8
5
|
export declare const rowToA1Notation: (row: number) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,mBAAmB,EAEzB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,gBAAgB,eAAgB,OAAO,CAAC,cAAc,CAAC,GAAG,mBAAmB,KAAG,oBAC3C,CAAC;AAEnD,eAAO,MAAM,WAAW,eAAgB,cAAc,KAAG,eACwB,CAAC;AAMlF,eAAO,MAAM,eAAe,QAAS,MAAM,KAAG,MAK7C,CAAC;AAEF,eAAO,MAAM,eAAe,QAAS,MAAM,KAAG,MAE7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,GAAG,IAAI,CAAC;AAErB;;GAEG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAKjC,eAAO,MAAM,UAAU,KAAiB,CAAC;AACzC,eAAO,MAAM,UAAU,OAAO,CAAC;AAC/B,eAAO,MAAM,UAAU,KAAiB,CAAC;AACzC,eAAO,MAAM,UAAU,OAAO,CAAC;AAE/B,eAAO,MAAM,YAAY,YAAa,aAAa,oBAAoB,YAAY,YAMlF,CAAC;AAEF,eAAO,MAAM,cAAc,mBAAoB,cAAc,gBAAgB,cAAc,KAAG,oBAQ7F,CAAC;AAEF,eAAO,MAAM,YAAY,QAClB,MAAM,OACN,MAAM,SACJ,WAAW,aACP,oBAAoB,KAC9B,OAQF,CAAC;AAEF,eAAO,MAAM,aAAa,WAAY,WAAW,GAAG,IAAI,KAAG;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;CAG/G,CAAC;AAEF,eAAO,MAAM,WAAW,WAAY,WAAW,GAAG,IAAI,aAAa,WAAW,GAAG,IAAI,KAAG,sBAiBvF,CAAC;AAEF,eAAO,MAAM,aAAa,WAAY,WAAW,GAAG,IAAI,KAAG,WAAW,GAAG,IAExE,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,WAAW,KAAG,MAAM,GAAG,qBAa7D,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,WAAW,KAAG,MAAM,GAAG,qBAa7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAU,UAAU,aAAa,WAAW,KAAG,MAAM,GAAG,iBAmBtF,CAAC;AAEF,eAAO,MAAM,UAAU,MAAO,sBAAsB,KAAK,sBAAsB,mBAO9D,CAAC"}
|
package/dist/types/src/util.js
CHANGED
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
import { defaultSizeRow } from './defs';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export const separator = ',';
|
|
9
|
-
export const toCellIndex = (cellCoords) => `${cellCoords.col}${separator}${cellCoords.row}`;
|
|
5
|
+
import { separator, } from './types';
|
|
6
|
+
export const toPlaneCellIndex = (cellCoords) => `${cellCoords.col}${separator}${cellCoords.row}`;
|
|
7
|
+
export const toCellIndex = (cellCoords) => `${cellCoords.plane}${separator}${cellCoords.col}${separator}${cellCoords.row}`;
|
|
10
8
|
//
|
|
11
9
|
// A1 notation is the fallback for numbering columns and rows.
|
|
12
10
|
//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/lit-grid",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2-main.f1adc9f",
|
|
4
4
|
"description": "A grid Web Component using Lit",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -10,12 +10,25 @@
|
|
|
10
10
|
"exports": {
|
|
11
11
|
".": {
|
|
12
12
|
"types": "./dist/types/src/index.d.ts",
|
|
13
|
-
"
|
|
13
|
+
"browser": "./dist/src/index.js",
|
|
14
|
+
"node": "./dist/src/index.js"
|
|
14
15
|
},
|
|
15
|
-
"./dx-grid.pcss": "./src/dx-grid.pcss"
|
|
16
|
+
"./dx-grid.pcss": "./src/dx-grid.pcss",
|
|
17
|
+
"./testing": {
|
|
18
|
+
"types": "./dist/types/src/testing/index.d.ts",
|
|
19
|
+
"browser": "./dist/src/testing/index.js",
|
|
20
|
+
"node": "./dist/src/testing/index.js"
|
|
21
|
+
}
|
|
16
22
|
},
|
|
17
23
|
"main": "dist/src/index.js",
|
|
18
24
|
"types": "dist/src/index.d.ts",
|
|
25
|
+
"typesVersions": {
|
|
26
|
+
"*": {
|
|
27
|
+
"testing": [
|
|
28
|
+
"dist/types/src/testing/index.d.ts"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
19
32
|
"files": [
|
|
20
33
|
"src",
|
|
21
34
|
"dist"
|
|
@@ -23,5 +36,8 @@
|
|
|
23
36
|
"dependencies": {
|
|
24
37
|
"@atlaskit/pragmatic-drag-and-drop": "^1.4.0",
|
|
25
38
|
"lit": "^3.2.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@dxos/test-utils": "0.7.2-main.f1adc9f"
|
|
26
42
|
}
|
|
27
43
|
}
|
|
@@ -9,7 +9,7 @@ import './dx-grid-multiselect-cell.ts';
|
|
|
9
9
|
|
|
10
10
|
import { html, nothing } from 'lit';
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import { defaultSizeRow } from './defs.js';
|
|
13
13
|
import { type DxGridFrozenPlane, type DxGridPlaneCells, type DxGridProps } from './types';
|
|
14
14
|
import { colToA1Notation, rowToA1Notation } from './util';
|
|
15
15
|
|
|
@@ -98,7 +98,10 @@ Basic.args = {
|
|
|
98
98
|
} satisfies DxGridProps['frozen']),
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
/**
|
|
102
|
+
* This story is for testing, please make changes in concert with changes to `dx-grid.spec.ts`.
|
|
103
|
+
*/
|
|
104
|
+
export const Spec = (props: DxGridProps) => {
|
|
102
105
|
return html`<div class="dark" style="position:fixed;inset:0;">
|
|
103
106
|
<dx-grid
|
|
104
107
|
initialCells=${props.initialCells ?? nothing}
|
|
@@ -110,31 +113,30 @@ export const Frozen = (props: DxGridProps) => {
|
|
|
110
113
|
</div>`;
|
|
111
114
|
};
|
|
112
115
|
|
|
113
|
-
|
|
116
|
+
Spec.args = {
|
|
114
117
|
initialCells: JSON.stringify({
|
|
115
118
|
grid: {},
|
|
116
|
-
...initialLabels,
|
|
117
119
|
} satisfies DxGridProps['initialCells']),
|
|
118
120
|
columnDefault: JSON.stringify({
|
|
119
121
|
grid: {
|
|
120
|
-
size:
|
|
122
|
+
size: 31,
|
|
121
123
|
},
|
|
122
124
|
frozenColsStart: {
|
|
123
|
-
size:
|
|
125
|
+
size: 15,
|
|
124
126
|
},
|
|
125
127
|
frozenColsEnd: {
|
|
126
|
-
size:
|
|
128
|
+
size: 23,
|
|
127
129
|
},
|
|
128
130
|
} satisfies DxGridProps['columnDefault']),
|
|
129
131
|
rowDefault: JSON.stringify({
|
|
130
132
|
grid: {
|
|
131
|
-
size:
|
|
133
|
+
size: 31,
|
|
132
134
|
},
|
|
133
135
|
frozenRowsStart: {
|
|
134
|
-
size:
|
|
136
|
+
size: 15,
|
|
135
137
|
},
|
|
136
138
|
frozenRowsEnd: {
|
|
137
|
-
size:
|
|
139
|
+
size: 23,
|
|
138
140
|
},
|
|
139
141
|
} satisfies DxGridProps['rowDefault']),
|
|
140
142
|
columns: JSON.stringify({ grid: {} } satisfies DxGridProps['columns']),
|
|
@@ -142,8 +144,8 @@ Frozen.args = {
|
|
|
142
144
|
frozen: JSON.stringify({
|
|
143
145
|
frozenColsStart: 2,
|
|
144
146
|
frozenRowsStart: 2,
|
|
145
|
-
frozenColsEnd:
|
|
146
|
-
frozenRowsEnd:
|
|
147
|
+
frozenColsEnd: 1,
|
|
148
|
+
frozenRowsEnd: 1,
|
|
147
149
|
} satisfies DxGridProps['frozen']),
|
|
148
150
|
};
|
|
149
151
|
|
package/src/dx-grid.pcss
CHANGED
|
@@ -5,8 +5,6 @@ dx-grid {
|
|
|
5
5
|
display: contents;
|
|
6
6
|
--dx-grid-gap: 1px;
|
|
7
7
|
--dx-plane-gap: 1px;
|
|
8
|
-
touch-action: none;
|
|
9
|
-
user-select: none;
|
|
10
8
|
}
|
|
11
9
|
|
|
12
10
|
.dx-grid {
|
|
@@ -21,6 +19,9 @@ dx-grid {
|
|
|
21
19
|
max-inline-size: 100dvw;
|
|
22
20
|
max-block-size: 100dvh;
|
|
23
21
|
|
|
22
|
+
touch-action: none;
|
|
23
|
+
user-select: none;
|
|
24
|
+
|
|
24
25
|
background: var(--dx-grid-lines, var(--dx-gridLine));
|
|
25
26
|
}
|
|
26
27
|
|
package/src/dx-grid.ts
CHANGED
|
@@ -14,7 +14,7 @@ import './dx-grid-axis-resize-handle';
|
|
|
14
14
|
import {
|
|
15
15
|
type DxGridAxisMetaProps,
|
|
16
16
|
type DxGridAxisSizes,
|
|
17
|
-
type
|
|
17
|
+
type DxGridPlaneCellIndex,
|
|
18
18
|
type DxGridCellValue,
|
|
19
19
|
DxAxisResize,
|
|
20
20
|
type DxAxisResizeInternal,
|
|
@@ -38,10 +38,10 @@ import {
|
|
|
38
38
|
type DxGridSelectionProps,
|
|
39
39
|
type DxGridAnnotatedPanEvent,
|
|
40
40
|
type DxGridRange,
|
|
41
|
+
separator,
|
|
41
42
|
} from './types';
|
|
42
43
|
import {
|
|
43
|
-
|
|
44
|
-
toCellIndex,
|
|
44
|
+
toPlaneCellIndex,
|
|
45
45
|
gap,
|
|
46
46
|
resizeTolerance,
|
|
47
47
|
sizeColMin,
|
|
@@ -247,6 +247,12 @@ export class DxGrid extends LitElement {
|
|
|
247
247
|
@state()
|
|
248
248
|
private intrinsicBlockSize: number = Infinity;
|
|
249
249
|
|
|
250
|
+
@state()
|
|
251
|
+
private totalIntrinsicInlineSize: number = Infinity;
|
|
252
|
+
|
|
253
|
+
@state()
|
|
254
|
+
private totalIntrinsicBlockSize: number = Infinity;
|
|
255
|
+
|
|
250
256
|
//
|
|
251
257
|
// Primary pointer and keyboard handlers
|
|
252
258
|
//
|
|
@@ -258,7 +264,7 @@ export class DxGrid extends LitElement {
|
|
|
258
264
|
queueMicrotask(() =>
|
|
259
265
|
this.dispatchEvent(
|
|
260
266
|
new DxEditRequest({
|
|
261
|
-
cellIndex:
|
|
267
|
+
cellIndex: toPlaneCellIndex(this.focusedCell),
|
|
262
268
|
cellBox: this.focusedCellBox(),
|
|
263
269
|
initialContent,
|
|
264
270
|
}),
|
|
@@ -497,7 +503,7 @@ export class DxGrid extends LitElement {
|
|
|
497
503
|
}
|
|
498
504
|
|
|
499
505
|
private cell(c: number | string, r: number | string, plane: DxGridPlane): DxGridCellValue | undefined {
|
|
500
|
-
const index:
|
|
506
|
+
const index: DxGridPlaneCellIndex = `${c}${separator}${r}`;
|
|
501
507
|
return this.cells?.[plane]?.[index] ?? this.initialCells?.[plane]?.[index];
|
|
502
508
|
}
|
|
503
509
|
|
|
@@ -831,9 +837,11 @@ export class DxGrid extends LitElement {
|
|
|
831
837
|
|
|
832
838
|
private handleFocus(event: FocusEvent) {
|
|
833
839
|
const cellCoords = closestCell(event.target);
|
|
834
|
-
if (cellCoords) {
|
|
840
|
+
if (cellCoords || targetIsPlane(event.target)) {
|
|
835
841
|
this.focusActive = true;
|
|
836
|
-
|
|
842
|
+
if (cellCoords) {
|
|
843
|
+
this.setFocusedCell(cellCoords);
|
|
844
|
+
}
|
|
837
845
|
}
|
|
838
846
|
}
|
|
839
847
|
|
|
@@ -1268,6 +1276,12 @@ export class DxGrid extends LitElement {
|
|
|
1268
1276
|
'grid-template-rows': `${this.templatefrozenRowsStart ? 'min-content ' : ''}minmax(0, ${
|
|
1269
1277
|
Number.isFinite(this.limitRows) ? `${Math.max(0, this.intrinsicBlockSize)}px` : '1fr'
|
|
1270
1278
|
})${this.templatefrozenRowsEnd ? ' min-content' : ''}`,
|
|
1279
|
+
'--dx-grid-content-inline-size': Number.isFinite(this.limitColumns)
|
|
1280
|
+
? `${Math.max(0, this.totalIntrinsicInlineSize)}px`
|
|
1281
|
+
: 'max-content',
|
|
1282
|
+
'--dx-grid-content-block-size': Number.isFinite(this.limitRows)
|
|
1283
|
+
? `${Math.max(0, this.totalIntrinsicBlockSize)}px`
|
|
1284
|
+
: 'max-content',
|
|
1271
1285
|
})}
|
|
1272
1286
|
data-grid=${this.gridId}
|
|
1273
1287
|
data-grid-mode=${this.mode}
|
|
@@ -1324,6 +1338,17 @@ export class DxGrid extends LitElement {
|
|
|
1324
1338
|
? [...Array(this.limitColumns)].reduce((acc, _, c0) => acc + this.colSize(c0, 'grid'), 0) +
|
|
1325
1339
|
gap * (this.limitColumns - 1)
|
|
1326
1340
|
: Infinity;
|
|
1341
|
+
this.totalIntrinsicInlineSize =
|
|
1342
|
+
this.intrinsicInlineSize +
|
|
1343
|
+
(Number.isFinite(this.frozen.frozenColsStart)
|
|
1344
|
+
? [...Array(this.frozen.frozenColsStart)].reduce(
|
|
1345
|
+
(acc, _, c0) => acc + gap + this.colSize(c0, 'frozenColsStart'),
|
|
1346
|
+
0,
|
|
1347
|
+
)
|
|
1348
|
+
: 0) +
|
|
1349
|
+
(Number.isFinite(this.frozen.frozenColsEnd)
|
|
1350
|
+
? [...Array(this.frozen.frozenColsEnd)].reduce((acc, _, c0) => acc + gap + this.colSize(c0, 'frozenColsEnd'), 0)
|
|
1351
|
+
: 0);
|
|
1327
1352
|
}
|
|
1328
1353
|
|
|
1329
1354
|
private updateIntrinsicBlockSize() {
|
|
@@ -1331,6 +1356,17 @@ export class DxGrid extends LitElement {
|
|
|
1331
1356
|
? [...Array(this.limitRows)].reduce((acc, _, r0) => acc + this.rowSize(r0, 'grid'), 0) +
|
|
1332
1357
|
gap * (this.limitRows - 1)
|
|
1333
1358
|
: Infinity;
|
|
1359
|
+
this.totalIntrinsicBlockSize =
|
|
1360
|
+
this.intrinsicBlockSize +
|
|
1361
|
+
(Number.isFinite(this.frozen.frozenRowsStart)
|
|
1362
|
+
? [...Array(this.frozen.frozenRowsStart)].reduce(
|
|
1363
|
+
(acc, _, r0) => acc + gap + this.rowSize(r0, 'frozenRowsStart'),
|
|
1364
|
+
0,
|
|
1365
|
+
)
|
|
1366
|
+
: 0) +
|
|
1367
|
+
(Number.isFinite(this.frozen.frozenRowsEnd)
|
|
1368
|
+
? [...Array(this.frozen.frozenRowsEnd)].reduce((acc, _, r0) => acc + gap + this.rowSize(r0, 'frozenRowsEnd'), 0)
|
|
1369
|
+
: 0);
|
|
1334
1370
|
}
|
|
1335
1371
|
|
|
1336
1372
|
private updateIntrinsicSizes() {
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { expect, type Locator, type Page } from '@playwright/test';
|
|
6
|
+
|
|
7
|
+
import type { DxGridPlanePosition } from '../../types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Test helper for managing dx-grid interactions and assertions in Playwright tests.
|
|
11
|
+
* Provides utilities for cell selection, grid navigation, virtualization checks and event handling.
|
|
12
|
+
*/
|
|
13
|
+
export class DxGridManager {
|
|
14
|
+
constructor(page: Page, grid: Locator = page.locator('dx-grid')) {
|
|
15
|
+
this.grid = grid;
|
|
16
|
+
this.page = page;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
grid: Locator;
|
|
20
|
+
page: Page;
|
|
21
|
+
|
|
22
|
+
async ready() {
|
|
23
|
+
return this.grid.locator('.dx-grid').waitFor({ state: 'visible' });
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
planes() {
|
|
27
|
+
return this.grid.locator('.dx-grid [data-dx-grid-plane]');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
cellsWithinPlane(plane: string) {
|
|
31
|
+
return this.grid.locator(`.dx-grid [data-dx-grid-plane="${plane}"]`).getByRole('gridcell');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
cell(col: number, row: number, plane: string) {
|
|
35
|
+
return this.grid.locator(
|
|
36
|
+
`.dx-grid [data-dx-grid-plane="${plane}"] [aria-colindex="${col}"][aria-rowindex="${row}"]`,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
mode() {
|
|
41
|
+
return this.grid.locator('.dx-grid').getAttribute('data-grid-mode');
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
panByWheel(deltaX: number, deltaY: number) {
|
|
45
|
+
return this.grid.locator('.dx-grid [data-dx-grid-plane="grid"]').dispatchEvent('wheel', { deltaX, deltaY });
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async forCellsInRange(
|
|
49
|
+
start: DxGridPlanePosition,
|
|
50
|
+
end: DxGridPlanePosition,
|
|
51
|
+
iterator: (col: number, row: number) => Promise<void>,
|
|
52
|
+
) {
|
|
53
|
+
const nCols = 1 + end.col - start.col;
|
|
54
|
+
const nRows = 1 + end.row - start.row;
|
|
55
|
+
|
|
56
|
+
await Promise.all(
|
|
57
|
+
[...Array(nCols)].map(async (_, c0) => {
|
|
58
|
+
return Promise.all(
|
|
59
|
+
[...Array(nRows)].map(async (_, r0) => {
|
|
60
|
+
return iterator(start.col + c0, start.row + r0);
|
|
61
|
+
}),
|
|
62
|
+
);
|
|
63
|
+
}),
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async expectSelectionResult(start: DxGridPlanePosition, end: DxGridPlanePosition) {
|
|
68
|
+
return this.forCellsInRange(start, end, (col, row) =>
|
|
69
|
+
expect(this.cell(col, row, 'grid')).toHaveAttribute('aria-selected', 'true'),
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
async expectVirtualizationResult(cols: number, rows: number, minColIndex = 0, minRowIndex = 0) {
|
|
74
|
+
await this.cell(minColIndex, minRowIndex, 'grid').waitFor({ state: 'visible' });
|
|
75
|
+
// Top planes
|
|
76
|
+
await expect(this.cellsWithinPlane('fixedStartStart')).toHaveCount(4);
|
|
77
|
+
await expect(this.cellsWithinPlane('frozenRowsStart')).toHaveCount(2 * cols);
|
|
78
|
+
await expect(this.cellsWithinPlane('fixedStartEnd')).toHaveCount(2);
|
|
79
|
+
// Center planes
|
|
80
|
+
await expect(this.cellsWithinPlane('frozenColsStart')).toHaveCount(2 * rows);
|
|
81
|
+
await expect(this.cellsWithinPlane('grid')).toHaveCount(rows * cols);
|
|
82
|
+
await expect(this.cellsWithinPlane('frozenColsEnd')).toHaveCount(rows);
|
|
83
|
+
// Bottom planes
|
|
84
|
+
await expect(this.cellsWithinPlane('fixedEndStart')).toHaveCount(2);
|
|
85
|
+
await expect(this.cellsWithinPlane('frozenRowsEnd')).toHaveCount(cols);
|
|
86
|
+
await expect(this.cellsWithinPlane('fixedEndEnd')).toHaveCount(1);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
async expectFocus(locator: Locator) {
|
|
90
|
+
return expect(await locator.evaluate((node) => document.activeElement === node)).toBeTruthy();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
listenForSelect() {
|
|
94
|
+
return this.grid.evaluate(() => {
|
|
95
|
+
document.querySelector('dx-grid')!.addEventListener('dx-grid-cells-select', (event) => {
|
|
96
|
+
(window as any).DX_GRID_EVENT = event;
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async waitForDxEvent<E>(): Promise<E> {
|
|
102
|
+
const event = await this.page.waitForFunction(() => {
|
|
103
|
+
return (window as any).DX_GRID_EVENT;
|
|
104
|
+
});
|
|
105
|
+
await this.grid.evaluate(() => {
|
|
106
|
+
return ((window as any).DX_GRID_EVENT = undefined);
|
|
107
|
+
});
|
|
108
|
+
return event.jsonValue();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2021 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { expect, test, type Page } from '@playwright/test';
|
|
6
|
+
|
|
7
|
+
import { setupPage, storybookUrl } from '@dxos/test-utils/playwright';
|
|
8
|
+
|
|
9
|
+
import { DxGridManager } from './dx-grid-manager';
|
|
10
|
+
import { type DxGridCellsSelect } from '../../types';
|
|
11
|
+
import { toPlaneCellIndex } from '../../util';
|
|
12
|
+
|
|
13
|
+
const gridPlaneCellSize = 31;
|
|
14
|
+
const gap = 1;
|
|
15
|
+
const nCols = 9;
|
|
16
|
+
const nRows = 7;
|
|
17
|
+
|
|
18
|
+
test.describe('dx-grid', () => {
|
|
19
|
+
let page: Page;
|
|
20
|
+
let grid: DxGridManager;
|
|
21
|
+
|
|
22
|
+
test.beforeEach(async ({ browser }) => {
|
|
23
|
+
const setup = await setupPage(browser, {
|
|
24
|
+
url: storybookUrl('dx-grid--spec'),
|
|
25
|
+
viewportSize: {
|
|
26
|
+
width: (gridPlaneCellSize + gap) * (nCols + 1.5),
|
|
27
|
+
height: (gridPlaneCellSize + gap) * (nRows + 1.5),
|
|
28
|
+
}, // 336 x 272
|
|
29
|
+
});
|
|
30
|
+
page = setup.page;
|
|
31
|
+
grid = new DxGridManager(page);
|
|
32
|
+
await grid.ready();
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test.afterEach(async () => {
|
|
36
|
+
await page.close();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test('virtualization & panning', async () => {
|
|
40
|
+
// There are nine planes in the spec story.
|
|
41
|
+
await expect(grid.planes()).toHaveCount(9);
|
|
42
|
+
|
|
43
|
+
// Each plane starts with the correct number of cells within it on initial render.
|
|
44
|
+
await grid.expectVirtualizationResult(nCols, nRows);
|
|
45
|
+
|
|
46
|
+
// Now pan by wheel to the center point of the cell one right and one down from the origin cell of the grid plane.
|
|
47
|
+
await grid.panByWheel(gridPlaneCellSize * 1.5 + gap, gridPlaneCellSize * 1.5 + gap);
|
|
48
|
+
|
|
49
|
+
// Confirm that the grid plane is showing only the cells that would be visible.
|
|
50
|
+
await grid.expectVirtualizationResult(nCols + 1, nRows + 1, 1, 1);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test('mouse access', async () => {
|
|
54
|
+
await grid.listenForSelect();
|
|
55
|
+
|
|
56
|
+
// Find and click on the cell at 0,0.
|
|
57
|
+
const cell00 = await grid.cell(0, 0, 'grid');
|
|
58
|
+
await cell00.click();
|
|
59
|
+
|
|
60
|
+
// It should now have focus
|
|
61
|
+
await grid.expectFocus(cell00);
|
|
62
|
+
|
|
63
|
+
// Shift-click on the cell at 1,1 and wait for the selection change custom event.
|
|
64
|
+
await grid.cell(1, 1, 'grid').click({ modifiers: ['Shift'] });
|
|
65
|
+
const select = await grid.waitForDxEvent<DxGridCellsSelect>();
|
|
66
|
+
|
|
67
|
+
// Expect the event to have the right information.
|
|
68
|
+
expect(select).toHaveProperty('start', toPlaneCellIndex({ col: 0, row: 0 }));
|
|
69
|
+
expect(select).toHaveProperty('end', toPlaneCellIndex({ col: 1, row: 1 }));
|
|
70
|
+
|
|
71
|
+
// The cell at 0,0 should still have focus despite the shift+click.
|
|
72
|
+
await grid.expectFocus(cell00);
|
|
73
|
+
|
|
74
|
+
// All the cells between 0,0 and 1,1 must have `aria-selected=true`.
|
|
75
|
+
await grid.expectSelectionResult({ col: 0, row: 0 }, { col: 1, row: 1 });
|
|
76
|
+
|
|
77
|
+
// Clicking on another cell should move focus and change selection to match that one cell.
|
|
78
|
+
const cell22 = await grid.cell(2, 2, 'grid');
|
|
79
|
+
await cell22.click();
|
|
80
|
+
const finalSelect = await grid.waitForDxEvent<DxGridCellsSelect>();
|
|
81
|
+
|
|
82
|
+
expect(finalSelect).toHaveProperty('start', toPlaneCellIndex({ col: 2, row: 2 }));
|
|
83
|
+
expect(finalSelect).toHaveProperty('end', toPlaneCellIndex({ col: 2, row: 2 }));
|
|
84
|
+
|
|
85
|
+
await grid.expectFocus(cell22);
|
|
86
|
+
|
|
87
|
+
await grid.expectSelectionResult({ col: 2, row: 2 }, { col: 2, row: 2 });
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
test('keyboard access', async () => {
|
|
91
|
+
// Tabbing to the first plane and enter to the first cell there.
|
|
92
|
+
await page.keyboard.press('Tab');
|
|
93
|
+
await page.keyboard.press('Enter');
|
|
94
|
+
await grid.expectFocus(grid.cell(0, 0, 'fixedStartStart'));
|
|
95
|
+
|
|
96
|
+
// Escape to the planes and arrow over to the grid plane, then enter to the first cell there.
|
|
97
|
+
await page.keyboard.press('Escape');
|
|
98
|
+
await page.keyboard.press('ArrowRight');
|
|
99
|
+
await page.keyboard.press('ArrowDown');
|
|
100
|
+
await page.keyboard.press('Enter');
|
|
101
|
+
await grid.expectFocus(grid.cell(0, 0, 'grid'));
|
|
102
|
+
|
|
103
|
+
// Select a range by holding shift.
|
|
104
|
+
await page.keyboard.down('Shift');
|
|
105
|
+
await page.keyboard.press('ArrowRight');
|
|
106
|
+
await page.keyboard.press('ArrowRight');
|
|
107
|
+
await page.keyboard.press('ArrowDown');
|
|
108
|
+
await page.keyboard.press('ArrowDown');
|
|
109
|
+
await page.keyboard.up('Shift');
|
|
110
|
+
await grid.expectFocus(grid.cell(0, 0, 'grid'));
|
|
111
|
+
await grid.expectSelectionResult({ col: 0, row: 0 }, { col: 2, row: 2 });
|
|
112
|
+
|
|
113
|
+
// Arrowing from there cancels selection.
|
|
114
|
+
await page.keyboard.press('ArrowRight');
|
|
115
|
+
await page.keyboard.press('ArrowDown');
|
|
116
|
+
await grid.expectFocus(grid.cell(1, 1, 'grid'));
|
|
117
|
+
});
|
|
118
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { nxE2EPreset } from '@nx/playwright/preset';
|
|
6
|
+
import { defineConfig } from '@playwright/test';
|
|
7
|
+
|
|
8
|
+
import { e2ePreset } from '@dxos/test-utils/playwright';
|
|
9
|
+
|
|
10
|
+
export default defineConfig({
|
|
11
|
+
...nxE2EPreset(__filename, { testDir: __dirname }),
|
|
12
|
+
...e2ePreset(__dirname),
|
|
13
|
+
webServer: {
|
|
14
|
+
command: 'pnpm -w nx storybook lit-stories',
|
|
15
|
+
port: 9009,
|
|
16
|
+
reuseExistingServer: !process.env.CI,
|
|
17
|
+
},
|
|
18
|
+
});
|