@rttui/skin-anocca 1.0.16 → 1.0.18
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/HeaderPinButtons.cjs +109 -0
- package/dist/cjs/HeaderPinButtons.cjs.map +10 -0
- package/dist/cjs/RowPinButtons.cjs +75 -0
- package/dist/cjs/RowPinButtons.cjs.map +10 -0
- package/dist/cjs/index.cjs +383 -0
- package/dist/cjs/index.cjs.map +10 -0
- package/dist/cjs/package.json +5 -0
- package/dist/cjs/stories/ReactTanstackTableUiStory.stories.cjs +276 -0
- package/dist/cjs/stories/ReactTanstackTableUiStory.stories.cjs.map +10 -0
- package/dist/cjs/stories/ReactTanstackTableUiStoryComponent.cjs +186 -0
- package/dist/cjs/stories/ReactTanstackTableUiStoryComponent.cjs.map +10 -0
- package/dist/cjs/stories/createSourceCode.cjs +92 -0
- package/dist/cjs/stories/createSourceCode.cjs.map +10 -0
- package/dist/mjs/HeaderPinButtons.mjs +79 -0
- package/dist/mjs/HeaderPinButtons.mjs.map +10 -0
- package/dist/mjs/RowPinButtons.mjs +45 -0
- package/dist/mjs/RowPinButtons.mjs.map +10 -0
- package/dist/mjs/index.mjs +352 -0
- package/dist/mjs/index.mjs.map +10 -0
- package/dist/mjs/package.json +5 -0
- package/dist/mjs/stories/ReactTanstackTableUiStory.stories.mjs +246 -0
- package/dist/mjs/stories/ReactTanstackTableUiStory.stories.mjs.map +10 -0
- package/dist/mjs/stories/ReactTanstackTableUiStoryComponent.mjs +155 -0
- package/dist/mjs/stories/ReactTanstackTableUiStoryComponent.mjs.map +10 -0
- package/{src/stories/createSourceCode.ts → dist/mjs/stories/createSourceCode.mjs} +13 -4
- package/dist/mjs/stories/createSourceCode.mjs.map +10 -0
- package/dist/types/HeaderPinButtons.d.ts +1 -0
- package/dist/types/RowPinButtons.d.ts +4 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/stories/ReactTanstackTableUiStory.stories.d.ts +78 -0
- package/dist/types/stories/ReactTanstackTableUiStoryComponent.d.ts +17 -0
- package/dist/types/stories/createSourceCode.d.ts +5 -0
- package/package.json +5 -2
- package/.storybook/main.ts +0 -18
- package/.storybook/preview.ts +0 -14
- package/CHANGELOG.md +0 -126
- package/index.html +0 -13
- package/src/HeaderPinButtons.tsx +0 -81
- package/src/RowPinButtons.tsx +0 -40
- package/src/index.tsx +0 -460
- package/src/stories/ReactTanstackTableUiStory.mdx +0 -147
- package/src/stories/ReactTanstackTableUiStory.stories.tsx +0 -207
- package/src/stories/ReactTanstackTableUiStoryComponent.tsx +0 -113
- package/src/stories/ScrollbarWidthSpecified.mdx +0 -42
- package/tsconfig.json +0 -34
- package/tsconfig.types.json +0 -9
- package/vite.config.ts +0 -23
@@ -0,0 +1,246 @@
|
|
1
|
+
// packages/skin-anocca/src/stories/ReactTanstackTableUiStory.stories.tsx
|
2
|
+
import { getCoreRowModel } from "@tanstack/react-table";
|
3
|
+
import { AnoccaSkin } from "..";
|
4
|
+
import { ReactTanstackTableUi } from "./ReactTanstackTableUiStoryComponent.mjs";
|
5
|
+
import { createSourceCode } from "./createSourceCode.mjs";
|
6
|
+
var meta = {
|
7
|
+
title: "ReactTanstackTableUi",
|
8
|
+
component: ReactTanstackTableUi,
|
9
|
+
parameters: {
|
10
|
+
layout: "centered"
|
11
|
+
},
|
12
|
+
argTypes: {
|
13
|
+
data: { control: "select" },
|
14
|
+
columns: { control: "select" },
|
15
|
+
pinColsRelativeTo: { control: "select", options: ["cols", "table"] },
|
16
|
+
skin: {
|
17
|
+
control: "object",
|
18
|
+
table: { disable: true }
|
19
|
+
}
|
20
|
+
},
|
21
|
+
args: {
|
22
|
+
width: 600,
|
23
|
+
height: 400,
|
24
|
+
skin: AnoccaSkin,
|
25
|
+
autoCrushColumns: false,
|
26
|
+
data: "big",
|
27
|
+
columns: "few",
|
28
|
+
getCoreRowModel: getCoreRowModel(),
|
29
|
+
pinColsRelativeTo: "cols",
|
30
|
+
fillAvailableSpaceAfterCrush: false,
|
31
|
+
scrollbarWidth: 16,
|
32
|
+
getRowId: (row) => row.id
|
33
|
+
}
|
34
|
+
};
|
35
|
+
var ReactTanstackTableUiStory_stories_default = meta;
|
36
|
+
var Basic = {
|
37
|
+
args: {
|
38
|
+
enableColumnPinning: true,
|
39
|
+
autoCrushColumns: false,
|
40
|
+
fillAvailableSpaceAfterCrush: false,
|
41
|
+
pinColsRelativeTo: "cols"
|
42
|
+
},
|
43
|
+
parameters: {
|
44
|
+
docs: {
|
45
|
+
source: { language: "tsx", code: createSourceCode() }
|
46
|
+
}
|
47
|
+
}
|
48
|
+
};
|
49
|
+
var AutoCrushColumns = {
|
50
|
+
args: {
|
51
|
+
autoCrushColumns: true
|
52
|
+
},
|
53
|
+
parameters: {
|
54
|
+
docs: {
|
55
|
+
source: {
|
56
|
+
language: "tsx",
|
57
|
+
code: createSourceCode({ props: " autoCrushColumns" })
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
};
|
62
|
+
var AutoCrushColumnsExceptName = {
|
63
|
+
args: {
|
64
|
+
autoCrushColumns: true,
|
65
|
+
enableColumnPinning: true,
|
66
|
+
meta: {
|
67
|
+
name: {
|
68
|
+
autoCrush: false
|
69
|
+
}
|
70
|
+
}
|
71
|
+
},
|
72
|
+
parameters: {
|
73
|
+
docs: {
|
74
|
+
source: {
|
75
|
+
language: "tsx",
|
76
|
+
code: createSourceCode({
|
77
|
+
props: " autoCrushColumns",
|
78
|
+
nameMeta: " autoCrush: false,"
|
79
|
+
})
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
83
|
+
};
|
84
|
+
var PinRelativeToCols = {
|
85
|
+
args: {
|
86
|
+
autoCrushColumns: true,
|
87
|
+
pinColsRelativeTo: "cols",
|
88
|
+
enableColumnPinning: true,
|
89
|
+
initialState: {
|
90
|
+
columnPinning: {
|
91
|
+
right: ["city"]
|
92
|
+
}
|
93
|
+
}
|
94
|
+
}
|
95
|
+
};
|
96
|
+
var PinRelativeToTable = {
|
97
|
+
args: {
|
98
|
+
autoCrushColumns: true,
|
99
|
+
pinColsRelativeTo: "table",
|
100
|
+
enableColumnPinning: true,
|
101
|
+
initialState: {
|
102
|
+
columnPinning: {
|
103
|
+
right: ["city"]
|
104
|
+
}
|
105
|
+
}
|
106
|
+
}
|
107
|
+
};
|
108
|
+
var FillAvailableSpaceAfterCrush = {
|
109
|
+
args: {
|
110
|
+
autoCrushColumns: true,
|
111
|
+
fillAvailableSpaceAfterCrush: true
|
112
|
+
}
|
113
|
+
};
|
114
|
+
var FillAvailableSpaceAfterCrushExceptName = {
|
115
|
+
args: {
|
116
|
+
autoCrushColumns: true,
|
117
|
+
fillAvailableSpaceAfterCrush: true,
|
118
|
+
meta: {
|
119
|
+
name: {
|
120
|
+
fillAvailableSpaceAfterCrush: false
|
121
|
+
}
|
122
|
+
}
|
123
|
+
},
|
124
|
+
parameters: {
|
125
|
+
docs: {
|
126
|
+
source: {
|
127
|
+
language: "tsx",
|
128
|
+
code: createSourceCode({
|
129
|
+
props: ` autoCrushColumns
|
130
|
+
fillAvailableSpaceAfterCrush`,
|
131
|
+
nameMeta: " fillAvailableSpaceAfterCrush: false,"
|
132
|
+
})
|
133
|
+
}
|
134
|
+
}
|
135
|
+
}
|
136
|
+
};
|
137
|
+
var FillAvailableSpaceAfterCrushWithTwoHeaderRows = {
|
138
|
+
args: {
|
139
|
+
autoCrushColumns: true,
|
140
|
+
fillAvailableSpaceAfterCrush: true,
|
141
|
+
withTwoHeaderRows: true
|
142
|
+
}
|
143
|
+
};
|
144
|
+
var FillAvailableSpaceAfterCrushWithHeaderGroups = {
|
145
|
+
args: {
|
146
|
+
autoCrushColumns: true,
|
147
|
+
fillAvailableSpaceAfterCrush: true,
|
148
|
+
withHeaderGroups: true
|
149
|
+
}
|
150
|
+
};
|
151
|
+
var FillAvailableSpaceAfterCrushWithHeaderGroupsExceptName = {
|
152
|
+
args: {
|
153
|
+
autoCrushColumns: true,
|
154
|
+
fillAvailableSpaceAfterCrush: true,
|
155
|
+
withHeaderGroups: true,
|
156
|
+
meta: {
|
157
|
+
name: {
|
158
|
+
fillAvailableSpaceAfterCrush: false
|
159
|
+
}
|
160
|
+
}
|
161
|
+
}
|
162
|
+
};
|
163
|
+
var FillAvailableSpaceAfterCrushWithTwoHeaderRowsExceptName = {
|
164
|
+
args: {
|
165
|
+
autoCrushColumns: true,
|
166
|
+
fillAvailableSpaceAfterCrush: true,
|
167
|
+
withTwoHeaderRows: true,
|
168
|
+
meta: {
|
169
|
+
name: {
|
170
|
+
fillAvailableSpaceAfterCrush: false
|
171
|
+
}
|
172
|
+
}
|
173
|
+
}
|
174
|
+
};
|
175
|
+
var FillAvailableSpaceAfterCrushWithoutSpecifiedScrollbarWidth = {
|
176
|
+
args: {
|
177
|
+
autoCrushColumns: true,
|
178
|
+
fillAvailableSpaceAfterCrush: true,
|
179
|
+
scrollbarWidth: 0
|
180
|
+
}
|
181
|
+
};
|
182
|
+
var CanPinRowsRelativeToRows = {
|
183
|
+
args: {
|
184
|
+
enableRowPinning: true,
|
185
|
+
enableColumnPinning: true,
|
186
|
+
data: "small",
|
187
|
+
pinRowsRelativeTo: "rows",
|
188
|
+
initialState: {
|
189
|
+
rowPinning: {
|
190
|
+
bottom: ["3"]
|
191
|
+
}
|
192
|
+
}
|
193
|
+
}
|
194
|
+
};
|
195
|
+
var CanPinRowsRelativeToTable = {
|
196
|
+
args: {
|
197
|
+
enableRowPinning: true,
|
198
|
+
enableColumnPinning: true,
|
199
|
+
data: "small",
|
200
|
+
pinRowsRelativeTo: "table",
|
201
|
+
initialState: {
|
202
|
+
rowPinning: {
|
203
|
+
bottom: ["3"]
|
204
|
+
}
|
205
|
+
}
|
206
|
+
}
|
207
|
+
};
|
208
|
+
var SizeByLargestHeader = {
|
209
|
+
args: {
|
210
|
+
autoCrushColumns: true,
|
211
|
+
crushMinSizeBy: "cell"
|
212
|
+
}
|
213
|
+
};
|
214
|
+
var SizeByLargestHeaderWithMeta = {
|
215
|
+
args: {
|
216
|
+
autoCrushColumns: true,
|
217
|
+
crushMinSizeBy: "header",
|
218
|
+
enableColumnPinning: true,
|
219
|
+
meta: {
|
220
|
+
age: {
|
221
|
+
crushMinSizeBy: "cell"
|
222
|
+
}
|
223
|
+
}
|
224
|
+
}
|
225
|
+
};
|
226
|
+
export {
|
227
|
+
ReactTanstackTableUiStory_stories_default as default,
|
228
|
+
SizeByLargestHeaderWithMeta,
|
229
|
+
SizeByLargestHeader,
|
230
|
+
PinRelativeToTable,
|
231
|
+
PinRelativeToCols,
|
232
|
+
FillAvailableSpaceAfterCrushWithoutSpecifiedScrollbarWidth,
|
233
|
+
FillAvailableSpaceAfterCrushWithTwoHeaderRowsExceptName,
|
234
|
+
FillAvailableSpaceAfterCrushWithTwoHeaderRows,
|
235
|
+
FillAvailableSpaceAfterCrushWithHeaderGroupsExceptName,
|
236
|
+
FillAvailableSpaceAfterCrushWithHeaderGroups,
|
237
|
+
FillAvailableSpaceAfterCrushExceptName,
|
238
|
+
FillAvailableSpaceAfterCrush,
|
239
|
+
CanPinRowsRelativeToTable,
|
240
|
+
CanPinRowsRelativeToRows,
|
241
|
+
Basic,
|
242
|
+
AutoCrushColumnsExceptName,
|
243
|
+
AutoCrushColumns
|
244
|
+
};
|
245
|
+
|
246
|
+
//# debugId=52C942491A55526164756E2164756E21
|
@@ -0,0 +1,10 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../src/stories/ReactTanstackTableUiStory.stories.tsx"],
|
4
|
+
"sourcesContent": [
|
5
|
+
"import type { Meta, StoryObj } from \"@storybook/react\";\n\nimport { getCoreRowModel } from \"@tanstack/react-table\";\nimport { AnoccaSkin } from \"..\";\nimport { ReactTanstackTableUi } from \"./ReactTanstackTableUiStoryComponent.mjs\";\nimport { createSourceCode } from \"./createSourceCode.mjs\";\n\n// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export\nconst meta = {\n title: \"ReactTanstackTableUi\",\n component: ReactTanstackTableUi,\n parameters: {\n // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout\n layout: \"centered\",\n },\n // More on argTypes: https://storybook.js.org/docs/api/argtypes\n argTypes: {\n data: { control: \"select\" },\n columns: { control: \"select\" },\n pinColsRelativeTo: { control: \"select\", options: [\"cols\", \"table\"] },\n skin: {\n control: \"object\",\n table: { disable: true },\n },\n },\n // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args\n args: {\n width: 600,\n height: 400,\n skin: AnoccaSkin,\n autoCrushColumns: false,\n data: \"big\",\n columns: \"few\",\n getCoreRowModel: getCoreRowModel(),\n pinColsRelativeTo: \"cols\",\n fillAvailableSpaceAfterCrush: false,\n scrollbarWidth: 16,\n getRowId: (row) => row.id,\n },\n} satisfies Meta<typeof ReactTanstackTableUi>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Basic: Story = {\n args: {\n enableColumnPinning: true,\n autoCrushColumns: false,\n fillAvailableSpaceAfterCrush: false,\n pinColsRelativeTo: \"cols\",\n },\n parameters: {\n docs: {\n source: { language: \"tsx\", code: createSourceCode() },\n },\n },\n};\n\nexport const AutoCrushColumns: Story = {\n args: {\n autoCrushColumns: true,\n },\n parameters: {\n docs: {\n source: {\n language: \"tsx\",\n code: createSourceCode({ props: \" autoCrushColumns\" }),\n },\n },\n },\n};\n\nexport const AutoCrushColumnsExceptName: Story = {\n args: {\n autoCrushColumns: true,\n enableColumnPinning: true,\n meta: {\n name: {\n autoCrush: false,\n },\n },\n },\n parameters: {\n docs: {\n source: {\n language: \"tsx\",\n code: createSourceCode({\n props: \" autoCrushColumns\",\n nameMeta: \" autoCrush: false,\",\n }),\n },\n },\n },\n};\n\nexport const PinRelativeToCols: Story = {\n args: {\n autoCrushColumns: true,\n pinColsRelativeTo: \"cols\",\n enableColumnPinning: true,\n initialState: {\n columnPinning: {\n right: [\"city\"],\n },\n },\n },\n};\n\nexport const PinRelativeToTable: Story = {\n args: {\n autoCrushColumns: true,\n pinColsRelativeTo: \"table\",\n enableColumnPinning: true,\n initialState: {\n columnPinning: {\n right: [\"city\"],\n },\n },\n },\n};\n\nexport const FillAvailableSpaceAfterCrush: Story = {\n args: {\n autoCrushColumns: true,\n fillAvailableSpaceAfterCrush: true,\n },\n};\n\nexport const FillAvailableSpaceAfterCrushExceptName: Story = {\n args: {\n autoCrushColumns: true,\n fillAvailableSpaceAfterCrush: true,\n meta: {\n name: {\n fillAvailableSpaceAfterCrush: false,\n },\n },\n },\n parameters: {\n docs: {\n source: {\n language: \"tsx\",\n code: createSourceCode({\n props: \" autoCrushColumns\\n fillAvailableSpaceAfterCrush\",\n nameMeta: \" fillAvailableSpaceAfterCrush: false,\",\n }),\n },\n },\n },\n};\n\nexport const FillAvailableSpaceAfterCrushWithTwoHeaderRows: Story = {\n args: {\n autoCrushColumns: true,\n fillAvailableSpaceAfterCrush: true,\n withTwoHeaderRows: true,\n },\n};\nexport const FillAvailableSpaceAfterCrushWithHeaderGroups: Story = {\n args: {\n autoCrushColumns: true,\n fillAvailableSpaceAfterCrush: true,\n withHeaderGroups: true,\n },\n};\nexport const FillAvailableSpaceAfterCrushWithHeaderGroupsExceptName: Story = {\n args: {\n autoCrushColumns: true,\n fillAvailableSpaceAfterCrush: true,\n withHeaderGroups: true,\n meta: {\n name: {\n fillAvailableSpaceAfterCrush: false,\n },\n },\n },\n};\n\nexport const FillAvailableSpaceAfterCrushWithTwoHeaderRowsExceptName: Story = {\n args: {\n autoCrushColumns: true,\n fillAvailableSpaceAfterCrush: true,\n withTwoHeaderRows: true,\n meta: {\n name: {\n fillAvailableSpaceAfterCrush: false,\n },\n },\n },\n};\n\n\nexport const FillAvailableSpaceAfterCrushWithoutSpecifiedScrollbarWidth: Story =\n {\n args: {\n autoCrushColumns: true,\n fillAvailableSpaceAfterCrush: true,\n scrollbarWidth: 0,\n },\n };\n\nexport const CanPinRowsRelativeToRows: Story = {\n args: {\n enableRowPinning: true,\n enableColumnPinning: true,\n data: \"small\",\n pinRowsRelativeTo: \"rows\",\n initialState: {\n rowPinning: {\n bottom: [\"3\"],\n },\n },\n },\n};\n\nexport const CanPinRowsRelativeToTable: Story = {\n args: {\n enableRowPinning: true,\n enableColumnPinning: true,\n data: \"small\",\n pinRowsRelativeTo: \"table\",\n initialState: {\n rowPinning: {\n bottom: [\"3\"],\n },\n },\n },\n};\n\nexport const SizeByLargestHeader: Story = {\n args: {\n autoCrushColumns: true,\n crushMinSizeBy: \"cell\",\n },\n};\n\nexport const SizeByLargestHeaderWithMeta: Story = {\n args: {\n autoCrushColumns: true,\n crushMinSizeBy: \"header\",\n enableColumnPinning: true,\n meta: {\n age: {\n crushMinSizeBy: 'cell',\n },\n },\n },\n};\n"
|
6
|
+
],
|
7
|
+
"mappings": "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",
|
8
|
+
"debugId": "52C942491A55526164756E2164756E21",
|
9
|
+
"names": []
|
10
|
+
}
|
@@ -0,0 +1,155 @@
|
|
1
|
+
// packages/skin-anocca/src/stories/ReactTanstackTableUiStoryComponent.tsx
|
2
|
+
import {
|
3
|
+
Box,
|
4
|
+
ScopedCssBaseline,
|
5
|
+
TextField,
|
6
|
+
ThemeProvider,
|
7
|
+
Typography
|
8
|
+
} from "@mui/material";
|
9
|
+
import { useTheme } from "@mui/material/styles";
|
10
|
+
import {
|
11
|
+
decorateColumnHelper,
|
12
|
+
ReactTanstackTableUi as TableComponent
|
13
|
+
} from "@rttui/core";
|
14
|
+
import {
|
15
|
+
createColumnHelper,
|
16
|
+
useReactTable
|
17
|
+
} from "@tanstack/react-table";
|
18
|
+
import { HeaderPinButtons } from "../HeaderPinButtons.mjs";
|
19
|
+
import React from "react";
|
20
|
+
import { RowPinButtons } from "../RowPinButtons.mjs";
|
21
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
22
|
+
var smallData = [
|
23
|
+
{ id: "1", name: "John", age: 20, city: "New York" },
|
24
|
+
{ id: "2", name: "Jane", age: 21, city: "Los Angeles" },
|
25
|
+
{ id: "3", name: "Jim", age: 22, city: "Chicago" }
|
26
|
+
];
|
27
|
+
var bigData = Array.from({ length: 1000 }, (_, i) => ({
|
28
|
+
id: i.toString(),
|
29
|
+
name: `Person ${i}`,
|
30
|
+
age: 20 + i,
|
31
|
+
city: `City ${i}`,
|
32
|
+
...Object.fromEntries(Array.from({ length: 100 }, (_2, j) => [`col${j}`, `Value ${i}-${j}`]))
|
33
|
+
}));
|
34
|
+
var ReactTanstackTableUi = (props) => {
|
35
|
+
const theme = useTheme();
|
36
|
+
const data = props.data === "big" ? bigData : smallData;
|
37
|
+
const columns = React.useMemo(() => {
|
38
|
+
const columnHelper = decorateColumnHelper(createColumnHelper(), {
|
39
|
+
header: (original) => /* @__PURE__ */ jsxs(Box, {
|
40
|
+
sx: { display: "flex", gap: 2 },
|
41
|
+
children: [
|
42
|
+
original,
|
43
|
+
props.enableColumnPinning && /* @__PURE__ */ jsx(HeaderPinButtons, {})
|
44
|
+
]
|
45
|
+
})
|
46
|
+
});
|
47
|
+
const fewColumns = [
|
48
|
+
columnHelper.accessor("name", {
|
49
|
+
id: "name",
|
50
|
+
header: "Name",
|
51
|
+
cell: (info) => /* @__PURE__ */ jsxs(Box, {
|
52
|
+
sx: { display: "flex", gap: 2, flex: 1 },
|
53
|
+
children: [
|
54
|
+
/* @__PURE__ */ jsx(Typography, {
|
55
|
+
variant: "body2",
|
56
|
+
children: info.getValue()
|
57
|
+
}),
|
58
|
+
props.enableRowPinning && /* @__PURE__ */ jsx(Box, {
|
59
|
+
sx: { flexGrow: 1 }
|
60
|
+
}),
|
61
|
+
props.enableRowPinning && /* @__PURE__ */ jsx(RowPinButtons, {
|
62
|
+
row: info.row
|
63
|
+
})
|
64
|
+
]
|
65
|
+
}),
|
66
|
+
meta: props.meta?.["name"]
|
67
|
+
}),
|
68
|
+
columnHelper.accessor("age", {
|
69
|
+
id: "age",
|
70
|
+
header: "Age",
|
71
|
+
meta: props.meta?.["age"],
|
72
|
+
cell: (info) => /* @__PURE__ */ jsx(Typography, {
|
73
|
+
variant: "body2",
|
74
|
+
children: info.getValue()
|
75
|
+
}),
|
76
|
+
size: 50
|
77
|
+
}),
|
78
|
+
columnHelper.accessor("city", {
|
79
|
+
id: "city",
|
80
|
+
header: "City",
|
81
|
+
meta: props.meta?.["city"],
|
82
|
+
cell: (info) => /* @__PURE__ */ jsx(Typography, {
|
83
|
+
variant: "body2",
|
84
|
+
children: info.getValue()
|
85
|
+
})
|
86
|
+
})
|
87
|
+
];
|
88
|
+
const manyColumns = [
|
89
|
+
...fewColumns,
|
90
|
+
...Array.from({ length: 100 }, (_, i) => columnHelper.accessor(`col${i}`, {
|
91
|
+
id: `col${i}`,
|
92
|
+
header: `Column ${i}`,
|
93
|
+
cell: (info) => /* @__PURE__ */ jsx(Typography, {
|
94
|
+
variant: "body2",
|
95
|
+
children: info.getValue()
|
96
|
+
})
|
97
|
+
}))
|
98
|
+
];
|
99
|
+
const cols = props.columns === "few" ? fewColumns : manyColumns;
|
100
|
+
if (props.withHeaderGroups) {
|
101
|
+
cols.splice(0, 2, columnHelper.group({
|
102
|
+
id: `personal-info`,
|
103
|
+
header: "Personal Info",
|
104
|
+
columns: cols.slice(0, 2)
|
105
|
+
}));
|
106
|
+
}
|
107
|
+
if (props.withTwoHeaderRows) {
|
108
|
+
return cols.map((col) => {
|
109
|
+
const newCol = col.id ? {
|
110
|
+
...col,
|
111
|
+
id: col.id,
|
112
|
+
header: () => /* @__PURE__ */ jsx(TextField, {
|
113
|
+
placeholder: "Search...",
|
114
|
+
slotProps: {
|
115
|
+
input: { sx: { height: "20px", width: "150px" } }
|
116
|
+
}
|
117
|
+
})
|
118
|
+
} : undefined;
|
119
|
+
const subColumns = newCol ? [newCol] : [];
|
120
|
+
return columnHelper.group({
|
121
|
+
id: `group-${col.id}`,
|
122
|
+
header: col.header,
|
123
|
+
columns: subColumns
|
124
|
+
});
|
125
|
+
});
|
126
|
+
}
|
127
|
+
return cols;
|
128
|
+
}, [
|
129
|
+
props.columns,
|
130
|
+
props.enableColumnPinning,
|
131
|
+
props.enableRowPinning,
|
132
|
+
props.meta,
|
133
|
+
props.withTwoHeaderRows,
|
134
|
+
props.withHeaderGroups
|
135
|
+
]);
|
136
|
+
const table = useReactTable({
|
137
|
+
...props,
|
138
|
+
data,
|
139
|
+
columns
|
140
|
+
});
|
141
|
+
return /* @__PURE__ */ jsx(ScopedCssBaseline, {
|
142
|
+
children: /* @__PURE__ */ jsx(ThemeProvider, {
|
143
|
+
theme,
|
144
|
+
children: /* @__PURE__ */ jsx(TableComponent, {
|
145
|
+
...props,
|
146
|
+
table
|
147
|
+
})
|
148
|
+
})
|
149
|
+
});
|
150
|
+
};
|
151
|
+
export {
|
152
|
+
ReactTanstackTableUi
|
153
|
+
};
|
154
|
+
|
155
|
+
//# debugId=1AF1AFD066E5B64964756E2164756E21
|
@@ -0,0 +1,10 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../src/stories/ReactTanstackTableUiStoryComponent.tsx"],
|
4
|
+
"sourcesContent": [
|
5
|
+
"import {\n Box,\n ScopedCssBaseline,\n TextField,\n ThemeProvider,\n Typography,\n} from \"@mui/material\";\nimport { useTheme } from \"@mui/material/styles\";\nimport {\n decorateColumnHelper,\n ReactTanstackTableUi as TableComponent,\n} from \"@rttui/core\";\nimport {\n ColumnDef,\n ColumnMeta,\n createColumnHelper,\n Table,\n TableOptions,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { HeaderPinButtons } from \"../HeaderPinButtons.mjs\";\nimport React from \"react\";\nimport { RowPinButtons } from \"../RowPinButtons.mjs\";\ntype Person = {\n id: string;\n name: string;\n age: number;\n city: string;\n} & Record<`col${number}`, string>;\n\nconst smallData: Person[] = [\n { id: \"1\", name: \"John\", age: 20, city: \"New York\" },\n { id: \"2\", name: \"Jane\", age: 21, city: \"Los Angeles\" },\n { id: \"3\", name: \"Jim\", age: 22, city: \"Chicago\" },\n];\n\nconst bigData: Person[] = Array.from({ length: 1000 }, (_, i) => ({\n id: i.toString(),\n name: `Person ${i}`,\n age: 20 + i,\n city: `City ${i}`,\n ...Object.fromEntries(\n Array.from({ length: 100 }, (_, j) => [`col${j}`, `Value ${i}-${j}`]),\n ),\n}));\n\nexport const ReactTanstackTableUi = (\n props: {\n data: \"big\" | \"small\";\n columns: \"many\" | \"few\";\n meta?: Record<string, ColumnMeta<Person, string>>;\n withTwoHeaderRows?: boolean;\n withHeaderGroups?: boolean;\n } & Omit<TableOptions<Person>, \"data\" | \"columns\"> &\n Omit<React.ComponentProps<typeof TableComponent>, \"table\">,\n) => {\n const theme = useTheme();\n const data: Person[] = props.data === \"big\" ? bigData : smallData;\n\n const columns: ColumnDef<Person>[] = React.useMemo(() => {\n const columnHelper = decorateColumnHelper(createColumnHelper<Person>(), {\n header: (original) => (\n <Box sx={{ display: \"flex\", gap: 2 }}>\n {original}\n {props.enableColumnPinning && <HeaderPinButtons />}\n </Box>\n ),\n });\n\n const fewColumns: ColumnDef<Person>[] = [\n columnHelper.accessor(\"name\", {\n id: \"name\",\n header: \"Name\",\n cell: (info) => (\n <Box sx={{ display: \"flex\", gap: 2, flex: 1 }}>\n <Typography variant=\"body2\">{info.getValue()}</Typography>\n {props.enableRowPinning && <Box sx={{ flexGrow: 1 }} />}\n {props.enableRowPinning && <RowPinButtons row={info.row} />}\n </Box>\n ),\n meta: props.meta?.[\"name\"],\n }),\n columnHelper.accessor(\"age\", {\n id: \"age\",\n header: \"Age\",\n meta: props.meta?.[\"age\"],\n cell: (info) => (\n <Typography variant=\"body2\">{info.getValue()}</Typography>\n ),\n size: 50,\n }),\n columnHelper.accessor(\"city\", {\n id: \"city\",\n header: \"City\",\n meta: props.meta?.[\"city\"],\n cell: (info) => (\n <Typography variant=\"body2\">{info.getValue()}</Typography>\n ),\n }),\n ];\n\n const manyColumns: ColumnDef<Person>[] = [\n ...fewColumns,\n ...Array.from({ length: 100 }, (_, i) =>\n columnHelper.accessor(`col${i}`, {\n id: `col${i}`,\n header: `Column ${i}`,\n cell: (info) => (\n <Typography variant=\"body2\">{info.getValue()}</Typography>\n ),\n }),\n ),\n ];\n\n const cols = props.columns === \"few\" ? fewColumns : manyColumns;\n\n if (props.withHeaderGroups) {\n cols.splice(\n 0,\n 2,\n columnHelper.group({\n id: `personal-info`,\n header: \"Personal Info\",\n columns: cols.slice(0, 2),\n }),\n );\n }\n\n if (props.withTwoHeaderRows) {\n return cols.map((col) => {\n const newCol: ColumnDef<Person> | undefined = col.id\n ? {\n ...col,\n id: col.id,\n header: () => (\n <TextField\n placeholder=\"Search...\"\n slotProps={{\n input: { sx: { height: \"20px\", width: \"150px\" } },\n }}\n />\n ),\n }\n : undefined;\n const subColumns: ColumnDef<Person>[] = newCol ? [newCol] : [];\n return columnHelper.group({\n id: `group-${col.id}`,\n header: col.header,\n columns: subColumns,\n });\n });\n }\n return cols;\n }, [\n props.columns,\n props.enableColumnPinning,\n props.enableRowPinning,\n props.meta,\n props.withTwoHeaderRows,\n props.withHeaderGroups,\n ]);\n\n const table = useReactTable({\n ...props,\n data,\n columns,\n });\n\n return (\n <ScopedCssBaseline>\n <ThemeProvider theme={theme}>\n <TableComponent {...props} table={table as Table<unknown>} />\n </ThemeProvider>\n </ScopedCssBaseline>\n );\n};\n"
|
6
|
+
],
|
7
|
+
"mappings": ";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;AAAA;AAAA,0BAEE;AAAA;AAEF;AAAA;AAAA;AAAA;AAQA;AACA;AACA;AAAA;AAQA,IAAM,YAAsB;AAAA,EAC1B,EAAE,IAAI,KAAK,MAAM,QAAQ,KAAK,IAAI,MAAM,WAAW;AAAA,EACnD,EAAE,IAAI,KAAK,MAAM,QAAQ,KAAK,IAAI,MAAM,cAAc;AAAA,EACtD,EAAE,IAAI,KAAK,MAAM,OAAO,KAAK,IAAI,MAAM,UAAU;AACnD;AAEA,IAAM,UAAoB,MAAM,KAAK,EAAE,QAAQ,KAAK,GAAG,CAAC,GAAG,OAAO;AAAA,EAChE,IAAI,EAAE,SAAS;AAAA,EACf,MAAM,UAAU;AAAA,EAChB,KAAK,KAAK;AAAA,EACV,MAAM,QAAQ;AAAA,KACX,OAAO,YACR,MAAM,KAAK,EAAE,QAAQ,IAAI,GAAG,CAAC,IAAG,MAAM,CAAC,MAAM,KAAK,SAAS,KAAK,GAAG,CAAC,CACtE;AACF,EAAE;AAEK,IAAM,uBAAuB,CAClC,UAQG;AAAA,EACH,MAAM,QAAQ,SAAS;AAAA,EACvB,MAAM,OAAiB,MAAM,SAAS,QAAQ,UAAU;AAAA,EAExD,MAAM,UAA+B,MAAM,QAAQ,MAAM;AAAA,IACvD,MAAM,eAAe,qBAAqB,mBAA2B,GAAG;AAAA,MACtE,QAAQ,CAAC,6BACP,KAGE,KAHF;AAAA,QAAK,IAAI,EAAE,SAAS,QAAQ,KAAK,EAAE;AAAA,QAAnC,UAGE;AAAA,UAFC;AAAA,UACA,MAAM,uCAAuB,IAAC,kBAAD,EAAkB;AAAA;AAAA,OAChD;AAAA,IAEN,CAAC;AAAA,IAED,MAAM,aAAkC;AAAA,MACtC,aAAa,SAAS,QAAQ;AAAA,QAC5B,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,MAAM,CAAC,yBACL,KAIE,KAJF;AAAA,UAAK,IAAI,EAAE,SAAS,QAAQ,KAAK,GAAG,MAAM,EAAE;AAAA,UAA5C,UAIE;AAAA,4BAHA,IAA+C,YAA/C;AAAA,cAAY,SAAQ;AAAA,cAApB,UAA6B,KAAK,SAAS;AAAA,aAAI;AAAA,YAC9C,MAAM,oCAAoB,IAAC,KAAD;AAAA,cAAK,IAAI,EAAE,UAAU,EAAE;AAAA,aAAG;AAAA,YACpD,MAAM,oCAAoB,IAAC,eAAD;AAAA,cAAe,KAAK,KAAK;AAAA,aAAK;AAAA;AAAA,SACzD;AAAA,QAEJ,MAAM,MAAM,OAAO;AAAA,MACrB,CAAC;AAAA,MACD,aAAa,SAAS,OAAO;AAAA,QAC3B,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,MAAM,MAAM,OAAO;AAAA,QACnB,MAAM,CAAC,yBACL,IAA+C,YAA/C;AAAA,UAAY,SAAQ;AAAA,UAApB,UAA6B,KAAK,SAAS;AAAA,SAAI;AAAA,QAEjD,MAAM;AAAA,MACR,CAAC;AAAA,MACD,aAAa,SAAS,QAAQ;AAAA,QAC5B,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,MAAM,MAAM,OAAO;AAAA,QACnB,MAAM,CAAC,yBACL,IAA+C,YAA/C;AAAA,UAAY,SAAQ;AAAA,UAApB,UAA6B,KAAK,SAAS;AAAA,SAAI;AAAA,MAEnD,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,cAAmC;AAAA,MACvC,GAAG;AAAA,MACH,GAAG,MAAM,KAAK,EAAE,QAAQ,IAAI,GAAG,CAAC,GAAG,MACjC,aAAa,SAAS,MAAM,KAAK;AAAA,QAC/B,IAAI,MAAM;AAAA,QACV,QAAQ,UAAU;AAAA,QAClB,MAAM,CAAC,yBACL,IAA+C,YAA/C;AAAA,UAAY,SAAQ;AAAA,UAApB,UAA6B,KAAK,SAAS;AAAA,SAAI;AAAA,MAEnD,CAAC,CACH;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,MAAM,YAAY,QAAQ,aAAa;AAAA,IAEpD,IAAI,MAAM,kBAAkB;AAAA,MAC1B,KAAK,OACH,GACA,GACA,aAAa,MAAM;AAAA,QACjB,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,SAAS,KAAK,MAAM,GAAG,CAAC;AAAA,MAC1B,CAAC,CACH;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,mBAAmB;AAAA,MAC3B,OAAO,KAAK,IAAI,CAAC,QAAQ;AAAA,QACvB,MAAM,SAAwC,IAAI,KAC9C;AAAA,aACK;AAAA,UACH,IAAI,IAAI;AAAA,UACR,QAAQ,sBACN,IAAC,WAAD;AAAA,YACE,aAAY;AAAA,YACZ,WAAW;AAAA,cACT,OAAO,EAAE,IAAI,EAAE,QAAQ,QAAQ,OAAO,QAAQ,EAAE;AAAA,YAClD;AAAA,WACF;AAAA,QAEJ,IACA;AAAA,QACJ,MAAM,aAAkC,SAAS,CAAC,MAAM,IAAI,CAAC;AAAA,QAC7D,OAAO,aAAa,MAAM;AAAA,UACxB,IAAI,SAAS,IAAI;AAAA,UACjB,QAAQ,IAAI;AAAA,UACZ,SAAS;AAAA,QACX,CAAC;AAAA,OACF;AAAA,IACH;AAAA,IACA,OAAO;AAAA,KACN;AAAA,IACD,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR,CAAC;AAAA,EAED,MAAM,QAAQ,cAAc;AAAA,OACvB;AAAA,IACH;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EAED,uBACE,IAIE,mBAJF;AAAA,8BACE,IAEE,eAFF;AAAA,MAAe;AAAA,MAAf,0BACE,IAAC,gBAAD;AAAA,WAAoB;AAAA,QAAO;AAAA,OAAgC;AAAA,KAC3D;AAAA,GACF;AAAA;",
|
8
|
+
"debugId": "1AF1AFD066E5B64964756E2164756E21",
|
9
|
+
"names": []
|
10
|
+
}
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
// packages/skin-anocca/src/stories/createSourceCode.ts
|
2
|
+
var createSourceCode = (opts) => {
|
2
3
|
return `import { createColumnHelper, useReactTable, getCoreRowModel } from "@tanstack/react-table";
|
3
4
|
import { Box } from "@mui/material";
|
4
5
|
import { HeaderPinButtons } from "@rttui/skin-anocca";
|
@@ -28,7 +29,8 @@ const columnHelper = decorateColumnHelper(createColumnHelper<Person>(), {
|
|
28
29
|
|
29
30
|
const columns = [
|
30
31
|
columnHelper.accessor("name", {
|
31
|
-
header: "Name",${opts?.nameMeta ?
|
32
|
+
header: "Name",${opts?.nameMeta ? `
|
33
|
+
` + opts.nameMeta : ""}
|
32
34
|
}),
|
33
35
|
columnHelper.accessor("age", {
|
34
36
|
header: "Age",
|
@@ -42,12 +44,19 @@ const columns = [
|
|
42
44
|
const table = useReactTable({
|
43
45
|
data,
|
44
46
|
columns,
|
45
|
-
getCoreRowModel: getCoreRowModel()${opts?.hookOptions ?
|
47
|
+
getCoreRowModel: getCoreRowModel()${opts?.hookOptions ? `
|
48
|
+
` + opts.hookOptions : ""}
|
46
49
|
});
|
47
50
|
|
48
51
|
<ReactTanstackTableUi
|
49
52
|
table={table}
|
50
|
-
enableColumnPinning${opts?.props ?
|
53
|
+
enableColumnPinning${opts?.props ? `
|
54
|
+
` + opts.props : ""}
|
51
55
|
/>
|
52
56
|
`;
|
53
57
|
};
|
58
|
+
export {
|
59
|
+
createSourceCode
|
60
|
+
};
|
61
|
+
|
62
|
+
//# debugId=C53576C0D339686564756E2164756E21
|
@@ -0,0 +1,10 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../src/stories/createSourceCode.ts"],
|
4
|
+
"sourcesContent": [
|
5
|
+
"export const createSourceCode = (opts?: { hookOptions?: string, props?: string, nameMeta?: string }) => {\n return `import { createColumnHelper, useReactTable, getCoreRowModel } from \"@tanstack/react-table\";\nimport { Box } from \"@mui/material\";\nimport { HeaderPinButtons } from \"@rttui/skin-anocca\";\nimport { ReactTanstackTableUi, decorateColumnHelper } from \"@rttui/core\";\n\ntype Person = {\n id: string;\n name: string;\n age: number;\n city: string;\n};\n\nconst data: Person[] = [\n { id: \"1\", name: \"John\", age: 20, city: \"New York\" },\n { id: \"2\", name: \"Jane\", age: 21, city: \"Los Angeles\" },\n { id: \"3\", name: \"Jim\", age: 22, city: \"Chicago\" },\n];\n\nconst columnHelper = decorateColumnHelper(createColumnHelper<Person>(), {\n header: (original) => (\n <Box sx={{ display: \"flex\", gap: 2 }}>\n {original}\n {props.enableColumnPinning && <HeaderPinButtons />}\n </Box>\n ),\n});\n\nconst columns = [\n columnHelper.accessor(\"name\", {\n header: \"Name\",${opts?.nameMeta ? '\\n' + opts.nameMeta : ''}\n }),\n columnHelper.accessor(\"age\", {\n header: \"Age\",\n size: 50,\n }),\n columnHelper.accessor(\"city\", {\n header: \"City\",\n }),\n];\n\nconst table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel()${opts?.hookOptions ? '\\n' + opts.hookOptions : ''}\n});\n\n<ReactTanstackTableUi\n table={table}\n enableColumnPinning${opts?.props ? '\\n' + opts.props : ''}\n/>\n`;\n};\n"
|
6
|
+
],
|
7
|
+
"mappings": ";AAAO,IAAM,mBAAmB,CAAC,SAAuE;AAAA,EACtG,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBA6BY,MAAM,WAAW;AAAA,IAAO,KAAK,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAcvB,MAAM,cAAc;AAAA,IAAO,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,uBAK7D,MAAM,QAAQ;AAAA,IAAO,KAAK,QAAQ;AAAA;AAAA;AAAA;",
|
8
|
+
"debugId": "C53576C0D339686564756E2164756E21",
|
9
|
+
"names": []
|
10
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const HeaderPinButtons: () => import("react/jsx-runtime").JSX.Element | null;
|
@@ -0,0 +1,78 @@
|
|
1
|
+
import type { StoryObj } from "@storybook/react";
|
2
|
+
declare const meta: {
|
3
|
+
title: string;
|
4
|
+
component: (props: {
|
5
|
+
data: "big" | "small";
|
6
|
+
columns: "many" | "few";
|
7
|
+
meta?: Record<string, import("@tanstack/react-table").ColumnMeta<{
|
8
|
+
id: string;
|
9
|
+
name: string;
|
10
|
+
age: number;
|
11
|
+
city: string;
|
12
|
+
} & Record<`col${number}`, string>, string>>;
|
13
|
+
withTwoHeaderRows?: boolean;
|
14
|
+
withHeaderGroups?: boolean;
|
15
|
+
} & Omit<import("@tanstack/react-table").TableOptions<{
|
16
|
+
id: string;
|
17
|
+
name: string;
|
18
|
+
age: number;
|
19
|
+
city: string;
|
20
|
+
} & Record<`col${number}`, string>>, "data" | "columns"> & Omit<React.ComponentProps<typeof import("@rttui/core").ReactTanstackTableUi>, "table">) => import("react/jsx-runtime").JSX.Element;
|
21
|
+
parameters: {
|
22
|
+
layout: string;
|
23
|
+
};
|
24
|
+
argTypes: {
|
25
|
+
data: {
|
26
|
+
control: "select";
|
27
|
+
};
|
28
|
+
columns: {
|
29
|
+
control: "select";
|
30
|
+
};
|
31
|
+
pinColsRelativeTo: {
|
32
|
+
control: "select";
|
33
|
+
options: string[];
|
34
|
+
};
|
35
|
+
skin: {
|
36
|
+
control: "object";
|
37
|
+
table: {
|
38
|
+
disable: true;
|
39
|
+
};
|
40
|
+
};
|
41
|
+
};
|
42
|
+
args: {
|
43
|
+
width: number;
|
44
|
+
height: number;
|
45
|
+
skin: import("@rttui/core").Skin;
|
46
|
+
autoCrushColumns: false;
|
47
|
+
data: "big";
|
48
|
+
columns: "few";
|
49
|
+
getCoreRowModel: (table: import("@tanstack/react-table").Table<any>) => () => import("@tanstack/react-table").RowModel<any>;
|
50
|
+
pinColsRelativeTo: "cols";
|
51
|
+
fillAvailableSpaceAfterCrush: false;
|
52
|
+
scrollbarWidth: number;
|
53
|
+
getRowId: (row: {
|
54
|
+
id: string;
|
55
|
+
name: string;
|
56
|
+
age: number;
|
57
|
+
city: string;
|
58
|
+
} & Record<`col${number}`, string>) => string;
|
59
|
+
};
|
60
|
+
};
|
61
|
+
export default meta;
|
62
|
+
type Story = StoryObj<typeof meta>;
|
63
|
+
export declare const Basic: Story;
|
64
|
+
export declare const AutoCrushColumns: Story;
|
65
|
+
export declare const AutoCrushColumnsExceptName: Story;
|
66
|
+
export declare const PinRelativeToCols: Story;
|
67
|
+
export declare const PinRelativeToTable: Story;
|
68
|
+
export declare const FillAvailableSpaceAfterCrush: Story;
|
69
|
+
export declare const FillAvailableSpaceAfterCrushExceptName: Story;
|
70
|
+
export declare const FillAvailableSpaceAfterCrushWithTwoHeaderRows: Story;
|
71
|
+
export declare const FillAvailableSpaceAfterCrushWithHeaderGroups: Story;
|
72
|
+
export declare const FillAvailableSpaceAfterCrushWithHeaderGroupsExceptName: Story;
|
73
|
+
export declare const FillAvailableSpaceAfterCrushWithTwoHeaderRowsExceptName: Story;
|
74
|
+
export declare const FillAvailableSpaceAfterCrushWithoutSpecifiedScrollbarWidth: Story;
|
75
|
+
export declare const CanPinRowsRelativeToRows: Story;
|
76
|
+
export declare const CanPinRowsRelativeToTable: Story;
|
77
|
+
export declare const SizeByLargestHeader: Story;
|
78
|
+
export declare const SizeByLargestHeaderWithMeta: Story;
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { ReactTanstackTableUi as TableComponent } from "@rttui/core";
|
2
|
+
import { ColumnMeta, TableOptions } from "@tanstack/react-table";
|
3
|
+
import React from "react";
|
4
|
+
type Person = {
|
5
|
+
id: string;
|
6
|
+
name: string;
|
7
|
+
age: number;
|
8
|
+
city: string;
|
9
|
+
} & Record<`col${number}`, string>;
|
10
|
+
export declare const ReactTanstackTableUi: (props: {
|
11
|
+
data: "big" | "small";
|
12
|
+
columns: "many" | "few";
|
13
|
+
meta?: Record<string, ColumnMeta<Person, string>>;
|
14
|
+
withTwoHeaderRows?: boolean;
|
15
|
+
withHeaderGroups?: boolean;
|
16
|
+
} & Omit<TableOptions<Person>, "data" | "columns"> & Omit<React.ComponentProps<typeof TableComponent>, "table">) => import("react/jsx-runtime").JSX.Element;
|
17
|
+
export {};
|
package/package.json
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
{
|
2
2
|
"name": "@rttui/skin-anocca",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.18",
|
4
4
|
"main": "./dist/cjs/index.cjs",
|
5
5
|
"dependencies": {
|
6
|
-
"@rttui/core": "^1.0.
|
6
|
+
"@rttui/core": "^1.0.17"
|
7
7
|
},
|
8
8
|
"module": "./dist/mjs/index.mjs",
|
9
9
|
"types": "./dist/types/index.d.ts",
|
@@ -17,6 +17,9 @@
|
|
17
17
|
"publishConfig": {
|
18
18
|
"access": "public"
|
19
19
|
},
|
20
|
+
"files": [
|
21
|
+
"dist"
|
22
|
+
],
|
20
23
|
"scripts": {
|
21
24
|
"dev": "vite",
|
22
25
|
"build": "tsc -b && vite build",
|
package/.storybook/main.ts
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
import type { StorybookConfig } from '@storybook/react-vite';
|
2
|
-
|
3
|
-
const config: StorybookConfig = {
|
4
|
-
"stories": [
|
5
|
-
"../src/**/*.mdx",
|
6
|
-
"../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"
|
7
|
-
],
|
8
|
-
"addons": [
|
9
|
-
"@storybook/addon-essentials",
|
10
|
-
"@storybook/addon-onboarding",
|
11
|
-
"@storybook/addon-interactions"
|
12
|
-
],
|
13
|
-
"framework": {
|
14
|
-
"name": "@storybook/react-vite",
|
15
|
-
"options": {}
|
16
|
-
}
|
17
|
-
};
|
18
|
-
export default config;
|