@panneau/lists 5.0.0-alpha.17 → 5.0.0-alpha.19
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 +14 -14
- package/dist/ListSkeleton.d.ts +3 -1
- package/dist/ListSkeleton.d.ts.map +1 -1
- package/dist/ListSkeleton.js +34 -30
- package/dist/ListSkeleton.js.map +1 -1
- package/dist/ListView.d.ts +3 -2
- package/dist/ListView.d.ts.map +1 -1
- package/dist/ListView.js +7 -4
- package/dist/ListView.js.map +1 -1
- package/dist/actions/ConfirmDialog.d.ts +5 -1
- package/dist/actions/ConfirmDialog.d.ts.map +1 -1
- package/dist/actions/ConfirmDialog.js +7 -3
- package/dist/actions/ConfirmDialog.js.map +1 -1
- package/dist/displays/Displays.css +6 -0
- package/dist/displays/Displays.module.js +3 -1
- package/dist/displays/Displays.module.js.map +1 -1
- package/dist/displays/displays.d.ts +9 -1
- package/dist/displays/displays.d.ts.map +1 -1
- package/dist/displays/displays.js +132 -27
- package/dist/displays/displays.js.map +1 -1
- package/dist/images.d.ts +3 -2
- package/dist/images.d.ts.map +1 -1
- package/dist/images.js +24 -3
- package/dist/images.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/inline/InlineCell.d.ts +3 -1
- package/dist/inline/InlineCell.d.ts.map +1 -1
- package/dist/inline/InlineCell.js +153 -134
- package/dist/inline/InlineCell.js.map +1 -1
- package/dist/layouts/TableLayout.css +31 -0
- package/dist/layouts/TableLayout.d.ts +4 -3
- package/dist/layouts/TableLayout.d.ts.map +1 -1
- package/dist/layouts/TableLayout.js +87 -54
- package/dist/layouts/TableLayout.js.map +1 -1
- package/dist/layouts/TableLayout.module.js +5 -1
- package/dist/layouts/TableLayout.module.js.map +1 -1
- package/dist/types.d.ts +4 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/useRenderValue.d.ts +3 -1
- package/dist/useRenderValue.d.ts.map +1 -1
- package/dist/useRenderValue.js +26 -6
- package/dist/useRenderValue.js.map +1 -1
- package/package.json +7 -7
|
@@ -6,7 +6,7 @@ import TableLayout_module_default from "./TableLayout.module.js";
|
|
|
6
6
|
import { c } from "react/compiler-runtime";
|
|
7
7
|
import { Checkbox, Icon, usePanneauIntl } from "@panneau/ui";
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
-
import { ArrowDown, ArrowUp, ArrowUpDown } from "lucide-react";
|
|
9
|
+
import { ArrowDown, ArrowUp, ArrowUpDown, ImageOff } from "lucide-react";
|
|
10
10
|
//#region src/layouts/TableLayout.tsx
|
|
11
11
|
/** The sort direction of a column, from the first `sort` value. */
|
|
12
12
|
function getSortDirection(sort, column) {
|
|
@@ -19,12 +19,39 @@ function alignClass(column) {
|
|
|
19
19
|
return column.align === "end" ? TableLayout_module_default.end : void 0;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
22
|
+
* The thumbnail of an item, before its title (decision 0061): a square of its image, loaded when it
|
|
23
|
+
* comes into view, or a placeholder. It has no text: the title is next to it.
|
|
24
|
+
*/
|
|
25
|
+
function Thumbnail(t0) {
|
|
26
|
+
const $ = c(2);
|
|
27
|
+
const { url } = t0;
|
|
28
|
+
let t1;
|
|
29
|
+
if ($[0] !== url) {
|
|
30
|
+
t1 = /* @__PURE__ */ jsx("span", {
|
|
31
|
+
className: TableLayout_module_default.thumbnail,
|
|
32
|
+
children: url !== null ? /* @__PURE__ */ jsx("img", {
|
|
33
|
+
src: url,
|
|
34
|
+
alt: "",
|
|
35
|
+
loading: "lazy",
|
|
36
|
+
decoding: "async"
|
|
37
|
+
}) : /* @__PURE__ */ jsx(Icon, {
|
|
38
|
+
icon: ImageOff,
|
|
39
|
+
size: "sm"
|
|
40
|
+
})
|
|
41
|
+
});
|
|
42
|
+
$[0] = url;
|
|
43
|
+
$[1] = t1;
|
|
44
|
+
} else t1 = $[1];
|
|
45
|
+
return t1;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Items as a table, with sortable column headers. With the image of items (`getItemImage`), each
|
|
49
|
+
* title starts with a thumbnail. On narrow lists (phones), each row turns into a block that shows
|
|
50
|
+
* the label of each value.
|
|
24
51
|
*/
|
|
25
52
|
function TableLayout(t0) {
|
|
26
|
-
const $ = c(
|
|
27
|
-
const { items, columns, renderValue, getItemLabel, getItemHref, isCurrent, selectable, isSelected, onToggle, renderActions, sort, onSort, label, pageSelection, renderCell } = t0;
|
|
53
|
+
const $ = c(67);
|
|
54
|
+
const { items, columns, renderValue, getItemLabel, getItemHref, getItemImage, isCurrent, selectable, isSelected, onToggle, renderActions, sort, onSort, label, pageSelection, renderCell } = t0;
|
|
28
55
|
const intl = usePanneauIntl();
|
|
29
56
|
let actions;
|
|
30
57
|
let t1;
|
|
@@ -125,9 +152,9 @@ function TableLayout(t0) {
|
|
|
125
152
|
$[25] = t6;
|
|
126
153
|
} else t6 = $[25];
|
|
127
154
|
let t7;
|
|
128
|
-
if ($[26] !== actions || $[27] !== columns || $[28] !== getItemHref || $[29] !==
|
|
155
|
+
if ($[26] !== actions || $[27] !== columns || $[28] !== getItemHref || $[29] !== getItemImage || $[30] !== getItemLabel || $[31] !== hasActions || $[32] !== intl || $[33] !== isCurrent || $[34] !== isSelected || $[35] !== items || $[36] !== onToggle || $[37] !== renderCell || $[38] !== renderValue || $[39] !== selectable) {
|
|
129
156
|
let t8;
|
|
130
|
-
if ($[
|
|
157
|
+
if ($[41] !== actions || $[42] !== columns || $[43] !== getItemHref || $[44] !== getItemImage || $[45] !== getItemLabel || $[46] !== hasActions || $[47] !== intl || $[48] !== isCurrent || $[49] !== isSelected || $[50] !== onToggle || $[51] !== renderCell || $[52] !== renderValue || $[53] !== selectable) {
|
|
131
158
|
t8 = (item_0, row) => {
|
|
132
159
|
const selected = selectable && isSelected(item_0);
|
|
133
160
|
const href = getItemHref?.(item_0) ?? null;
|
|
@@ -150,12 +177,16 @@ function TableLayout(t0) {
|
|
|
150
177
|
current,
|
|
151
178
|
children: renderValue(item_0, column_0)
|
|
152
179
|
}) : renderValue(item_0, column_0);
|
|
180
|
+
const cell = /* @__PURE__ */ jsx("span", { children: renderCell !== void 0 ? renderCell(item_0, column_0, content) : content });
|
|
153
181
|
return /* @__PURE__ */ jsxs("td", {
|
|
154
182
|
className: cx(alignClass(column_0), index === 0 && TableLayout_module_default.title),
|
|
155
183
|
children: [/* @__PURE__ */ jsx("span", {
|
|
156
184
|
className: TableLayout_module_default.cellLabel,
|
|
157
185
|
children: column_0.label ?? column_0.id
|
|
158
|
-
}),
|
|
186
|
+
}), index === 0 && getItemImage !== void 0 ? /* @__PURE__ */ jsxs("span", {
|
|
187
|
+
className: TableLayout_module_default.withThumbnail,
|
|
188
|
+
children: [/* @__PURE__ */ jsx(Thumbnail, { url: getItemImage(item_0) }), cell]
|
|
189
|
+
}) : cell]
|
|
159
190
|
}, column_0.id);
|
|
160
191
|
}),
|
|
161
192
|
hasActions ? /* @__PURE__ */ jsx("td", {
|
|
@@ -165,75 +196,77 @@ function TableLayout(t0) {
|
|
|
165
196
|
]
|
|
166
197
|
}, item_0.id);
|
|
167
198
|
};
|
|
168
|
-
$[
|
|
169
|
-
$[
|
|
170
|
-
$[
|
|
171
|
-
$[
|
|
172
|
-
$[
|
|
173
|
-
$[
|
|
174
|
-
$[
|
|
175
|
-
$[
|
|
176
|
-
$[
|
|
177
|
-
$[
|
|
178
|
-
$[
|
|
179
|
-
$[
|
|
180
|
-
$[
|
|
181
|
-
|
|
199
|
+
$[41] = actions;
|
|
200
|
+
$[42] = columns;
|
|
201
|
+
$[43] = getItemHref;
|
|
202
|
+
$[44] = getItemImage;
|
|
203
|
+
$[45] = getItemLabel;
|
|
204
|
+
$[46] = hasActions;
|
|
205
|
+
$[47] = intl;
|
|
206
|
+
$[48] = isCurrent;
|
|
207
|
+
$[49] = isSelected;
|
|
208
|
+
$[50] = onToggle;
|
|
209
|
+
$[51] = renderCell;
|
|
210
|
+
$[52] = renderValue;
|
|
211
|
+
$[53] = selectable;
|
|
212
|
+
$[54] = t8;
|
|
213
|
+
} else t8 = $[54];
|
|
182
214
|
t7 = items.map(t8);
|
|
183
215
|
$[26] = actions;
|
|
184
216
|
$[27] = columns;
|
|
185
217
|
$[28] = getItemHref;
|
|
186
|
-
$[29] =
|
|
187
|
-
$[30] =
|
|
188
|
-
$[31] =
|
|
189
|
-
$[32] =
|
|
190
|
-
$[33] =
|
|
191
|
-
$[34] =
|
|
192
|
-
$[35] =
|
|
193
|
-
$[36] =
|
|
194
|
-
$[37] =
|
|
195
|
-
$[38] =
|
|
196
|
-
$[39] =
|
|
197
|
-
|
|
218
|
+
$[29] = getItemImage;
|
|
219
|
+
$[30] = getItemLabel;
|
|
220
|
+
$[31] = hasActions;
|
|
221
|
+
$[32] = intl;
|
|
222
|
+
$[33] = isCurrent;
|
|
223
|
+
$[34] = isSelected;
|
|
224
|
+
$[35] = items;
|
|
225
|
+
$[36] = onToggle;
|
|
226
|
+
$[37] = renderCell;
|
|
227
|
+
$[38] = renderValue;
|
|
228
|
+
$[39] = selectable;
|
|
229
|
+
$[40] = t7;
|
|
230
|
+
} else t7 = $[40];
|
|
198
231
|
let t8;
|
|
199
|
-
if ($[
|
|
232
|
+
if ($[55] !== t7) {
|
|
200
233
|
t8 = /* @__PURE__ */ jsx("tbody", { children: t7 });
|
|
201
|
-
$[
|
|
202
|
-
$[
|
|
203
|
-
} else t8 = $[
|
|
234
|
+
$[55] = t7;
|
|
235
|
+
$[56] = t8;
|
|
236
|
+
} else t8 = $[56];
|
|
204
237
|
let t9;
|
|
205
|
-
if ($[
|
|
238
|
+
if ($[57] !== label || $[58] !== t6 || $[59] !== t8) {
|
|
206
239
|
t9 = /* @__PURE__ */ jsxs("table", {
|
|
207
240
|
className: TableLayout_module_default.table,
|
|
208
241
|
"aria-label": label,
|
|
209
242
|
children: [t6, t8]
|
|
210
243
|
});
|
|
211
|
-
$[
|
|
212
|
-
$[
|
|
213
|
-
$[
|
|
214
|
-
$[
|
|
215
|
-
} else t9 = $[
|
|
244
|
+
$[57] = label;
|
|
245
|
+
$[58] = t6;
|
|
246
|
+
$[59] = t8;
|
|
247
|
+
$[60] = t9;
|
|
248
|
+
} else t9 = $[60];
|
|
216
249
|
let t10;
|
|
217
|
-
if ($[
|
|
250
|
+
if ($[61] !== measureList || $[62] !== t9) {
|
|
218
251
|
t10 = /* @__PURE__ */ jsx("div", {
|
|
219
252
|
className: TableLayout_module_default.scroller,
|
|
220
253
|
ref: measureList,
|
|
221
254
|
children: t9
|
|
222
255
|
});
|
|
223
|
-
$[
|
|
224
|
-
$[
|
|
225
|
-
$[
|
|
226
|
-
} else t10 = $[
|
|
256
|
+
$[61] = measureList;
|
|
257
|
+
$[62] = t9;
|
|
258
|
+
$[63] = t10;
|
|
259
|
+
} else t10 = $[63];
|
|
227
260
|
let t11;
|
|
228
|
-
if ($[
|
|
261
|
+
if ($[64] !== fitLevel || $[65] !== t10) {
|
|
229
262
|
t11 = /* @__PURE__ */ jsx(RowActionsFit, {
|
|
230
263
|
value: fitLevel,
|
|
231
264
|
children: t10
|
|
232
265
|
});
|
|
233
|
-
$[
|
|
234
|
-
$[
|
|
235
|
-
$[
|
|
236
|
-
} else t11 = $[
|
|
266
|
+
$[64] = fitLevel;
|
|
267
|
+
$[65] = t10;
|
|
268
|
+
$[66] = t11;
|
|
269
|
+
} else t11 = $[66];
|
|
237
270
|
return t11;
|
|
238
271
|
}
|
|
239
272
|
function _temp(node) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLayout.js","names":["ArrowDown","ArrowUp","ArrowUpDown","Checkbox","Icon","usePanneauIntl","RowActionsFit","fitContent","useRowActionsFit","cx","messages","ListColumn","ListLayoutProps","ItemTitle","styles","getSortDirection","sort","column","first","id","alignClass","align","center","end","undefined","TableLayout","t0","$","_c","items","columns","renderValue","getItemLabel","getItemHref","isCurrent","selectable","isSelected","onToggle","renderActions","onSort","label","pageSelection","renderCell","intl","actions","t1","t2","item","map","some","_temp","hasActions","fitLevel","measureList","t3","check","t4","t5","direction","width","sortable","sorted","sortIcon","actionsCell","visuallyHidden","formatMessage","t6","t7","t8","item_0","row","selected","href","current","selectItem","column_0","index","content","title","cellLabel","t9","table","t10","scroller","t11","node","styles","_c"],"sources":["../../src/layouts/TableLayout.tsx"],"sourcesContent":["import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';\n\nimport { Checkbox, Icon, usePanneauIntl } from '@panneau/ui';\n\nimport { RowActionsFit, fitContent, useRowActionsFit } from '../actions/fit';\nimport { cx } from '../cx';\nimport { messages } from '../messages';\nimport type { ListColumn, ListLayoutProps } from '../types';\nimport { ItemTitle } from './ItemTitle';\nimport styles from './TableLayout.module.css';\n\n/** The sort direction of a column, from the first `sort` value. */\nexport function getSortDirection(\n sort: readonly string[],\n column: ListColumn,\n): 'ascending' | 'descending' | null {\n const first = sort[0];\n if (first === column.id) {\n return 'ascending';\n }\n return first === `-${column.id}` ? 'descending' : null;\n}\n\nfunction alignClass(column: ListColumn): string | undefined {\n if (column.align === 'center') {\n return styles.center;\n }\n return column.align === 'end' ? styles.end : undefined;\n}\n\n/**\n * Items as a table, with sortable column headers. On narrow lists (phones), each row turns into a\n * block that shows the label of each value.\n */\nexport function TableLayout({\n items,\n columns,\n renderValue,\n getItemLabel,\n getItemHref,\n isCurrent,\n selectable,\n isSelected,\n onToggle,\n renderActions,\n sort,\n onSort,\n label,\n pageSelection,\n renderCell,\n}: ListLayoutProps) {\n const intl = usePanneauIntl();\n const actions = items.map((item) => renderActions(item));\n const hasActions = actions.some((node) => node !== null);\n const [fitLevel, measureList] = useRowActionsFit(fitContent(items, columns));\n return (\n <RowActionsFit value={fitLevel}>\n <div className={styles.scroller} ref={measureList}>\n <table className={styles.table} aria-label={label}>\n <thead>\n <tr>\n {selectable ? <th className={styles.check}>{pageSelection}</th> : null}\n {columns.map((column) => {\n const direction = getSortDirection(sort, column);\n return (\n <th\n key={column.id}\n scope=\"col\"\n className={alignClass(column)}\n style={\n column.width !== undefined\n ? { width: column.width }\n : undefined\n }\n aria-sort={\n column.sortable === true\n ? (direction ?? 'none')\n : undefined\n }\n >\n {column.sortable === true ? (\n <button\n type=\"button\"\n className={cx(\n styles.sort,\n direction !== null && styles.sorted,\n )}\n onClick={() => onSort(column)}\n >\n {column.label ?? column.id}\n <span className={styles.sortIcon}>\n <Icon\n icon={\n direction === 'ascending'\n ? ArrowUp\n : direction === 'descending'\n ? ArrowDown\n : ArrowUpDown\n }\n size=\"sm\"\n />\n </span>\n </button>\n ) : (\n (column.label ?? column.id)\n )}\n </th>\n );\n })}\n {hasActions ? (\n <th className={styles.actionsCell}>\n <span className={styles.visuallyHidden}>\n {intl.formatMessage(messages.actions)}\n </span>\n </th>\n ) : null}\n </tr>\n </thead>\n <tbody>\n {items.map((item, row) => {\n const selected = selectable && isSelected(item);\n const href = getItemHref?.(item) ?? null;\n const current = isCurrent?.(item) ?? false;\n return (\n <tr\n key={item.id}\n data-selected={selected || undefined}\n data-current={current || undefined}\n >\n {selectable ? (\n <td className={styles.check}>\n <Checkbox\n aria-label={intl.formatMessage(\n messages.selectItem,\n {\n item: getItemLabel(item),\n },\n )}\n isSelected={selected}\n onChange={() => onToggle(item)}\n />\n </td>\n ) : null}\n {columns.map((column, index) => {\n const content =\n index === 0 ? (\n <ItemTitle href={href} current={current}>\n {renderValue(item, column)}\n </ItemTitle>\n ) : (\n renderValue(item, column)\n );\n return (\n <td\n key={column.id}\n className={cx(\n alignClass(column),\n index === 0 && styles.title,\n )}\n >\n <span className={styles.cellLabel}>\n {column.label ?? column.id}\n </span>\n <span>\n {renderCell !== undefined\n ? renderCell(item, column, content)\n : content}\n </span>\n </td>\n );\n })}\n {hasActions ? (\n <td className={styles.actionsCell}>{actions[row]}</td>\n ) : null}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </RowActionsFit>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TableLayout.js","names":["ArrowDown","ArrowUp","ArrowUpDown","ImageOff","Checkbox","Icon","usePanneauIntl","RowActionsFit","fitContent","useRowActionsFit","cx","messages","ListColumn","ListLayoutProps","ItemTitle","styles","getSortDirection","sort","column","first","id","alignClass","align","center","end","undefined","Thumbnail","t0","$","_c","url","t1","thumbnail","TableLayout","items","columns","renderValue","getItemLabel","getItemHref","getItemImage","isCurrent","selectable","isSelected","onToggle","renderActions","onSort","label","pageSelection","renderCell","intl","actions","t2","item","map","some","_temp","hasActions","fitLevel","measureList","t3","check","t4","t5","direction","width","sortable","sorted","sortIcon","actionsCell","visuallyHidden","formatMessage","t6","t7","t8","item_0","row","selected","href","current","selectItem","column_0","index","content","cell","title","cellLabel","withThumbnail","t9","table","t10","scroller","t11","node","styles","_c"],"sources":["../../src/layouts/TableLayout.tsx"],"sourcesContent":["import { ArrowDown, ArrowUp, ArrowUpDown, ImageOff } from 'lucide-react';\n\nimport { Checkbox, Icon, usePanneauIntl } from '@panneau/ui';\n\nimport { RowActionsFit, fitContent, useRowActionsFit } from '../actions/fit';\nimport { cx } from '../cx';\nimport { messages } from '../messages';\nimport type { ListColumn, ListLayoutProps } from '../types';\nimport { ItemTitle } from './ItemTitle';\nimport styles from './TableLayout.module.css';\n\n/** The sort direction of a column, from the first `sort` value. */\nexport function getSortDirection(\n sort: readonly string[],\n column: ListColumn,\n): 'ascending' | 'descending' | null {\n const first = sort[0];\n if (first === column.id) {\n return 'ascending';\n }\n return first === `-${column.id}` ? 'descending' : null;\n}\n\nfunction alignClass(column: ListColumn): string | undefined {\n if (column.align === 'center') {\n return styles.center;\n }\n return column.align === 'end' ? styles.end : undefined;\n}\n\n/**\n * The thumbnail of an item, before its title (decision 0061): a square of its image, loaded when it\n * comes into view, or a placeholder. It has no text: the title is next to it.\n */\nfunction Thumbnail({ url }: { url: string | null }) {\n return (\n <span className={styles.thumbnail}>\n {url !== null ? (\n <img src={url} alt=\"\" loading=\"lazy\" decoding=\"async\" />\n ) : (\n <Icon icon={ImageOff} size=\"sm\" />\n )}\n </span>\n );\n}\n\n/**\n * Items as a table, with sortable column headers. With the image of items (`getItemImage`), each\n * title starts with a thumbnail. On narrow lists (phones), each row turns into a block that shows\n * the label of each value.\n */\nexport function TableLayout({\n items,\n columns,\n renderValue,\n getItemLabel,\n getItemHref,\n getItemImage,\n isCurrent,\n selectable,\n isSelected,\n onToggle,\n renderActions,\n sort,\n onSort,\n label,\n pageSelection,\n renderCell,\n}: ListLayoutProps) {\n const intl = usePanneauIntl();\n const actions = items.map((item) => renderActions(item));\n const hasActions = actions.some((node) => node !== null);\n const [fitLevel, measureList] = useRowActionsFit(fitContent(items, columns));\n return (\n <RowActionsFit value={fitLevel}>\n <div className={styles.scroller} ref={measureList}>\n <table className={styles.table} aria-label={label}>\n <thead>\n <tr>\n {selectable ? <th className={styles.check}>{pageSelection}</th> : null}\n {columns.map((column) => {\n const direction = getSortDirection(sort, column);\n return (\n <th\n key={column.id}\n scope=\"col\"\n className={alignClass(column)}\n style={\n column.width !== undefined\n ? { width: column.width }\n : undefined\n }\n aria-sort={\n column.sortable === true\n ? (direction ?? 'none')\n : undefined\n }\n >\n {column.sortable === true ? (\n <button\n type=\"button\"\n className={cx(\n styles.sort,\n direction !== null && styles.sorted,\n )}\n onClick={() => onSort(column)}\n >\n {column.label ?? column.id}\n <span className={styles.sortIcon}>\n <Icon\n icon={\n direction === 'ascending'\n ? ArrowUp\n : direction === 'descending'\n ? ArrowDown\n : ArrowUpDown\n }\n size=\"sm\"\n />\n </span>\n </button>\n ) : (\n (column.label ?? column.id)\n )}\n </th>\n );\n })}\n {hasActions ? (\n <th className={styles.actionsCell}>\n <span className={styles.visuallyHidden}>\n {intl.formatMessage(messages.actions)}\n </span>\n </th>\n ) : null}\n </tr>\n </thead>\n <tbody>\n {items.map((item, row) => {\n const selected = selectable && isSelected(item);\n const href = getItemHref?.(item) ?? null;\n const current = isCurrent?.(item) ?? false;\n return (\n <tr\n key={item.id}\n data-selected={selected || undefined}\n data-current={current || undefined}\n >\n {selectable ? (\n <td className={styles.check}>\n <Checkbox\n aria-label={intl.formatMessage(\n messages.selectItem,\n {\n item: getItemLabel(item),\n },\n )}\n isSelected={selected}\n onChange={() => onToggle(item)}\n />\n </td>\n ) : null}\n {columns.map((column, index) => {\n const content =\n index === 0 ? (\n <ItemTitle href={href} current={current}>\n {renderValue(item, column)}\n </ItemTitle>\n ) : (\n renderValue(item, column)\n );\n const cell = (\n <span>\n {renderCell !== undefined\n ? renderCell(item, column, content)\n : content}\n </span>\n );\n return (\n <td\n key={column.id}\n className={cx(\n alignClass(column),\n index === 0 && styles.title,\n )}\n >\n <span className={styles.cellLabel}>\n {column.label ?? column.id}\n </span>\n {index === 0 && getItemImage !== undefined ? (\n <span className={styles.withThumbnail}>\n <Thumbnail url={getItemImage(item)} />\n {cell}\n </span>\n ) : (\n cell\n )}\n </td>\n );\n })}\n {hasActions ? (\n <td className={styles.actionsCell}>{actions[row]}</td>\n ) : null}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </RowActionsFit>\n );\n}\n"],"mappings":"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"}
|
|
@@ -3,6 +3,8 @@ import "./TableLayout.css";
|
|
|
3
3
|
var scroller = "panneau-table-layout-scroller";
|
|
4
4
|
var table = "panneau-table-layout-table";
|
|
5
5
|
var title = "panneau-table-layout-title";
|
|
6
|
+
var withThumbnail = "panneau-table-layout-with-thumbnail";
|
|
7
|
+
var thumbnail = "panneau-table-layout-thumbnail";
|
|
6
8
|
var center = "panneau-table-layout-center";
|
|
7
9
|
var end = "panneau-table-layout-end";
|
|
8
10
|
var check = "panneau-table-layout-check";
|
|
@@ -16,6 +18,8 @@ var TableLayout_module_default = {
|
|
|
16
18
|
scroller,
|
|
17
19
|
table,
|
|
18
20
|
title,
|
|
21
|
+
withThumbnail,
|
|
22
|
+
thumbnail,
|
|
19
23
|
center,
|
|
20
24
|
end,
|
|
21
25
|
check,
|
|
@@ -27,6 +31,6 @@ var TableLayout_module_default = {
|
|
|
27
31
|
visuallyHidden
|
|
28
32
|
};
|
|
29
33
|
//#endregion
|
|
30
|
-
export { actionsCell, cellLabel, center, check, TableLayout_module_default as default, end, scroller, sort, sortIcon, sorted, table, title, visuallyHidden };
|
|
34
|
+
export { actionsCell, cellLabel, center, check, TableLayout_module_default as default, end, scroller, sort, sortIcon, sorted, table, thumbnail, title, visuallyHidden, withThumbnail };
|
|
31
35
|
|
|
32
36
|
//# sourceMappingURL=TableLayout.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLayout.module.js","names":[],"sources":["../../src/layouts/TableLayout.module.css"],"sourcesContent":[".scroller {\n overflow-x: auto;\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n background-color: var(--panneau-color-surface);\n}\n\n.table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--panneau-font-size-md);\n}\n\n.table th,\n.table td {\n padding: var(--panneau-row-padding-y) var(--panneau-space-3);\n text-align: start;\n vertical-align: middle;\n border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.table th {\n font-size: var(--panneau-font-size-sm);\n font-weight: var(--panneau-font-weight-medium);\n color: var(--panneau-color-text-muted);\n white-space: nowrap;\n background-color: var(--panneau-color-surface-sunken);\n}\n\n/* The title stays readable in a narrow list, such as next to an item's details: the table\n * scrolls instead. */\n.table td.title {\n min-width: 12rem;\n}\n\n.table tbody tr:last-child td {\n border-bottom: 0;\n}\n\n.table tbody tr[data-selected] {\n background-color: var(--panneau-color-accent-subtle);\n}\n\n/* The item shown next to the list: a bar on its first cell. */\n.table tbody tr[data-current] td:first-child {\n box-shadow: inset 3px 0 0 var(--panneau-color-accent);\n}\n\n.table tbody tr[data-current] {\n background-color: var(--panneau-color-hover);\n}\n\n.center {\n text-align: center !important;\n}\n\n.end {\n text-align: end !important;\n}\n\n.check {\n width: 1px;\n}\n\n.actionsCell {\n width: 1px;\n text-align: end !important;\n white-space: nowrap;\n}\n\n/* As narrow as the actions of the row on one line: they only wrap in a narrow list. */\n.table .actionsCell > * {\n flex-wrap: nowrap;\n}\n\n.sort {\n display: inline-flex;\n align-items: center;\n gap: var(--panneau-space-1);\n margin: calc(-1 * var(--panneau-space-1)) calc(-1 * var(--panneau-space-2));\n padding: var(--panneau-space-1) var(--panneau-space-2);\n font: inherit;\n color: inherit;\n background: none;\n border: 0;\n border-radius: var(--panneau-radius-sm);\n cursor: pointer;\n}\n\n.sort:hover {\n color: var(--panneau-color-text);\n background-color: var(--panneau-color-hover);\n}\n\n.sort:focus-visible {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: 1px;\n}\n\n.sortIcon {\n opacity: 0.5;\n}\n\n.sorted .sortIcon {\n opacity: 1;\n}\n\n.cellLabel {\n display: none;\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n/* Narrow lists (phones): each row is a block, with the label of each value next to it. */\n@container panneau-list (max-width: 40rem) {\n .scroller {\n overflow: visible;\n background: none;\n border: 0;\n }\n\n /* The labels of the cells replace the headers, and the list's sort select their buttons. */\n .table thead {\n display: none;\n }\n\n .table,\n .table tbody,\n .table tr,\n .table td {\n display: block;\n }\n\n .table tbody {\n display: grid;\n gap: var(--panneau-space-2);\n }\n\n .table tr {\n position: relative;\n padding: var(--panneau-space-2) 0;\n background-color: var(--panneau-color-surface);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n }\n\n .table td {\n display: grid;\n grid-template-columns: minmax(5rem, 35%) 1fr;\n gap: var(--panneau-space-2);\n padding: var(--panneau-space-1) var(--panneau-space-3);\n text-align: start !important;\n border: 0;\n }\n\n .table td.check,\n .table td.actionsCell {\n display: flex;\n width: auto;\n }\n\n .table td.actionsCell > * {\n flex-wrap: wrap;\n }\n\n .table td.check {\n position: absolute;\n top: var(--panneau-space-2);\n inset-inline-end: var(--panneau-space-2);\n padding: 0;\n }\n\n .table td.actionsCell {\n justify-content: flex-start;\n flex-wrap: wrap;\n padding-top: var(--panneau-space-2);\n }\n\n .table td.title {\n display: block;\n min-width: 0;\n padding-inline-end: var(--panneau-space-10);\n font-weight: var(--panneau-font-weight-medium);\n }\n\n .table td.title .cellLabel {\n display: none;\n }\n\n .cellLabel {\n display: block;\n font-size: var(--panneau-font-size-sm);\n color: var(--panneau-color-text-muted);\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"TableLayout.module.js","names":[],"sources":["../../src/layouts/TableLayout.module.css"],"sourcesContent":[".scroller {\n overflow-x: auto;\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n background-color: var(--panneau-color-surface);\n}\n\n.table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--panneau-font-size-md);\n}\n\n.table th,\n.table td {\n padding: var(--panneau-row-padding-y) var(--panneau-space-3);\n text-align: start;\n vertical-align: middle;\n border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.table th {\n font-size: var(--panneau-font-size-sm);\n font-weight: var(--panneau-font-weight-medium);\n color: var(--panneau-color-text-muted);\n white-space: nowrap;\n background-color: var(--panneau-color-surface-sunken);\n}\n\n/* The title stays readable in a narrow list, such as next to an item's details: the table\n * scrolls instead. */\n.table td.title {\n min-width: 12rem;\n}\n\n.table tbody tr:last-child td {\n border-bottom: 0;\n}\n\n.table tbody tr[data-selected] {\n background-color: var(--panneau-color-accent-subtle);\n}\n\n/* The item shown next to the list: a bar on its first cell. */\n.table tbody tr[data-current] td:first-child {\n box-shadow: inset 3px 0 0 var(--panneau-color-accent);\n}\n\n.table tbody tr[data-current] {\n background-color: var(--panneau-color-hover);\n}\n\n/* The thumbnail of an item, before its title (decision 0061). */\n.withThumbnail {\n display: flex;\n align-items: center;\n gap: var(--panneau-space-3);\n}\n\n.withThumbnail > :last-child {\n min-width: 0;\n}\n\n.thumbnail {\n display: flex;\n flex: none;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n overflow: hidden;\n color: var(--panneau-color-text-muted);\n background-color: var(--panneau-color-surface-sunken);\n border-radius: var(--panneau-radius-sm);\n}\n\n.thumbnail img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.center {\n text-align: center !important;\n}\n\n.end {\n text-align: end !important;\n}\n\n.check {\n width: 1px;\n}\n\n.actionsCell {\n width: 1px;\n text-align: end !important;\n white-space: nowrap;\n}\n\n/* As narrow as the actions of the row on one line: they only wrap in a narrow list. */\n.table .actionsCell > * {\n flex-wrap: nowrap;\n}\n\n.sort {\n display: inline-flex;\n align-items: center;\n gap: var(--panneau-space-1);\n margin: calc(-1 * var(--panneau-space-1)) calc(-1 * var(--panneau-space-2));\n padding: var(--panneau-space-1) var(--panneau-space-2);\n font: inherit;\n color: inherit;\n background: none;\n border: 0;\n border-radius: var(--panneau-radius-sm);\n cursor: pointer;\n}\n\n.sort:hover {\n color: var(--panneau-color-text);\n background-color: var(--panneau-color-hover);\n}\n\n.sort:focus-visible {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: 1px;\n}\n\n.sortIcon {\n opacity: 0.5;\n}\n\n.sorted .sortIcon {\n opacity: 1;\n}\n\n.cellLabel {\n display: none;\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n/* Narrow lists (phones): each row is a block, with the label of each value next to it. */\n@container panneau-list (max-width: 40rem) {\n .scroller {\n overflow: visible;\n background: none;\n border: 0;\n }\n\n /* The labels of the cells replace the headers, and the list's sort select their buttons. */\n .table thead {\n display: none;\n }\n\n .table,\n .table tbody,\n .table tr,\n .table td {\n display: block;\n }\n\n .table tbody {\n display: grid;\n gap: var(--panneau-space-2);\n }\n\n .table tr {\n position: relative;\n padding: var(--panneau-space-2) 0;\n background-color: var(--panneau-color-surface);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n }\n\n .table td {\n display: grid;\n grid-template-columns: minmax(5rem, 35%) 1fr;\n gap: var(--panneau-space-2);\n padding: var(--panneau-space-1) var(--panneau-space-3);\n text-align: start !important;\n border: 0;\n }\n\n .table td.check,\n .table td.actionsCell {\n display: flex;\n width: auto;\n }\n\n .table td.actionsCell > * {\n flex-wrap: wrap;\n }\n\n .table td.check {\n position: absolute;\n top: var(--panneau-space-2);\n inset-inline-end: var(--panneau-space-2);\n padding: 0;\n }\n\n .table td.actionsCell {\n justify-content: flex-start;\n flex-wrap: wrap;\n padding-top: var(--panneau-space-2);\n }\n\n .table td.title {\n display: block;\n min-width: 0;\n padding-inline-end: var(--panneau-space-10);\n font-weight: var(--panneau-font-weight-medium);\n }\n\n .table td.title .cellLabel {\n display: none;\n }\n\n .cellLabel {\n display: block;\n font-size: var(--panneau-font-size-sm);\n color: var(--panneau-color-text-muted);\n }\n}\n"],"mappings":""}
|
package/dist/types.d.ts
CHANGED
|
@@ -156,7 +156,10 @@ export interface ListLayoutProps {
|
|
|
156
156
|
label: string;
|
|
157
157
|
/** The checkbox that selects the page, for layouts that show it in a header. */
|
|
158
158
|
pageSelection: ReactNode;
|
|
159
|
-
/**
|
|
159
|
+
/**
|
|
160
|
+
* The URL of the image of an item (`itemImage` of the resource), or `null` for an item without
|
|
161
|
+
* one: the gallery shows it, and the table its thumbnail. `undefined` when items have no image.
|
|
162
|
+
*/
|
|
160
163
|
getItemImage?: ((item: ListItem) => string | null) | undefined;
|
|
161
164
|
/** The month of the calendar, in the `calendar` layout. */
|
|
162
165
|
calendar?: ListCalendarProps | undefined;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/useRenderValue.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ import type { ReactNode } from 'react';
|
|
|
2
2
|
import type { DisplayEntry, ListColumn, ListItem } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Renders the value of a column for an item with its display: those given, over those of the
|
|
5
|
-
* plugins, over the built-in ones.
|
|
5
|
+
* plugins, over the built-in ones. A compound field without a display of its own (decision 0065)
|
|
6
|
+
* shows the summaries of its field entry. Other columns without a known display, and compound
|
|
7
|
+
* fields without a summary, show their value as text.
|
|
6
8
|
*/
|
|
7
9
|
export declare function useRenderValue(displays?: Readonly<Record<string, DisplayEntry>>): (item: ListItem, column: ListColumn) => ReactNode;
|
|
8
10
|
//# sourceMappingURL=useRenderValue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRenderValue.d.ts","sourceRoot":"","sources":["../src/useRenderValue.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useRenderValue.d.ts","sourceRoot":"","sources":["../src/useRenderValue.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGlE;;;;;GAKG;AACH,wBAAgB,cAAc,CAC1B,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAM,GACtD,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,KAAK,SAAS,CA4CnD"}
|
package/dist/useRenderValue.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import { getColumnValue } from "./values.js";
|
|
2
|
+
import Displays_module_default from "./displays/Displays.module.js";
|
|
2
3
|
import { builtInDisplays } from "./displays/displays.js";
|
|
3
4
|
import { usePlugins } from "@panneau/core";
|
|
4
5
|
import { c } from "react/compiler-runtime";
|
|
5
6
|
import { usePanneauIntl } from "@panneau/ui";
|
|
6
7
|
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
import { summarizeCompound } from "@panneau/fields";
|
|
9
|
+
import { isCompoundField } from "@panneau/protocol/runtime";
|
|
7
10
|
//#region src/useRenderValue.tsx
|
|
8
11
|
/**
|
|
9
12
|
* Renders the value of a column for an item with its display: those given, over those of the
|
|
10
|
-
* plugins, over the built-in ones.
|
|
13
|
+
* plugins, over the built-in ones. A compound field without a display of its own (decision 0065)
|
|
14
|
+
* shows the summaries of its field entry. Other columns without a known display, and compound
|
|
15
|
+
* fields without a summary, show their value as text.
|
|
11
16
|
*/
|
|
12
17
|
function useRenderValue(t0) {
|
|
13
|
-
const $ = c(
|
|
18
|
+
const $ = c(11);
|
|
14
19
|
let t1;
|
|
15
20
|
if ($[0] !== t0) {
|
|
16
21
|
t1 = t0 === void 0 ? {} : t0;
|
|
@@ -40,10 +45,24 @@ function useRenderValue(t0) {
|
|
|
40
45
|
} else t4 = $[6];
|
|
41
46
|
const allDisplays = t4;
|
|
42
47
|
let t5;
|
|
43
|
-
if ($[7] !== allDisplays || $[8] !== intl) {
|
|
48
|
+
if ($[7] !== allDisplays || $[8] !== intl || $[9] !== plugins.fields) {
|
|
44
49
|
t5 = (item, column) => {
|
|
45
50
|
if (column.render !== void 0) return column.render(item);
|
|
46
|
-
const
|
|
51
|
+
const own = column.display !== void 0 && column.display !== null ? allDisplays[column.display] : void 0;
|
|
52
|
+
const field = column.field ?? null;
|
|
53
|
+
if (own === void 0 && field !== null && isCompoundField(field)) {
|
|
54
|
+
const value = getColumnValue(item, column, intl.locale);
|
|
55
|
+
const summary = summarizeCompound(plugins.fields.get(field.type), value, {
|
|
56
|
+
field,
|
|
57
|
+
locale: intl.locale
|
|
58
|
+
});
|
|
59
|
+
if (summary !== null) return /* @__PURE__ */ jsx("span", {
|
|
60
|
+
className: Displays_module_default.text,
|
|
61
|
+
"data-clamp": "",
|
|
62
|
+
children: summary
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const Display = own ?? builtInDisplays.text;
|
|
47
66
|
if (Display === void 0) return null;
|
|
48
67
|
return /* @__PURE__ */ jsx(Display, {
|
|
49
68
|
value: getColumnValue(item, column, intl.locale),
|
|
@@ -54,8 +73,9 @@ function useRenderValue(t0) {
|
|
|
54
73
|
};
|
|
55
74
|
$[7] = allDisplays;
|
|
56
75
|
$[8] = intl;
|
|
57
|
-
$[9] =
|
|
58
|
-
|
|
76
|
+
$[9] = plugins.fields;
|
|
77
|
+
$[10] = t5;
|
|
78
|
+
} else t5 = $[10];
|
|
59
79
|
return t5;
|
|
60
80
|
}
|
|
61
81
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRenderValue.js","names":["ReactNode","usePlugins","usePanneauIntl","builtInDisplays","DisplayEntry","ListColumn","ListItem","getColumnValue","useRenderValue","t0","$","_c","t1","undefined","displays","intl","plugins","t2","Object","fromEntries","t3","Record","t4","allDisplays","t5","item","column","render","
|
|
1
|
+
{"version":3,"file":"useRenderValue.js","names":["ReactNode","usePlugins","summarizeCompound","isCompoundField","usePanneauIntl","styles","builtInDisplays","DisplayEntry","ListColumn","ListItem","getColumnValue","useRenderValue","t0","$","_c","t1","undefined","displays","intl","plugins","t2","Object","fromEntries","t3","Record","t4","allDisplays","t5","fields","item","column","render","own","display","field","value","locale","summary","get","type","text","Display","_c","styles"],"sources":["../src/useRenderValue.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { usePlugins } from '@panneau/core';\nimport { summarizeCompound } from '@panneau/fields';\nimport { isCompoundField } from '@panneau/protocol/runtime';\nimport { usePanneauIntl } from '@panneau/ui';\n\nimport styles from './displays/Displays.module.css';\nimport { builtInDisplays } from './displays/displays';\nimport type { DisplayEntry, ListColumn, ListItem } from './types';\nimport { getColumnValue } from './values';\n\n/**\n * Renders the value of a column for an item with its display: those given, over those of the\n * plugins, over the built-in ones. A compound field without a display of its own (decision 0065)\n * shows the summaries of its field entry. Other columns without a known display, and compound\n * fields without a summary, show their value as text.\n */\nexport function useRenderValue(\n displays: Readonly<Record<string, DisplayEntry>> = {},\n): (item: ListItem, column: ListColumn) => ReactNode {\n const intl = usePanneauIntl();\n const plugins = usePlugins();\n const allDisplays: Record<string, DisplayEntry> = {\n ...builtInDisplays,\n ...(Object.fromEntries(plugins.displays) as Record<string, DisplayEntry>),\n ...displays,\n };\n return (item, column) => {\n if (column.render !== undefined) {\n return column.render(item);\n }\n const own =\n column.display !== undefined && column.display !== null\n ? allDisplays[column.display]\n : undefined;\n const field = column.field ?? null;\n if (own === undefined && field !== null && isCompoundField(field)) {\n const value = getColumnValue(item, column, intl.locale);\n const summary = summarizeCompound(plugins.fields.get(field.type), value, {\n field,\n locale: intl.locale,\n });\n if (summary !== null) {\n return (\n <span className={styles.text} data-clamp=\"\">\n {summary}\n </span>\n );\n }\n }\n const Display = own ?? builtInDisplays.text;\n if (Display === undefined) {\n return null;\n }\n return (\n <Display\n value={getColumnValue(item, column, intl.locale)}\n item={item}\n column={column}\n field={column.field ?? null}\n />\n );\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,SAAOW,eAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAD,IAAA;EACHG,KAAAH,OAAAI,KAAAA,IAAA,CAAoD,IAApDJ;EAAqDC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAArD,MAAAI,WAAAF;CAEA,MAAAG,OAAad,eAAe;CAC5B,MAAAe,UAAgBlB,WAAW;CAAE,IAAAmB;CAAA,IAAAP,EAAA,OAAAM,QAAAF,UAAA;EAGrBG,KAAAC,OAAMC,YAAaH,QAAOF,QAAS;EAACJ,EAAA,KAAAM,QAAAF;EAAAJ,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAApC,MAAAU,KAAAH;CAAoE,IAAAK;CAAA,IAAAZ,EAAA,OAAAI,YAAAJ,EAAA,OAAAU,IAAA;EAF1BE,KAAA;GAAA,GAC3CnB;GAAe,GACdiB;GAAoE,GACrEN;EACP;EAACJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAU;EAAAV,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAJD,MAAAa,cAAkDD;CAIhD,IAAAE;CAAA,IAAAd,EAAA,OAAAa,eAAAb,EAAA,OAAAK,QAAAL,EAAA,OAAAM,QAAAS,QAAA;EACKD,MAAAE,MAAAC,WAAA;GACH,IAAIA,OAAMC,WAAYf,KAAAA,GAAS,OACpBc,OAAMC,OAAQF,IAAI;GAE7B,MAAAG,MACIF,OAAMG,YAAajB,KAAAA,KAAac,OAAMG,YAAa,OAC7CP,YAAYI,OAAMG,WADxBjB,KAAAA;GAGJ,MAAAkB,QAAcJ,OAAMI,SAAN;GACd,IAAIF,QAAQhB,KAAAA,KAAakB,UAAU,QAAQ/B,gBAAgB+B,KAAK,GAAC;IAC7D,MAAAC,QAAczB,eAAemB,MAAMC,QAAQZ,KAAIkB,MAAO;IACtD,MAAAC,UAAgBnC,kBAAkBiB,QAAOS,OAAOU,IAAKJ,MAAKK,IAAK,GAAGJ,OAAO;KAAAD;KAAAE,QAE7DlB,KAAIkB;IAChB,CAAC;IACD,IAAIC,YAAY,MAAI,OAEZ,oBAAA,QAAA;KAAiB,WAAAhC,wBAAMmC;KAAkB,cAAA;KACpCH,UAAAA;IACE,CAAA;GAEd;GAEL,MAAAI,UAAgBT,OAAO1B,gBAAekC;GACtC,IAAIC,YAAYzB,KAAAA,GAAS,OACd;GACV,OAEG,oBAAC,SAAD;IACW,OAAAN,eAAemB,MAAMC,QAAQZ,KAAIkB,MAAO;IACzCP;IACEC;IACD,OAAAA,OAAMI,SAAN;GAAoB,CAAA;EAC7B;EAETrB,EAAA,KAAAa;EAAAb,EAAA,KAAAK;EAAAL,EAAA,KAAAM,QAAAS;EAAAf,EAAA,MAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,OAnCMc;AAmCN"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@panneau/lists",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.19",
|
|
4
4
|
"description": "Lists of Panneau: columns with displays, table and cards layouts, sorting, filters, search, pagination, selection and actions, driven by the list state of @panneau/core.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -37,14 +37,14 @@
|
|
|
37
37
|
"react-intl": "^12.0.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@panneau/core": "5.0.0-alpha.
|
|
41
|
-
"@panneau/fields": "5.0.0-alpha.
|
|
42
|
-
"@panneau/intl": "5.0.0-alpha.
|
|
43
|
-
"@panneau/protocol": "5.0.0-alpha.
|
|
44
|
-
"@panneau/ui": "5.0.0-alpha.
|
|
40
|
+
"@panneau/core": "5.0.0-alpha.19",
|
|
41
|
+
"@panneau/fields": "5.0.0-alpha.19",
|
|
42
|
+
"@panneau/intl": "5.0.0-alpha.19",
|
|
43
|
+
"@panneau/protocol": "5.0.0-alpha.19",
|
|
44
|
+
"@panneau/ui": "5.0.0-alpha.19",
|
|
45
45
|
"lucide-react": "^1.57.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@panneau/data": "5.0.0-alpha.
|
|
48
|
+
"@panneau/data": "5.0.0-alpha.19"
|
|
49
49
|
}
|
|
50
50
|
}
|