@questpie/admin 3.2.0 → 3.2.1

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 (85) hide show
  1. package/dist/client/blocks/block-renderer.d.mts +12 -2
  2. package/dist/client/blocks/block-renderer.mjs +357 -49
  3. package/dist/client/components/blocks/block-editor-context.mjs +11 -1
  4. package/dist/client/components/blocks/block-editor-provider.mjs +68 -26
  5. package/dist/client/components/blocks/block-item.mjs +181 -170
  6. package/dist/client/components/blocks/utils/tree-utils.mjs +13 -1
  7. package/dist/client/components/fields/array-field.mjs +177 -118
  8. package/dist/client/components/filter-builder/filter-builder-sheet.mjs +305 -310
  9. package/dist/client/components/filter-builder/filters-tab.mjs +1 -1
  10. package/dist/client/components/history-sidebar.mjs +121 -114
  11. package/dist/client/components/preview/live-preview-mode.mjs +140 -114
  12. package/dist/client/components/preview/preview-pane.mjs +288 -333
  13. package/dist/client/components/primitives/option-label.mjs +44 -0
  14. package/dist/client/components/primitives/select-multi.mjs +408 -383
  15. package/dist/client/components/primitives/select-single.mjs +387 -357
  16. package/dist/client/components/widgets/chart-widget.mjs +168 -143
  17. package/dist/client/contexts/focus-context.d.mts +11 -0
  18. package/dist/client/contexts/focus-context.mjs +51 -34
  19. package/dist/client/hooks/use-brand.mjs +2 -1
  20. package/dist/client/preview/block-scope-context.d.mts +2 -2
  21. package/dist/client/preview/block-scope-context.mjs +10 -20
  22. package/dist/client/preview/index.d.mts +1 -1
  23. package/dist/client/preview/patch.mjs +100 -0
  24. package/dist/client/preview/preview-banner.d.mts +2 -2
  25. package/dist/client/preview/preview-field.d.mts +34 -5
  26. package/dist/client/preview/preview-field.mjs +385 -118
  27. package/dist/client/preview/types.d.mts +82 -3
  28. package/dist/client/preview/types.mjs +85 -6
  29. package/dist/client/preview/use-collection-preview.d.mts +19 -1
  30. package/dist/client/preview/use-collection-preview.mjs +182 -58
  31. package/dist/client/runtime/index.d.mts +2 -2
  32. package/dist/client/runtime/index.mjs +2 -2
  33. package/dist/client/runtime/provider.d.mts +5 -5
  34. package/dist/client/utils/build-field-definitions-from-schema.mjs +8 -3
  35. package/dist/client/views/auth/reset-password-form.d.mts +2 -2
  36. package/dist/client/views/auth/setup-form.d.mts +2 -2
  37. package/dist/client/views/collection/bulk-action-toolbar.mjs +23 -25
  38. package/dist/client/views/collection/cells/primitive-cells.mjs +63 -13
  39. package/dist/client/views/collection/columns/build-columns.mjs +1 -0
  40. package/dist/client/views/collection/form-view.mjs +262 -33
  41. package/dist/client/views/collection/table-view.mjs +16 -11
  42. package/dist/client/views/layout/admin-layout-provider.d.mts +5 -5
  43. package/dist/client/views/layout/admin-layout-provider.mjs +107 -16
  44. package/dist/client.d.mts +2 -2
  45. package/dist/client.mjs +1 -1
  46. package/dist/components/rich-text/rich-text-renderer.d.mts +2 -2
  47. package/dist/index.d.mts +2 -2
  48. package/dist/index.mjs +1 -1
  49. package/dist/server/augmentation/common.d.mts +8 -4
  50. package/dist/server/augmentation/form-layout.d.mts +1 -1
  51. package/dist/server/i18n/messages/cs.mjs +11 -0
  52. package/dist/server/i18n/messages/de.mjs +11 -0
  53. package/dist/server/i18n/messages/en.mjs +11 -0
  54. package/dist/server/i18n/messages/es.mjs +11 -0
  55. package/dist/server/i18n/messages/fr.mjs +11 -0
  56. package/dist/server/i18n/messages/pl.mjs +11 -0
  57. package/dist/server/i18n/messages/pt.mjs +11 -0
  58. package/dist/server/i18n/messages/sk.mjs +11 -0
  59. package/dist/server/modules/admin/block/block-builder.d.mts +7 -10
  60. package/dist/server/modules/admin/block/block-builder.mjs +7 -10
  61. package/dist/server/modules/admin/collections/account.d.mts +50 -50
  62. package/dist/server/modules/admin/collections/admin-locks.d.mts +54 -54
  63. package/dist/server/modules/admin/collections/admin-preferences.d.mts +39 -39
  64. package/dist/server/modules/admin/collections/admin-saved-views.d.mts +47 -47
  65. package/dist/server/modules/admin/collections/apikey.d.mts +68 -68
  66. package/dist/server/modules/admin/collections/assets.d.mts +57 -20
  67. package/dist/server/modules/admin/collections/session.d.mts +42 -42
  68. package/dist/server/modules/admin/collections/user.d.mts +100 -34
  69. package/dist/server/modules/admin/collections/user.mjs +4 -4
  70. package/dist/server/modules/admin/collections/verification.d.mts +32 -32
  71. package/dist/server/modules/admin/index.d.mts +3 -3
  72. package/dist/server/modules/admin/routes/admin-config.d.mts +2 -2
  73. package/dist/server/modules/admin/routes/admin-config.mjs +9 -12
  74. package/dist/server/modules/admin/routes/execute-action.d.mts +9 -9
  75. package/dist/server/modules/admin/routes/locales.d.mts +2 -2
  76. package/dist/server/modules/admin/routes/preview.d.mts +11 -11
  77. package/dist/server/modules/admin/routes/reactive.d.mts +9 -9
  78. package/dist/server/modules/admin/routes/setup.d.mts +7 -7
  79. package/dist/server/modules/admin/routes/translations.d.mts +4 -4
  80. package/dist/server/modules/admin/routes/translations.mjs +1 -1
  81. package/dist/server/modules/admin/routes/widget-data.d.mts +5 -5
  82. package/dist/server/modules/admin-preferences/collections/admin-preferences.mjs +4 -6
  83. package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +31 -33
  84. package/dist/server/modules/admin-preferences/collections/saved-views.mjs +4 -6
  85. package/package.json +3 -3
