@multiplatform.one/frappe-ui 7.81.1 → 7.81.2
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/FrappeListView.cjs +50 -54
- package/dist/cjs/FrappeListView.native.js +54 -61
- package/dist/cjs/FrappeListView.native.js.map +1 -1
- package/dist/cjs/list/RecordCard.cjs +7 -11
- package/dist/esm/FrappeListView.mjs +51 -55
- package/dist/esm/FrappeListView.mjs.map +1 -1
- package/dist/esm/FrappeListView.native.js +55 -62
- package/dist/esm/FrappeListView.native.js.map +1 -1
- package/dist/esm/list/RecordCard.mjs +7 -11
- package/dist/esm/list/RecordCard.mjs.map +1 -1
- package/dist/jsx/FrappeListView.mjs +51 -55
- package/dist/jsx/FrappeListView.mjs.map +1 -1
- package/dist/jsx/FrappeListView.native.js +54 -61
- package/dist/jsx/FrappeListView.native.js.map +1 -1
- package/dist/jsx/list/RecordCard.mjs +7 -11
- package/dist/jsx/list/RecordCard.mjs.map +1 -1
- package/package.json +16 -16
- package/src/FrappeListView.cards.spec.tsx +4 -4
- package/src/FrappeListView.cards.stories.tsx +18 -26
- package/src/FrappeListView.spec.tsx +31 -40
- package/src/FrappeListView.tsx +48 -47
- package/src/list/RecordCard.tsx +5 -13
- package/types/FrappeListView.d.ts.map +1 -1
- package/types/list/RecordCard.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Anchor","Card","Text","XStack","YStack","isWeb","Button","transitionProps","ensureFocusVisibleRing","ensureKeyboardModalityTracking","keyboardFocusRingProps","useResolvedKnobs","wasKeyboardFocus","HeartIcon","useState","useTranslation","FacetBadge","ImageWell","jsx","jsxs","isModifiedPress","event","native","nativeEvent","Boolean","metaKey","ctrlKey","shiftKey","altKey","button","RecordCard","title","subtitle","code","images","tint","badges","href","onPress","favorite","lazy","testID","favoriteTestID","t","knobProps","elevation","elevationState","component","focusRing","outlineOffset","anchorKeyboardFocus","setAnchorKeyboardFocus","handlePress","press","preventDefault","stopPropagation","handleToggleFavorite","toggle","heart","position","top","right","zIndex","onClickCapture","children","plate","selected","render","type","col","active","icon","size","weight","name","media","sources","alt","inset","borderRadius","overlay","left","bottom","textDecorationLine","outlineWidth","onFocus","onBlur","cursor","motion","control","hoverStyle","hoverKnobProps","pressStyle","pressKnobProps","role","focusVisibleStyle","gap","alignItems","
|
|
1
|
+
{"version":3,"names":["Anchor","Card","Text","XStack","YStack","isWeb","Button","transitionProps","ensureFocusVisibleRing","ensureKeyboardModalityTracking","keyboardFocusRingProps","useResolvedKnobs","wasKeyboardFocus","HeartIcon","useState","useTranslation","FacetBadge","ImageWell","jsx","jsxs","isModifiedPress","event","native","nativeEvent","Boolean","metaKey","ctrlKey","shiftKey","altKey","button","RecordCard","title","subtitle","code","images","tint","badges","href","onPress","favorite","lazy","testID","favoriteTestID","t","knobProps","elevation","elevationState","component","focusRing","outlineOffset","anchorKeyboardFocus","setAnchorKeyboardFocus","handlePress","press","preventDefault","stopPropagation","handleToggleFavorite","toggle","heart","position","top","right","zIndex","onClickCapture","children","plate","selected","render","type","col","active","icon","size","weight","name","media","sources","alt","inset","borderRadius","overlay","left","bottom","textDecorationLine","outlineWidth","onFocus","onBlur","cursor","motion","control","hoverStyle","hoverKnobProps","pressStyle","pressKnobProps","role","focusVisibleStyle","gap","alignItems","textRole","headline","numberOfLines","flexShrink","minWidth","caption","typography","tabular","meta","length","flexWrap","overflow","map","badge","label","value"],"sources":["../../../src/list/RecordCard.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/frappe-ui",
|
|
3
|
-
"version": "7.81.
|
|
3
|
+
"version": "7.81.2",
|
|
4
4
|
"description": "Pre-wired Tamagui components for Frappe doctypes with live data",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cross-platform",
|
|
@@ -72,18 +72,18 @@
|
|
|
72
72
|
"access": "public"
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"@multiplatform.one/components": "^7.81.
|
|
76
|
-
"@multiplatform.one/desktop": "^7.81.
|
|
77
|
-
"@multiplatform.one/forms": "^7.81.
|
|
78
|
-
"@multiplatform.one/frappe": "^7.81.
|
|
79
|
-
"@multiplatform.one/i18n": "^7.81.
|
|
80
|
-
"@multiplatform.one/markdown": "^7.81.
|
|
81
|
-
"@multiplatform.one/platform": "^7.81.
|
|
82
|
-
"@multiplatform.one/rich-text": "^7.81.
|
|
83
|
-
"@multiplatform.one/router": "^7.81.
|
|
84
|
-
"@multiplatform.one/store": "^7.81.
|
|
85
|
-
"@multiplatform.one/table": "^7.81.
|
|
86
|
-
"@multiplatform.one/theme": "^7.81.
|
|
75
|
+
"@multiplatform.one/components": "^7.81.2",
|
|
76
|
+
"@multiplatform.one/desktop": "^7.81.2",
|
|
77
|
+
"@multiplatform.one/forms": "^7.81.2",
|
|
78
|
+
"@multiplatform.one/frappe": "^7.81.2",
|
|
79
|
+
"@multiplatform.one/i18n": "^7.81.2",
|
|
80
|
+
"@multiplatform.one/markdown": "^7.81.2",
|
|
81
|
+
"@multiplatform.one/platform": "^7.81.2",
|
|
82
|
+
"@multiplatform.one/rich-text": "^7.81.2",
|
|
83
|
+
"@multiplatform.one/router": "^7.81.2",
|
|
84
|
+
"@multiplatform.one/store": "^7.81.2",
|
|
85
|
+
"@multiplatform.one/table": "^7.81.2",
|
|
86
|
+
"@multiplatform.one/theme": "^7.81.2",
|
|
87
87
|
"@phosphor-icons/react": "^2.1.10",
|
|
88
88
|
"@tamagui/colors": "2.7.6",
|
|
89
89
|
"@tanstack/db": "0.8.0",
|
|
@@ -100,9 +100,9 @@
|
|
|
100
100
|
"tamagui": "2.7.6"
|
|
101
101
|
},
|
|
102
102
|
"devDependencies": {
|
|
103
|
-
"@multiplatform.one/config": "7.81.
|
|
104
|
-
"@multiplatform.one/storybook": "7.81.
|
|
105
|
-
"@multiplatform.one/test-utils": "7.81.
|
|
103
|
+
"@multiplatform.one/config": "7.81.2",
|
|
104
|
+
"@multiplatform.one/storybook": "7.81.2",
|
|
105
|
+
"@multiplatform.one/test-utils": "7.81.2",
|
|
106
106
|
"@tamagui/build": "2.7.6",
|
|
107
107
|
"@testing-library/jest-dom": "^7.0.1",
|
|
108
108
|
"@testing-library/react": "^16.3.3",
|
|
@@ -92,15 +92,15 @@ describe("FrappeListView card slot", () => {
|
|
|
92
92
|
|
|
93
93
|
it("offers the card grid in the view switcher only when a slot is given", async () => {
|
|
94
94
|
const { unmount } = renderCards(createRosterFixtures(), { viewMode: undefined });
|
|
95
|
-
await waitFor(() => expect(screen.
|
|
95
|
+
await waitFor(() => expect(screen.getByLabelText("Cards")).toBeTruthy());
|
|
96
96
|
unmount();
|
|
97
97
|
renderWithProviders(
|
|
98
98
|
<FrappeProvider baseURL={host} fixtures={createRosterFixtures()}>
|
|
99
99
|
<FrappeListView<RosterPokemon> doctype="Pokemon" fields={rosterPokemonFields} />
|
|
100
100
|
</FrappeProvider>,
|
|
101
101
|
);
|
|
102
|
-
await waitFor(() => expect(screen.
|
|
103
|
-
expect(screen.
|
|
102
|
+
await waitFor(() => expect(screen.getByLabelText("Table")).toBeTruthy());
|
|
103
|
+
expect(screen.queryByLabelText("Cards")).toBeNull();
|
|
104
104
|
});
|
|
105
105
|
|
|
106
106
|
it("a grid asked for without a slot falls back to the list", async () => {
|
|
@@ -122,7 +122,7 @@ describe("FrappeListView card slot", () => {
|
|
|
122
122
|
const onViewModeChange = vi.fn();
|
|
123
123
|
renderCards(createRosterFixtures(), { onViewModeChange });
|
|
124
124
|
await waitFor(() => expect(screen.getByTestId("card-pikachu")).toBeTruthy());
|
|
125
|
-
fireEvent.click(screen.
|
|
125
|
+
fireEvent.click(screen.getByLabelText("Table"));
|
|
126
126
|
expect(onViewModeChange).toHaveBeenCalledWith("table");
|
|
127
127
|
expect(screen.getByTestId("card-pikachu")).toBeTruthy();
|
|
128
128
|
});
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { Card, Image } from "@multiplatform.one/components";
|
|
2
1
|
import { action } from "@multiplatform.one/storybook";
|
|
3
|
-
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
4
|
-
import { Text, YStack } from "tamagui";
|
|
5
2
|
import {
|
|
6
3
|
createRosterFixtures,
|
|
7
4
|
rosterPokemonFields,
|
|
@@ -10,6 +7,7 @@ import {
|
|
|
10
7
|
} from "../tests/fixtures/pokemonRoster";
|
|
11
8
|
import { FrappeListView } from "./FrappeListView";
|
|
12
9
|
import { FrappeProvider } from "./FrappeProvider";
|
|
10
|
+
import type { FrappeRecordLook } from "./list/recordLook";
|
|
13
11
|
|
|
14
12
|
export default {
|
|
15
13
|
title: "FrappeUI/FrappeListView Cards",
|
|
@@ -20,7 +18,7 @@ export default {
|
|
|
20
18
|
docs: {
|
|
21
19
|
description: {
|
|
22
20
|
component:
|
|
23
|
-
"FrappeListView's card grid: `
|
|
21
|
+
"FrappeListView's card grid: a record `look` draws each row of the doctype as the catalog RecordCard in the ImageGrid, while loading, empty and error stay the view's own states. Rows come from the pokemon fixtures (InMemoryFixtureProvider); DocType meta from an in-story fetch mock.",
|
|
24
22
|
},
|
|
25
23
|
},
|
|
26
24
|
},
|
|
@@ -49,24 +47,18 @@ const errorHost = "https://error.listview-cards.mock.test";
|
|
|
49
47
|
};
|
|
50
48
|
})();
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
</YStack>
|
|
65
|
-
</Card>
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const renderCard = (pokemon: Partial<RosterPokemon>) => <PokemonTile pokemon={pokemon} />;
|
|
50
|
+
// The catalog card (RecordCard): the sprite fills the tinted well, the name
|
|
51
|
+
// and the dex number share one line, the species is one muted line. Every
|
|
52
|
+
// line is clamped, so a row of tiles keeps one height (LC-179).
|
|
53
|
+
const pokemonLook: FrappeRecordLook<RosterPokemon> = {
|
|
54
|
+
title: (pokemon) =>
|
|
55
|
+
pokemon.pokemon_name
|
|
56
|
+
? pokemon.pokemon_name.charAt(0).toUpperCase() + pokemon.pokemon_name.slice(1)
|
|
57
|
+
: "",
|
|
58
|
+
code: (pokemon) => `#${String(pokemon.poke_id ?? 0).padStart(3, "0")}`,
|
|
59
|
+
subtitle: (pokemon) => pokemon.species,
|
|
60
|
+
images: (pokemon) => (pokemon.sprite_front ? [pokemon.sprite_front] : []),
|
|
61
|
+
};
|
|
70
62
|
|
|
71
63
|
export const CardGrid = () => (
|
|
72
64
|
<FrappeProvider baseURL={host} fixtures={createRosterFixtures()}>
|
|
@@ -74,7 +66,7 @@ export const CardGrid = () => (
|
|
|
74
66
|
doctype="Pokemon"
|
|
75
67
|
fields={rosterPokemonFields}
|
|
76
68
|
defaultViewMode="grid"
|
|
77
|
-
|
|
69
|
+
look={pokemonLook}
|
|
78
70
|
onItemClick={action("onItemClick")}
|
|
79
71
|
onAdd={action("onAdd")}
|
|
80
72
|
/>
|
|
@@ -87,7 +79,7 @@ export const CardGridInPage = () => (
|
|
|
87
79
|
doctype="Pokemon"
|
|
88
80
|
fields={rosterPokemonFields}
|
|
89
81
|
viewMode="grid"
|
|
90
|
-
|
|
82
|
+
look={pokemonLook}
|
|
91
83
|
showToolbar={false}
|
|
92
84
|
showSearch={false}
|
|
93
85
|
surface={false}
|
|
@@ -103,7 +95,7 @@ export const EmptyRoster = () => (
|
|
|
103
95
|
doctype="Pokemon"
|
|
104
96
|
fields={rosterPokemonFields}
|
|
105
97
|
viewMode="grid"
|
|
106
|
-
|
|
98
|
+
look={pokemonLook}
|
|
107
99
|
/>
|
|
108
100
|
</FrappeProvider>
|
|
109
101
|
);
|
|
@@ -122,7 +114,7 @@ export const PermissionDenied = () => (
|
|
|
122
114
|
doctype="Pokemon"
|
|
123
115
|
fields={rosterPokemonFields}
|
|
124
116
|
viewMode="grid"
|
|
125
|
-
|
|
117
|
+
look={pokemonLook}
|
|
126
118
|
/>
|
|
127
119
|
</FrappeProvider>
|
|
128
120
|
);
|
|
@@ -105,8 +105,6 @@ const fixtures = new InMemoryFixtureProvider({
|
|
|
105
105
|
|
|
106
106
|
// Grown-box escape mechanism: any negative margin atom on the press floor.
|
|
107
107
|
const negativeMarginAtom = /_m[trbl]--\d/;
|
|
108
|
-
// Painted state feedback: any non-transparent hover/press background atom.
|
|
109
|
-
const paintedStateAtom = /_bg-0(?:hover|active)-(?!transparent)/;
|
|
110
108
|
|
|
111
109
|
const renderListView = (props: Partial<Parameters<typeof FrappeListView>[0]> = {}) =>
|
|
112
110
|
renderWithProviders(
|
|
@@ -115,65 +113,58 @@ const renderListView = (props: Partial<Parameters<typeof FrappeListView>[0]> = {
|
|
|
115
113
|
</FrappeProvider>,
|
|
116
114
|
);
|
|
117
115
|
|
|
118
|
-
const
|
|
116
|
+
const addIn = async (container: HTMLElement) => {
|
|
119
117
|
await waitFor(() => {
|
|
120
|
-
expect(container.querySelector('[aria-label="
|
|
118
|
+
expect(container.querySelector('[aria-label="Add QaTodo"]')).not.toBeNull();
|
|
121
119
|
});
|
|
122
|
-
return container.querySelector('[aria-label="
|
|
120
|
+
return container.querySelector('[aria-label="Add QaTodo"]') as HTMLElement;
|
|
123
121
|
};
|
|
124
122
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
expect(
|
|
131
|
-
|
|
123
|
+
// LC-216: the toolbar has no Refresh control; LC-260: Add is a + glyph.
|
|
124
|
+
describe("FrappeListView toolbar press floor (LC-54 amendment)", () => {
|
|
125
|
+
it("draws no Refresh control (LC-216)", async () => {
|
|
126
|
+
const { container } = renderListView({ onAdd: vi.fn() });
|
|
127
|
+
await addIn(container);
|
|
128
|
+
expect(container.querySelector('[aria-label="Refresh"]')).toBeNull();
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it("the + keeps its token box and restores the press floor with slop", async () => {
|
|
132
|
+
const { container } = renderListView({ onAdd: vi.fn() });
|
|
133
|
+
const add = await addIn(container);
|
|
134
|
+
expect(add.getAttribute("role")).toBe("button");
|
|
135
|
+
expect(add.className).not.toMatch(negativeMarginAtom);
|
|
136
|
+
const token = add.getAttribute("data-size-token") as SizeTokens;
|
|
132
137
|
const px = Number(getVariableValue(getSize(token)));
|
|
133
138
|
// LC-176: the bare glyph sits in a square box at its control height, inside
|
|
134
139
|
// the token box, and slop restores the 44pt press floor.
|
|
135
|
-
const box = Number(/(?:^| )_mih-(\d+)px/.exec(
|
|
136
|
-
expect(
|
|
140
|
+
const box = Number(/(?:^| )_mih-(\d+)px/.exec(add.className)?.[1]);
|
|
141
|
+
expect(add.className).toContain(`_miw-${box}px`);
|
|
137
142
|
expect(box).toBeGreaterThan(0);
|
|
138
143
|
expect(box).toBeLessThanOrEqual(px);
|
|
139
|
-
const slop = Number(
|
|
144
|
+
const slop = Number(add.getAttribute("data-mp-press-slop") ?? 0);
|
|
140
145
|
expect(box + slop * 2).toBeGreaterThanOrEqual(44);
|
|
141
146
|
});
|
|
142
147
|
|
|
143
|
-
it("
|
|
144
|
-
const { container } = renderListView();
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
it("keeps refresh inside the toolbar: the switcher side shrinks, the tools side never does (FZ-8521)", async () => {
|
|
153
|
-
const { container } = renderListView();
|
|
154
|
-
const refresh = await refreshIn(container);
|
|
155
|
-
let tools = refresh.parentElement as HTMLElement;
|
|
156
|
-
while (tools && !/(?:^| )_fs-0(?: |$)/.test(String(tools.className))) {
|
|
148
|
+
it("keeps the toolbar's switcher side shrinkable beside the + and never spreads the bar (FZ-8521)", async () => {
|
|
149
|
+
const { container } = renderListView({ onAdd: vi.fn() });
|
|
150
|
+
let tools = (await addIn(container)) as HTMLElement;
|
|
151
|
+
while (
|
|
152
|
+
tools &&
|
|
153
|
+
!/_miw-0px/.test(String((tools.previousElementSibling as HTMLElement | null)?.className))
|
|
154
|
+
) {
|
|
157
155
|
tools = tools.parentElement as HTMLElement;
|
|
158
156
|
}
|
|
159
157
|
expect(tools).toBeTruthy();
|
|
160
|
-
const switcherSide = tools.previousElementSibling as HTMLElement;
|
|
161
158
|
const bar = tools.parentElement as HTMLElement;
|
|
162
|
-
expect(tools.className).toContain("_fs-0");
|
|
163
|
-
expect(switcherSide.className).toContain("_fs-1");
|
|
164
|
-
expect(switcherSide.className).toContain("_fg-1");
|
|
165
|
-
expect(switcherSide.className).toMatch(/_miw-0px/);
|
|
166
159
|
expect(bar.className).not.toContain("_jc-space-between");
|
|
167
160
|
});
|
|
168
161
|
|
|
169
|
-
it("the
|
|
162
|
+
it("the + is a glyph named by its label, and it activates (LC-260)", async () => {
|
|
170
163
|
const onAdd = vi.fn();
|
|
171
164
|
const { container } = renderListView({ onAdd });
|
|
172
|
-
await
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
) as HTMLElement;
|
|
176
|
-
expect(add).not.toBeNull();
|
|
165
|
+
const add = await addIn(container);
|
|
166
|
+
expect(add.querySelector("svg")).not.toBeNull();
|
|
167
|
+
expect(add.textContent?.trim()).toBe("");
|
|
177
168
|
fireEvent.click(add);
|
|
178
169
|
expect(onAdd).toHaveBeenCalledTimes(1);
|
|
179
170
|
});
|
package/src/FrappeListView.tsx
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { useDocTypeMeta } from "@multiplatform.one/frappe";
|
|
2
2
|
import type { DataTableColumn } from "@multiplatform.one/table";
|
|
3
3
|
import {
|
|
4
|
-
ArrowsClockwiseIcon,
|
|
5
4
|
DiceFiveIcon,
|
|
6
5
|
HeartIcon,
|
|
7
6
|
ImageIcon,
|
|
@@ -1038,6 +1037,9 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
|
|
|
1038
1037
|
panelId: `${slug}-shuffle-panel`,
|
|
1039
1038
|
}
|
|
1040
1039
|
: undefined;
|
|
1040
|
+
// LC-169: the card grid's tiles are the cards, so the grid sits on the
|
|
1041
|
+
// page ground instead of inside a second card.
|
|
1042
|
+
const framed = surface && viewMode !== "grid";
|
|
1041
1043
|
const controlsProps: ListControlsProps = {
|
|
1042
1044
|
controls: listControls,
|
|
1043
1045
|
list,
|
|
@@ -1214,54 +1216,49 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
|
|
|
1214
1216
|
);
|
|
1215
1217
|
}
|
|
1216
1218
|
|
|
1219
|
+
// Compact chrome: from `medium` up the search joins the toolbar row at the
|
|
1220
|
+
// DataTable search measure instead of spanning the page on its own row.
|
|
1221
|
+
const inlineSearch =
|
|
1222
|
+
showToolbar &&
|
|
1223
|
+
!compact &&
|
|
1224
|
+
showSearch &&
|
|
1225
|
+
!hasControls &&
|
|
1226
|
+
(viewMode === "list" || viewMode === "grid");
|
|
1217
1227
|
const renderToolbar = () => {
|
|
1218
1228
|
if (!showToolbar) return null;
|
|
1219
1229
|
|
|
1220
1230
|
return (
|
|
1221
1231
|
<XStack
|
|
1222
|
-
{...knobProps.panelPadding}
|
|
1232
|
+
{...(framed ? knobProps.panelPadding : { paddingBottom: knobProps.gap.gap })}
|
|
1223
1233
|
{...knobProps.gap}
|
|
1224
1234
|
alignItems="center"
|
|
1225
1235
|
// Frame owns SF-CARD; this band is flattened (zero box border, one
|
|
1226
1236
|
// bottom hairline) so it does not paint a second surface.
|
|
1227
1237
|
borderWidth={0}
|
|
1228
|
-
borderBottomWidth={1}
|
|
1238
|
+
borderBottomWidth={framed ? 1 : 0}
|
|
1229
1239
|
borderBottomColor="$borderColor"
|
|
1230
1240
|
>
|
|
1231
|
-
<XStack alignItems="center"
|
|
1241
|
+
<XStack alignItems="center" flex={1} minWidth={0} {...knobProps.gap}>
|
|
1232
1242
|
<ViewSwitcher
|
|
1233
|
-
views={
|
|
1234
|
-
...(hasCards ? [{ type: "grid", label: t("Cards") }] : []),
|
|
1235
|
-
{ type: "list", label: t("List") },
|
|
1236
|
-
{ type: "table", label: t("Table") },
|
|
1237
|
-
]}
|
|
1243
|
+
views={viewChoices.map((choice) => ({ ...choice, iconOnly: true }))}
|
|
1238
1244
|
currentView={viewMode}
|
|
1239
1245
|
onViewChange={(v) => setViewMode(v as ListViewMode)}
|
|
1240
1246
|
/>
|
|
1247
|
+
{inlineSearch ? (
|
|
1248
|
+
<View flex={1} minWidth={0} maxWidth={320}>
|
|
1249
|
+
{renderSearchInput()}
|
|
1250
|
+
</View>
|
|
1251
|
+
) : null}
|
|
1241
1252
|
</XStack>
|
|
1242
1253
|
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
<Button
|
|
1250
|
-
size="$2"
|
|
1251
|
-
chromeless
|
|
1252
|
-
icon={ArrowsClockwiseIcon}
|
|
1253
|
-
onPress={handleRefresh}
|
|
1254
|
-
aria-label={t("Refresh")}
|
|
1254
|
+
{onAdd ? (
|
|
1255
|
+
<ActionButton
|
|
1256
|
+
kind="add"
|
|
1257
|
+
accentInk
|
|
1258
|
+
label={t("Add {{doctype}}", { doctype })}
|
|
1259
|
+
onPress={onAdd}
|
|
1255
1260
|
/>
|
|
1256
|
-
|
|
1257
|
-
<ActionButton
|
|
1258
|
-
kind="add"
|
|
1259
|
-
accentInk
|
|
1260
|
-
label={t("Add {{doctype}}", { doctype })}
|
|
1261
|
-
onPress={onAdd}
|
|
1262
|
-
/>
|
|
1263
|
-
)}
|
|
1264
|
-
</XStack>
|
|
1261
|
+
) : null}
|
|
1265
1262
|
</XStack>
|
|
1266
1263
|
);
|
|
1267
1264
|
};
|
|
@@ -1325,24 +1322,28 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
|
|
|
1325
1322
|
|
|
1326
1323
|
// Catalog SearchInput (census item 6) so list and table mode search share
|
|
1327
1324
|
// one control anatomy; it owns the debounce that drives the server `like`.
|
|
1325
|
+
const renderSearchInput = () => (
|
|
1326
|
+
<View id={searchId}>
|
|
1327
|
+
<SearchInput
|
|
1328
|
+
value={searchText}
|
|
1329
|
+
onChange={setSearchText}
|
|
1330
|
+
onSearch={setDebouncedSearch}
|
|
1331
|
+
debounceMs={300}
|
|
1332
|
+
placeholder={t("Search...")}
|
|
1333
|
+
aria-label={t("Search {{doctype}}", { doctype })}
|
|
1334
|
+
size="$3"
|
|
1335
|
+
/>
|
|
1336
|
+
</View>
|
|
1337
|
+
);
|
|
1338
|
+
|
|
1328
1339
|
const renderListSearch = () => (
|
|
1329
1340
|
<XStack
|
|
1330
1341
|
alignItems="center"
|
|
1331
|
-
{...knobProps.panelPadding}
|
|
1332
|
-
borderBottomWidth={1}
|
|
1342
|
+
{...(framed ? knobProps.panelPadding : { paddingBottom: knobProps.gap.gap })}
|
|
1343
|
+
borderBottomWidth={framed ? 1 : 0}
|
|
1333
1344
|
borderBottomColor="$borderColor"
|
|
1334
1345
|
>
|
|
1335
|
-
<View flex={1}
|
|
1336
|
-
<SearchInput
|
|
1337
|
-
value={searchText}
|
|
1338
|
-
onChange={setSearchText}
|
|
1339
|
-
onSearch={setDebouncedSearch}
|
|
1340
|
-
debounceMs={300}
|
|
1341
|
-
placeholder={t("Search...")}
|
|
1342
|
-
aria-label={t("Search {{doctype}}", { doctype })}
|
|
1343
|
-
size="$3"
|
|
1344
|
-
/>
|
|
1345
|
-
</View>
|
|
1346
|
+
<View flex={1}>{renderSearchInput()}</View>
|
|
1346
1347
|
</XStack>
|
|
1347
1348
|
);
|
|
1348
1349
|
|
|
@@ -1351,7 +1352,7 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
|
|
|
1351
1352
|
const isGrid = viewMode === "grid";
|
|
1352
1353
|
return (
|
|
1353
1354
|
<YStack flex={isGrid ? undefined : 1}>
|
|
1354
|
-
{showSearch && !hasControls ? renderListSearch() : null}
|
|
1355
|
+
{showSearch && !hasControls && !inlineSearch ? renderListSearch() : null}
|
|
1355
1356
|
<FrappeList
|
|
1356
1357
|
key={`${viewMode}-${refreshKey}`}
|
|
1357
1358
|
layout={isGrid ? "grid" : "list"}
|
|
@@ -1433,12 +1434,12 @@ function FrappeListViewBody<TDoc extends { name: string; doctype: string }>({
|
|
|
1433
1434
|
return asPage(
|
|
1434
1435
|
<YStack
|
|
1435
1436
|
flex={viewMode === "grid" ? undefined : 1}
|
|
1436
|
-
{...(
|
|
1437
|
-
{...(
|
|
1437
|
+
{...(framed ? knobProps.surface : {})}
|
|
1438
|
+
{...(framed ? knobProps.containerRadius : {})}
|
|
1438
1439
|
// No overflow clip on the card: it would cut the rows the page scroll
|
|
1439
1440
|
// must reach. The radius is the container cap — rows round only at the
|
|
1440
1441
|
// group's outer corners, capped at the row padding (DG-RAD-04).
|
|
1441
|
-
{...(
|
|
1442
|
+
{...(framed ? containerCapProps("PageSection", knobProps.borderRadius.borderRadius) : {})}
|
|
1442
1443
|
testID={`${doctype.toLowerCase()}-list`}
|
|
1443
1444
|
{...(hasControls ? { id: resultsId } : {})}
|
|
1444
1445
|
{...stackProps}
|
package/src/list/RecordCard.tsx
CHANGED
|
@@ -206,21 +206,13 @@ export function RecordCard({
|
|
|
206
206
|
})}
|
|
207
207
|
>
|
|
208
208
|
<XStack gap="$2" alignItems="baseline">
|
|
209
|
-
<Text
|
|
210
|
-
{...knobProps.heading}
|
|
211
|
-
fontWeight="700"
|
|
212
|
-
fontSize="$4"
|
|
213
|
-
numberOfLines={1}
|
|
214
|
-
color="$color12"
|
|
215
|
-
flexShrink={1}
|
|
216
|
-
>
|
|
209
|
+
<Text {...knobProps.textRole.headline} numberOfLines={1} flexShrink={1} minWidth={0}>
|
|
217
210
|
{title}
|
|
218
211
|
</Text>
|
|
219
212
|
{code ? (
|
|
220
213
|
<Text
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
color="$color10"
|
|
214
|
+
{...knobProps.textRole.caption}
|
|
215
|
+
{...knobProps.typography.tabular}
|
|
224
216
|
flexShrink={0}
|
|
225
217
|
{...({ "data-record-card-code": "" } as Record<string, unknown>)}
|
|
226
218
|
>
|
|
@@ -229,12 +221,12 @@ export function RecordCard({
|
|
|
229
221
|
) : null}
|
|
230
222
|
</XStack>
|
|
231
223
|
{subtitle ? (
|
|
232
|
-
<Text {...knobProps.
|
|
224
|
+
<Text {...knobProps.textRole.meta} numberOfLines={1}>
|
|
233
225
|
{subtitle}
|
|
234
226
|
</Text>
|
|
235
227
|
) : null}
|
|
236
228
|
{badges.length > 0 ? (
|
|
237
|
-
<XStack gap="$1.5" flexWrap="
|
|
229
|
+
<XStack gap="$1.5" flexWrap="nowrap" overflow="hidden">
|
|
238
230
|
{badges.map((badge) => (
|
|
239
231
|
<FacetBadge key={badge.value} label={badge.label} tint={badge.tint} size="$3" />
|
|
240
232
|
))}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrappeListView.d.ts","sourceRoot":"","sources":["../src/FrappeListView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"FrappeListView.d.ts","sourceRoot":"","sources":["../src/FrappeListView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordCard.d.ts","sourceRoot":"","sources":["../../src/list/RecordCard.tsx"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IACnD,qDAAqD;IACrD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,MAAW,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,IAAY,EACZ,MAAM,EACN,cAAc,GACf,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"RecordCard.d.ts","sourceRoot":"","sources":["../../src/list/RecordCard.tsx"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IACnD,qDAAqD;IACrD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,MAAW,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,IAAY,EACZ,MAAM,EACN,cAAc,GACf,EAAE,eAAe,2CAqJjB"}
|