@plumile/backoffice-react 0.1.164 → 0.1.166

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 (27) hide show
  1. package/lib/esm/auth/authRefreshNotice.css.js +0 -1
  2. package/lib/esm/auth/login/loginPage.css.js +1 -0
  3. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js +85 -69
  4. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +1 -1
  5. package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js +0 -1
  6. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +1 -0
  7. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js +1 -1
  8. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js.map +1 -1
  9. package/lib/esm/components/backoffice/refs/BackofficeLazyEntityCount.js +17 -8
  10. package/lib/esm/components/backoffice/refs/BackofficeLazyEntityCount.js.map +1 -1
  11. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +54 -53
  12. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
  13. package/lib/esm/index.js +21 -21
  14. package/lib/esm/pages/BackofficeEntityDetailPage.js +19 -19
  15. package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
  16. package/lib/esm/pages/BackofficeEntityListPage.helpers.js +8 -8
  17. package/lib/esm/pages/BackofficeEntityListPage.helpers.js.map +1 -1
  18. package/lib/esm/pages/BackofficeEntityListPage.js +112 -99
  19. package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -1
  20. package/lib/types/components/backoffice/detail/BackofficeDetailRelationListBlock.d.ts.map +1 -1
  21. package/lib/types/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.d.ts.map +1 -1
  22. package/lib/types/components/backoffice/refs/BackofficeLazyEntityCount.d.ts +13 -1
  23. package/lib/types/components/backoffice/refs/BackofficeLazyEntityCount.d.ts.map +1 -1
  24. package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts +1 -0
  25. package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts.map +1 -1
  26. package/lib/types/pages/BackofficeEntityListPage.d.ts.map +1 -1
  27. package/package.json +12 -12
@@ -4,33 +4,34 @@ import { buildDataTableColumns as n } from "../components/backoffice/columns/bui
4
4
  import { useBackofficeLoadMore as r } from "../hooks/useBackofficeLoadMore.js";
5
5
  import { useBackofficeListRefetch as i } from "../hooks/useBackofficeListRefetch.js";
6
6
  import { BackofficeEntityListScaffold as a } from "../components/backoffice/scaffolds/BackofficeEntityListScaffold.js";
7
- import { BackofficeRightPageLayout as o } from "../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js";
8
- import { buildEntityListBreadcrumb as s } from "../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js";
9
- import { rowFlagsColumnCell as c } from "../components/backoffice/list/RowFlagsCell.css.js";
10
- import { RowFlagsCell as l } from "../components/backoffice/list/RowFlagsCell.js";
11
- import { useBackofficeListUrlState as u } from "../hooks/useBackofficeListUrlState.js";
12
- import { buildActionsColumn as d, computeActionsColumnWidthPx as f, computeRowFlagsColumnWidthPx as p, isFormMutationAction as m, isRouteAction as h, resolveActionVariant as g, resolveLabel as _, resolveTrackBySize as v } from "./BackofficeEntityListPage.helpers.js";
13
- import { actionTrigger as y, actionsColumnCell as b, headerActions as x } from "./backofficeEntityListPage.css.js";
14
- import { useCallback as S, useMemo as C, useState as w } from "react";
15
- import { jsx as T, jsxs as E } from "react/jsx-runtime";
16
- import { useTranslation as D } from "react-i18next";
17
- import { Button as O } from "@plumile/ui/atomic/atoms/button/Button.js";
18
- import { usePaginationFragment as k, usePreloadedQuery as ee } from "react-relay";
19
- import { BACKOFFICE_LIST_DEFAULTS as te, BACKOFFICE_LIST_REFETCH_POLICY as ne } from "@plumile/backoffice-core/constants.js";
20
- import re from "@plumile/router/routing/Link.js";
21
- import { LinkButton as ie } from "@plumile/ui/atomic/atoms/button/LinkButton.js";
22
- import { TableCell as ae } from "@plumile/ui/components/data-table/TableCell.js";
23
- import { EyeSvg as A } from "@plumile/ui/icons/EyeSvg.js";
7
+ import { BackofficeLazyEntityCountLabel as o } from "../components/backoffice/refs/BackofficeLazyEntityCount.js";
8
+ import { BackofficeRightPageLayout as s } from "../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js";
9
+ import { buildEntityListBreadcrumb as c } from "../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js";
10
+ import { rowFlagsColumnCell as l } from "../components/backoffice/list/RowFlagsCell.css.js";
11
+ import { RowFlagsCell as u } from "../components/backoffice/list/RowFlagsCell.js";
12
+ import { useBackofficeListUrlState as d } from "../hooks/useBackofficeListUrlState.js";
13
+ import { buildActionsColumn as f, computeActionsColumnWidthPx as p, computeRowFlagsColumnWidthPx as m, isFormMutationAction as h, isRouteAction as g, resolveActionVariant as _, resolveLabel as v, resolveTrackBySize as y } from "./BackofficeEntityListPage.helpers.js";
14
+ import { actionTrigger as ee, actionsColumnCell as te, headerActions as b } from "./backofficeEntityListPage.css.js";
15
+ import { useCallback as x, useMemo as S, useState as C } from "react";
16
+ import { jsx as w, jsxs as ne } from "react/jsx-runtime";
17
+ import { useTranslation as T } from "react-i18next";
18
+ import { Button as re } from "@plumile/ui/atomic/atoms/button/Button.js";
19
+ import { usePaginationFragment as E, usePreloadedQuery as D } from "react-relay";
20
+ import { BACKOFFICE_LIST_DEFAULTS as O, BACKOFFICE_LIST_REFETCH_POLICY as ie } from "@plumile/backoffice-core/constants.js";
21
+ import ae from "@plumile/router/routing/Link.js";
22
+ import { LinkButton as oe } from "@plumile/ui/atomic/atoms/button/LinkButton.js";
23
+ import { TableCell as se } from "@plumile/ui/components/data-table/TableCell.js";
24
+ import { EyeSvg as ce } from "@plumile/ui/icons/EyeSvg.js";
24
25
  //#region src/pages/BackofficeEntityListPage.tsx
