@open-mercato/core 0.6.4-develop.4178.1.aad9ddaa95 → 0.6.4-develop.4210.1.d412061cfe

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 (99) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/modules/api_docs/frontend/docs/api/Explorer.js +14 -14
  3. package/dist/modules/api_docs/frontend/docs/api/Explorer.js.map +2 -2
  4. package/dist/modules/attachments/components/AttachmentContentPreview.js +2 -2
  5. package/dist/modules/attachments/components/AttachmentContentPreview.js.map +2 -2
  6. package/dist/modules/audit_logs/backend/audit-logs/page.js +3 -3
  7. package/dist/modules/audit_logs/backend/audit-logs/page.js.map +2 -2
  8. package/dist/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.js +3 -7
  9. package/dist/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.js.map +2 -2
  10. package/dist/modules/customers/components/detail/ActivityCard.js +2 -2
  11. package/dist/modules/customers/components/detail/ActivityCard.js.map +2 -2
  12. package/dist/modules/customers/components/detail/AssignRoleDialog.js +34 -49
  13. package/dist/modules/customers/components/detail/AssignRoleDialog.js.map +2 -2
  14. package/dist/modules/customers/components/detail/ChangelogEntryRow.js +2 -2
  15. package/dist/modules/customers/components/detail/ChangelogEntryRow.js.map +2 -2
  16. package/dist/modules/customers/components/detail/CompanyDetailHeader.js +10 -1
  17. package/dist/modules/customers/components/detail/CompanyDetailHeader.js.map +2 -2
  18. package/dist/modules/customers/components/detail/DealLinkedEntitiesTab.js +7 -51
  19. package/dist/modules/customers/components/detail/DealLinkedEntitiesTab.js.map +2 -2
  20. package/dist/modules/customers/components/detail/DetailTabsLayout.js +1 -1
  21. package/dist/modules/customers/components/detail/DetailTabsLayout.js.map +2 -2
  22. package/dist/modules/customers/components/detail/ManageTagsDialog.js +25 -33
  23. package/dist/modules/customers/components/detail/ManageTagsDialog.js.map +2 -2
  24. package/dist/modules/customers/components/detail/PersonCard.js +3 -2
  25. package/dist/modules/customers/components/detail/PersonCard.js.map +2 -2
  26. package/dist/modules/customers/components/detail/PersonDetailHeader.js +3 -2
  27. package/dist/modules/customers/components/detail/PersonDetailHeader.js.map +2 -2
  28. package/dist/modules/customers/components/detail/RoleAssignmentRow.js +4 -5
  29. package/dist/modules/customers/components/detail/RoleAssignmentRow.js.map +2 -2
  30. package/dist/modules/customers/components/detail/utils.js +0 -7
  31. package/dist/modules/customers/components/detail/utils.js.map +2 -2
  32. package/dist/modules/customers/widgets/injection/ai-assistant-trigger/widget.client.js +3 -8
  33. package/dist/modules/customers/widgets/injection/ai-assistant-trigger/widget.client.js.map +2 -2
  34. package/dist/modules/dictionaries/components/AppearanceSelector.js +3 -4
  35. package/dist/modules/dictionaries/components/AppearanceSelector.js.map +2 -2
  36. package/dist/modules/integrations/backend/integrations/[id]/page.js +17 -17
  37. package/dist/modules/integrations/backend/integrations/[id]/page.js.map +2 -2
  38. package/dist/modules/planner/backend/planner/availability-rulesets/[id]/page.js +1 -1
  39. package/dist/modules/planner/backend/planner/availability-rulesets/[id]/page.js.map +2 -2
  40. package/dist/modules/planner/components/AvailabilityRulesEditor.js +65 -1
  41. package/dist/modules/planner/components/AvailabilityRulesEditor.js.map +2 -2
  42. package/dist/modules/planner/lib/deleteAvailabilityRuleSet.js +20 -0
  43. package/dist/modules/planner/lib/deleteAvailabilityRuleSet.js.map +7 -0
  44. package/dist/modules/resources/backend/resources/resources/[id]/page.js +2 -2
  45. package/dist/modules/resources/backend/resources/resources/[id]/page.js.map +2 -2
  46. package/dist/modules/sales/api/quotes/accept/route.js +14 -37
  47. package/dist/modules/sales/api/quotes/accept/route.js.map +3 -3
  48. package/dist/modules/sales/backend/sales/channels/[channelId]/edit/page.js +1 -1
  49. package/dist/modules/sales/backend/sales/channels/[channelId]/edit/page.js.map +2 -2
  50. package/dist/modules/sales/backend/sales/documents/[id]/page.js +1 -1
  51. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  52. package/dist/modules/sales/commands/documents.js +6 -2
  53. package/dist/modules/sales/commands/documents.js.map +2 -2
  54. package/dist/modules/staff/backend/staff/team-members/[id]/page.js +3 -2
  55. package/dist/modules/staff/backend/staff/team-members/[id]/page.js.map +2 -2
  56. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +1 -1
  57. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
  58. package/dist/modules/translations/components/TranslationDrawerAction.js +27 -65
  59. package/dist/modules/translations/components/TranslationDrawerAction.js.map +2 -2
  60. package/dist/modules/translations/components/TranslationManager.js +2 -2
  61. package/dist/modules/translations/components/TranslationManager.js.map +2 -2
  62. package/dist/modules/translations/widgets/injection/translation-manager/widget.client.js +54 -92
  63. package/dist/modules/translations/widgets/injection/translation-manager/widget.client.js.map +2 -2
  64. package/package.json +7 -7
  65. package/src/modules/api_docs/frontend/docs/api/Explorer.tsx +14 -14
  66. package/src/modules/attachments/components/AttachmentContentPreview.tsx +2 -2
  67. package/src/modules/audit_logs/backend/audit-logs/page.tsx +3 -3
  68. package/src/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.tsx +4 -8
  69. package/src/modules/customers/components/detail/ActivityCard.tsx +2 -4
  70. package/src/modules/customers/components/detail/AssignRoleDialog.tsx +28 -55
  71. package/src/modules/customers/components/detail/ChangelogEntryRow.tsx +6 -4
  72. package/src/modules/customers/components/detail/CompanyDetailHeader.tsx +7 -3
  73. package/src/modules/customers/components/detail/DealLinkedEntitiesTab.tsx +11 -49
  74. package/src/modules/customers/components/detail/DetailTabsLayout.tsx +1 -1
  75. package/src/modules/customers/components/detail/ManageTagsDialog.tsx +27 -36
  76. package/src/modules/customers/components/detail/PersonCard.tsx +3 -4
  77. package/src/modules/customers/components/detail/PersonDetailHeader.tsx +3 -4
  78. package/src/modules/customers/components/detail/RoleAssignmentRow.tsx +4 -7
  79. package/src/modules/customers/components/detail/utils.ts +0 -7
  80. package/src/modules/customers/widgets/injection/ai-assistant-trigger/widget.client.tsx +4 -9
  81. package/src/modules/dictionaries/components/AppearanceSelector.tsx +3 -4
  82. package/src/modules/integrations/backend/integrations/[id]/page.tsx +21 -21
  83. package/src/modules/planner/backend/planner/availability-rulesets/[id]/page.tsx +1 -1
  84. package/src/modules/planner/components/AvailabilityRulesEditor.tsx +62 -0
  85. package/src/modules/planner/lib/deleteAvailabilityRuleSet.ts +35 -0
  86. package/src/modules/resources/backend/resources/resources/[id]/page.tsx +2 -2
  87. package/src/modules/sales/api/quotes/accept/route.ts +22 -38
  88. package/src/modules/sales/backend/sales/channels/[channelId]/edit/page.tsx +1 -1
  89. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +1 -1
  90. package/src/modules/sales/commands/documents.ts +16 -2
  91. package/src/modules/staff/backend/staff/team-members/[id]/page.tsx +3 -2
  92. package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +1 -1
  93. package/src/modules/staff/i18n/de.json +5 -0
  94. package/src/modules/staff/i18n/en.json +5 -0
  95. package/src/modules/staff/i18n/es.json +5 -0
  96. package/src/modules/staff/i18n/pl.json +5 -0
  97. package/src/modules/translations/components/TranslationDrawerAction.tsx +31 -66
  98. package/src/modules/translations/components/TranslationManager.tsx +2 -2
  99. package/src/modules/translations/widgets/injection/translation-manager/widget.client.tsx +53 -84
