@multiplatform.one/table-primitives 7.28.1 → 7.29.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/dist/cjs/index.cjs +10 -2
- package/dist/cjs/index.native.js +10 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/index.mjs +8 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +8 -2
- 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 +8 -2
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +8 -2
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +10 -2
- package/dist/jsx/index.native.js.map +1 -1
- package/package.json +4 -4
- package/src/cellWeight.spec.tsx +74 -0
- package/src/index.tsx +7 -2
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/table-primitives",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.29.0",
|
|
4
4
|
"description": "Semantic Table primitives and cell context (no forms or data-table)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"multiplatform",
|
|
@@ -52,12 +52,12 @@
|
|
|
52
52
|
"access": "public"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@multiplatform.one/theme": "7.
|
|
55
|
+
"@multiplatform.one/theme": "7.29.0",
|
|
56
56
|
"tamagui": "2.7.6"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@multiplatform.one/config": "7.
|
|
60
|
-
"@multiplatform.one/test-utils": "7.
|
|
59
|
+
"@multiplatform.one/config": "7.29.0",
|
|
60
|
+
"@multiplatform.one/test-utils": "7.29.0",
|
|
61
61
|
"@tamagui/build": "2.7.6",
|
|
62
62
|
"@testing-library/jest-dom": "^6.9.1",
|
|
63
63
|
"@testing-library/react": "^16.3.2",
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MPO-446: a body Table.Cell's bare value takes the fontWeight and bodyFont
|
|
3
|
+
* knobs like any body text, with the weight written last so the size ramp
|
|
4
|
+
* cannot paint over it. Header labels keep their 600 (the chrome label
|
|
5
|
+
* weight is MPO-430's open ruling, not this ticket's).
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
9
|
+
import { Preset } from "@multiplatform.one/theme";
|
|
10
|
+
import { cleanup, screen } from "@testing-library/react";
|
|
11
|
+
import { Text as RawText } from "tamagui";
|
|
12
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
13
|
+
import { Table } from "./index";
|
|
14
|
+
|
|
15
|
+
afterEach(cleanup);
|
|
16
|
+
|
|
17
|
+
function classes(el: Element, prefix: string): string[] {
|
|
18
|
+
return String(el.className || "")
|
|
19
|
+
.split(" ")
|
|
20
|
+
.filter((c) => c.startsWith(prefix))
|
|
21
|
+
.sort();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function explicit(prefix: string, props: Record<string, string>): string[] {
|
|
25
|
+
renderWithProviders(<RawText {...props}>probe</RawText>);
|
|
26
|
+
const got = classes(screen.getByText("probe"), prefix);
|
|
27
|
+
cleanup();
|
|
28
|
+
return got;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function renderTable(overrides: Record<string, string>) {
|
|
32
|
+
return renderWithProviders(
|
|
33
|
+
<Preset overrides={overrides as never}>
|
|
34
|
+
<Table>
|
|
35
|
+
<Table.Head>
|
|
36
|
+
<Table.Row>
|
|
37
|
+
<Table.HeaderCell>Weight</Table.HeaderCell>
|
|
38
|
+
</Table.Row>
|
|
39
|
+
</Table.Head>
|
|
40
|
+
<Table.Body>
|
|
41
|
+
<Table.Row>
|
|
42
|
+
<Table.Cell>{["42", " kg"]}</Table.Cell>
|
|
43
|
+
</Table.Row>
|
|
44
|
+
</Table.Body>
|
|
45
|
+
</Table>
|
|
46
|
+
</Preset>,
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
describe("Table.Cell body values follow the text knobs (MPO-446)", () => {
|
|
51
|
+
it.each([
|
|
52
|
+
["regular", "400"],
|
|
53
|
+
["bold", "700"],
|
|
54
|
+
] as const)("a bare body value paints the knob weight at %s", (fontWeight, want) => {
|
|
55
|
+
const expected = explicit("_fow-", { fontWeight: want });
|
|
56
|
+
renderTable({ fontWeight });
|
|
57
|
+
expect(classes(screen.getByText("42 kg"), "_fow-")).toEqual(expected);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("a bare body value takes the bodyFont family", () => {
|
|
61
|
+
const expected = explicit("_ff-", { fontFamily: "$mono" });
|
|
62
|
+
renderTable({ bodyFont: "mono" });
|
|
63
|
+
expect(classes(screen.getByText("42 kg"), "_ff-")).toEqual(expected);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it("the header label keeps 600 at both knob stops", () => {
|
|
67
|
+
const expected = explicit("_fow-", { fontWeight: "600" });
|
|
68
|
+
for (const fontWeight of ["regular", "bold"]) {
|
|
69
|
+
renderTable({ fontWeight });
|
|
70
|
+
expect(classes(screen.getByText("Weight"), "_fow-"), fontWeight).toEqual(expected);
|
|
71
|
+
cleanup();
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
package/src/index.tsx
CHANGED
|
@@ -29,6 +29,7 @@ import {
|
|
|
29
29
|
|
|
30
30
|
export { TableCellContext, useIsInTableCell, useTableCellContext } from "./tableCellContext";
|
|
31
31
|
export type { TableCellContextValue } from "./tableCellContext";
|
|
32
|
+
export { isBareTextChild, wrapBareTextChildren } from "./textRidesText";
|
|
32
33
|
|
|
33
34
|
type AlignCells = {
|
|
34
35
|
y: "center" | "start" | "end";
|
|
@@ -751,13 +752,16 @@ function TableCellSurfaceBody({
|
|
|
751
752
|
// Inside the cell Surface so size/density clamp; compact tightens gaps,
|
|
752
753
|
// not control height (density no longer couples to size).
|
|
753
754
|
const { knobProps } = useResolvedKnobs();
|
|
755
|
+
const { fontWeight: bodyWeight, ...body } = knobProps.body;
|
|
754
756
|
// LC-82 TEXT-RIDES-TEXT: array string children wrap too (coalesced runs),
|
|
755
|
-
// not just the singleton case.
|
|
757
|
+
// not just the singleton case. A body cell's value takes bodyFont and
|
|
758
|
+
// fontWeight like any body text (MPO-446); the weight is the last prop so
|
|
759
|
+
// no size or family variant paints the font ramp's weight over it.
|
|
756
760
|
return wrapBareTextChildren(children, (label, key) => (
|
|
757
761
|
<SizableText
|
|
758
762
|
key={key}
|
|
763
|
+
{...(isHeader ? {} : body)}
|
|
759
764
|
fontSize={knobProps.sizeToken as FontSizeTokens}
|
|
760
|
-
fontWeight={isHeader ? "600" : undefined}
|
|
761
765
|
// data-chrome: honour textAccent on labels. Body cells stay T-VALUE
|
|
762
766
|
// (inherit), matching SimpleTable's header vs value split (MPO-132).
|
|
763
767
|
{...(isHeader
|
|
@@ -769,6 +773,7 @@ function TableCellSurfaceBody({
|
|
|
769
773
|
>),
|
|
770
774
|
}
|
|
771
775
|
: {})}
|
|
776
|
+
fontWeight={isHeader ? "600" : (bodyWeight as "400")}
|
|
772
777
|
>
|
|
773
778
|
{label}
|
|
774
779
|
</SizableText>
|
package/types/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import type { SizeTokens } from "tamagui";
|
|
8
8
|
export { TableCellContext, useIsInTableCell, useTableCellContext } from "./tableCellContext";
|
|
9
9
|
export type { TableCellContextValue } from "./tableCellContext";
|
|
10
|
+
export { isBareTextChild, wrapBareTextChildren } from "./textRidesText";
|
|
10
11
|
type AlignCells = {
|
|
11
12
|
y: "center" | "start" | "end";
|
|
12
13
|
x: "center" | "start" | "end";
|
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;AAYH,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,SAAS,CAAC;AAY1D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7F,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|