@@ -1,10 +1,10 @@
1
1
  import { useResolveText, useTranslation } from "../../i18n/hooks.mjs";
2
2
  import { selectClient, useAdminStore } from "../../runtime/provider.mjs";
3
3
  import { useScopedLocale } from "../../runtime/locale-scope.mjs";
4
+ import { isOptionGroup } from "../primitives/types.mjs";
4
5
  import { Button } from "../ui/button.mjs";
5
6
  import { Input } from "../ui/input.mjs";
6
7
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select.mjs";
7
- import { isOptionGroup } from "../primitives/types.mjs";
8
8
  import { SelectSingle } from "../primitives/select-single.mjs";
9
9
  import { SelectMulti } from "../primitives/select-multi.mjs";
10
10
  import { c } from "react/compiler-runtime";
@@ -1,5 +1,6 @@
1
1
  import { useResolveText, useTranslation } from "../i18n/hooks.mjs";
2
2
  import { cn, formatLabel } from "../lib/utils.mjs";
3
+ import { resolveOptionLabelForValue } from "./primitives/option-label.mjs";
3
4
  import { Button } from "./ui/button.mjs";
4
5
  import { Badge } from "./ui/badge.mjs";
5
6
  import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "./ui/sheet.mjs";
@@ -24,6 +25,7 @@ const VERSION_META_KEYS = new Set([
24
25
  "versionUserId",
25
26
  "versionCreatedAt"
26
27
  ]);