25
- var j = (e, t, n, r) => {
26
+ var le = (e, t, n, r) => {
26
27
  let i = t != null && t.length > 0, a = e;
27
28
  if (i) {
28
29
  let n = [{
29
30
  id: "__rowFlags",
30
31
  header: "",
31
- className: c,
32
+ className: l,
32
33
  mobileRole: "badge",
33
- cell: (e) => /* @__PURE__ */ T(l, {
34
+ cell: (e) => /* @__PURE__ */ w(u, {
34
35
  row: e,
35
36
  flags: t,
36
37
  tApp: r
@@ -43,78 +44,80 @@ var j = (e, t, n, r) => {
43
44
  }
44
45
  let o = 0;
45
46
  i && (o = t.length);
46
- let s = p(o), u = f(n), d = 0;
47
+ let s = m(o), c = p(n), d = 0;
47
48
  i && (d = 1);
48
- let m = a.length - d - 1, h = a.slice(d, d + Math.max(0, m)).map((e) => v(e, "1fr")).join(" "), g = "";
49
- return g = i ? `${s}px ${h} ${u}px` : `${h} ${u}px`, {
49
+ let f = a.length - d - 1, h = a.slice(d, d + Math.max(0, f)).map((e) => y(e, "1fr")).join(" "), g = "";
50
+ return g = i ? `${s}px ${h} ${c}px` : `${h} ${c}px`, {
50
51
  columns: a,
51
52
  gridTemplateColumns: g
52
53
  };
53
- }, M = ({ config: s, prepared: c, breadcrumb: l }) => {
54
- let f = s.list, { t: p } = D(), { t: v } = e(), [M, N] = w(null), P = ee(f.query, c.query), { data: F, loadNext: I, hasNext: L, isLoadingNext: R, refetch: z } = k(f.fragment, P), B = f.getConnection(F), V = C(() => B.edges.map((e) => f.toRow(e.node)), [B.edges, f]), { columns: H, gridTemplateColumns: U } = C(() => {
55
- let e = n(f.columns, {
56
- tApp: p,
57
- t: v
58
- }), t = d({
59
- ariaLabel: v("actions.view"),
60
- fallback: v("common.notAvailable"),
61
- className: b,
62
- resolveDetailHref: (e) => s.routes.detail(e),
63
- renderAction: ({ href: e, ariaLabel: t }) => /* @__PURE__ */ T(ae.Actions, { children: /* @__PURE__ */ T(re, {
54
+ }, k = ({ config: c, prepared: l, breadcrumb: u }) => {
55
+ let p = c.list, { t: m } = T(), { t: y } = e(), [k, A] = C(null), [j, M] = C(0), N = D(p.query, l.query), { data: P, loadNext: F, hasNext: I, isLoadingNext: L, refetch: R } = E(p.fragment, N), z = p.getConnection(P), B = S(() => z.edges.map((e) => p.toRow(e.node)), [z.edges, p]), { columns: V, gridTemplateColumns: H } = S(() => {
56
+ let e = n(p.columns, {
57
+ tApp: m,
58
+ t: y
59
+ }), t = f({
60
+ ariaLabel: y("actions.view"),
61
+ fallback: y("common.notAvailable"),
62
+ className: te,
63
+ resolveDetailHref: (e) => c.routes.detail(e),
64
+ renderAction: ({ href: e, ariaLabel: t }) => /* @__PURE__ */ w(se.Actions, { children: /* @__PURE__ */ w(ae, {
64
65
  to: e,
65
- className: y,
66
+ className: ee,
66
67
  "aria-label": t,
67
68
  title: t,
68
69
  preloadOnMouseEnter: !0,
69
- children: /* @__PURE__ */ T(A, {
70
+ children: /* @__PURE__ */ w(ce, {
70
71
  width: 16,
71
72
  height: 16
72
73
  })
73
74
  }) })
74
75
  });
75
- return j([...e, t], f.rowFlags, 1, p);
76
+ return le([...e, t], p.rowFlags, 1, m);
76
77
  }, [
77
- s.routes,
78
- f.columns,
79
- f.rowFlags,
80
- v,
81
- p
82
- ]), W = S((e) => f.getRowId(e), [f]), { state: G, pushState: K } = u(s), q = s.listDefaults ?? f.defaultState ?? {
78
+ c.routes,
79
+ p.columns,
80
+ p.rowFlags,
81
+ y,
82
+ m
83
+ ]), U = x((e) => p.getRowId(e), [p]), { state: W, pushState: ue } = d(c), G = c.listDefaults ?? p.defaultState ?? {
83
84
  where: null,
84
85
  sort: null
85
- }, J = G.sort ?? q.sort, { pageSize: Y } = te, { isRefreshing: oe, onRefresh: X } = i({
86
- refetch: z,
87
- variables: C(() => ({
88
- where: G.where,
89
- sort: J,
90
- count: Y,
86
+ }, K = W.sort ?? G.sort, { pageSize: q } = O, { isRefreshing: de, onRefresh: J } = i({
87
+ refetch: R,
88
+ variables: S(() => ({
89
+ where: W.where,
90
+ sort: K,
91
+ count: q,
91
92
  cursor: null
92
93
  }), [
93
- Y,
94
- J,
95
- G.where
94
+ q,
95
+ K,
96
+ W.where
96
97
  ]),
97
98
  defaults: {
98
- where: q.where,
99
- sort: q.sort,
100
- count: Y,
99
+ where: G.where,
100
+ sort: G.sort,
101
+ count: q,
101
102
  cursor: null
102
103
  },
103
- fetchPolicy: ne,
104
- buildQueryVariables: f.buildQueryVariables
105
- }), se = r({
106
- hasNext: L,
107
- isLoadingNext: R,
108
- loadNext: I,
109
- count: Y
110
- }), Z = C(() => s.listActions ?? [], [s.listActions]), Q = C(() => Z.filter((e) => e.isVisible == null ? !0 : e.isVisible(null)), [Z]), ce = C(() => {
111
- if (Q.length !== 0) return /* @__PURE__ */ T("div", {
112
- className: x,
113
- children: Q.map((e, t) => {
114
- let { variant: n } = e, r = _(e.label, p), i = r;
115
- e.ariaLabel != null && (i = _(e.ariaLabel, p));
116
- let a = g(n, t), o = e.size ?? "small", s = e.isDisabled?.(null) === !0;
117
- return h(e) ? /* @__PURE__ */ T(ie, {
104
+ fetchPolicy: ie,
105
+ buildQueryVariables: p.buildQueryVariables
106
+ }), Y = x(() => {
107
+ M((e) => e + 1), J();
108
+ }, [J]), fe = r({
109
+ hasNext: I,
110
+ isLoadingNext: L,
111
+ loadNext: F,
112
+ count: q
113
+ }), X = S(() => c.listActions ?? [], [c.listActions]), Z = S(() => X.filter((e) => e.isVisible == null ? !0 : e.isVisible(null)), [X]), pe = S(() => {
114
+ if (Z.length !== 0) return /* @__PURE__ */ w("div", {
115
+ className: b,
116
+ children: Z.map((e, t) => {
117
+ let { variant: n } = e, r = v(e.label, m), i = r;
118
+ e.ariaLabel != null && (i = v(e.ariaLabel, m));
119
+ let a = _(n, t), o = e.size ?? "small", s = e.isDisabled?.(null) === !0;
120
+ return g(e) ? /* @__PURE__ */ w(oe, {
118
121
  to: e.to(null),
119
122
  variant: a,
120
123
  size: o,
@@ -122,57 +125,67 @@ var j = (e, t, n, r) => {
122
125
  "aria-label": i,
123
126
  preloadOnMouseEnter: !0,
124
127
  children: r
125
- }, e.id) : m(e) ? /* @__PURE__ */ T(O, {
128
+ }, e.id) : h(e) ? /* @__PURE__ */ w(re, {
126
129
  type: "button",
127
130
  variant: a,
128
131
  size: o,
129
132
  disabled: s,
130
133
  onClick: () => {
131
- N(e.id);
134
+ A(e.id);
132
135
  },
133
136
  "aria-label": i,
134
137
  children: r
135
138
  }, e.id) : null;
136
139
  })
137
140
  });
138
- }, [p, Q]), $ = Z.find((e) => e.id === M);
139
- return /* @__PURE__ */ E(o, {
140
- breadcrumb: l,
141
- children: [/* @__PURE__ */ T(a, {
142
- config: s,
143
- state: G,
144
- pushState: K,
145
- headerActions: ce,
146
- rows: V,
147
- columns: H,
148
- gridTemplateColumns: U,
149
- getRowId: W,
150
- hasNextPage: L,
151
- isLoadingMore: R,
152
- isRefreshing: oe,
153
- onLoadMore: se,
154
- onRefresh: X,
155
- totalCount: B.totalCount ?? null
156
- }), $ != null && m($) && /* @__PURE__ */ T(t, {
141
+ }, [m, Z]), Q = X.find((e) => e.id === k), $ = null;
142
+ return B.length > 0 && ($ = /* @__PURE__ */ w("span", { children: y("list.loaded", { count: B.length }) })), /* @__PURE__ */ ne(s, {
143
+ breadcrumb: u,
144
+ children: [/* @__PURE__ */ w(a, {
145
+ config: c,
146
+ state: W,
147
+ pushState: ue,
148
+ headerActions: pe,
149
+ rows: B,
150
+ columns: V,
151
+ gridTemplateColumns: H,
152
+ getRowId: U,
153
+ hasNextPage: I,
154
+ isLoadingMore: L,
155
+ isRefreshing: de,
156
+ onLoadMore: fe,
157
+ onRefresh: Y,
158
+ totalCount: null,
159
+ loadedCountLabel: /* @__PURE__ */ w(o, {
160
+ count: p.count,
161
+ where: W.where,
162
+ fetchKey: j,
163
+ fallback: $,
164
+ children: (e) => /* @__PURE__ */ w("span", { children: y("list.showing", {
165
+ shown: B.length,
166
+ total: e
167
+ }) })
168
+ })
169
+ }), Q != null && h(Q) && /* @__PURE__ */ w(t, {
157
170
  isOpen: !0,
158
- action: $,
171
+ action: Q,
159
172
  node: null,
160
173
  onClose: () => {
161
- N(null);
174
+ A(null);
162
175
  },
163
- onSuccess: X
176
+ onSuccess: Y
164
177
  })]
165
178
  });
166
- }, N = ({ entityManifest: e, config: t, prepared: n }) => {
167
- let { t: r } = D();
168
- return /* @__PURE__ */ T(M, {
179
+ }, A = ({ entityManifest: e, config: t, prepared: n }) => {
180
+ let { t: r } = T();
181
+ return /* @__PURE__ */ w(k, {
169
182
  entityManifest: e,
170
183
  config: t,
171
184
  prepared: n,
172
- breadcrumb: s(t, r)
185
+ breadcrumb: c(t, r)
173
186
  });
174
187
  };
175
188
  //#endregion
176
- export { N as BackofficeEntityListPage, N as default };
189
+ export { A as BackofficeEntityListPage, A as default };
177
190
 
178
191
  //# sourceMappingURL=BackofficeEntityListPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeEntityListPage.js","names":[],"sources":["../../../src/pages/BackofficeEntityListPage.tsx"],"sourcesContent":["import { type JSX, useCallback, useMemo, useState } from 'react';\nimport type { TFunction } from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport Link from '@plumile/router/routing/Link.js';\nimport { usePaginationFragment, usePreloadedQuery } from 'react-relay';\nimport {\n BACKOFFICE_LIST_DEFAULTS,\n BACKOFFICE_LIST_REFETCH_POLICY,\n} from '@plumile/backoffice-core/constants.js';\nimport type {\n BackofficeEntityManifestItem,\n BackofficePreparedListRoute,\n BackofficeRuntimeResolvedListFacetConfig,\n BackofficeRowFlagSpec,\n} from '@plumile/backoffice-core/types.js';\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { LinkButton } from '@plumile/ui/atomic/atoms/button/LinkButton.js';\nimport {\n type DataTableColumn,\n type GetRowId,\n} from '@plumile/ui/components/data-table/DataTable.js';\nimport { TableCell } from '@plumile/ui/components/data-table/TableCell.js';\nimport { EyeSvg } from '@plumile/ui/icons/EyeSvg.js';\nimport { BackofficeEntityListScaffold } from '../components/backoffice/scaffolds/BackofficeEntityListScaffold.js';\nimport { LazyBackofficeEntityActionFormDialog } from '../components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js';\nimport { buildDataTableColumns } from '../components/backoffice/columns/buildDataTableColumns.js';\nimport { RowFlagsCell } from '../components/backoffice/list/RowFlagsCell.js';\nimport { useBackofficeListUrlState } from '../hooks/useBackofficeListUrlState.js';\nimport { useBackofficeLoadMore } from '../hooks/useBackofficeLoadMore.js';\nimport { useBackofficeListRefetch } from '../hooks/useBackofficeListRefetch.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport * as pageStyles from './backofficeEntityListPage.css.js';\nimport { rowFlagsColumnCell } from '../components/backoffice/list/RowFlagsCell.css.js';\nimport { BackofficeRightPageLayout } from '../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js';\nimport { buildEntityListBreadcrumb } from '../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js';\nimport {\n buildActionsColumn,\n computeActionsColumnWidthPx,\n computeRowFlagsColumnWidthPx,\n isFormMutationAction,\n isRouteAction,\n resolveLabel,\n resolveActionVariant,\n resolveTrackBySize,\n type ConnectionListConfig,\n} from './BackofficeEntityListPage.helpers.js';\n\nexport type BackofficeEntityListPageProps = {\n entityManifest: BackofficeEntityManifestItem;\n config: BackofficeRuntimeResolvedListFacetConfig;\n prepared: BackofficePreparedListRoute;\n};\n\nconst applyListEdgeColumns = <Row,>(\n inputColumns: readonly DataTableColumn<Row>[],\n rowFlags: readonly BackofficeRowFlagSpec<Row>[] | undefined,\n actionCount: number,\n tApp: TFunction,\n): {\n columns: readonly DataTableColumn<Row>[];\n gridTemplateColumns?: string;\n} => {\n const hasFlags = rowFlags != null && rowFlags.length > 0;\n\n let columns = inputColumns;\n if (hasFlags) {\n const flagsColumn: DataTableColumn<Row> = {\n id: '__rowFlags',\n header: '',\n className: rowFlagsColumnCell,\n mobileRole: 'badge',\n cell: (row) => {\n return <RowFlagsCell row={row} flags={rowFlags} tApp={tApp} />;\n },\n };\n\n // Ensure we never pick the flags column as \"primary\".\n const withFlags = [flagsColumn, ...inputColumns];\n const hasPrimary = withFlags.some((col) => {\n return col.isPrimary === true;\n });\n\n columns = withFlags;\n if (!hasPrimary) {\n columns = withFlags.map((col, index) => {\n if (index === 1) {\n return { ...col, isPrimary: true };\n }\n return col;\n });\n }\n }\n\n let flagCount = 0;\n if (hasFlags) {\n flagCount = rowFlags.length;\n }\n const flagsWidthPx = computeRowFlagsColumnWidthPx(flagCount);\n const actionsWidthPx = computeActionsColumnWidthPx(actionCount);\n\n // We always include the right-side \"actions\" column in list pages.\n let leftColumnCount = 0;\n if (hasFlags) {\n leftColumnCount = 1;\n }\n const middleCount = columns.length - leftColumnCount - 1;\n\n const middleTracks = columns\n .slice(leftColumnCount, leftColumnCount + Math.max(0, middleCount))\n .map((column) => {\n return resolveTrackBySize(column as DataTableColumn<unknown>, '1fr');\n })\n .join(' ');\n\n let gridTemplateColumns = '';\n if (hasFlags) {\n gridTemplateColumns = `${flagsWidthPx}px ${middleTracks} ${actionsWidthPx}px`;\n } else {\n gridTemplateColumns = `${middleTracks} ${actionsWidthPx}px`;\n }\n\n return { columns, gridTemplateColumns };\n};\n\nconst BackofficeEntityConnectionListPage = ({\n config,\n prepared,\n breadcrumb,\n}: Omit<BackofficeEntityListPageProps, 'config'> & {\n config: ConnectionListConfig;\n breadcrumb: ReturnType<typeof buildEntityListBreadcrumb>;\n}): JSX.Element | null => {\n const listConfig = config.list;\n\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const [activeFormActionId, setActiveFormActionId] = useState<string | null>(\n null,\n );\n\n const queryData = usePreloadedQuery(listConfig.query, prepared.query);\n const {\n data: fragmentData,\n loadNext,\n hasNext,\n isLoadingNext,\n refetch,\n } = usePaginationFragment(listConfig.fragment, queryData as never);\n\n const connection = listConfig.getConnection(fragmentData);\n\n const rows = useMemo(() => {\n return connection.edges.map((edge) => {\n return listConfig.toRow(edge.node);\n });\n }, [connection.edges, listConfig]);\n\n const { columns, gridTemplateColumns } = useMemo((): {\n columns: readonly DataTableColumn<unknown>[];\n gridTemplateColumns?: string;\n } => {\n const baseColumns = buildDataTableColumns(listConfig.columns, {\n tApp,\n t,\n });\n const actionsColumn = buildActionsColumn({\n ariaLabel: t('actions.view'),\n fallback: t('common.notAvailable'),\n className: pageStyles.actionsColumnCell,\n resolveDetailHref: (id) => {\n return config.routes.detail(id);\n },\n renderAction: ({ href, ariaLabel }) => {\n return (\n <TableCell.Actions>\n <Link\n to={href}\n className={pageStyles.actionTrigger}\n aria-label={ariaLabel}\n title={ariaLabel}\n preloadOnMouseEnter\n >\n <EyeSvg width={16} height={16} />\n </Link>\n </TableCell.Actions>\n );\n },\n });\n const allColumns = [...baseColumns, actionsColumn];\n return applyListEdgeColumns(allColumns, listConfig.rowFlags, 1, tApp);\n }, [config.routes, listConfig.columns, listConfig.rowFlags, t, tApp]);\n\n const getRowId = useCallback<GetRowId<unknown>>(\n (row) => {\n return listConfig.getRowId(row);\n },\n [listConfig],\n );\n\n const { state, pushState } = useBackofficeListUrlState(config);\n const listDefaults = config.listDefaults ??\n listConfig.defaultState ?? { where: null, sort: null };\n const resolvedSort = state.sort ?? listDefaults.sort;\n const { pageSize } = BACKOFFICE_LIST_DEFAULTS;\n\n const baseVariables = useMemo(() => {\n return {\n where: state.where,\n sort: resolvedSort,\n count: pageSize,\n cursor: null,\n };\n }, [pageSize, resolvedSort, state.where]);\n\n const { isRefreshing, onRefresh } = useBackofficeListRefetch({\n refetch,\n variables: baseVariables,\n defaults: {\n where: listDefaults.where,\n sort: listDefaults.sort,\n count: pageSize,\n cursor: null,\n },\n fetchPolicy: BACKOFFICE_LIST_REFETCH_POLICY,\n buildQueryVariables: listConfig.buildQueryVariables,\n });\n\n const handleLoadMore = useBackofficeLoadMore({\n hasNext,\n isLoadingNext,\n loadNext,\n count: pageSize,\n });\n\n const listActions = useMemo(() => {\n return config.listActions ?? [];\n }, [config.listActions]);\n const visibleActions = useMemo(() => {\n return listActions.filter((action) => {\n if (action.isVisible == null) {\n return true;\n }\n return action.isVisible(null);\n });\n }, [listActions]);\n\n const headerActions = useMemo(() => {\n if (visibleActions.length === 0) {\n return undefined;\n }\n return (\n <div className={pageStyles.headerActions}>\n {visibleActions.map((action, index) => {\n const { variant: actionVariant } = action;\n const label = resolveLabel(action.label, tApp);\n let ariaLabel = label;\n if (action.ariaLabel != null) {\n ariaLabel = resolveLabel(action.ariaLabel, tApp);\n }\n const variant = resolveActionVariant(actionVariant, index);\n const size = action.size ?? 'small';\n const isDisabled = action.isDisabled?.(null) === true;\n\n if (isRouteAction(action)) {\n const href = action.to(null);\n return (\n <LinkButton\n key={action.id}\n to={href}\n variant={variant}\n size={size}\n isDisabled={isDisabled}\n aria-label={ariaLabel}\n preloadOnMouseEnter\n >\n {label}\n </LinkButton>\n );\n }\n\n if (isFormMutationAction(action)) {\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={variant}\n size={size}\n disabled={isDisabled}\n onClick={() => {\n setActiveFormActionId(action.id);\n }}\n aria-label={ariaLabel}\n >\n {label}\n </Button>\n );\n }\n\n return null;\n })}\n </div>\n );\n }, [tApp, visibleActions]);\n\n const activeFormAction = listActions.find((action) => {\n return action.id === activeFormActionId;\n });\n\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <BackofficeEntityListScaffold\n config={config}\n state={state}\n pushState={pushState}\n headerActions={headerActions}\n rows={rows}\n columns={columns}\n gridTemplateColumns={gridTemplateColumns}\n getRowId={getRowId}\n hasNextPage={hasNext}\n isLoadingMore={isLoadingNext}\n isRefreshing={isRefreshing}\n onLoadMore={handleLoadMore}\n onRefresh={onRefresh}\n totalCount={connection.totalCount ?? null}\n />\n {activeFormAction != null && isFormMutationAction(activeFormAction) && (\n <LazyBackofficeEntityActionFormDialog\n isOpen\n action={activeFormAction}\n node={null}\n onClose={() => {\n setActiveFormActionId(null);\n }}\n onSuccess={onRefresh}\n />\n )}\n </BackofficeRightPageLayout>\n );\n};\n\nexport const BackofficeEntityListPage = ({\n entityManifest,\n config,\n prepared,\n}: BackofficeEntityListPageProps): JSX.Element | null => {\n const { t: tApp } = useTranslation();\n const breadcrumb = buildEntityListBreadcrumb(config, tApp);\n\n return (\n <BackofficeEntityConnectionListPage\n entityManifest={entityManifest}\n config={config}\n prepared={prepared}\n breadcrumb={breadcrumb}\n />\n );\n};\n\nexport default BackofficeEntityListPage;\n"],"mappings":"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"}
1
+ {"version":3,"file":"BackofficeEntityListPage.js","names":[],"sources":["../../../src/pages/BackofficeEntityListPage.tsx"],"sourcesContent":["import { type JSX, useCallback, useMemo, useState } from 'react';\nimport type { TFunction } from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport Link from '@plumile/router/routing/Link.js';\nimport { usePaginationFragment, usePreloadedQuery } from 'react-relay';\nimport {\n BACKOFFICE_LIST_DEFAULTS,\n BACKOFFICE_LIST_REFETCH_POLICY,\n} from '@plumile/backoffice-core/constants.js';\nimport type {\n BackofficeEntityManifestItem,\n BackofficePreparedListRoute,\n BackofficeRuntimeResolvedListFacetConfig,\n BackofficeRowFlagSpec,\n} from '@plumile/backoffice-core/types.js';\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { LinkButton } from '@plumile/ui/atomic/atoms/button/LinkButton.js';\nimport {\n type DataTableColumn,\n type GetRowId,\n} from '@plumile/ui/components/data-table/DataTable.js';\nimport { TableCell } from '@plumile/ui/components/data-table/TableCell.js';\nimport { EyeSvg } from '@plumile/ui/icons/EyeSvg.js';\nimport { BackofficeEntityListScaffold } from '../components/backoffice/scaffolds/BackofficeEntityListScaffold.js';\nimport { BackofficeLazyEntityCountLabel } from '../components/backoffice/refs/BackofficeLazyEntityCount.js';\nimport { LazyBackofficeEntityActionFormDialog } from '../components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js';\nimport { buildDataTableColumns } from '../components/backoffice/columns/buildDataTableColumns.js';\nimport { RowFlagsCell } from '../components/backoffice/list/RowFlagsCell.js';\nimport { useBackofficeListUrlState } from '../hooks/useBackofficeListUrlState.js';\nimport { useBackofficeLoadMore } from '../hooks/useBackofficeLoadMore.js';\nimport { useBackofficeListRefetch } from '../hooks/useBackofficeListRefetch.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport * as pageStyles from './backofficeEntityListPage.css.js';\nimport { rowFlagsColumnCell } from '../components/backoffice/list/RowFlagsCell.css.js';\nimport { BackofficeRightPageLayout } from '../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js';\nimport { buildEntityListBreadcrumb } from '../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js';\nimport {\n buildActionsColumn,\n computeActionsColumnWidthPx,\n computeRowFlagsColumnWidthPx,\n isFormMutationAction,\n isRouteAction,\n resolveLabel,\n resolveActionVariant,\n resolveTrackBySize,\n type ConnectionListConfig,\n} from './BackofficeEntityListPage.helpers.js';\n\nexport type BackofficeEntityListPageProps = {\n entityManifest: BackofficeEntityManifestItem;\n config: BackofficeRuntimeResolvedListFacetConfig;\n prepared: BackofficePreparedListRoute;\n};\n\nconst applyListEdgeColumns = <Row,>(\n inputColumns: readonly DataTableColumn<Row>[],\n rowFlags: readonly BackofficeRowFlagSpec<Row>[] | undefined,\n actionCount: number,\n tApp: TFunction,\n): {\n columns: readonly DataTableColumn<Row>[];\n gridTemplateColumns?: string;\n} => {\n const hasFlags = rowFlags != null && rowFlags.length > 0;\n\n let columns = inputColumns;\n if (hasFlags) {\n const flagsColumn: DataTableColumn<Row> = {\n id: '__rowFlags',\n header: '',\n className: rowFlagsColumnCell,\n mobileRole: 'badge',\n cell: (row) => {\n return <RowFlagsCell row={row} flags={rowFlags} tApp={tApp} />;\n },\n };\n\n // Ensure we never pick the flags column as \"primary\".\n const withFlags = [flagsColumn, ...inputColumns];\n const hasPrimary = withFlags.some((col) => {\n return col.isPrimary === true;\n });\n\n columns = withFlags;\n if (!hasPrimary) {\n columns = withFlags.map((col, index) => {\n if (index === 1) {\n return { ...col, isPrimary: true };\n }\n return col;\n });\n }\n }\n\n let flagCount = 0;\n if (hasFlags) {\n flagCount = rowFlags.length;\n }\n const flagsWidthPx = computeRowFlagsColumnWidthPx(flagCount);\n const actionsWidthPx = computeActionsColumnWidthPx(actionCount);\n\n // We always include the right-side \"actions\" column in list pages.\n let leftColumnCount = 0;\n if (hasFlags) {\n leftColumnCount = 1;\n }\n const middleCount = columns.length - leftColumnCount - 1;\n\n const middleTracks = columns\n .slice(leftColumnCount, leftColumnCount + Math.max(0, middleCount))\n .map((column) => {\n return resolveTrackBySize(column as DataTableColumn<unknown>, '1fr');\n })\n .join(' ');\n\n let gridTemplateColumns = '';\n if (hasFlags) {\n gridTemplateColumns = `${flagsWidthPx}px ${middleTracks} ${actionsWidthPx}px`;\n } else {\n gridTemplateColumns = `${middleTracks} ${actionsWidthPx}px`;\n }\n\n return { columns, gridTemplateColumns };\n};\n\nconst BackofficeEntityConnectionListPage = ({\n config,\n prepared,\n breadcrumb,\n}: Omit<BackofficeEntityListPageProps, 'config'> & {\n config: ConnectionListConfig;\n breadcrumb: ReturnType<typeof buildEntityListBreadcrumb>;\n}): JSX.Element | null => {\n const listConfig = config.list;\n\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const [activeFormActionId, setActiveFormActionId] = useState<string | null>(\n null,\n );\n const [countFetchKey, setCountFetchKey] = useState(0);\n\n const queryData = usePreloadedQuery(listConfig.query, prepared.query);\n const {\n data: fragmentData,\n loadNext,\n hasNext,\n isLoadingNext,\n refetch,\n } = usePaginationFragment(listConfig.fragment, queryData as never);\n\n const connection = listConfig.getConnection(fragmentData);\n\n const rows = useMemo(() => {\n return connection.edges.map((edge) => {\n return listConfig.toRow(edge.node);\n });\n }, [connection.edges, listConfig]);\n\n const { columns, gridTemplateColumns } = useMemo((): {\n columns: readonly DataTableColumn<unknown>[];\n gridTemplateColumns?: string;\n } => {\n const baseColumns = buildDataTableColumns(listConfig.columns, {\n tApp,\n t,\n });\n const actionsColumn = buildActionsColumn({\n ariaLabel: t('actions.view'),\n fallback: t('common.notAvailable'),\n className: pageStyles.actionsColumnCell,\n resolveDetailHref: (id) => {\n return config.routes.detail(id);\n },\n renderAction: ({ href, ariaLabel }) => {\n return (\n <TableCell.Actions>\n <Link\n to={href}\n className={pageStyles.actionTrigger}\n aria-label={ariaLabel}\n title={ariaLabel}\n preloadOnMouseEnter\n >\n <EyeSvg width={16} height={16} />\n </Link>\n </TableCell.Actions>\n );\n },\n });\n const allColumns = [...baseColumns, actionsColumn];\n return applyListEdgeColumns(allColumns, listConfig.rowFlags, 1, tApp);\n }, [config.routes, listConfig.columns, listConfig.rowFlags, t, tApp]);\n\n const getRowId = useCallback<GetRowId<unknown>>(\n (row) => {\n return listConfig.getRowId(row);\n },\n [listConfig],\n );\n\n const { state, pushState } = useBackofficeListUrlState(config);\n const listDefaults = config.listDefaults ??\n listConfig.defaultState ?? { where: null, sort: null };\n const resolvedSort = state.sort ?? listDefaults.sort;\n const { pageSize } = BACKOFFICE_LIST_DEFAULTS;\n\n const baseVariables = useMemo(() => {\n return {\n where: state.where,\n sort: resolvedSort,\n count: pageSize,\n cursor: null,\n };\n }, [pageSize, resolvedSort, state.where]);\n\n const { isRefreshing, onRefresh } = useBackofficeListRefetch({\n refetch,\n variables: baseVariables,\n defaults: {\n where: listDefaults.where,\n sort: listDefaults.sort,\n count: pageSize,\n cursor: null,\n },\n fetchPolicy: BACKOFFICE_LIST_REFETCH_POLICY,\n buildQueryVariables: listConfig.buildQueryVariables,\n });\n\n const handleRefresh = useCallback(() => {\n setCountFetchKey((current) => {\n return current + 1;\n });\n onRefresh();\n }, [onRefresh]);\n\n const handleLoadMore = useBackofficeLoadMore({\n hasNext,\n isLoadingNext,\n loadNext,\n count: pageSize,\n });\n\n const listActions = useMemo(() => {\n return config.listActions ?? [];\n }, [config.listActions]);\n const visibleActions = useMemo(() => {\n return listActions.filter((action) => {\n if (action.isVisible == null) {\n return true;\n }\n return action.isVisible(null);\n });\n }, [listActions]);\n\n const headerActions = useMemo(() => {\n if (visibleActions.length === 0) {\n return undefined;\n }\n return (\n <div className={pageStyles.headerActions}>\n {visibleActions.map((action, index) => {\n const { variant: actionVariant } = action;\n const label = resolveLabel(action.label, tApp);\n let ariaLabel = label;\n if (action.ariaLabel != null) {\n ariaLabel = resolveLabel(action.ariaLabel, tApp);\n }\n const variant = resolveActionVariant(actionVariant, index);\n const size = action.size ?? 'small';\n const isDisabled = action.isDisabled?.(null) === true;\n\n if (isRouteAction(action)) {\n const href = action.to(null);\n return (\n <LinkButton\n key={action.id}\n to={href}\n variant={variant}\n size={size}\n isDisabled={isDisabled}\n aria-label={ariaLabel}\n preloadOnMouseEnter\n >\n {label}\n </LinkButton>\n );\n }\n\n if (isFormMutationAction(action)) {\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={variant}\n size={size}\n disabled={isDisabled}\n onClick={() => {\n setActiveFormActionId(action.id);\n }}\n aria-label={ariaLabel}\n >\n {label}\n </Button>\n );\n }\n\n return null;\n })}\n </div>\n );\n }, [tApp, visibleActions]);\n\n const activeFormAction = listActions.find((action) => {\n return action.id === activeFormActionId;\n });\n\n let loadedCountFallback: JSX.Element | null = null;\n if (rows.length > 0) {\n loadedCountFallback = (\n <span>\n {t('list.loaded', {\n count: rows.length,\n })}\n </span>\n );\n }\n const loadedCountLabel = (\n <BackofficeLazyEntityCountLabel\n count={listConfig.count}\n where={state.where}\n fetchKey={countFetchKey}\n fallback={loadedCountFallback}\n >\n {(totalCount) => {\n return (\n <span>\n {t('list.showing', {\n shown: rows.length,\n total: totalCount,\n })}\n </span>\n );\n }}\n </BackofficeLazyEntityCountLabel>\n );\n\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <BackofficeEntityListScaffold\n config={config}\n state={state}\n pushState={pushState}\n headerActions={headerActions}\n rows={rows}\n columns={columns}\n gridTemplateColumns={gridTemplateColumns}\n getRowId={getRowId}\n hasNextPage={hasNext}\n isLoadingMore={isLoadingNext}\n isRefreshing={isRefreshing}\n onLoadMore={handleLoadMore}\n onRefresh={handleRefresh}\n totalCount={null}\n loadedCountLabel={loadedCountLabel}\n />\n {activeFormAction != null && isFormMutationAction(activeFormAction) && (\n <LazyBackofficeEntityActionFormDialog\n isOpen\n action={activeFormAction}\n node={null}\n onClose={() => {\n setActiveFormActionId(null);\n }}\n onSuccess={handleRefresh}\n />\n )}\n </BackofficeRightPageLayout>\n );\n};\n\nexport const BackofficeEntityListPage = ({\n entityManifest,\n config,\n prepared,\n}: BackofficeEntityListPageProps): JSX.Element | null => {\n const { t: tApp } = useTranslation();\n const breadcrumb = buildEntityListBreadcrumb(config, tApp);\n\n return (\n <BackofficeEntityConnectionListPage\n entityManifest={entityManifest}\n config={config}\n prepared={prepared}\n breadcrumb={breadcrumb}\n />\n );\n};\n\nexport default BackofficeEntityListPage;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeDetailRelationListBlock.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailRelationListBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAU3E,OAAO,KAAK,EAEV,mCAAmC,EAEpC,MAAM,mCAAmC,CAAC;AAc3C,MAAM,MAAM,sCAAsC,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,mCAAmC,CAAC;IAC9C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAyLF,eAAO,MAAM,iCAAiC,GAAI,6BAI/C,sCAAsC,KAAG,GAAG,CAAC,OAgB/C,CAAC;AAEF,eAAe,iCAAiC,CAAC"}
1
+ {"version":3,"file":"BackofficeDetailRelationListBlock.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailRelationListBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAU3E,OAAO,KAAK,EAEV,mCAAmC,EAEpC,MAAM,mCAAmC,CAAC;AAe3C,MAAM,MAAM,sCAAsC,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,mCAAmC,CAAC;IAC9C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAiOF,eAAO,MAAM,iCAAiC,GAAI,6BAI/C,sCAAsC,KAAG,GAAG,CAAC,OAgB/C,CAAC;AAEF,eAAe,iCAAiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"backofficeTopbarBreadcrumb.css.d.ts","sourceRoot":"","sources":["../../../../../../src/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,GAAG,QAGd,CAAC;AAEH,eAAO,MAAM,IAAI,QAOf,CAAC;AAEH,eAAO,MAAM,IAAI,QAIf,CAAC;AAEH,eAAO,MAAM,SAAS,QAIpB,CAAC;AAUH,eAAO,MAAM,QAAQ,QAAW,CAAC;AAEjC,eAAO,MAAM,WAAW,QAMtB,CAAC;AAEH,eAAO,MAAM,SAAS,QAAiB,CAAC;AAExC,eAAO,MAAM,IAAI,QAOf,CAAC;AAEH,eAAO,MAAM,OAAO,QAKlB,CAAC"}
1
+ {"version":3,"file":"backofficeTopbarBreadcrumb.css.d.ts","sourceRoot":"","sources":["../../../../../../src/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,GAAG,QAMd,CAAC;AAEH,eAAO,MAAM,IAAI,QAUf,CAAC;AAEH,eAAO,MAAM,IAAI,QAKf,CAAC;AAEH,eAAO,MAAM,SAAS,QAIpB,CAAC;AAUH,eAAO,MAAM,QAAQ,QAAW,CAAC;AAEjC,eAAO,MAAM,WAAW,QAMtB,CAAC;AAEH,eAAO,MAAM,SAAS,QAAiB,CAAC;AAExC,eAAO,MAAM,IAAI,QAUf,CAAC;AAEH,eAAO,MAAM,OAAO,QAQlB,CAAC"}
@@ -1,8 +1,20 @@
1
- import { type JSX } from 'react';
1
+ import { type JSX, type ReactNode } from 'react';
2
+ import type { BackofficeRuntimeEntityCountConfig } from '@plumile/backoffice-core/types.js';
2
3
  export type BackofficeLazyEntityCountProps<Where extends Record<string, unknown> = Record<string, unknown>> = {
3
4
  entity: string;
4
5
  where: Where | null;
5
6
  };
7
+ export type BackofficeEntityCountValueProps<Where extends Record<string, unknown> = Record<string, unknown>> = {
8
+ count: BackofficeRuntimeEntityCountConfig<Where>;
9
+ where: Where | null;
10
+ fetchKey?: string | number;
11
+ children?: (value: number) => ReactNode;
12
+ };
13
+ export type BackofficeLazyEntityCountLabelProps<Where extends Record<string, unknown> = Record<string, unknown>> = BackofficeEntityCountValueProps<Where> & {
14
+ fallback: ReactNode;
15
+ };
16
+ export declare const BackofficeEntityCountValue: <Where extends Record<string, unknown> = Record<string, unknown>>({ count, where, fetchKey, children, }: BackofficeEntityCountValueProps<Where>) => JSX.Element | null;
17
+ export declare const BackofficeLazyEntityCountLabel: <Where extends Record<string, unknown> = Record<string, unknown>>({ fallback, ...props }: BackofficeLazyEntityCountLabelProps<Where>) => JSX.Element;
6
18
  export declare const BackofficeLazyEntityCount: ({ entity, where, }: BackofficeLazyEntityCountProps) => JSX.Element | null;
7
19
  export default BackofficeLazyEntityCount;
8
20
  //# sourceMappingURL=BackofficeLazyEntityCount.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeLazyEntityCount.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/refs/BackofficeLazyEntityCount.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAW3C,MAAM,MAAM,8BAA8B,CACxC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC7D;IACF,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAsCF,eAAO,MAAM,yBAAyB,GAAI,oBAGvC,8BAA8B,KAAG,GAAG,CAAC,OAAO,GAAG,IAYjD,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"BackofficeLazyEntityCount.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/refs/BackofficeLazyEntityCount.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3D,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AAO5F,MAAM,MAAM,8BAA8B,CACxC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC7D;IACF,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,+BAA+B,CACzC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC7D;IACF,KAAK,EAAE,kCAAkC,CAAC,KAAK,CAAC,CAAC;IACjD,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,mCAAmC,CAC7C,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC7D,+BAA+B,CAAC,KAAK,CAAC,GAAG;IAC3C,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,uCAKC,+BAA+B,CAAC,KAAK,CAAC,KAAG,GAAG,CAAC,OAAO,GAAG,IAczD,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACzC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,wBAGC,mCAAmC,CAAC,KAAK,CAAC,KAAG,GAAG,CAAC,OAYnD,CAAC;AAmBF,eAAO,MAAM,yBAAyB,GAAI,oBAGvC,8BAA8B,KAAG,GAAG,CAAC,OAAO,GAAG,IAYjD,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -22,6 +22,7 @@ type Props<RowView> = {
22
22
  onLoadMore: () => void;
23
23
  onRefresh?: () => void;
24
24
  totalCount?: number | null;
25
+ loadedCountLabel?: ReactNode;
25
26
  emptyState?: JSX.Element;
26
27
  statusBanner?: ReactNode;
27
28
  isLoadingInitial?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeEntityListScaffold.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/scaffolds/BackofficeEntityListScaffold.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAiBf,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,gDAAgD,CAAC;AAWxD,OAAO,KAAK,EAEV,mBAAmB,EAEnB,wCAAwC,EAEzC,MAAM,mCAAmC,CAAC;AA+H3C,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,KAAK,WAAW,GAAG,MAAM,CAAC;AAE1B,KAAK,KAAK,CAAC,OAAO,IAAI;IACpB,MAAM,EAAE,wCAAwC,CAAC;IACjD,KAAK,EAAE,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACtD,SAAS,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;IAC1E,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,EAAE,SAAS,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,OAAO,EAClD,OAAO,KAAK,CAAC,OAAO,CAAC,KACpB,GAAG,CAAC,OAAO,GAAG,IAy5BhB,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"BackofficeEntityListScaffold.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/scaffolds/BackofficeEntityListScaffold.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAiBf,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,gDAAgD,CAAC;AAWxD,OAAO,KAAK,EAEV,mBAAmB,EAEnB,wCAAwC,EAEzC,MAAM,mCAAmC,CAAC;AA+H3C,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,KAAK,WAAW,GAAG,MAAM,CAAC;AAE1B,KAAK,KAAK,CAAC,OAAO,IAAI;IACpB,MAAM,EAAE,wCAAwC,CAAC;IACjD,KAAK,EAAE,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACtD,SAAS,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;IAC1E,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,EAAE,SAAS,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,OAAO,EAClD,OAAO,KAAK,CAAC,OAAO,CAAC,KACpB,GAAG,CAAC,OAAO,GAAG,IA65BhB,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeEntityListPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeEntityListPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAkC,MAAM,OAAO,CAAC;AASjE,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAC3B,wCAAwC,EAEzC,MAAM,mCAAmC,CAAC;AAiC3C,MAAM,MAAM,6BAA6B,GAAG;IAC1C,cAAc,EAAE,4BAA4B,CAAC;IAC7C,MAAM,EAAE,wCAAwC,CAAC;IACjD,QAAQ,EAAE,2BAA2B,CAAC;CACvC,CAAC;AAkSF,eAAO,MAAM,wBAAwB,GAAI,uCAItC,6BAA6B,KAAG,GAAG,CAAC,OAAO,GAAG,IAYhD,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"BackofficeEntityListPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeEntityListPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAkC,MAAM,OAAO,CAAC;AASjE,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAC3B,wCAAwC,EAEzC,MAAM,mCAAmC,CAAC;AAkC3C,MAAM,MAAM,6BAA6B,GAAG;IAC1C,cAAc,EAAE,4BAA4B,CAAC;IAC7C,MAAM,EAAE,wCAAwC,CAAC;IACjD,QAAQ,EAAE,2BAA2B,CAAC;CACvC,CAAC;AAyUF,eAAO,MAAM,wBAAwB,GAAI,uCAItC,6BAA6B,KAAG,GAAG,CAAC,OAAO,GAAG,IAYhD,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumile/backoffice-react",
3
- "version": "0.1.164",
3
+ "version": "0.1.166",
4
4
  "description": "React provider and pages for Kronex backoffice",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -179,12 +179,12 @@
179
179
  "tslib": "^2.8.1"
180
180
  },
181
181
  "devDependencies": {
182
- "@plumile/auth": "^0.1.164",
183
- "@plumile/backoffice-core": "^0.1.164",
184
- "@plumile/filter-query": "^0.1.164",
185
- "@plumile/router": "^0.1.164",
186
- "@plumile/ui": "^0.1.164",
187
- "@types/react": "19.2.16",
182
+ "@plumile/auth": "^0.1.166",
183
+ "@plumile/backoffice-core": "^0.1.166",
184
+ "@plumile/filter-query": "^0.1.166",
185
+ "@plumile/router": "^0.1.166",
186
+ "@plumile/ui": "^0.1.166",
187
+ "@types/react": "19.2.17",
188
188
  "@types/react-dom": "19.2.3",
189
189
  "@types/relay-runtime": "20.1.1",
190
190
  "i18next": "26.3.1",
@@ -196,11 +196,11 @@
196
196
  "typescript": "6.0.3"
197
197
  },
198
198
  "peerDependencies": {
199
- "@plumile/auth": "^0.1.163",
200
- "@plumile/backoffice-core": "^0.1.163",
201
- "@plumile/filter-query": "^0.1.163",
202
- "@plumile/router": "^0.1.163",
203
- "@plumile/ui": "^0.1.163",
199
+ "@plumile/auth": "^0.1.164",
200
+ "@plumile/backoffice-core": "^0.1.164",
201
+ "@plumile/filter-query": "^0.1.164",
202
+ "@plumile/router": "^0.1.164",
203
+ "@plumile/ui": "^0.1.164",
204
204
  "i18next": "^26.3.1",
205
205
  "react": "^19.2.7",
206
206
  "react-dom": "^19.2.7",