@@ -26,7 +26,9 @@ import {
26
26
  } from "@open-mercato/core/modules/planner/components/unavailabilityReasons";
27
27
  import { useT } from "@open-mercato/shared/lib/i18n/context";
28
28
  import { useConfirmDialog } from "@open-mercato/ui/backend/confirm-dialog";
29
+ import { normalizeCrudServerError } from "@open-mercato/ui/backend/utils/serverErrors";
29
30
  import { parseAvailabilityRuleWindow } from "@open-mercato/core/modules/planner/lib/availabilitySchedule";
31
+ import { deleteAvailabilityRuleSet } from "@open-mercato/core/modules/planner/lib/deleteAvailabilityRuleSet";
30
32
  import { CrudForm } from "@open-mercato/ui/backend/CrudForm";
31
33
  import { Calendar, Clock, List, PencilLine, Plus, Trash2 } from "lucide-react";
32
34
  import {
@@ -272,6 +274,7 @@ function AvailabilityRulesEditor({
272
274
  initialTimezone,
273
275
  rulesetId,
274
276
  onRulesetChange,
277
+ allowRuleSetDelete,
275
278
  buildScheduleItems,
276
279
  loadBookedEvents,
277
280
  readOnly,
@@ -379,6 +382,11 @@ function AvailabilityRulesEditor({
379
382
  ruleSetCreateTimezoneLabel: t(`${labelPrefix}.availability.ruleset.createTimezone`, "Timezone"),
380
383
  ruleSetCreateSuccess: t(`${labelPrefix}.availability.ruleset.createSuccess`, "Schedule saved."),
381
384
  ruleSetCreateError: t(`${labelPrefix}.availability.ruleset.createError`, "Failed to save schedule."),
385
+ ruleSetDelete: t(`${labelPrefix}.availability.ruleset.delete`, "Delete schedule"),
386
+ ruleSetDeleteConfirm: t(`${labelPrefix}.availability.ruleset.deleteConfirm`, 'Delete schedule "{{name}}"?'),
387
+ ruleSetDeleteSubmit: t(`${labelPrefix}.availability.ruleset.deleteSubmit`, "Delete"),
388
+ ruleSetDeleteSuccess: t(`${labelPrefix}.availability.ruleset.deleteSuccess`, "Schedule deleted."),
389
+ ruleSetDeleteError: t(`${labelPrefix}.availability.ruleset.deleteError`, "Failed to delete schedule."),
382
390
  editTitle: t(`${modeBase}.form.title.edit`, "Edit availability"),
383
391
  addTitle: t(`${modeBase}.form.title.create`, "Add availability"),
384
392
  applyLabel: t(`${labelPrefix}.availability.actions.apply`, "Apply"),
@@ -879,6 +887,46 @@ function AvailabilityRulesEditor({
879
887
  refreshAvailability,
880
888
  isReadOnly
881
889
  ]);
890
+ const handleDeleteRuleSet = React.useCallback(async () => {
891
+ if (isReadOnly || !onRulesetChange || !rulesetId) return;
892
+ const selected = ruleSets.find((entry) => entry.id === rulesetId);
893
+ const name = selected?.name ?? rulesetId;
894
+ await deleteAvailabilityRuleSet({
895
+ ruleSetId: rulesetId,
896
+ confirmDelete: () => confirm({
897
+ title: listLabels.ruleSetDeleteConfirm.replace("{{name}}", name),
898
+ confirmText: listLabels.ruleSetDeleteSubmit,
899
+ variant: "destructive"
900
+ }),
901
+ deleteRuleSet: async (id) => {
902
+ await deleteCrud("planner/availability-rule-sets", id, { errorMessage: listLabels.ruleSetDeleteError });
903
+ },
904
+ clearAssignment: async () => {
905
+ setCustomOverridesEnabled(false);
906
+ await onRulesetChange(null);
907
+ await refreshAvailability();
908
+ },
909
+ refreshRuleSets,
910
+ onSuccess: () => flash(listLabels.ruleSetDeleteSuccess, "success"),
911
+ onError: (error2) => {
912
+ console.error("planner.availability-rule-sets.delete", error2);
913
+ const normalized = normalizeCrudServerError(error2);
914
+ flash(normalized.message ?? listLabels.ruleSetDeleteError, "error");
915
+ }
916
+ });
917
+ }, [
918
+ confirm,
919
+ isReadOnly,
920
+ listLabels.ruleSetDeleteConfirm,
921
+ listLabels.ruleSetDeleteError,
922
+ listLabels.ruleSetDeleteSubmit,
923
+ listLabels.ruleSetDeleteSuccess,
924
+ onRulesetChange,
925
+ refreshAvailability,
926
+ refreshRuleSets,
927
+ ruleSets,
928
+ rulesetId
929
+ ]);
882
930
  const ruleSetFormSchema = React.useMemo(
883
931
  () => z.object({
884
932
  name: z.string().min(1, t("ui.forms.errors.required", "Required"))
@@ -1198,7 +1246,23 @@ function AvailabilityRulesEditor({
1198
1246
  listLabels.ruleSetCreateLabel
1199
1247
  ] }),
1200
1248
  effectiveRulesetId && usingRuleSet ? /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: handleCustomize, disabled: isReadOnly, children: listLabels.ruleSetCustomize }) : null,
1201
- effectiveRulesetId && !usingRuleSet ? /* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: handleResetToRuleSet, disabled: isReadOnly, children: listLabels.ruleSetReset }) : null
1249
+ effectiveRulesetId && !usingRuleSet ? /* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: handleResetToRuleSet, disabled: isReadOnly, children: listLabels.ruleSetReset }) : null,
1250
+ allowRuleSetDelete && rulesetId ? /* @__PURE__ */ jsxs(
1251
+ Button,
1252
+ {
1253
+ type: "button",
1254
+ variant: "destructive-outline",
1255
+ size: "sm",
1256
+ onClick: () => {
1257
+ void handleDeleteRuleSet();
1258
+ },
1259
+ disabled: isReadOnly,
1260
+ children: [
1261
+ /* @__PURE__ */ jsx(Trash2, { className: "size-4 mr-2", "aria-hidden": true }),
1262
+ listLabels.ruleSetDelete
1263
+ ]
1264
+ }
1265
+ ) : null
1202
1266
  ] }) : null,
1203
1267
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground", children: [
1204
1268
  /* @__PURE__ */ jsx("span", { children: listLabels.timezoneLabel }),