28
+ const EMPTY_AUDIT_ENTRIES = [];
27
29
  function formatRelativeTime(date, locale) {
28
30
  const diff = (/* @__PURE__ */ new Date()).getTime() - date.getTime();
29
31
  const absSeconds = Math.max(0, Math.floor(Math.abs(diff) / 1e3));
@@ -150,22 +152,27 @@ function summarizeBlocks(value) {
150
152
  function truncate(value, max = 160) {
151
153
  return value.length > max ? `${value.slice(0, max)}...` : value;
152
154
  }
153
- function resolveSelectValue({ field, value, resolveText }) {
155
+ function resolveSelectValue({ field, value, resolveText, t, locale }) {
154
156
  const options = field?.metadata?.options;
155
157
  if (!Array.isArray(options)) return null;
156
- return (Array.isArray(value) ? value : [value]).map((item) => {
157
- const option = options.find((candidate) => valuesEqual(candidate.value, item));
158
- return option ? resolveText(option.label, String(option.value)) : String(item);
159
- }).join(", ");
158
+ return (Array.isArray(value) ? value : [value]).map((item) => resolveOptionLabelForValue({
159
+ value: item,
160
+ options,
161
+ resolveText,
162
+ t,
163
+ locale
164
+ })).join(", ");
160
165
  }
161
- function formatFieldValue({ field, value, t, resolveText }) {
166
+ function formatFieldValue({ field, value, t, locale, resolveText }) {
162
167
  if (isEmptyValue(value)) return { summary: "-" };
163
168
  const type = field?.metadata?.type;
164
169
  if (type === "select") {
165
170
  const selectLabel = resolveSelectValue({
166
171
  field,
167
172
  value,
168
- resolveText
173
+ resolveText,
174
+ t,
175
+ locale
169
176
  });
170
177
  if (selectLabel) return { summary: selectLabel };
171
178
  }
@@ -224,34 +231,36 @@ function formatFieldValue({ field, value, t, resolveText }) {
224
231
  return { summary: String(value) };
225
232
  }
226
233
  function ValuePreview(t0) {
227
- const $ = c(12);
228
- const { field, value, t, resolveText } = t0;
234
+ const $ = c(13);
235
+ const { field, value, t, locale, resolveText } = t0;
229
236
  let t1;
230
- if ($[0] !== field || $[1] !== resolveText || $[2] !== t || $[3] !== value) {
237
+ if ($[0] !== field || $[1] !== locale || $[2] !== resolveText || $[3] !== t || $[4] !== value) {
231
238
  t1 = formatFieldValue({
232
239
  field,
233
240
  value,
234
241
  t,
242
+ locale,
235
243
  resolveText
236
244
  });
237
245
  $[0] = field;
238
- $[1] = resolveText;
239
- $[2] = t;
240
- $[3] = value;
241
- $[4] = t1;
242
- } else t1 = $[4];
246
+ $[1] = locale;
247
+ $[2] = resolveText;
248
+ $[3] = t;
249
+ $[4] = value;
250
+ $[5] = t1;
251
+ } else t1 = $[5];
243
252
  const formatted = t1;
244
253
  let t2;
245
- if ($[5] !== formatted.summary) {
254
+ if ($[6] !== formatted.summary) {
246
255
  t2 = /* @__PURE__ */ jsx("div", {
247
256
  className: "text-foreground text-xs leading-relaxed text-pretty break-words",
248
257
  children: formatted.summary
249
258
  });
250
- $[5] = formatted.summary;
251
- $[6] = t2;
252
- } else t2 = $[6];
259
+ $[6] = formatted.summary;
260
+ $[7] = t2;
261
+ } else t2 = $[7];
253
262
  let t3;
254
- if ($[7] !== formatted.detail) {
263
+ if ($[8] !== formatted.detail) {
255
264
  t3 = formatted.detail && /* @__PURE__ */ jsx(ScrollFade, {
256
265
  orientation: "both",
257
266
  fadeSize: 16,
@@ -261,19 +270,19 @@ function ValuePreview(t0) {
261
270
  children: formatted.detail
262
271
  })
263
272
  });
264
- $[7] = formatted.detail;
265
- $[8] = t3;
266
- } else t3 = $[8];
273
+ $[8] = formatted.detail;
274
+ $[9] = t3;
275
+ } else t3 = $[9];
267
276
  let t4;
268
- if ($[9] !== t2 || $[10] !== t3) {
277
+ if ($[10] !== t2 || $[11] !== t3) {
269
278
  t4 = /* @__PURE__ */ jsxs("div", {
270
279
  className: "min-w-0 space-y-2",
271
280
  children: [t2, t3]
272
281
  });
273
- $[9] = t2;
274
- $[10] = t3;
275
- $[11] = t4;
276
- } else t4 = $[11];
282
+ $[10] = t2;
283
+ $[11] = t3;
284
+ $[12] = t4;
285
+ } else t4 = $[12];
277
286
  return t4;
278
287
  }
279
288
  function getDiffKind(from, to) {
@@ -301,9 +310,9 @@ function getDiffKindConfig(kind) {
301
310
  }
302
311
  }
303
312
  function VersionDiffPanel(t0) {
304
- const $ = c(24);
313
+ const $ = c(26);
305
314
  const { previousVersion, changes, fields } = t0;
306
- const { t } = useTranslation();
315
+ const { t, locale } = useTranslation();
307
316
  const resolveText = useResolveText();
308
317
  const previousNumber = previousVersion?.versionNumber;
309
318
  if (changes.length === 0) {
@@ -351,9 +360,9 @@ function VersionDiffPanel(t0) {
351
360
  $[9] = t3;
352
361
  } else t3 = $[9];
353
362
  let t4;
354
- if ($[10] !== changes || $[11] !== fields || $[12] !== resolveText || $[13] !== t) {
363
+ if ($[10] !== changes || $[11] !== fields || $[12] !== locale || $[13] !== resolveText || $[14] !== t) {
355
364
  let t5$1;
356
- if ($[15] !== fields || $[16] !== resolveText || $[17] !== t) {
365
+ if ($[16] !== fields || $[17] !== locale || $[18] !== resolveText || $[19] !== t) {
357
366
  t5$1 = (change) => {
358
367
  const field = fields?.[change.name];
359
368
  const kind = getDiffKindConfig(change.kind);
@@ -402,6 +411,7 @@ function VersionDiffPanel(t0) {
402
411
  field,
403
412
  value: change.from,
404
413
  t,
414
+ locale,
405
415
  resolveText
406
416
  })]
407
417
  }),
@@ -426,6 +436,7 @@ function VersionDiffPanel(t0) {
426
436
  field,
427
437
  value: change.to,
428
438
  t,
439
+ locale,
429
440
  resolveText
430
441
  })]
431
442
  })
@@ -434,37 +445,39 @@ function VersionDiffPanel(t0) {
434
445
  ]
435
446
  }, change.name);
436
447
  };
