@panneau/lists 5.0.0-alpha.18 → 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.
@@ -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. Columns without a known display show their value as text.
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;AAMvC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGlE;;;GAGG;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,CA4BnD"}
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"}
@@ -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. Columns without a known display show their value as text.
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(10);
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 Display = (column.display !== void 0 && column.display !== null ? allDisplays[column.display] : void 0) ?? builtInDisplays.text;
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] = t5;
58
- } else t5 = $[9];
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","Display","display","text","locale","field","_c"],"sources":["../src/useRenderValue.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { usePlugins } from '@panneau/core';\nimport { usePanneauIntl } from '@panneau/ui';\n\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. Columns without a known display 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 Display =\n (column.display !== undefined && column.display !== null\n ? allDisplays[column.display]\n : undefined) ?? 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":";;;;;;;;;;;AAaA,SAAOQ,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,OAAab,eAAe;CAC5B,MAAAc,UAAgBf,WAAW;CAAE,IAAAgB;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,MAAA;EACKS,MAAAC,MAAAC,WAAA;GACH,IAAIA,OAAMC,WAAYd,KAAAA,GAAS,OACpBa,OAAMC,OAAQF,IAAI;GAE7B,MAAAG,WACKF,OAAMG,YAAahB,KAAAA,KAAaa,OAAMG,YAAa,OAC9CN,YAAYG,OAAMG,WADvBhB,KAAAA,MAEmBV,gBAAe2B;GACvC,IAAIF,YAAYf,KAAAA,GAAS,OACd;GACV,OAEG,oBAAC,SAAD;IACW,OAAAN,eAAekB,MAAMC,QAAQX,KAAIgB,MAAO;IACzCN;IACEC;IACD,OAAAA,OAAMM,SAAN;GAAoB,CAAA;EAC7B;EAETtB,EAAA,KAAAa;EAAAb,EAAA,KAAAK;EAAAL,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,OAnBMc;AAmBN"}
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.18",
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.18",
41
- "@panneau/fields": "5.0.0-alpha.18",
42
- "@panneau/intl": "5.0.0-alpha.18",
43
- "@panneau/protocol": "5.0.0-alpha.18",
44
- "@panneau/ui": "5.0.0-alpha.18",
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.18"
48
+ "@panneau/data": "5.0.0-alpha.19"
49
49
  }
50
50
  }