@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.
- package/README.md +2 -2
- package/dist/cjs/index.cjs +23 -28
- package/dist/cjs/index.native.js +27 -28
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/tableCellContext.native.js.map +1 -1
- package/dist/cjs/textRidesText.native.js.map +1 -1
- package/dist/esm/index.mjs +24 -29
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +28 -29
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/tableCellContext.native.js.map +1 -1
- package/dist/esm/textRidesText.native.js.map +1 -1
- package/dist/jsx/index.js +24 -29
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +24 -29
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +27 -28
- package/dist/jsx/index.native.js.map +1 -1
- package/package.json +5 -5
- package/src/index.tsx +41 -17
- package/src/table.spec.tsx +97 -0
- package/types/index.d.ts.map +1 -1
package/src/table.spec.tsx
CHANGED
|
@@ -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
|
});
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|