@panneau/lists 5.0.0-alpha.20 → 5.0.0-alpha.22

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.
Files changed (36) hide show
  1. package/dist/ListView.d.ts +6 -1
  2. package/dist/ListView.d.ts.map +1 -1
  3. package/dist/ListView.js +281 -248
  4. package/dist/ListView.js.map +1 -1
  5. package/dist/displays/displays.js +1 -1
  6. package/dist/filters/controls.d.ts.map +1 -1
  7. package/dist/filters/controls.js +4 -2
  8. package/dist/filters/controls.js.map +1 -1
  9. package/dist/images.d.ts +1 -6
  10. package/dist/images.d.ts.map +1 -1
  11. package/dist/images.js +1 -39
  12. package/dist/index.js +1 -1
  13. package/dist/inline/InlineCell.js +1 -1
  14. package/dist/layouts/CalendarLayout.d.ts +1 -1
  15. package/dist/layouts/CalendarLayout.d.ts.map +1 -1
  16. package/dist/layouts/CalendarLayout.js +75 -71
  17. package/dist/layouts/CalendarLayout.js.map +1 -1
  18. package/dist/layouts/CardsLayout.d.ts +1 -1
  19. package/dist/layouts/CardsLayout.d.ts.map +1 -1
  20. package/dist/layouts/CardsLayout.js +6 -2
  21. package/dist/layouts/CardsLayout.js.map +1 -1
  22. package/dist/layouts/GalleryLayout.d.ts +1 -1
  23. package/dist/layouts/GalleryLayout.d.ts.map +1 -1
  24. package/dist/layouts/GalleryLayout.js +49 -43
  25. package/dist/layouts/GalleryLayout.js.map +1 -1
  26. package/dist/layouts/TableLayout.d.ts +1 -1
  27. package/dist/layouts/TableLayout.d.ts.map +1 -1
  28. package/dist/layouts/TableLayout.js +53 -47
  29. package/dist/layouts/TableLayout.js.map +1 -1
  30. package/dist/layouts/highlight.css +28 -0
  31. package/dist/layouts/highlight.module.js +12 -0
  32. package/dist/layouts/highlight.module.js.map +1 -0
  33. package/dist/types.d.ts +5 -0
  34. package/dist/types.d.ts.map +1 -1
  35. package/package.json +7 -7
  36. package/dist/images.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"GalleryLayout.js","names":["ImageOff","Checkbox","Icon","usePanneauIntl","RowActionsFit","fitContent","useRowActionsFit","messages","ListLayoutProps","styles","ItemTitle","GalleryLayout","t0","$","_c","items","columns","renderValue","getItemLabel","getItemHref","getItemImage","isCurrent","selectable","isSelected","onToggle","renderActions","label","pageSelection","intl","title","t1","fitLevel","measureList","t2","t3","t4","item","selected","actions","current","image","id","tile","undefined","media","placeholder","check","formatMessage","selectItem","caption","map","gallery","t5","t6","_c","styles"],"sources":["../../src/layouts/GalleryLayout.tsx"],"sourcesContent":["import { ImageOff } from 'lucide-react';\n\nimport { Checkbox, Icon, usePanneauIntl } from '@panneau/ui';\n\nimport { RowActionsFit, fitContent, useRowActionsFit } from '../actions/fit';\nimport { messages } from '../messages';\nimport type { ListLayoutProps } from '../types';\nimport styles from './GalleryLayout.module.css';\nimport { ItemTitle } from './ItemTitle';\n\n/**\n * Items as a grid of images (decision 0044): the image of each item (`itemImage` of the\n * resource), its title under it, its checkbox and its actions. An item without an image shows a\n * placeholder.\n */\nexport function GalleryLayout({\n items,\n columns,\n renderValue,\n getItemLabel,\n getItemHref,\n getItemImage,\n isCurrent,\n selectable,\n isSelected,\n onToggle,\n renderActions,\n label,\n pageSelection,\n}: ListLayoutProps) {\n const intl = usePanneauIntl();\n const [title] = columns;\n const [fitLevel, measureList] = useRowActionsFit(fitContent(items, columns));\n return (\n <RowActionsFit value={fitLevel}>\n <div ref={measureList}>\n {selectable ? <div className={styles.pageSelection}>{pageSelection}</div> : null}\n <ul className={styles.gallery} aria-label={label}>\n {items.map((item) => {\n const selected = selectable && isSelected(item);\n const actions = renderActions(item);\n const current = isCurrent?.(item) ?? false;\n const image = getItemImage?.(item) ?? null;\n return (\n <li\n key={item.id}\n className={styles.tile}\n data-selected={selected || undefined}\n data-current={current || undefined}\n >\n <div className={styles.media}>\n {image !== null ? (\n <img src={image} alt=\"\" loading=\"lazy\" />\n ) : (\n <span className={styles.placeholder}>\n <Icon icon={ImageOff} size=\"lg\" />\n </span>\n )}\n {selectable ? (\n <span 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 </span>\n ) : null}\n </div>\n <div className={styles.caption}>\n <div className={styles.title}>\n <ItemTitle\n href={getItemHref?.(item) ?? null}\n current={current}\n >\n {title !== undefined\n ? renderValue(item, title)\n : getItemLabel(item)}\n </ItemTitle>\n </div>\n {actions !== null ? (\n <div className={styles.actions}>{actions}</div>\n ) : null}\n </div>\n </li>\n );\n })}\n </ul>\n </div>\n </RowActionsFit>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"GalleryLayout.js","names":["ImageOff","Checkbox","Icon","usePanneauIntl","RowActionsFit","fitContent","useRowActionsFit","cx","messages","ListLayoutProps","styles","ItemTitle","highlight","GalleryLayout","t0","$","_c","items","columns","renderValue","getItemLabel","getItemHref","getItemImage","isCurrent","isHighlighted","selectable","isSelected","onToggle","renderActions","label","pageSelection","intl","title","t1","fitLevel","measureList","t2","t3","t4","item","selected","actions","current","highlighted","image","id","tile","undefined","media","placeholder","check","formatMessage","selectItem","caption","map","gallery","t5","t6","_c","styles","highlight"],"sources":["../../src/layouts/GalleryLayout.tsx"],"sourcesContent":["import { 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 { ListLayoutProps } from '../types';\nimport styles from './GalleryLayout.module.css';\nimport { ItemTitle } from './ItemTitle';\nimport highlight from './highlight.module.css';\n\n/**\n * Items as a grid of images (decision 0044): the image of each item (`itemImage` of the\n * resource), its title under it, its checkbox and its actions. An item without an image shows a\n * placeholder.\n */\nexport function GalleryLayout({\n items,\n columns,\n renderValue,\n getItemLabel,\n getItemHref,\n getItemImage,\n isCurrent,\n isHighlighted,\n selectable,\n isSelected,\n onToggle,\n renderActions,\n label,\n pageSelection,\n}: ListLayoutProps) {\n const intl = usePanneauIntl();\n const [title] = columns;\n const [fitLevel, measureList] = useRowActionsFit(fitContent(items, columns));\n return (\n <RowActionsFit value={fitLevel}>\n <div ref={measureList}>\n {selectable ? <div className={styles.pageSelection}>{pageSelection}</div> : null}\n <ul className={styles.gallery} aria-label={label}>\n {items.map((item) => {\n const selected = selectable && isSelected(item);\n const actions = renderActions(item);\n const current = isCurrent?.(item) ?? false;\n const highlighted = isHighlighted?.(item) ?? false;\n const image = getItemImage?.(item) ?? null;\n return (\n <li\n key={item.id}\n className={cx(styles.tile, highlighted && highlight.highlighted)}\n data-selected={selected || undefined}\n data-current={current || undefined}\n data-highlighted={highlighted || undefined}\n >\n <div className={styles.media}>\n {image !== null ? (\n <img src={image} alt=\"\" loading=\"lazy\" />\n ) : (\n <span className={styles.placeholder}>\n <Icon icon={ImageOff} size=\"lg\" />\n </span>\n )}\n {selectable ? (\n <span 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 </span>\n ) : null}\n </div>\n <div className={styles.caption}>\n <div className={styles.title}>\n <ItemTitle\n href={getItemHref?.(item) ?? null}\n current={current}\n >\n {title !== undefined\n ? renderValue(item, title)\n : getItemLabel(item)}\n </ItemTitle>\n </div>\n {actions !== null ? (\n <div className={styles.actions}>{actions}</div>\n ) : null}\n </div>\n </li>\n );\n })}\n </ul>\n </div>\n </RowActionsFit>\n );\n}\n"],"mappings":"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"}
@@ -6,5 +6,5 @@ export declare function getSortDirection(sort: readonly string[], column: ListCo
6
6
  * title starts with a thumbnail. On narrow lists (phones), each row turns into a block that shows
7
7
  * the label of each value.
8
8
  */
9
- export declare function TableLayout({ items, columns, renderValue, getItemLabel, getItemHref, getItemImage, isCurrent, selectable, isSelected, onToggle, renderActions, sort, onSort, label, pageSelection, renderCell, }: ListLayoutProps): import("react").JSX.Element;
9
+ export declare function TableLayout({ items, columns, renderValue, getItemLabel, getItemHref, getItemImage, isCurrent, isHighlighted, selectable, isSelected, onToggle, renderActions, sort, onSort, label, pageSelection, renderCell, }: ListLayoutProps): import("react").JSX.Element;
10
10
  //# sourceMappingURL=TableLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableLayout.d.ts","sourceRoot":"","sources":["../../src/layouts/TableLayout.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI5D,mEAAmE;AACnE,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,UAAU,GACnB,WAAW,GAAG,YAAY,GAAG,IAAI,CAMnC;AAyBD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EACxB,KAAK,EACL,OAAO,EACP,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACV,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,MAAM,EACN,KAAK,EACL,aAAa,EACb,UAAU,GACb,EAAE,eAAe,+BA8IjB"}
1
+ {"version":3,"file":"TableLayout.d.ts","sourceRoot":"","sources":["../../src/layouts/TableLayout.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAK5D,mEAAmE;AACnE,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,UAAU,GACnB,WAAW,GAAG,YAAY,GAAG,IAAI,CAMnC;AAyBD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EACxB,KAAK,EACL,OAAO,EACP,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,MAAM,EACN,KAAK,EACL,aAAa,EACb,UAAU,GACb,EAAE,eAAe,+BAiJjB"}
@@ -1,5 +1,6 @@
1
1
  import { messages } from "../messages.js";
2
2
  import { ItemTitle } from "./ItemTitle.js";
3
+ import highlight_module_default from "./highlight.module.js";
3
4
  import { RowActionsFit, fitContent, useRowActionsFit } from "../actions/fit.js";
4
5
  import { cx } from "../cx.js";
5
6
  import TableLayout_module_default from "./TableLayout.module.js";
@@ -50,8 +51,8 @@ function Thumbnail(t0) {
50
51
  * the label of each value.
51
52
  */
52
53
  function TableLayout(t0) {
53
- const $ = c(67);
54
- const { items, columns, renderValue, getItemLabel, getItemHref, getItemImage, isCurrent, selectable, isSelected, onToggle, renderActions, sort, onSort, label, pageSelection, renderCell } = t0;
54
+ const $ = c(69);
55
+ const { items, columns, renderValue, getItemLabel, getItemHref, getItemImage, isCurrent, isHighlighted, selectable, isSelected, onToggle, renderActions, sort, onSort, label, pageSelection, renderCell } = t0;
55
56
  const intl = usePanneauIntl();
56
57
  let actions;
57
58
  let t1;
@@ -152,16 +153,19 @@ function TableLayout(t0) {
152
153
  $[25] = t6;
153
154
  } else t6 = $[25];
154
155
  let t7;
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) {
156
+ if ($[26] !== actions || $[27] !== columns || $[28] !== getItemHref || $[29] !== getItemImage || $[30] !== getItemLabel || $[31] !== hasActions || $[32] !== intl || $[33] !== isCurrent || $[34] !== isHighlighted || $[35] !== isSelected || $[36] !== items || $[37] !== onToggle || $[38] !== renderCell || $[39] !== renderValue || $[40] !== selectable) {
156
157
  let t8;
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) {
158
+ if ($[42] !== actions || $[43] !== columns || $[44] !== getItemHref || $[45] !== getItemImage || $[46] !== getItemLabel || $[47] !== hasActions || $[48] !== intl || $[49] !== isCurrent || $[50] !== isHighlighted || $[51] !== isSelected || $[52] !== onToggle || $[53] !== renderCell || $[54] !== renderValue || $[55] !== selectable) {
158
159
  t8 = (item_0, row) => {
159
160
  const selected = selectable && isSelected(item_0);
160
161
  const href = getItemHref?.(item_0) ?? null;
161
162
  const current = isCurrent?.(item_0) ?? false;
163
+ const highlighted = isHighlighted?.(item_0) ?? false;
162
164
  return /* @__PURE__ */ jsxs("tr", {
165
+ className: highlighted ? highlight_module_default.highlighted : void 0,
163
166
  "data-selected": selected || void 0,
164
167
  "data-current": current || void 0,
168
+ "data-highlighted": highlighted || void 0,
165
169
  children: [
166
170
  selectable ? /* @__PURE__ */ jsx("td", {
167
171
  className: TableLayout_module_default.check,
@@ -196,21 +200,22 @@ function TableLayout(t0) {
196
200
  ]
197
201
  }, item_0.id);
198
202
  };
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];
203
+ $[42] = actions;
204
+ $[43] = columns;
205
+ $[44] = getItemHref;
206
+ $[45] = getItemImage;
207
+ $[46] = getItemLabel;
208
+ $[47] = hasActions;
209
+ $[48] = intl;
210
+ $[49] = isCurrent;
211
+ $[50] = isHighlighted;
212
+ $[51] = isSelected;
213
+ $[52] = onToggle;
214
+ $[53] = renderCell;
215
+ $[54] = renderValue;
216
+ $[55] = selectable;
217
+ $[56] = t8;
218
+ } else t8 = $[56];
214
219
  t7 = items.map(t8);
215
220
  $[26] = actions;
216
221
  $[27] = columns;
@@ -220,53 +225,54 @@ function TableLayout(t0) {
220
225
  $[31] = hasActions;
221
226
  $[32] = intl;
222
227
  $[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];
228
+ $[34] = isHighlighted;
229
+ $[35] = isSelected;
230
+ $[36] = items;
231
+ $[37] = onToggle;
232
+ $[38] = renderCell;
233
+ $[39] = renderValue;
234
+ $[40] = selectable;
235
+ $[41] = t7;
236
+ } else t7 = $[41];
231
237
  let t8;
232
- if ($[55] !== t7) {
238
+ if ($[57] !== t7) {
233
239
  t8 = /* @__PURE__ */ jsx("tbody", { children: t7 });
234
- $[55] = t7;
235
- $[56] = t8;
236
- } else t8 = $[56];
240
+ $[57] = t7;
241
+ $[58] = t8;
242
+ } else t8 = $[58];
237
243
  let t9;
238
- if ($[57] !== label || $[58] !== t6 || $[59] !== t8) {
244
+ if ($[59] !== label || $[60] !== t6 || $[61] !== t8) {
239
245
  t9 = /* @__PURE__ */ jsxs("table", {
240
246
  className: TableLayout_module_default.table,
241
247
  "aria-label": label,
242
248
  children: [t6, t8]
243
249
  });
244
- $[57] = label;
245
- $[58] = t6;
246
- $[59] = t8;
247
- $[60] = t9;
248
- } else t9 = $[60];
250
+ $[59] = label;
251
+ $[60] = t6;
252
+ $[61] = t8;
253
+ $[62] = t9;
254
+ } else t9 = $[62];
249
255
  let t10;
250
- if ($[61] !== measureList || $[62] !== t9) {
256
+ if ($[63] !== measureList || $[64] !== t9) {
251
257
  t10 = /* @__PURE__ */ jsx("div", {
252
258
  className: TableLayout_module_default.scroller,
253
259
  ref: measureList,
254
260
  children: t9
255
261
  });
256
- $[61] = measureList;
257
- $[62] = t9;
258
- $[63] = t10;
259
- } else t10 = $[63];
262
+ $[63] = measureList;
263
+ $[64] = t9;
264
+ $[65] = t10;
265
+ } else t10 = $[65];
260
266
  let t11;
261
- if ($[64] !== fitLevel || $[65] !== t10) {
267
+ if ($[66] !== fitLevel || $[67] !== t10) {
262
268
  t11 = /* @__PURE__ */ jsx(RowActionsFit, {
263
269
  value: fitLevel,
264
270
  children: t10
265
271
  });
266
- $[64] = fitLevel;
267
- $[65] = t10;
268
- $[66] = t11;
269
- } else t11 = $[66];
272
+ $[66] = fitLevel;
273
+ $[67] = t10;
274
+ $[68] = t11;
275
+ } else t11 = $[68];
270
276
  return t11;
271
277
  }
272
278
  function _temp(node) {
@@ -1 +1 @@
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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"}
1
+ {"version":3,"file":"TableLayout.js","names":["ArrowDown","ArrowUp","ArrowUpDown","ImageOff","Checkbox","Icon","usePanneauIntl","RowActionsFit","fitContent","useRowActionsFit","cx","messages","ListColumn","ListLayoutProps","ItemTitle","styles","highlight","getSortDirection","sort","column","first","id","alignClass","align","center","end","undefined","Thumbnail","t0","$","_c","url","t1","thumbnail","TableLayout","items","columns","renderValue","getItemLabel","getItemHref","getItemImage","isCurrent","isHighlighted","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","highlighted","selectItem","column_0","index","content","cell","title","cellLabel","withThumbnail","t9","table","t10","scroller","t11","node","styles","_c","highlight"],"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';\nimport highlight from './highlight.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 isHighlighted,\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 const highlighted = isHighlighted?.(item) ?? false;\n return (\n <tr\n key={item.id}\n className={highlighted ? highlight.highlighted : undefined}\n data-selected={selected || undefined}\n data-current={current || undefined}\n data-highlighted={highlighted || 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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"}
@@ -0,0 +1,28 @@
1
+ /*
2
+ * An item that just appeared, such as one just created (decision 0066): a subtle background that
3
+ * shows for a moment, then fades. An inset shadow, over the background of the item, which stays as
4
+ * it is (a card, a selected row). Without the fade when the system asks for less motion: it shows,
5
+ * then goes.
6
+ */
7
+ .panneau-highlight-highlighted:not(tr),
8
+ tr.panneau-highlight-highlighted > td {
9
+ animation: panneau-highlight 3s ease-out;
10
+ }
11
+
12
+ @keyframes panneau-highlight {
13
+ 0%,
14
+ 40% {
15
+ box-shadow: inset 0 0 0 100vmax var(--panneau-color-accent-subtle);
16
+ }
17
+
18
+ 100% {
19
+ box-shadow: inset 0 0 0 100vmax transparent;
20
+ }
21
+ }
22
+
23
+ @media (prefers-reduced-motion: reduce) {
24
+ .panneau-highlight-highlighted:not(tr),
25
+ tr.panneau-highlight-highlighted > td {
26
+ animation-timing-function: steps(1, end);
27
+ }
28
+ }
@@ -0,0 +1,12 @@
1
+ import "./highlight.css";
2
+ //#region src/layouts/highlight.module.css
3
+ var highlighted = "panneau-highlight-highlighted";
4
+ var highlight = "panneau-highlight";
5
+ var highlight_module_default = {
6
+ highlighted,
7
+ highlight
8
+ };
9
+ //#endregion
10
+ export { highlight_module_default as default, highlight, highlighted };
11
+
12
+ //# sourceMappingURL=highlight.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight.module.js","names":[],"sources":["../../src/layouts/highlight.module.css"],"sourcesContent":["/*\n * An item that just appeared, such as one just created (decision 0066): a subtle background that\n * shows for a moment, then fades. An inset shadow, over the background of the item, which stays as\n * it is (a card, a selected row). Without the fade when the system asks for less motion: it shows,\n * then goes.\n */\n.highlighted:not(tr),\ntr.highlighted > td {\n animation: highlight 3s ease-out;\n}\n\n@keyframes highlight {\n 0%,\n 40% {\n box-shadow: inset 0 0 0 100vmax var(--panneau-color-accent-subtle);\n }\n\n 100% {\n box-shadow: inset 0 0 0 100vmax transparent;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .highlighted:not(tr),\n tr.highlighted > td {\n animation-timing-function: steps(1, end);\n }\n}\n"],"mappings":""}
package/dist/types.d.ts CHANGED
@@ -143,6 +143,11 @@ export interface ListLayoutProps {
143
143
  getItemHref?: ((item: ListItem) => string | null) | undefined;
144
144
  /** Whether the item is the one shown next to the list, such as in a panel of its details. */
145
145
  isCurrent?: ((item: ListItem) => boolean) | undefined;
146
+ /**
147
+ * Whether the item just appeared, such as one just created (decision 0066): the layout gives
148
+ * its element the `highlighted` class of `@panneau/lists`' highlight, and `data-highlighted`.
149
+ */
150
+ isHighlighted?: ((item: ListItem) => boolean) | undefined;
146
151
  /** Whether items have checkboxes. */
147
152
  selectable: boolean;
148
153
  isSelected: (item: ListItem) => boolean;
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/lists",
3
- "version": "5.0.0-alpha.20",
3
+ "version": "5.0.0-alpha.22",
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.20",
41
- "@panneau/fields": "5.0.0-alpha.20",
42
- "@panneau/intl": "5.0.0-alpha.20",
43
- "@panneau/protocol": "5.0.0-alpha.20",
44
- "@panneau/ui": "5.0.0-alpha.20",
40
+ "@panneau/core": "5.0.0-alpha.22",
41
+ "@panneau/fields": "5.0.0-alpha.22",
42
+ "@panneau/intl": "5.0.0-alpha.22",
43
+ "@panneau/protocol": "5.0.0-alpha.22",
44
+ "@panneau/ui": "5.0.0-alpha.22",
45
45
  "lucide-react": "^1.57.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@panneau/data": "5.0.0-alpha.20"
48
+ "@panneau/data": "5.0.0-alpha.22"
49
49
  }
50
50
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"images.js","names":["isRecord","WEB_IMAGE_TYPES","Set","isImage","source","Record","type","mime","has","toLowerCase","getImageUrl","value","first","Array","isArray","media","url","thumbnailUrl"],"sources":["../src/images.ts"],"sourcesContent":["import { isRecord } from './values';\n\n/** The types of images that browsers show. A HEIC or TIFF original needs a thumbnail. */\nconst WEB_IMAGE_TYPES = new Set([\n 'image/apng',\n 'image/avif',\n 'image/bmp',\n 'image/gif',\n 'image/jpeg',\n 'image/png',\n 'image/svg+xml',\n 'image/webp',\n]);\n\n/**\n * Whether the URL of a media or a file is an image to show, from its `type` (a media's URL is\n * the file to show) or its `mime` (a file's URL is its original), when it says.\n */\nfunction isImage(source: Record<string, unknown>): boolean {\n if (typeof source.type === 'string') {\n return source.type === 'image';\n }\n if (typeof source.mime === 'string') {\n return WEB_IMAGE_TYPES.has(source.mime.toLowerCase());\n }\n return true;\n}\n\n/**\n * The URL of an image value: a media reference or a media (its thumbnail, or the URL of an\n * image), a stored file (the URL of an image that browsers show), or a URL. `null` for anything\n * else, such as a PDF without a thumbnail.\n */\nexport function getImageUrl(value: unknown): string | null {\n const first: unknown = Array.isArray(value) ? value[0] : value;\n if (typeof first === 'string') {\n return first !== '' ? first : null;\n }\n if (!isRecord(first)) {\n return null;\n }\n const source = isRecord(first.media) ? first.media : first;\n const url = source.thumbnailUrl ?? (isImage(source) ? source.url : null);\n return typeof url === 'string' && url !== '' ? url : null;\n}\n"],"mappings":";;;AAGA,IAAMC,kCAAkB,IAAIC,IAAI;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAAY,CACf;;;;;AAMD,SAASC,QAAQC,QAA0C;CACvD,IAAI,OAAOA,OAAOE,SAAS,UACvB,OAAOF,OAAOE,SAAS;CAE3B,IAAI,OAAOF,OAAOG,SAAS,UACvB,OAAON,gBAAgBO,IAAIJ,OAAOG,KAAKE,YAAY,CAAC;CAExD,OAAO;AACX;;;;;;AAOA,SAAgBC,YAAYC,OAA+B;CACvD,MAAMC,QAAiBC,MAAMC,QAAQH,KAAK,IAAIA,MAAM,KAAKA;CACzD,IAAI,OAAOC,UAAU,UACjB,OAAOA,UAAU,KAAKA,QAAQ;CAElC,IAAI,CAACZ,SAASY,KAAK,GACf,OAAO;CAEX,MAAMR,SAASJ,SAASY,MAAMG,KAAK,IAAIH,MAAMG,QAAQH;CACrD,MAAMI,MAAMZ,OAAOa,iBAAiBd,QAAQC,MAAM,IAAIA,OAAOY,MAAM;CACnE,OAAO,OAAOA,QAAQ,YAAYA,QAAQ,KAAKA,MAAM;AACzD"}