@pisell/private-materials 6.3.53 → 6.3.54

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 (146) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +2 -2
  6. package/build/lowcode/preview.js +146 -157
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +11 -16
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +11 -16
  11. package/es/components/booking/components/TabProduct/index.d.ts +1 -0
  12. package/es/components/booking/components/formItemChildrenWrap/index.d.ts +1 -0
  13. package/es/components/booking/forms/table/index.d.ts +1 -0
  14. package/es/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +1 -0
  15. package/es/components/booking/info/service/like/index.d.ts +1 -0
  16. package/es/components/eftpos/deviceList/index.d.ts +1 -0
  17. package/es/components/eftpos/form/index.d.ts +1 -0
  18. package/es/components/eftpos/group/index.d.ts +1 -0
  19. package/es/components/eftpos/hooks.d.ts +1 -0
  20. package/es/components/eftpos/icon/apiKey.d.ts +1 -0
  21. package/es/components/eftpos/icon/device.d.ts +1 -0
  22. package/es/components/eftpos/receipt/index.d.ts +1 -0
  23. package/es/components/eftposPay/component/alert/warn.d.ts +1 -0
  24. package/es/components/eftposPay/component/header/titlebar.d.ts +1 -0
  25. package/es/components/eftposPay/component/step/index.d.ts +1 -0
  26. package/es/components/eftposPay/component/step/step.d.ts +1 -0
  27. package/es/components/eftposPay/tyro/hooks.d.ts +1 -0
  28. package/es/components/eventBooking/components/Provider/Cart/Deposit/index.d.ts +1 -0
  29. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +1 -0
  30. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +1 -0
  31. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +1 -0
  32. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +1 -0
  33. package/es/components/index.d.ts +2 -1
  34. package/es/components/index.js +2 -1
  35. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +1 -0
  36. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/index.d.ts +1 -0
  37. package/es/components/productExtension/fields/Actor/index.d.ts +1 -0
  38. package/es/components/productExtension/fields/Forms/index.d.ts +1 -0
  39. package/es/components/schedules/calendar/calendarItem.d.ts +1 -0
  40. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/index.d.ts +1 -0
  41. package/es/components/schedules/products/ProductDetailDrawer/ProductDetailByDate/index.d.ts +1 -0
  42. package/es/components/schedules/resources/relationProduct/index.d.ts +1 -0
  43. package/es/components/schedules/utils.d.ts +1 -1
  44. package/es/components/shoppingCart/components/Empty/index.d.ts +1 -0
  45. package/es/components/shoppingCart/components/Render/index.d.ts +1 -0
  46. package/es/components/systemSettings/registry/components/GroupModal.d.ts +4 -0
  47. package/es/components/systemSettings/registry/components/GroupModal.js +160 -0
  48. package/es/components/systemSettings/registry/components/ItemModal.d.ts +4 -0
  49. package/es/components/systemSettings/registry/components/ItemModal.js +547 -0
  50. package/es/components/systemSettings/registry/components/ModuleList.d.ts +4 -0
  51. package/es/components/systemSettings/registry/components/ModuleList.js +54 -0
  52. package/es/components/systemSettings/registry/components/SectionList.d.ts +4 -0
  53. package/es/components/systemSettings/registry/components/SectionList.js +174 -0
  54. package/es/components/systemSettings/registry/components/SettingsTable.d.ts +4 -0
  55. package/es/components/systemSettings/registry/components/SettingsTable.js +765 -0
  56. package/es/components/systemSettings/registry/components/index.d.ts +4 -0
  57. package/es/components/systemSettings/registry/components/index.js +4 -0
  58. package/es/components/systemSettings/registry/index.d.ts +5 -0
  59. package/es/components/systemSettings/registry/index.js +1059 -0
  60. package/es/components/systemSettings/registry/index.less +410 -0
  61. package/es/components/systemSettings/registry/locales.d.ts +272 -0
  62. package/es/components/systemSettings/registry/locales.js +300 -0
  63. package/es/components/systemSettings/registry/services.d.ts +77 -0
  64. package/es/components/systemSettings/registry/services.js +472 -0
  65. package/es/components/systemSettings/registry/types.d.ts +126 -0
  66. package/es/components/systemSettings/registry/types.js +1 -0
  67. package/es/components/systemSettings/registry/utils/typeValidation.d.ts +16 -0
  68. package/es/components/systemSettings/registry/utils/typeValidation.js +284 -0
  69. package/es/components/systemSettings/registry/utils/validators.d.ts +8 -0
  70. package/es/components/systemSettings/registry/utils/validators.js +44 -0
  71. package/es/index.d.ts +1 -0
  72. package/es/index.js +1 -0
  73. package/es/plus/clientName/index.d.ts +1 -0
  74. package/es/pro/Login2.0/AuthModal.js +12 -4
  75. package/es/pro/Login2.0/index.less +3 -3
  76. package/es/pro/pisellPaymentList/example.d.ts +1 -0
  77. package/es/utils/index.d.ts +1 -1
  78. package/lib/components/booking/components/TabProduct/index.d.ts +1 -0
  79. package/lib/components/booking/components/formItemChildrenWrap/index.d.ts +1 -0
  80. package/lib/components/booking/forms/table/index.d.ts +1 -0
  81. package/lib/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +1 -0
  82. package/lib/components/booking/info/service/like/index.d.ts +1 -0
  83. package/lib/components/eftpos/deviceList/index.d.ts +1 -0
  84. package/lib/components/eftpos/form/index.d.ts +1 -0
  85. package/lib/components/eftpos/group/index.d.ts +1 -0
  86. package/lib/components/eftpos/hooks.d.ts +1 -0
  87. package/lib/components/eftpos/icon/apiKey.d.ts +1 -0
  88. package/lib/components/eftpos/icon/device.d.ts +1 -0
  89. package/lib/components/eftpos/receipt/index.d.ts +1 -0
  90. package/lib/components/eftposPay/component/alert/warn.d.ts +1 -0
  91. package/lib/components/eftposPay/component/header/titlebar.d.ts +1 -0
  92. package/lib/components/eftposPay/component/step/index.d.ts +1 -0
  93. package/lib/components/eftposPay/component/step/step.d.ts +1 -0
  94. package/lib/components/eftposPay/tyro/hooks.d.ts +1 -0
  95. package/lib/components/eventBooking/components/Provider/Cart/Deposit/index.d.ts +1 -0
  96. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +1 -0
  97. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +1 -0
  98. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +1 -0
  99. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +1 -0
  100. package/lib/components/index.d.ts +2 -1
  101. package/lib/components/index.js +3 -0
  102. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +1 -0
  103. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/index.d.ts +1 -0
  104. package/lib/components/productExtension/fields/Actor/index.d.ts +1 -0
  105. package/lib/components/productExtension/fields/Forms/index.d.ts +1 -0
  106. package/lib/components/schedules/calendar/calendarItem.d.ts +1 -0
  107. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/index.d.ts +1 -0
  108. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetailByDate/index.d.ts +1 -0
  109. package/lib/components/schedules/resources/relationProduct/index.d.ts +1 -0
  110. package/lib/components/schedules/utils.d.ts +1 -1
  111. package/lib/components/shoppingCart/components/Empty/index.d.ts +1 -0
  112. package/lib/components/shoppingCart/components/Render/index.d.ts +1 -0
  113. package/lib/components/systemSettings/registry/components/GroupModal.d.ts +4 -0
  114. package/lib/components/systemSettings/registry/components/GroupModal.js +177 -0
  115. package/lib/components/systemSettings/registry/components/ItemModal.d.ts +4 -0
  116. package/lib/components/systemSettings/registry/components/ItemModal.js +508 -0
  117. package/lib/components/systemSettings/registry/components/ModuleList.d.ts +4 -0
  118. package/lib/components/systemSettings/registry/components/ModuleList.js +71 -0
  119. package/lib/components/systemSettings/registry/components/SectionList.d.ts +4 -0
  120. package/lib/components/systemSettings/registry/components/SectionList.js +181 -0
  121. package/lib/components/systemSettings/registry/components/SettingsTable.d.ts +4 -0
  122. package/lib/components/systemSettings/registry/components/SettingsTable.js +575 -0
  123. package/lib/components/systemSettings/registry/components/index.d.ts +4 -0
  124. package/lib/components/systemSettings/registry/components/index.js +48 -0
  125. package/lib/components/systemSettings/registry/index.d.ts +5 -0
  126. package/lib/components/systemSettings/registry/index.js +529 -0
  127. package/lib/components/systemSettings/registry/index.less +410 -0
  128. package/lib/components/systemSettings/registry/locales.d.ts +272 -0
  129. package/lib/components/systemSettings/registry/locales.js +324 -0
  130. package/lib/components/systemSettings/registry/services.d.ts +77 -0
  131. package/lib/components/systemSettings/registry/services.js +290 -0
  132. package/lib/components/systemSettings/registry/types.d.ts +126 -0
  133. package/lib/components/systemSettings/registry/types.js +17 -0
  134. package/lib/components/systemSettings/registry/utils/typeValidation.d.ts +16 -0
  135. package/lib/components/systemSettings/registry/utils/typeValidation.js +228 -0
  136. package/lib/components/systemSettings/registry/utils/validators.d.ts +8 -0
  137. package/lib/components/systemSettings/registry/utils/validators.js +54 -0
  138. package/lib/index.d.ts +1 -0
  139. package/lib/index.js +3 -0
  140. package/lib/plus/clientName/index.d.ts +1 -0
  141. package/lib/pro/Login2.0/AuthModal.js +15 -7
  142. package/lib/pro/Login2.0/index.less +3 -3
  143. package/lib/pro/pisellPaymentList/example.d.ts +1 -0
  144. package/lib/utils/index.d.ts +1 -1
  145. package/lowcode/settings-registry/meta.ts +29 -0
  146. package/package.json +2 -2
