@multiplatform.one/table-primitives 7.11.0 → 7.16.0

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.
@@ -247,6 +247,32 @@ describe("Table Primitives", () => {
247
247
  expect(bouncy.querySelector("td")?.getAttribute("data-animation")).toBe("on");
248
248
  });
249
249
 
250
+ it("survives the animation knob flipping live from none to bouncy (MPO-327)", () => {
251
+ const Flip = ({ animation }: { animation: "none" | "bouncy" }) => (
252
+ <Preset overrides={{ animation }}>
253
+ <Table>
254
+ <Table.Head>
255
+ <Table.Row>
256
+ <Table.HeaderCell>H</Table.HeaderCell>
257
+ </Table.Row>
258
+ </Table.Head>
259
+ <Table.Body>
260
+ <Table.Row>
261
+ <Table.Cell>C</Table.Cell>
262
+ </Table.Row>
263
+ </Table.Body>
264
+ </Table>
265
+ </Preset>
266
+ );
267
+ const { container, rerender } = renderWithProviders(<Flip animation="none" />);
268
+ expect(container.querySelector("table")?.getAttribute("data-animation")).toBe("none");
269
+
270
+ expect(() => rerender(<Flip animation="bouncy" />)).not.toThrow();
271
+ expect(container.querySelector("table")?.getAttribute("data-animation")).toBe("on");
272
+ expect(container.querySelector("tr")?.getAttribute("data-animation")).toBe("on");
273
+ expect(container.querySelector("td")?.getAttribute("data-animation")).toBe("on");
274
+ });
275
+
250
276
  it("honours textAccent on header labels and leaves body cells as T-VALUE", () => {
251
277
  const { container: high } = renderWithProviders(
252
278
  <Preset overrides={{ textAccent: "high" }}>
@@ -291,4 +317,75 @@ describe("Table Primitives", () => {
291
317
  expect(high.querySelector("td [data-text-accent]")).toBeNull();
292
318
  expect(low.querySelector("td [data-text-accent]")).toBeNull();
293
319
  });
320
+
321
+ function bodyTable(overrides: Record<string, string>, props: Record<string, unknown> = {}) {
322
+ return renderWithProviders(
323
+ <Preset overrides={overrides as any}>
324
+ <Table {...props}>
325
+ <Table.Head>
326
+ <Table.Row>
327
+ <Table.HeaderCell>Name</Table.HeaderCell>
328
+ </Table.Row>
329
+ </Table.Head>
330
+ <Table.Body>
331
+ <Table.Row>
332
+ <Table.Cell>Plain</Table.Cell>
333
+ </Table.Row>
334
+ <Table.Row onPress={() => {}}>
335
+ <Table.Cell>Pressable</Table.Cell>
336
+ </Table.Row>
337
+ </Table.Body>
338
+ </Table>
339
+ </Preset>,
340
+ ).container;
341
+ }
342
+
343
+ // Token values render as atomic classes (`_h-t-size-3`), which jsdom's
344
+ // computed style cannot resolve, so the knob is read off the class list.
345
+ const atomic = (el: Element | null | undefined, prefix: string) =>
346
+ Array.from(el?.classList ?? []).filter((name) => name.startsWith(`_${prefix}-`));
347
+
348
+ it("carries the size knob to the row in the table composition, where min-height is inert", () => {
349
+ const heights = (["small", "medium", "large"] as const).map((size) => {
350
+ const cell = bodyTable({ size }).querySelector("tbody td");
351
+ const minHeight = atomic(cell, "mih");
352
+ expect(minHeight).toHaveLength(1);
353
+ expect(atomic(cell, "h")).toEqual([minHeight[0]?.replace("_mih-", "_h-")]);
354
+ return minHeight[0];
355
+ });
356
+ expect(heights).toEqual(["_mih-t-size-3", "_mih-t-size-4", "_mih-t-size-5"]);
357
+ });
358
+
359
+ it("floors a pressable row at the 44px press target and leaves a plain row to the size knob", () => {
360
+ const rows = bodyTable({ size: "small", space: "small" }).querySelectorAll("tbody tr");
361
+ const [plain, pressable] = Array.from(rows).map((row) => getComputedStyle(row));
362
+ expect(pressable?.height).toBe("44px");
363
+ expect(pressable?.minHeight).toBe("44px");
364
+ expect(plain?.height).toBe("");
365
+ });
366
+
367
+ it("gives the flex composition the same floors through min-height alone", () => {
368
+ const container = bodyTable({ size: "small" }, { displayMode: "flex" });
369
+ const cell = container.querySelector("tbody td");
370
+ expect(atomic(cell, "mih")).toEqual(["_mih-t-size-3"]);
371
+ expect(atomic(cell, "h")).toEqual([]);
372
+ const pressable = getComputedStyle(container.querySelectorAll("tbody tr")[1] as Element);
373
+ expect(pressable.minHeight).toBe("44px");
374
+ expect(pressable.height).toBe("");
375
+ });
376
+
377
+ it("keeps the frame fill at outlined, the same answer the card list gives (SF-CARD)", () => {
378
+ const frame = (fillStyle: string) =>
379
+ atomic(bodyTable({ fillStyle }).querySelector("table"), "bg");
380
+ expect(frame("filled")).toEqual(["_bg-background"]);
381
+ expect(frame("outlined")).toEqual(frame("filled"));
382
+
383
+ const card = (fillStyle: string) =>
384
+ atomic(
385
+ bodyTable({ fillStyle }, { layout: "cards" }).querySelector('[data-testid="table-card"]'),
386
+ "bg",
387
+ );
388
+ expect(card("filled")).toHaveLength(1);
389
+ expect(card("outlined")).toEqual(card("filled"));
390
+ });
294
391
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}