437
- $[15] = fields;
438
- $[16] = resolveText;
439
- $[17] = t;
440
- $[18] = t5$1;
441
- } else t5$1 = $[18];
448
+ $[16] = fields;
449
+ $[17] = locale;
450
+ $[18] = resolveText;
451
+ $[19] = t;
452
+ $[20] = t5$1;
453
+ } else t5$1 = $[20];
442
454
  t4 = changes.map(t5$1);
443
455
  $[10] = changes;
444
456
  $[11] = fields;
445
- $[12] = resolveText;
446
- $[13] = t;
447
- $[14] = t4;
448
- } else t4 = $[14];
457
+ $[12] = locale;
458
+ $[13] = resolveText;
459
+ $[14] = t;
460
+ $[15] = t4;
461
+ } else t4 = $[15];
449
462
  let t5;
450
- if ($[19] !== t4) {
463
+ if ($[21] !== t4) {
451
464
  t5 = /* @__PURE__ */ jsx("div", {
452
465
  className: "space-y-2",
453
466
  children: t4
454
467
  });
455
- $[19] = t4;
456
- $[20] = t5;
457
- } else t5 = $[20];
468
+ $[21] = t4;
469
+ $[22] = t5;
470
+ } else t5 = $[22];
458
471
  let t6;
459
- if ($[21] !== t3 || $[22] !== t5) {
472
+ if ($[23] !== t3 || $[24] !== t5) {
460
473
  t6 = /* @__PURE__ */ jsxs("div", {
461
474
  className: "space-y-3",
462
475
  children: [t3, t5]
463
476
  });
464
- $[21] = t3;
465
- $[22] = t5;
466
- $[23] = t6;
467
- } else t6 = $[23];
477
+ $[23] = t3;
478
+ $[24] = t5;
479
+ $[25] = t6;
480
+ } else t6 = $[25];
468
481
  return t6;
