Skip to content

Commit 030742e

Browse files
committed
fix ci
1 parent 37fcf46 commit 030742e

6 files changed

Lines changed: 32 additions & 23 deletions

File tree

demo/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ <h1>Data Grid</h1>
193193
<section class="demo-grid">
194194
<p class="demo-kicker">Reference scene</p>
195195
<h2>Basic</h2>
196-
<p class="demo-lead">A clean five-column grid for the default visual contract: flat headers, integrated filters, quiet pagination.</p>
196+
<p class="demo-lead">A clean multi-column grid for the default visual contract: flat headers, integrated filters, quiet pagination.</p>
197197
<div class="demo-frame" id="basic-demo"></div>
198198
</section>
199199

src/data-grid.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55

66
import BaseElement from "./core/base-element.js";
77
import { ArrayDataSource, FetchDataSource } from "./data-source.js";
8+
import {
9+
formatDateFilterQuery,
10+
formatTextFilterQuery,
11+
parseDateFilterQuery,
12+
parseTextFilterQuery,
13+
} from "./filter-query.js";
814
import addSelectOption from "./utils/addSelectOption.js";
915
import applyContent from "./utils/applyContent.js";
1016
import { parseBooleanAttribute, parseEnumAttribute, parseIntegerListAttribute } from "./utils/attributes.js";
1117
import { MIN_COLUMN_WIDTH } from "./utils/columnWidth.js";
1218
import debounce from "./utils/debounce.js";
1319
import { dispatch } from "./utils/dispatch.js";
14-
import { formatDateFilterQuery, formatTextFilterQuery, parseDateFilterQuery, parseTextFilterQuery } from "./filter-query.js";
1520
import formatValue, { getFormatDefaults } from "./utils/formatValue.js";
1621
import getTextWidth from "./utils/getTextWidth.js";
1722
import {
@@ -3584,9 +3589,10 @@ class DataGrid extends BaseElement {
35843589
/** @type {HTMLInputElement} */ (filter).value = formatTextFilterQuery(filterState);
35853590
} else if (filter.dataset.filterMode === "number") {
35863591
const numericValue = Number(filterState.value);
3587-
const value = filter.dataset.percent === "true" && Number.isFinite(numericValue)
3588-
? numericValue * 100
3589-
: filterState.value;
3592+
const value =
3593+
filter.dataset.percent === "true" && Number.isFinite(numericValue)
3594+
? numericValue * 100
3595+
: filterState.value;
35903596
/** @type {HTMLInputElement} */ (filter).value = formatTextFilterQuery({
35913597
operator: filterState.operator,
35923598
value,

test/browser/helpers.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { start } from "../../demo/server.js";
22

33
export const IS_WINDOWS = process.platform === "win32";
4+
export const IS_CHROME_BACKEND = process.platform === "linux";
45

56
let server;
67
let base;
@@ -36,7 +37,7 @@ export function stopServer() {
3637
* @returns {Bun.WebView}
3738
*/
3839
export function view() {
39-
if (process.platform === "linux") {
40+
if (IS_CHROME_BACKEND) {
4041
return new Bun.WebView({
4142
width: 1280,
4243
height: 3000,

test/browser/ui.test.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { afterAll, beforeAll, expect, test } from "bun:test";
2-
import { ensureServer, IS_WINDOWS, read, stopServer, view, waitFor } from "./helpers.js";
2+
import { ensureServer, IS_CHROME_BACKEND, IS_WINDOWS, read, stopServer, view, waitFor } from "./helpers.js";
33

44
const FIXTURE = "test/browser/fixtures/grid.html";
55
const TIMEOUT = 15000;
@@ -43,6 +43,7 @@ test.skipIf(IS_WINDOWS)(
4343
await using v = view();
4444
await v.navigate(`${ensureServer()}/demo/declarative.html`);
4545
await waitFor(v, "document.querySelector('#declarative-actions-grid tbody [data-action=delete]')");
46+
await v.evaluate("new Promise((resolve) => requestAnimationFrame(() => resolve()))");
4647

4748
const geometry = JSON.parse(
4849
await read(
@@ -350,7 +351,7 @@ test.skipIf(IS_WINDOWS)(
350351
TIMEOUT,
351352
);
352353

353-
test.skipIf(IS_WINDOWS)(
354+
test.skipIf(IS_WINDOWS || !IS_CHROME_BACKEND)(
354355
"context menu is a native popover positioned at the pointer",
355356
async () => {
356357
await using v = view();

test/data-source.test.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,7 @@ test("applyFilters text operators are case- and accent-insensitive", () => {
7575
expect(applyFilters(rows, { name: { operator: "startsWith", value: "elodie" } })).toEqual([
7676
{ name: "Élodie Martin" },
7777
]);
78-
expect(applyFilters(rows, { name: { operator: "endsWith", value: "strom" } })).toEqual([
79-
{ name: "Ångström" },
80-
]);
78+
expect(applyFilters(rows, { name: { operator: "endsWith", value: "strom" } })).toEqual([{ name: "Ångström" }]);
8179
expect(
8280
applyFilters(rows, { name: { operator: "in", value: ["cafe central", "elodie martin"] } }).map((r) => r.name),
8381
).toEqual(["Café Central", "Élodie Martin"]);

test/filter.test.js

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import { expect, test } from "bun:test";
22
import DataGrid from "../data-grid.js";
3-
import { formatDateFilterQuery, formatTextFilterQuery, parseDateFilterQuery, parseTextFilterQuery } from "../src/filter-query.js";
43
import { ArrayDataSource, applyFilters, encodeSearchParams } from "../src/data-source.js";
4+
import {
5+
formatDateFilterQuery,
6+
formatTextFilterQuery,
7+
parseDateFilterQuery,
8+
parseTextFilterQuery,
9+
} from "../src/filter-query.js";
510
import { change, input } from "./helpers.js";
611

712
async function makeReadyGrid(opts = {}, data = null) {
@@ -339,11 +344,14 @@ test("typing several characters triggers a single debounced filter", async () =>
339344

340345
test("text filter expressions flow end to end through the grid", async () => {
341346
const data = [{ age: 18 }, { age: 30 }, { age: 31 }, { age: 45 }];
342-
const inst = await makeReadyGrid({
343-
columns: [{ field: "age", filterType: "text" }],
344-
filterable: true,
345-
filterDelay: 20,
346-
}, data);
347+
const inst = await makeReadyGrid(
348+
{
349+
columns: [{ field: "age", filterType: "text" }],
350+
filterable: true,
351+
filterDelay: 20,
352+
},
353+
data,
354+
);
347355

348356
typeFilter(inst, "age", ">30");
349357
await sleep(80);
@@ -958,12 +966,7 @@ test("date filters treat partial dates as exact periods", async () => {
958966
filterable: true,
959967
filterDelay: 20,
960968
},
961-
[
962-
{ created: "2024-12-31" },
963-
{ created: "2025-01-01" },
964-
{ created: "2025-08-26" },
965-
{ created: "2026-08-27" },
966-
],
969+
[{ created: "2024-12-31" }, { created: "2025-01-01" }, { created: "2025-08-26" }, { created: "2026-08-27" }],
967970
);
968971
const el = inst.querySelector('.dg-head-filters input[data-name="created"]');
969972
// The placeholder communicates the canonical date contract

0 commit comments

Comments
 (0)