@@ -0,0 +1,575 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/systemSettings/registry/components/SettingsTable.tsx
30
+ var SettingsTable_exports = {};
31
+ __export(SettingsTable_exports, {
32
+ default: () => SettingsTable_default
33
+ });
34
+ module.exports = __toCommonJS(SettingsTable_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_antd = require("antd");
37
+ var import_materials = require("@pisell/materials");
38
+ var import_icons = require("@ant-design/icons");
39
+ var import_utils = require("@pisell/utils");
40
+ var import_core = require("@dnd-kit/core");
41
+ var import_sortable = require("@dnd-kit/sortable");
42
+ var import_core2 = require("@dnd-kit/core");
43
+ var import_utilities = require("@dnd-kit/utilities");
44
+ var import_useEngineContext = __toESM(require("../../../../hooks/useEngineContext"));
45
+ var AntdTag = import_antd.Tag;
46
+ var AntdSpace = import_antd.Space;
47
+ var scopeKeyMapping = {
48
+ "system": "registry.scope.systemDefault",
49
+ "saas": "registry.scope.saasDefault",
50
+ "organization": "registry.scope.organization",
51
+ "business": "registry.scope.business",
52
+ "channel": "registry.scope.channel",
53
+ "board": "registry.scope.board"
54
+ };
55
+ var getMultiLanguageText = (text, currentLocale) => {
56
+ if (typeof text === "string") {
57
+ return text;
58
+ }
59
+ const currentLang = currentLocale || localStorage.getItem("umi_locale") || "zh-CN";
60
+ if (text[currentLang]) {
61
+ return text[currentLang];
62
+ }
63
+ return text.original || "";
64
+ };
65
+ var DragContext = import_react.default.createContext({});
66
+ var DragHandle = ({ record, isGroup, isExpanded, onExpand, currentLocale }) => {
67
+ const { attributes, listeners } = import_react.default.useContext(DragContext);
68
+ return /* @__PURE__ */ import_react.default.createElement(
69
+ "div",
70
+ {
71
+ className: "pisell-settings-registry-table-title",
72
+ style: { paddingLeft: record.level * 24, display: "flex", alignItems: "center" }
73
+ },
74
+ /* @__PURE__ */ import_react.default.createElement(
75
+ "div",
76
+ {
77
+ className: "drag-handle",
78
+ ...attributes || {},
79
+ ...listeners || {},
80
+ style: {
81
+ cursor: "grab",
82
+ marginRight: 8,
83
+ color: "#999",
84
+ fontSize: "12px",
85
+ display: "flex",
86
+ alignItems: "center"
87
+ }
88
+ },
89
+ /* @__PURE__ */ import_react.default.createElement(import_icons.HolderOutlined, null)
90
+ ),
91
+ isGroup && /* @__PURE__ */ import_react.default.createElement(
92
+ import_materials.Button,
93
+ {
94
+ type: "text",
95
+ size: "small",
96
+ icon: isExpanded ? /* @__PURE__ */ import_react.default.createElement(import_icons.CaretDownOutlined, null) : /* @__PURE__ */ import_react.default.createElement(import_icons.CaretRightOutlined, null),
97
+ onClick: () => onExpand(record.key),
98
+ style: { marginRight: 8 }
99
+ }
100
+ ),
101
+ /* @__PURE__ */ import_react.default.createElement(AntdTag, { color: isGroup ? "blue" : "green" }, import_utils.locales.getText(isGroup ? "registry.level.group" : "registry.level.item")),
102
+ /* @__PURE__ */ import_react.default.createElement("span", { style: { marginLeft: 8 } }, getMultiLanguageText(record.data.title || record.data.name, currentLocale))
103
+ );
104
+ };
105
+ var DraggableRow = ({ record, children, className, style, ...props }) => {
106
+ if (!record || !record.key) {
107
+ return /* @__PURE__ */ import_react.default.createElement("tr", { className, style, ...props }, children);
108
+ }
109
+ const {
110
+ attributes,
111
+ listeners,
112
+ setNodeRef,
113
+ transform,
114
+ transition,
115
+ isDragging
116
+ } = (0, import_sortable.useSortable)({
117
+ id: record.key,
118
+ data: {
119
+ type: record.type,
120
+ record,
121
+ groupId: record.type === "item" ? record.data.groupId || record.data.group_id : record.data.id
122
+ }
123
+ });
124
+ const dropResult = (0, import_core2.useDroppable)({
125
+ id: record.type === "group" ? `item-container-${record.data.id}` : `drop-${record.key}`,
126
+ data: {
127
+ type: record.type === "group" ? "item-container" : "item",
128
+ groupId: record.type === "group" ? record.data.id : void 0,
129
+ acceptTypes: record.type === "group" ? ["item"] : []
130
+ },
131
+ disabled: record.type !== "group"
132
+ // 只有组行才能接受拖放
133
+ });
134
+ const dragStyle = {
135
+ transform: import_utilities.CSS.Transform.toString(transform),
136
+ transition,
137
+ opacity: isDragging ? 0.5 : 1,
138
+ // 为组行增加拖放视觉反馈
139
+ ...record.type === "group" && dropResult.isOver ? {
140
+ backgroundColor: "rgba(24, 144, 255, 0.05)",
141
+ borderLeft: "3px solid #1890ff"
142
+ } : {},
143
+ ...style
144
+ };
145
+ const combinedRef = (node) => {
146
+ setNodeRef(node);
147
+ dropResult.setNodeRef(node);
148
+ };
149
+ return /* @__PURE__ */ import_react.default.createElement(DragContext.Provider, { value: { attributes, listeners } }, /* @__PURE__ */ import_react.default.createElement(
150
+ "tr",
151
+ {
152
+ ref: combinedRef,
153
+ style: dragStyle,
154
+ className: `${className} ${isDragging ? "dragging" : ""} ${record.type === "group" ? "group-row" : ""} ${dropResult.isOver && record.type === "group" ? "drop-over" : ""}`,
155
+ ...props
156
+ },
157
+ children
158
+ ));
159
+ };
160
+ var SettingsTable = ({
161
+ section,
162
+ groupList = [],
163
+ groupLoading = false,
164
+ onDataChange,
165
+ onEditGroup,
166
+ onDeleteGroup,
167
+ onAddItem,
168
+ onEditItem,
169
+ onDeleteItem,
170
+ onGroupReorder,
171
+ onItemMove
172
+ }) => {
173
+ var _a, _b;
174
+ const context = (0, import_useEngineContext.default)();
175
+ const [expandedKeys, setExpandedKeys] = (0, import_react.useState)([]);
176
+ const [activeId, setActiveId] = (0, import_react.useState)(null);
177
+ const [dragOverZone, setDragOverZone] = (0, import_react.useState)(null);
178
+ const sensors = (0, import_core.useSensors)(
179
+ (0, import_core.useSensor)(import_core.PointerSensor, {
180
+ activationConstraint: {
181
+ distance: 8
182
+ }
183
+ })
184
+ );
185
+ const virtualDropZones = (0, import_react.useMemo)(() => {
186
+ const zones = [];
187
+ groupList.forEach((group) => {
188
+ zones.push({
189
+ id: `group-zone-${group.id}`,
190
+ type: "group",
191
+ groupId: group.id,
192
+ acceptTypes: ["group"],
193
+ key: `group-${group.id}`
194
+ });
195
+ zones.push({
196
+ id: `item-container-${group.id}`,
197
+ type: "item-container",
198
+ groupId: group.id,
199
+ acceptTypes: ["item"],
200
+ key: `item-${group.id}`
201
+ });
202
+ });
203
+ return zones;
204
+ }, [groupList]);
205
+ const customCollisionDetection = (args) => {
206
+ var _a2;
207
+ const { active, droppableContainers } = args;
208
+ const virtualContainers = Array.from(droppableContainers.values()).filter((container) => {
209
+ const id = container.id;
210
+ return id.startsWith("item-container-") || id.startsWith("group-zone-");
211
+ });
212
+ if (virtualContainers.length > 0) {
213
+ const virtualCollisions = (0, import_core.rectIntersection)({
214
+ ...args,
215
+ droppableContainers: virtualContainers
216
+ });
217
+ if (virtualCollisions && virtualCollisions.length > 0) {
218
+ console.log("虚拟容器碰撞检测:", virtualCollisions[0].id);
219
+ return virtualCollisions;
220
+ }
221
+ }
222
+ const standardCollisions = (0, import_core.closestCenter)(args);
223
+ console.log("标准碰撞检测:", (_a2 = standardCollisions == null ? void 0 : standardCollisions[0]) == null ? void 0 : _a2.id);
224
+ return standardCollisions;
225
+ };
226
+ const currentLocale = ((_b = (_a = context == null ? void 0 : context.engine) == null ? void 0 : _a.props) == null ? void 0 : _b.locale) || localStorage.getItem("umi_locale") || "zh-CN";
227
+ const treeData = (0, import_react.useMemo)(() => {
228
+ if (!groupList || groupList.length === 0) return [];
229
+ const nodes = [];
230
+ groupList.forEach((group) => {
231
+ const groupNode = {
232
+ key: `group-${group.id}`,
233
+ type: "group",
234
+ data: group,
235
+ children: []
236
+ };
237
+ group == null ? void 0 : group.items.sort((a, b) => a.sort - b.sort || a.id - b.id).forEach((item) => {
238
+ const itemNode = {
239
+ key: `item-${item.id}`,
240
+ type: "item",
241
+ data: item,
242
+ parentKey: groupNode.key
243
+ };
244
+ groupNode.children.push(itemNode);
245
+ });
246
+ nodes.push(groupNode);
247
+ });
248
+ return nodes;
249
+ }, [groupList]);
250
+ import_react.default.useEffect(() => {
251
+ if (groupList && groupList.length > 0) {
252
+ const defaultExpanded = groupList.filter((group) => group.expanded !== false).map((group) => `group-${group.id}`);
253
+ setExpandedKeys(defaultExpanded);
254
+ }
255
+ }, [groupList]);
256
+ const flattenData = (0, import_react.useMemo)(() => {
257
+ const result = [];
258
+ treeData.forEach((groupNode, groupIndex) => {
259
+ const groupZone = virtualDropZones.find((z) => z.id === `group-zone-${groupNode.data.id}`);
260
+ result.push({
261
+ key: groupNode.key,
262
+ type: "group",
263
+ data: groupNode.data,
264
+ level: 0,
265
+ virtualZone: groupZone
266
+ });
267
+ if (expandedKeys.includes(groupNode.key)) {
268
+ if (groupNode.children && groupNode.children.length > 0) {
269
+ groupNode.children.forEach((itemNode) => {
270
+ result.push({
271
+ key: itemNode.key,
272
+ type: "item",
273
+ data: itemNode.data,
274
+ level: 1
275
+ });
276
+ });
277
+ }
278
+ }
279
+ });
280
+ return result;
281
+ }, [treeData, expandedKeys, virtualDropZones]);
282
+ const handleExpand = (key) => {
283
+ setExpandedKeys(
284
+ (prev) => prev.includes(key) ? prev.filter((k) => k !== key) : [...prev, key]
285
+ );
286
+ };
287
+ const handleDragStart = (event) => {
288
+ setActiveId(event.active.id);
289
+ };
290
+ const handleDragOver = (event) => {
291
+ const { active, over } = event;
292
+ if (!over) {
293
+ setDragOverZone(null);
294
+ return;
295
+ }
296
+ const overId = over.id;
297
+ const zone = virtualDropZones.find((z) => z.id === overId);
298
+ if (zone) {
299
+ setDragOverZone(overId);
300
+ } else {
301
+ setDragOverZone(null);
302
+ }
303
+ };
304
+ const handleDragEnd = (event) => {
305
+ var _a2, _b2;
306
+ const { active, over } = event;
307
+ setActiveId(null);
308
+ setDragOverZone(null);
309
+ if (!over || active.id === over.id) return;
310
+ const activeData = active.data.current;
311
+ const overData = over.data.current;
312
+ if (!activeData) return;
313
+ const activeRecord = activeData.record;
314
+ const overId = over.id;
315
+ console.log("拖拽结束:", { activeId: active.id, overId, activeRecord: activeRecord.type });
316
+ if (activeRecord.type === "group") {
317
+ const targetZone = virtualDropZones.find((z) => z.key === overId && z.type === "group");
318
+ if (targetZone) {
319
+ const activeGroupId = activeRecord.data.id;
320
+ const targetGroupId = targetZone.groupId;
321
+ if (activeGroupId === targetGroupId) return;
322
+ const newGroupOrder = [...groupList];
323
+ const activeIndex = newGroupOrder.findIndex((g) => g.id === activeGroupId);
324
+ const targetIndex = newGroupOrder.findIndex((g) => g.id === targetGroupId);
325
+ if (activeIndex !== -1 && targetIndex !== -1) {
326
+ const [movedGroup] = newGroupOrder.splice(activeIndex, 1);
327
+ newGroupOrder.splice(targetIndex, 0, movedGroup);
328
+ const groupIds = newGroupOrder.map((g) => g.id);
329
+ console.log("调用组重排序接口 (虚拟容器):", groupIds);
330
+ onGroupReorder == null ? void 0 : onGroupReorder(groupIds);
331
+ }
332
+ return;
333
+ }
334
+ }
335
+ if (activeRecord.type === "item") {
336
+ const targetZone = virtualDropZones.find((z) => z.id === overId);
337
+ if (targetZone && targetZone.type === "item-container") {
338
+ const activeItemId = activeRecord.data.id;
339
+ const targetGroupId = targetZone.groupId;
340
+ const currentGroup = groupList.find(
341
+ (g) => g.items && g.items.some((item) => item.id === activeItemId)
342
+ );
343
+ if (!currentGroup) return;
344
+ const currentGroupId = currentGroup.id;
345
+ if (currentGroupId === targetGroupId) return;
346
+ const targetGroup = groupList.find((g) => g.id === targetGroupId);
347
+ const newOrder = ((_a2 = targetGroup == null ? void 0 : targetGroup.items) == null ? void 0 : _a2.length) || 0;
348
+ console.log("调用设置项移动接口 (虚拟容器):", { activeItemId, targetGroupId, newOrder });
349
+ onItemMove == null ? void 0 : onItemMove(activeItemId, targetGroupId, newOrder);
350
+ return;
351
+ }
352
+ }
353
+ if (overData && overData.record) {
354
+ const overRecord = overData.record;
355
+ if (activeRecord.type === "item" && overRecord.type === "group") {
356
+ const activeItemId = activeRecord.data.id;
357
+ const targetGroupId = overRecord.data.id;
358
+ const currentGroup = groupList.find(
359
+ (g) => g.items && g.items.some((item) => item.id === activeItemId)
360
+ );
361
+ if (!currentGroup) return;
362
+ const currentGroupId = currentGroup.id;
363
+ if (currentGroupId === targetGroupId) return;
364
+ const targetGroup = groupList.find((g) => g.id === targetGroupId);
365
+ const newOrder = ((_b2 = targetGroup == null ? void 0 : targetGroup.items) == null ? void 0 : _b2.length) || 0;
366
+ console.log("调用设置项移动接口 (直接拖放到组):", { activeItemId, targetGroupId, newOrder });
367
+ onItemMove == null ? void 0 : onItemMove(activeItemId, targetGroupId, newOrder);
368
+ return;
369
+ }
370
+ if (activeRecord.type === "item" && overRecord.type === "item") {
371
+ const activeItemId = activeRecord.data.id;
372
+ const overItemId = overRecord.data.id;
373
+ const activeGroup = groupList.find(
374
+ (g) => g.items && g.items.some((item) => item.id === activeItemId)
375
+ );
376
+ const overGroup = groupList.find(
377
+ (g) => g.items && g.items.some((item) => item.id === overItemId)
378
+ );
379
+ if (!activeGroup || !overGroup) return;
380
+ if (activeGroup.id === overGroup.id) {
381
+ const activeIndex = activeGroup.items.findIndex((item) => item.id === activeItemId);
382
+ const overIndex = activeGroup.items.findIndex((item) => item.id === overItemId);
383
+ if (activeIndex !== -1 && overIndex !== -1 && activeIndex !== overIndex) {
384
+ console.log("调用同组内设置项排序接口:", { activeItemId, targetGroupId: activeGroup.id, newOrder: overIndex });
385
+ onItemMove == null ? void 0 : onItemMove(activeItemId, activeGroup.id, overIndex);
386
+ }
387
+ } else {
388
+ const overIndex = overGroup.items.findIndex((item) => item.id === overItemId);
389
+ const newOrder = overIndex >= 0 ? overIndex : 0;
390
+ console.log("调用跨组设置项移动接口:", { activeItemId, targetGroupId: overGroup.id, newOrder });
391
+ onItemMove == null ? void 0 : onItemMove(activeItemId, overGroup.id, newOrder);
392
+ }
393
+ }
394
+ }
395
+ };
396
+ const handleDelete = (record) => {
397
+ if (record.type === "group") {
398
+ const hasItems = record.data.items && record.data.items.length > 0;
399
+ if (hasItems) {
400
+ import_antd.Modal.warning({
401
+ title: import_utils.locales.getText("registry.modal.delete.group.hasItems.title"),
402
+ content: import_utils.locales.getText("registry.modal.delete.group.hasItems.content")
403
+ });
404
+ return;
405
+ }
406
+ }
407
+ import_antd.Modal.confirm({
408
+ title: import_utils.locales.getText("registry.modal.delete.title"),
409
+ content: import_utils.locales.getText(
410
+ record.type === "group" ? "registry.modal.delete.group.content" : "registry.modal.delete.item.content"
411
+ ),
412
+ onOk: () => {
413
+ if (record.type === "group") {
414
+ onDeleteGroup == null ? void 0 : onDeleteGroup(record.data.id);
415
+ } else {
416
+ onDeleteItem == null ? void 0 : onDeleteItem(record.data.id);
417
+ }
418
+ }
419
+ });
420
+ };
421
+ const activeType = (0, import_react.useMemo)(() => {
422
+ if (!activeId) return void 0;
423
+ const activeItem = flattenData.find((item) => item.key === activeId);
424
+ return activeItem == null ? void 0 : activeItem.type;
425
+ }, [activeId, flattenData]);
426
+ const columns = [
427
+ {
428
+ title: import_utils.locales.getText("registry.table.title"),
429
+ dataIndex: "name",
430
+ key: "name",
431
+ width: "30%",
432
+ render: (_, record) => {
433
+ const isGroup = record.type === "group";
434
+ const isExpanded = expandedKeys.includes(record.key);
435
+ return /* @__PURE__ */ import_react.default.createElement(
436
+ DragHandle,
437
+ {
438
+ record,
439
+ isGroup,
440
+ isExpanded,
441
+ onExpand: handleExpand,
442
+ currentLocale
443
+ }
444
+ );
445
+ }
446
+ },
447
+ {
448
+ title: import_utils.locales.getText("registry.table.key"),
449
+ dataIndex: "key",
450
+ key: "key",
451
+ width: "25%",
452
+ render: (_, record) => {
453
+ if (record.type === "group") {
454
+ return /* @__PURE__ */ import_react.default.createElement("span", { className: "pisell-settings-registry-code" }, record.data.code);
455
+ }
456
+ return /* @__PURE__ */ import_react.default.createElement("span", { className: "pisell-settings-registry-key" }, record.data.key || record.data.code);
457
+ }
458
+ },
459
+ {
460
+ title: import_utils.locales.getText("registry.table.scopes"),
461
+ dataIndex: "scopes",
462
+ key: "scopes",
463
+ width: "25%",
464
+ render: (_, record) => {
465
+ if (record.type === "item" && record.data.scopes) {
466
+ return /* @__PURE__ */ import_react.default.createElement(AntdSpace, { wrap: true }, record.data.scopes.map((scope) => /* @__PURE__ */ import_react.default.createElement(AntdTag, { key: scope, size: "small" }, import_utils.locales.getText(scopeKeyMapping[scope] || `registry.scope.${scope}`))));
467
+ }
468
+ return "-";
469
+ }
470
+ },
471
+ {
472
+ title: import_utils.locales.getText("registry.table.actions"),
473
+ key: "actions",
474
+ width: "20%",
475
+ render: (_, record) => {
476
+ const isGroup = record.type === "group";
477
+ return /* @__PURE__ */ import_react.default.createElement(AntdSpace, { size: "small" }, isGroup && /* @__PURE__ */ import_react.default.createElement(
478
+ import_materials.Button,
479
+ {
480
+ type: "text",
481
+ size: "small",
482
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons.PlusOutlined, null),
483
+ onClick: () => onAddItem == null ? void 0 : onAddItem(record.data.id),
484
+ title: import_utils.locales.getText("registry.action.add.item")
485
+ }
486
+ ), /* @__PURE__ */ import_react.default.createElement(
487
+ import_materials.Button,
488
+ {
489
+ type: "text",
490
+ size: "small",
491
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons.EditOutlined, null),
492
+ onClick: () => {
493
+ if (isGroup) {
494
+ onEditGroup == null ? void 0 : onEditGroup(record.data);
495
+ } else {
496
+ onEditItem == null ? void 0 : onEditItem(record.data);
497
+ }
498
+ },
499
+ title: import_utils.locales.getText("registry.action.edit")
500
+ }
501
+ ), /* @__PURE__ */ import_react.default.createElement(
502
+ import_materials.Button,
503
+ {
504
+ type: "text",
505
+ size: "small",
506
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons.DeleteOutlined, null),
507
+ danger: true,
508
+ onClick: () => handleDelete(record),
509
+ title: import_utils.locales.getText("registry.action.delete")
510
+ }
511
+ ));
512
+ }
513
+ }
514
+ ];
515
+ if (!section) {
516
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-settings-registry-table-empty" }, /* @__PURE__ */ import_react.default.createElement(
517
+ import_antd.Empty,
518
+ {
519
+ description: import_utils.locales.getText("registry.message.select.section"),
520
+ image: import_antd.Empty.PRESENTED_IMAGE_SIMPLE
521
+ }
522
+ ));
523
+ }
524
+ if (groupLoading) {
525
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-settings-registry-table-loading", style: { textAlign: "center", padding: "50px" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Spin, { size: "large" }), /* @__PURE__ */ import_react.default.createElement("div", { style: { marginTop: "16px" } }, import_utils.locales.getText("registry.message.loading.groups")));
526
+ }
527
+ if (flattenData.length === 0) {
528
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-settings-registry-table-empty" }, /* @__PURE__ */ import_react.default.createElement(
529
+ import_antd.Empty,
530
+ {
531
+ description: import_utils.locales.getText("registry.message.no.settings"),
532
+ image: import_antd.Empty.PRESENTED_IMAGE_SIMPLE
533
+ }
534
+ ));
535
+ }
536
+ const sortableIds = flattenData.map((item) => item.key);
537
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-settings-registry-table" }, /* @__PURE__ */ import_react.default.createElement(
538
+ import_core.DndContext,
539
+ {
540
+ sensors,
541
+ collisionDetection: customCollisionDetection,
542
+ onDragStart: handleDragStart,
543
+ onDragOver: handleDragOver,
544
+ onDragEnd: handleDragEnd
545
+ },
546
+ /* @__PURE__ */ import_react.default.createElement(import_sortable.SortableContext, { items: sortableIds, strategy: import_sortable.verticalListSortingStrategy }, /* @__PURE__ */ import_react.default.createElement(
547
+ import_antd.Table,
548
+ {
549
+ columns,
550
+ dataSource: flattenData,
551
+ pagination: false,
552
+ rowKey: "key",
553
+ className: "pisell-settings-registry-table-content",
554
+ components: {
555
+ body: {
556
+ row: (props) => {
557
+ const rowKey = props["data-row-key"];
558
+ const record = flattenData.find((item) => item.key === rowKey);
559
+ if (!record) {
560
+ return /* @__PURE__ */ import_react.default.createElement("tr", { ...props });
561
+ }
562
+ return /* @__PURE__ */ import_react.default.createElement(DraggableRow, { ...props, record });
563
+ }
564
+ }
565
+ }
566
+ }
567
+ )),
568
+ /* @__PURE__ */ import_react.default.createElement(import_core.DragOverlay, null, activeId ? /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-settings-registry-drag-overlay" }, (() => {
569
+ const activeItem = flattenData.find((item) => item.key === activeId);
570
+ if (!activeItem) return null;
571
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-settings-registry-drag-item" }, /* @__PURE__ */ import_react.default.createElement(AntdTag, { color: activeItem.type === "group" ? "blue" : "green" }, import_utils.locales.getText(activeItem.type === "group" ? "registry.level.group" : "registry.level.item")), /* @__PURE__ */ import_react.default.createElement("span", null, getMultiLanguageText(activeItem.data.title || activeItem.data.name, currentLocale)));
572
+ })()) : null)
573
+ ));
574
+ };
575
+ var SettingsTable_default = SettingsTable;
@@ -0,0 +1,4 @@
1
+ export { default as SectionList } from './SectionList';
2
+ export { default as SettingsTable } from './SettingsTable';
3
+ export { default as GroupModal } from './GroupModal';
4
+ export { default as ItemModal } from './ItemModal';
@@ -0,0 +1,48 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/systemSettings/registry/components/index.ts
30
+ var components_exports = {};
31
+ __export(components_exports, {
32
+ GroupModal: () => import_GroupModal.default,
33
+ ItemModal: () => import_ItemModal.default,
34
+ SectionList: () => import_SectionList.default,
35
+ SettingsTable: () => import_SettingsTable.default
36
+ });
37
+ module.exports = __toCommonJS(components_exports);
38
+ var import_SectionList = __toESM(require("./SectionList"));
39
+ var import_SettingsTable = __toESM(require("./SettingsTable"));
40
+ var import_GroupModal = __toESM(require("./GroupModal"));
41
+ var import_ItemModal = __toESM(require("./ItemModal"));
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ GroupModal,
45
+ ItemModal,
46
+ SectionList,
47
+ SettingsTable
48
+ });
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { RegistryProps } from './types';
3
+ import './index.less';
4
+ declare const Registry: React.FC<RegistryProps>;
5
+ export default Registry;