469
482
  }
470
483
  function HistoryListSkeleton(t0) {
@@ -885,59 +898,53 @@ function buildVersionDiff({ version, previousVersion, fields, resolveText }) {
885
898
  return changes;
886
899
  }
887
900
  function HistorySidebar(t0) {
888
- const $ = c(31);
901
+ const $ = c(29);
889
902
  const { open, onOpenChange, auditEntries: t1, isLoadingAudit: t2, versions, fields, isLoadingVersions: t3, isReverting: t4, onRevert, showVersionsTab: t5 } = t0;
890
- let t6;
891
- if ($[0] !== t1) {
892
- t6 = t1 === void 0 ? [] : t1;
893
- $[0] = t1;
894
- $[1] = t6;
895
- } else t6 = $[1];
896
- const auditEntries = t6;
903
+ const auditEntries = t1 === void 0 ? EMPTY_AUDIT_ENTRIES : t1;
897
904
  const isLoadingAudit = t2 === void 0 ? false : t2;
898
905
  const isLoadingVersions = t3 === void 0 ? false : t3;
899
906
  const isReverting = t4 === void 0 ? false : t4;
900
907
  const showVersionsTab = t5 === void 0 ? false : t5;
901
908
  const { t } = useTranslation();
909
+ let t6;
910
+ if ($[0] !== showVersionsTab || $[1] !== t) {
911
+ t6 = showVersionsTab ? t("version.history") : t("history.title");
912
+ $[0] = showVersionsTab;
913
+ $[1] = t;
914
+ $[2] = t6;
915
+ } else t6 = $[2];
902
916
  let t7;
903
- if ($[2] !== showVersionsTab || $[3] !== t) {
904
- t7 = showVersionsTab ? t("version.history") : t("history.title");
905
- $[2] = showVersionsTab;
906
- $[3] = t;
917
+ if ($[3] !== t6) {
918
+ t7 = /* @__PURE__ */ jsx(SheetTitle, { children: t6 });
919
+ $[3] = t6;
907
920
  $[4] = t7;
908
921
  } else t7 = $[4];
909
922
  let t8;
910
- if ($[5] !== t7) {
911
- t8 = /* @__PURE__ */ jsx(SheetTitle, { children: t7 });
912
- $[5] = t7;
913
- $[6] = t8;
914
- } else t8 = $[6];
923
+ if ($[5] !== showVersionsTab || $[6] !== t) {
924
+ t8 = showVersionsTab ? t("history.versionDescription") : t("history.description");
925
+ $[5] = showVersionsTab;
926
+ $[6] = t;
927
+ $[7] = t8;
928
+ } else t8 = $[7];
915
929
  let t9;
916
- if ($[7] !== showVersionsTab || $[8] !== t) {
917
- t9 = showVersionsTab ? t("history.versionDescription") : t("history.description");
918
- $[7] = showVersionsTab;
919
- $[8] = t;
930
+ if ($[8] !== t8) {
931
+ t9 = /* @__PURE__ */ jsx(SheetDescription, { children: t8 });
932
+ $[8] = t8;
920
933
  $[9] = t9;
921
934
  } else t9 = $[9];
922
935
  let t10;
923
- if ($[10] !== t9) {
924
- t10 = /* @__PURE__ */ jsx(SheetDescription, { children: t9 });
925
- $[10] = t9;
926
- $[11] = t10;
927
- } else t10 = $[11];
928
- let t11;
929
- if ($[12] !== t10 || $[13] !== t8) {
930
- t11 = /* @__PURE__ */ jsxs(SheetHeader, {
936
+ if ($[10] !== t7 || $[11] !== t9) {
937
+ t10 = /* @__PURE__ */ jsxs(SheetHeader, {
931
938
  className: "border-b px-6 py-5",
932
- children: [t8, t10]
939
+ children: [t7, t9]
933
940
  });
941
+ $[10] = t7;
942
+ $[11] = t9;
934
943
  $[12] = t10;
935
- $[13] = t8;
936
- $[14] = t11;
937
- } else t11 = $[14];
938
- let t12;
939
- if ($[15] !== auditEntries || $[16] !== fields || $[17] !== isLoadingAudit || $[18] !== isLoadingVersions || $[19] !== isReverting || $[20] !== onRevert || $[21] !== showVersionsTab || $[22] !== versions) {
940
- t12 = showVersionsTab ? /* @__PURE__ */ jsx(ScrollFade, {
944
+ } else t10 = $[12];
945
+ let t11;
946
+ if ($[13] !== auditEntries || $[14] !== fields || $[15] !== isLoadingAudit || $[16] !== isLoadingVersions || $[17] !== isReverting || $[18] !== onRevert || $[19] !== showVersionsTab || $[20] !== versions) {
947
+ t11 = showVersionsTab ? /* @__PURE__ */ jsx(ScrollFade, {
941
948
  orientation: "vertical",
942
949
  className: "min-h-0 flex-1",
943
950
  children: /* @__PURE__ */ jsx("div", {
@@ -963,43 +970,43 @@ function HistorySidebar(t0) {
963
970
  })
964
971
  })
965
972
  });
966
- $[15] = auditEntries;
967
- $[16] = fields;
968
- $[17] = isLoadingAudit;
969
- $[18] = isLoadingVersions;
970
- $[19] = isReverting;
971
- $[20] = onRevert;
972
- $[21] = showVersionsTab;
973
- $[22] = versions;
974
- $[23] = t12;
975
- } else t12 = $[23];
976
- let t13;
977
- if ($[24] !== t11 || $[25] !== t12) {
978
- t13 = /* @__PURE__ */ jsxs(SheetContent, {
973
+ $[13] = auditEntries;
974
+ $[14] = fields;
975
+ $[15] = isLoadingAudit;
976
+ $[16] = isLoadingVersions;
977
+ $[17] = isReverting;
978
+ $[18] = onRevert;
979
+ $[19] = showVersionsTab;
980
+ $[20] = versions;
981
+ $[21] = t11;
982
+ } else t11 = $[21];
983
+ let t12;
984
+ if ($[22] !== t10 || $[23] !== t11) {
985
+ t12 = /* @__PURE__ */ jsxs(SheetContent, {
979
986
  side: "right",
980
987
  animated: false,
981
988
  showOverlay: false,
982
989
  className: "qa-history-sidebar flex flex-col p-0 sm:max-w-2xl",
983
- children: [t11, t12]
990
+ children: [t10, t11]
984
991
  });
985
- $[24] = t11;
986
- $[25] = t12;
987
- $[26] = t13;
988
- } else t13 = $[26];
989
- let t14;
990
- if ($[27] !== onOpenChange || $[28] !== open || $[29] !== t13) {
991
- t14 = /* @__PURE__ */ jsx(Sheet, {
992
+ $[22] = t10;
993
+ $[23] = t11;
994
+ $[24] = t12;
995
+ } else t12 = $[24];
996
+ let t13;
997
+ if ($[25] !== onOpenChange || $[26] !== open || $[27] !== t12) {
998
+ t13 = /* @__PURE__ */ jsx(Sheet, {
992
999
  open,
993
1000
  onOpenChange,
994
1001
  modal: false,
995
- children: t13
1002
+ children: t12
996
1003
  });
997
- $[27] = onOpenChange;
998
- $[28] = open;
999
- $[29] = t13;
1000
- $[30] = t14;
1001
- } else t14 = $[30];
1002
- return t14;
1004
+ $[25] = onOpenChange;
1005
+ $[26] = open;
1006
+ $[27] = t12;
1007
+ $[28] = t13;
1008
+ } else t13 = $[28];
1009
+ return t13;
1003
1010
  }
1004
1011
 
1005
1012
  //#endregion