@pisell/materials 3.3.87 → 3.3.88

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 (209) 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 +4 -4
  6. package/build/lowcode/preview.js +8 -8
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +25 -25
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +15 -15
  11. package/es/components/PisellLayouts/index.d.ts +0 -1
  12. package/es/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
  13. package/es/components/dataSourceComponents/dataSourceSubForm/index.d.ts +13 -0
  14. package/es/components/dataSourceComponents/dataSourceSubForm/index.js +274 -0
  15. package/es/components/dataSourceComponents/dataSourceSubForm/index.less +19 -0
  16. package/es/components/dataSourceComponents/dataSourceSubForm/schema-full-example.json +544 -0
  17. package/es/components/dataSourceComponents/dataSourceSubForm/schema-simple-example.json +174 -0
  18. package/es/components/dataSourceComponents/dataSourceSubForm/types.d.ts +117 -0
  19. package/es/components/dataSourceComponents/dataSourceSubForm/types.js +1 -0
  20. package/es/components/dataSourceComponents/fields/Input.Subdomain/index.d.ts +1 -1
  21. package/es/components/dataSourceComponents/fields/RecordListWrapper/ReadPretty.d.ts +9 -0
  22. package/es/components/dataSourceComponents/fields/RecordListWrapper/ReadPretty.js +61 -0
  23. package/es/components/dataSourceComponents/fields/RecordListWrapper/WithMode.d.ts +4 -0
  24. package/es/components/dataSourceComponents/fields/RecordListWrapper/WithMode.js +176 -0
  25. package/es/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +12 -0
  26. package/es/components/dataSourceComponents/fields/RecordListWrapper/index.js +11 -0
  27. package/es/components/dataSourceComponents/fields/RecordListWrapper/type.d.ts +87 -0
  28. package/es/components/dataSourceComponents/fields/RecordListWrapper/type.js +1 -0
  29. package/es/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
  30. package/es/components/dataSourceComponents/fields/Tabs/ReadPretty.d.ts +9 -0
  31. package/es/components/dataSourceComponents/fields/Tabs/ReadPretty.js +16 -0
  32. package/es/components/dataSourceComponents/fields/Tabs/Tabs.d.ts +23 -0
  33. package/es/components/dataSourceComponents/fields/Tabs/Tabs.js +93 -0
  34. package/es/components/dataSourceComponents/fields/Tabs/Tabs.less +64 -0
  35. package/es/components/dataSourceComponents/fields/Tabs/WithMode.d.ts +6 -0
  36. package/es/components/dataSourceComponents/fields/Tabs/WithMode.js +9 -0
  37. package/es/components/dataSourceComponents/fields/Tabs/index.d.ts +12 -0
  38. package/es/components/dataSourceComponents/fields/Tabs/index.js +18 -0
  39. package/es/components/dataSourceComponents/fields/Tabs/type.d.ts +38 -0
  40. package/es/components/dataSourceComponents/fields/Tabs/type.js +1 -0
  41. package/es/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
  42. package/es/components/dataSourceComponents/fields/index.d.ts +44 -7
  43. package/es/components/dataSourceComponents/fields/index.js +5 -1
  44. package/es/components/dataSourceComponents/fields/utils.js +3 -0
  45. package/es/components/pisellLookup/PisellLookup.d.ts +4 -0
  46. package/es/components/pisellLookup/PisellLookup.js +8 -1
  47. package/es/components/productCard/components/Packages/utils.d.ts +2 -2
  48. package/es/index.d.ts +4 -0
  49. package/es/index.js +3 -0
  50. package/lib/components/PisellLayouts/index.d.ts +0 -1
  51. package/lib/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
  52. package/lib/components/dataSourceComponents/dataSourceSubForm/index.d.ts +13 -0
  53. package/lib/components/dataSourceComponents/dataSourceSubForm/index.js +229 -0
  54. package/lib/components/dataSourceComponents/dataSourceSubForm/index.less +19 -0
  55. package/lib/components/dataSourceComponents/dataSourceSubForm/schema-full-example.json +544 -0
  56. package/lib/components/dataSourceComponents/dataSourceSubForm/schema-simple-example.json +174 -0
  57. package/lib/components/dataSourceComponents/dataSourceSubForm/types.d.ts +117 -0
  58. package/lib/components/dataSourceComponents/dataSourceSubForm/types.js +17 -0
  59. package/lib/components/dataSourceComponents/fields/Input.Subdomain/index.d.ts +1 -1
  60. package/lib/components/dataSourceComponents/fields/RecordListWrapper/ReadPretty.d.ts +9 -0
  61. package/lib/components/dataSourceComponents/fields/RecordListWrapper/ReadPretty.js +64 -0
  62. package/lib/components/dataSourceComponents/fields/RecordListWrapper/WithMode.d.ts +4 -0
  63. package/lib/components/dataSourceComponents/fields/RecordListWrapper/WithMode.js +157 -0
  64. package/lib/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +12 -0
  65. package/lib/components/dataSourceComponents/fields/RecordListWrapper/index.js +40 -0
  66. package/lib/components/dataSourceComponents/fields/RecordListWrapper/type.d.ts +87 -0
  67. package/lib/components/dataSourceComponents/fields/RecordListWrapper/type.js +17 -0
  68. package/lib/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
  69. package/lib/components/dataSourceComponents/fields/Tabs/ReadPretty.d.ts +9 -0
  70. package/lib/components/dataSourceComponents/fields/Tabs/ReadPretty.js +45 -0
  71. package/lib/components/dataSourceComponents/fields/Tabs/Tabs.d.ts +23 -0
  72. package/lib/components/dataSourceComponents/fields/Tabs/Tabs.js +95 -0
  73. package/lib/components/dataSourceComponents/fields/Tabs/Tabs.less +64 -0
  74. package/lib/components/dataSourceComponents/fields/Tabs/WithMode.d.ts +6 -0
  75. package/lib/components/dataSourceComponents/fields/Tabs/WithMode.js +39 -0
  76. package/lib/components/dataSourceComponents/fields/Tabs/index.d.ts +12 -0
  77. package/lib/components/dataSourceComponents/fields/Tabs/index.js +40 -0
  78. package/lib/components/dataSourceComponents/fields/Tabs/type.d.ts +38 -0
  79. package/lib/components/dataSourceComponents/fields/Tabs/type.js +17 -0
  80. package/lib/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
  81. package/lib/components/dataSourceComponents/fields/index.d.ts +44 -7
  82. package/lib/components/dataSourceComponents/fields/index.js +5 -1
  83. package/lib/components/dataSourceComponents/fields/utils.js +3 -0
  84. package/lib/components/pisellLookup/PisellLookup.d.ts +4 -0
  85. package/lib/components/pisellLookup/PisellLookup.js +5 -1
  86. package/lib/components/productCard/components/Packages/utils.d.ts +2 -2
  87. package/lib/index.d.ts +4 -0
  88. package/lib/index.js +9 -0
  89. package/lowcode/auto-resize-text/meta.ts +9 -9
  90. package/lowcode/data-source-form/constants.ts +3 -0
  91. package/lowcode/data-source-form/utils.ts +31 -5
  92. package/lowcode/data-source-sub-form/meta.ts +259 -0
  93. package/lowcode/data-source-sub-form/snippets.ts +21 -0
  94. package/lowcode/form-item-record-list-wrapper/meta.ts +180 -0
  95. package/lowcode/form-item-record-list-wrapper/snippets.ts +18 -0
  96. package/lowcode/form-item-tabs/meta.ts +172 -0
  97. package/package.json +3 -3
  98. package/es/components/PisellCards/components/GraphicTextCard/components/BadgeWrapper.d.ts +0 -5
  99. package/es/components/PisellCards/components/GraphicTextCard/components/TextContent.d.ts +0 -27
  100. package/es/components/PisellCards/components/GraphicTextCard/hooks/index.d.ts +0 -5
  101. package/es/components/PisellCards/components/GraphicTextCard/hooks/useGraphicTextCardClick.d.ts +0 -15
  102. package/es/components/PisellCards/components/GraphicTextCard/hooks/useGraphicTextCardStyle.d.ts +0 -18
  103. package/es/components/PisellCards/components/GraphicTextCard/types.d.ts +0 -290
  104. package/es/components/PisellCards/components/GraphicTextCard/utils/index.d.ts +0 -19
  105. package/es/components/PisellCards/components/TextCard/TextCard.d.ts +0 -8
  106. package/es/components/PisellCards/components/TextCard/components/BadgeWrapper.d.ts +0 -26
  107. package/es/components/PisellCards/components/TextCard/components/IconWrapper.d.ts +0 -17
  108. package/es/components/PisellCards/components/TextCard/components/TextContent.d.ts +0 -21
  109. package/es/components/PisellCards/components/TextCard/components/index.d.ts +0 -6
  110. package/es/components/PisellCards/components/TextCard/index.d.ts +0 -5
  111. package/es/components/PisellCards/components/TextCard/types.d.ts +0 -270
  112. package/es/components/PisellCards/index.d.ts +0 -15
  113. package/es/components/config-provider/index.d.ts +0 -10
  114. package/es/components/dataSourceComponents/dataSourceTable/type.d.ts +0 -84
  115. package/es/components/dataSourceComponents/fields/Input.Phone/serve.d.ts +0 -27
  116. package/es/components/dataSourceComponents/fields/Upload/constants.d.ts +0 -9
  117. package/es/components/drag-sort-tree/index.d.ts +0 -5
  118. package/es/components/filter/components/Dropdown/types.d.ts +0 -13
  119. package/es/components/filter/components/FilterButton/types.d.ts +0 -24
  120. package/es/components/filter/types.d.ts +0 -48
  121. package/es/components/login-and-register/index.d.ts +0 -82
  122. package/es/components/pisellCurrency/PisellCurrency.d.ts +0 -39
  123. package/es/components/pisellDateTimeDisplay/utils/relativeDay.d.ts +0 -24
  124. package/es/components/pisellEmail/PisellEmail.d.ts +0 -37
  125. package/es/components/pisellFilter/type.d.ts +0 -5
  126. package/es/components/pisellGridPro/index.d.ts +0 -4
  127. package/es/components/pisellLongText/PisellLongText.d.ts +0 -39
  128. package/es/components/pisellMultipleSelect/PisellMultipleSelect.d.ts +0 -9
  129. package/es/components/pisellMultipleSelect/components/EditView.d.ts +0 -8
  130. package/es/components/pisellNumber/PisellNumber.d.ts +0 -42
  131. package/es/components/pisellPhone/PisellPhone.d.ts +0 -36
  132. package/es/components/pisellPhone/components/EditView.d.ts +0 -19
  133. package/es/components/pisellPhone/constants/countryCodes.d.ts +0 -20
  134. package/es/components/pisellPhone/types.d.ts +0 -209
  135. package/es/components/pisellPhone/utils/countryCodeHelper.d.ts +0 -35
  136. package/es/components/pisellQuickFilter/type.d.ts +0 -12
  137. package/es/components/pisellRating/PisellRating.d.ts +0 -31
  138. package/es/components/pisellRecordBoard/shellFrame/BatchActionBar/index.d.ts +0 -8
  139. package/es/components/pisellRecordBoard/shellFrame/Search/index.d.ts +0 -10
  140. package/es/components/pisellRecordBoard/shellFrame/ToolBarReset/index.d.ts +0 -16
  141. package/es/components/pisellSingleLineText/PisellSingleLineText.d.ts +0 -40
  142. package/es/components/pisellSingleSelect/PisellSingleSelect.d.ts +0 -9
  143. package/es/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.d.ts +0 -32
  144. package/es/components/pisellUrl/PisellUrl.d.ts +0 -37
  145. package/es/components/productCard/components/Header/DeleteButton/index.d.ts +0 -4
  146. package/es/components/productCard/components/Time/components/SelectHolder/index.d.ts +0 -4
  147. package/es/components/productCard/components/Time/components/SelectResource/index.d.ts +0 -19
  148. package/es/components/sort/index.d.ts +0 -5
  149. package/es/components/table/Actions/component/ViewMode/index.d.ts +0 -9
  150. package/es/components/table/Gallery/components/GalleryItem/index.d.ts +0 -14
  151. package/es/components/table/types.d.ts +0 -268
  152. package/es/components/translation/index.d.ts +0 -17
  153. package/es/components/translation/utils.d.ts +0 -9
  154. package/lib/components/PisellCards/components/GraphicTextCard/components/BadgeWrapper.d.ts +0 -5
  155. package/lib/components/PisellCards/components/GraphicTextCard/components/TextContent.d.ts +0 -27
  156. package/lib/components/PisellCards/components/GraphicTextCard/hooks/index.d.ts +0 -5
  157. package/lib/components/PisellCards/components/GraphicTextCard/hooks/useGraphicTextCardClick.d.ts +0 -15
  158. package/lib/components/PisellCards/components/GraphicTextCard/hooks/useGraphicTextCardStyle.d.ts +0 -18
  159. package/lib/components/PisellCards/components/GraphicTextCard/types.d.ts +0 -290
  160. package/lib/components/PisellCards/components/GraphicTextCard/utils/index.d.ts +0 -19
  161. package/lib/components/PisellCards/components/TextCard/TextCard.d.ts +0 -8
  162. package/lib/components/PisellCards/components/TextCard/components/BadgeWrapper.d.ts +0 -26
  163. package/lib/components/PisellCards/components/TextCard/components/IconWrapper.d.ts +0 -17
  164. package/lib/components/PisellCards/components/TextCard/components/TextContent.d.ts +0 -21
  165. package/lib/components/PisellCards/components/TextCard/components/index.d.ts +0 -6
  166. package/lib/components/PisellCards/components/TextCard/index.d.ts +0 -5
  167. package/lib/components/PisellCards/components/TextCard/types.d.ts +0 -270
  168. package/lib/components/PisellCards/index.d.ts +0 -15
  169. package/lib/components/config-provider/index.d.ts +0 -10
  170. package/lib/components/dataSourceComponents/dataSourceTable/type.d.ts +0 -84
  171. package/lib/components/dataSourceComponents/fields/Input.Phone/serve.d.ts +0 -27
  172. package/lib/components/dataSourceComponents/fields/Upload/constants.d.ts +0 -9
  173. package/lib/components/drag-sort-tree/index.d.ts +0 -5
  174. package/lib/components/filter/components/Dropdown/types.d.ts +0 -13
  175. package/lib/components/filter/components/FilterButton/types.d.ts +0 -24
  176. package/lib/components/filter/types.d.ts +0 -48
  177. package/lib/components/login-and-register/index.d.ts +0 -82
  178. package/lib/components/pisellCurrency/PisellCurrency.d.ts +0 -39
  179. package/lib/components/pisellDateTimeDisplay/utils/relativeDay.d.ts +0 -24
  180. package/lib/components/pisellEmail/PisellEmail.d.ts +0 -37
  181. package/lib/components/pisellFilter/type.d.ts +0 -5
  182. package/lib/components/pisellGridPro/index.d.ts +0 -4
  183. package/lib/components/pisellLongText/PisellLongText.d.ts +0 -39
  184. package/lib/components/pisellMultipleSelect/PisellMultipleSelect.d.ts +0 -9
  185. package/lib/components/pisellMultipleSelect/components/EditView.d.ts +0 -8
  186. package/lib/components/pisellNumber/PisellNumber.d.ts +0 -42
  187. package/lib/components/pisellPhone/PisellPhone.d.ts +0 -36
  188. package/lib/components/pisellPhone/components/EditView.d.ts +0 -19
  189. package/lib/components/pisellPhone/constants/countryCodes.d.ts +0 -20
  190. package/lib/components/pisellPhone/types.d.ts +0 -209
  191. package/lib/components/pisellPhone/utils/countryCodeHelper.d.ts +0 -35
  192. package/lib/components/pisellQuickFilter/type.d.ts +0 -12
  193. package/lib/components/pisellRating/PisellRating.d.ts +0 -31
  194. package/lib/components/pisellRecordBoard/shellFrame/BatchActionBar/index.d.ts +0 -8
  195. package/lib/components/pisellRecordBoard/shellFrame/Search/index.d.ts +0 -10
  196. package/lib/components/pisellRecordBoard/shellFrame/ToolBarReset/index.d.ts +0 -16
  197. package/lib/components/pisellSingleLineText/PisellSingleLineText.d.ts +0 -40
  198. package/lib/components/pisellSingleSelect/PisellSingleSelect.d.ts +0 -9
  199. package/lib/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.d.ts +0 -32
  200. package/lib/components/pisellUrl/PisellUrl.d.ts +0 -37
  201. package/lib/components/productCard/components/Header/DeleteButton/index.d.ts +0 -4
  202. package/lib/components/productCard/components/Time/components/SelectHolder/index.d.ts +0 -4
  203. package/lib/components/productCard/components/Time/components/SelectResource/index.d.ts +0 -19
  204. package/lib/components/sort/index.d.ts +0 -5
  205. package/lib/components/table/Actions/component/ViewMode/index.d.ts +0 -9
  206. package/lib/components/table/Gallery/components/GalleryItem/index.d.ts +0 -14
  207. package/lib/components/table/types.d.ts +0 -268
  208. package/lib/components/translation/index.d.ts +0 -17
  209. package/lib/components/translation/utils.d.ts +0 -9
@@ -13,7 +13,6 @@
13
13
  * <Content />
14
14
  * </PisellLayouts.ScrollView>
15
15
  */
16
- /// <reference types="react" />
17
16
  declare const PisellLayouts: {
18
17
  BasicGrid: <T>(props: import("../PisellBasicGrid").PisellBasicGridProps<T>) => import("react").JSX.Element;
19
18
  ScrollView: import("react").ForwardRefExoticComponent<Omit<import("../PisellScrollView").PisellScrollViewProps, "ref"> & import("react").RefAttributes<import("../PisellScrollView").PisellScrollViewRef>>;
@@ -44,7 +44,7 @@ export declare const withDataSource: <P extends unknown>(WrappedComponent: React
44
44
  }) => React.JSX.Element;
45
45
  export declare const withOptions: <P extends unknown>(WrappedComponent: React.ComponentType<P>) => (props: P & {
46
46
  options?: any;
47
- optionSourceType?: "default" | "api" | "custom" | undefined;
47
+ optionSourceType?: "default" | "custom" | "api" | undefined;
48
48
  labelField: string;
49
49
  valueField: string;
50
50
  extraParams?: Record<string, any> | undefined;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { DataSourceSubFormProps } from './types';
3
+ /**
4
+ * @title DataSourceSubForm 子表单组件
5
+ * @description
6
+ * 独立的子表单组件,专注于渲染一组表单字段。支持两种使用方式:
7
+ * 1. 传入 children:使用低代码引擎渲染的子组件(优先)
8
+ * 2. 传入 xRecordSchema:通过配置自动生成表单字段(fallback)
9
+ *
10
+ * 值结构: { field1: v1, field2: v2 }
11
+ */
12
+ declare const DataSourceSubForm: React.FC<DataSourceSubFormProps>;
13
+ export default DataSourceSubForm;
@@ -0,0 +1,274 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
11
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
12
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
13
+ import React, { useEffect, useMemo, useRef, forwardRef, useImperativeHandle } from 'react';
14
+ import { Form } from 'antd';
15
+ import { useMemoizedFn } from 'ahooks';
16
+ import classNames from 'classnames';
17
+ import JsonWrapperContext from "../dataSourceForm/provider/jsonWrapper/JsonWrapperContext";
18
+ import DataSourceProvider from "../provider/dataSource/DataSourceProvider";
19
+ import FormSettingProvider from "../dataSourceForm/provider/formSetting/FormSettingProvider";
20
+ // ===================== 工具函数 =====================
21
+
22
+ /**
23
+ * @title 提取多语言文本
24
+ * @description 兼容字符串、数字、多语言对象格式,返回可显示文本
25
+ */
26
+ var getI18nText = function getI18nText(value) {
27
+ if (value === null || value === undefined) {
28
+ return '';
29
+ }
30
+ if (typeof value === 'string' || typeof value === 'number') {
31
+ return "".concat(value);
32
+ }
33
+ if (_typeof(value) === 'object') {
34
+ return value.original || value['zh-CN'] || value.en || value['zh-HK'] || value.ja || value.pt || '';
35
+ }
36
+ return '';
37
+ };
38
+
39
+ /**
40
+ * @title 解析并规范化 xRecordSchema
41
+ * @description 兼容字符串、数组、properties 和 fields 结构,统一成字段数组供渲染使用
42
+ */
43
+ var normalizeRecordSchema = function normalizeRecordSchema(xRecordSchema) {
44
+ var _rawSchema, _rawSchema2, _rawSchema3;
45
+ if (!xRecordSchema) {
46
+ return [];
47
+ }
48
+ var rawSchema = xRecordSchema;
49
+ if (typeof xRecordSchema === 'string') {
50
+ try {
51
+ rawSchema = JSON.parse(xRecordSchema);
52
+ } catch (error) {
53
+ console.error('Failed to parse xRecordSchema:', error);
54
+ return [];
55
+ }
56
+ }
57
+
58
+ // 处理单个对象(非数组)的情况
59
+ if (rawSchema && _typeof(rawSchema) === 'object' && !Array.isArray(rawSchema) && rawSchema.name) {
60
+ rawSchema = [rawSchema];
61
+ }
62
+
63
+ /**
64
+ * @title 规范化单个字段
65
+ * @description 将各种格式的字段配置统一转换为标准格式
66
+ */
67
+ var normalizeSingleField = function normalizeSingleField(field, fallbackName) {
68
+ var _uiSchema$xDataSour;
69
+ var uiSchema = (field === null || field === void 0 ? void 0 : field.uiSchema) || {};
70
+ var name = (field === null || field === void 0 ? void 0 : field.name) || fallbackName;
71
+ if (!name) {
72
+ return null;
73
+ }
74
+
75
+ // 确定组件类型
76
+ var component = (uiSchema === null || uiSchema === void 0 ? void 0 : uiSchema['x-component']) || (field === null || field === void 0 ? void 0 : field.interface) || (field === null || field === void 0 ? void 0 : field.componentName) || (field === null || field === void 0 ? void 0 : field.component) || 'Input';
77
+
78
+ // 合并组件属性
79
+ var props = _objectSpread(_objectSpread({}, (uiSchema === null || uiSchema === void 0 ? void 0 : uiSchema['x-component-props']) || {}), (field === null || field === void 0 ? void 0 : field.props) || {});
80
+
81
+ // 解析选项列表(优先使用 x-data-source.options,其次 enum,最后 options/props.options)
82
+ var uiSchemaDataSourceOptions = (uiSchema === null || uiSchema === void 0 || (_uiSchema$xDataSour = uiSchema['x-data-source']) === null || _uiSchema$xDataSour === void 0 ? void 0 : _uiSchema$xDataSour.options) || [];
83
+ var rawOptions = uiSchemaDataSourceOptions.length ? uiSchemaDataSourceOptions : (uiSchema === null || uiSchema === void 0 ? void 0 : uiSchema.enum) || (field === null || field === void 0 ? void 0 : field.options) || (props === null || props === void 0 ? void 0 : props.options) || [];
84
+ var options = rawOptions.map(function (option) {
85
+ if (typeof option === 'string' || typeof option === 'number') {
86
+ return {
87
+ label: option,
88
+ value: option
89
+ };
90
+ }
91
+ return _objectSpread(_objectSpread({}, option), {}, {
92
+ label: getI18nText(option === null || option === void 0 ? void 0 : option.label) || (option === null || option === void 0 ? void 0 : option.value)
93
+ });
94
+ });
95
+
96
+ // Select 类型字段:若字段 type 为 array 且未设置 mode,自动切换为多选
97
+ if (component === 'Select' && (field === null || field === void 0 ? void 0 : field.type) === 'array' && !(props !== null && props !== void 0 && props.mode)) {
98
+ props.mode = 'multiple';
99
+ }
100
+ return _objectSpread(_objectSpread({}, field), {}, {
101
+ name: name,
102
+ label: getI18nText(field === null || field === void 0 ? void 0 : field.label) || getI18nText(uiSchema === null || uiSchema === void 0 ? void 0 : uiSchema.title) || name,
103
+ component: component,
104
+ componentName: component,
105
+ options: options,
106
+ props: props,
107
+ uiSchema: uiSchema
108
+ });
109
+ };
110
+ if (Array.isArray(rawSchema)) {
111
+ return rawSchema.map(function (item) {
112
+ return normalizeSingleField(item);
113
+ }).filter(Boolean);
114
+ }
115
+ if (Array.isArray((_rawSchema = rawSchema) === null || _rawSchema === void 0 ? void 0 : _rawSchema.fields)) {
116
+ return rawSchema.fields.map(function (item) {
117
+ return normalizeSingleField(item);
118
+ }).filter(Boolean);
119
+ }
120
+ if (Array.isArray((_rawSchema2 = rawSchema) === null || _rawSchema2 === void 0 ? void 0 : _rawSchema2.children)) {
121
+ return rawSchema.children.map(function (item) {
122
+ return normalizeSingleField(item);
123
+ }).filter(Boolean);
124
+ }
125
+ if ((_rawSchema3 = rawSchema) !== null && _rawSchema3 !== void 0 && _rawSchema3.properties && _typeof(rawSchema.properties) === 'object') {
126
+ return Object.keys(rawSchema.properties).map(function (name) {
127
+ return normalizeSingleField(rawSchema.properties[name], name);
128
+ }).filter(Boolean);
129
+ }
130
+ return [];
131
+ };
132
+
133
+ // ===================== 主组件 =====================
134
+
135
+ /**
136
+ * @title DataSourceSubForm 子表单组件
137
+ * @description
138
+ * 独立的子表单组件,专注于渲染一组表单字段。支持两种使用方式:
139
+ * 1. 传入 children:使用低代码引擎渲染的子组件(优先)
140
+ * 2. 传入 xRecordSchema:通过配置自动生成表单字段(fallback)
141
+ *
142
+ * 值结构: { field1: v1, field2: v2 }
143
+ */
144
+ var DataSourceSubForm = /*#__PURE__*/forwardRef(function (props, ref) {
145
+ var activeKey = props.activeKey,
146
+ _props$value = props.value,
147
+ value = _props$value === void 0 ? {} : _props$value,
148
+ onChange = props.onChange,
149
+ children = props.children,
150
+ xRecordSchema = props.xRecordSchema,
151
+ _props$renderMode = props.renderMode,
152
+ renderMode = _props$renderMode === void 0 ? 'edit' : _props$renderMode,
153
+ __designMode = props.__designMode,
154
+ className = props.className,
155
+ style = props.style;
156
+ var _Form$useForm = Form.useForm(),
157
+ _Form$useForm2 = _slicedToArray(_Form$useForm, 1),
158
+ innerForm = _Form$useForm2[0];
159
+ var activeKeyRef = useRef(activeKey);
160
+
161
+ /** 确保 value 是对象 */
162
+ var safeValue = useMemo(function () {
163
+ if (value && _typeof(value) === 'object' && !Array.isArray(value)) {
164
+ return value;
165
+ }
166
+ return {};
167
+ }, [value]);
168
+ useImperativeHandle(ref, function () {
169
+ return {
170
+ getFieldsValue: function getFieldsValue() {
171
+ return innerForm.getFieldsValue();
172
+ }
173
+ };
174
+ });
175
+
176
+ /** 当外部 value 变化时,同步到内部 Form */
177
+ useEffect(function () {
178
+ if (activeKeyRef.current !== activeKey) {
179
+ activeKeyRef.current = activeKey;
180
+ innerForm.resetFields();
181
+ }
182
+ innerForm.setFieldsValue(safeValue);
183
+ }, [safeValue, innerForm, activeKey]);
184
+
185
+ /** 内部 Form 值变化 -> 通知外部 */
186
+ var handleValuesChange = useMemoizedFn(function (_, allValues) {
187
+ onChange === null || onChange === void 0 || onChange(_objectSpread(_objectSpread({}, safeValue), allValues));
188
+ });
189
+
190
+ /** 解析 xRecordSchema 为字段数组 */
191
+ var fields = useMemo(function () {
192
+ return normalizeRecordSchema(xRecordSchema);
193
+ }, [xRecordSchema]);
194
+
195
+ /**
196
+ * @title 判断是否有有效的低代码子组件
197
+ * @description 排除引擎注入的空容器占位符
198
+ */
199
+ var hasRealChildren = useMemo(function () {
200
+ var childArray = React.Children.toArray(children);
201
+ if (childArray.length === 0) return false;
202
+ return childArray.some(function (child) {
203
+ return /*#__PURE__*/React.isValidElement(child);
204
+ });
205
+ }, [children]);
206
+
207
+ /**
208
+ * @title 创建模拟数据源
209
+ * @description 供 DataSourceProvider 消费,使子组件(如 Select)可访问字段元信息
210
+ */
211
+ var mockDataSource = useMemo(function () {
212
+ if (!fields || fields.length === 0) return null;
213
+ // 仅提供字段元信息供 DataSourceProvider 消费;其余必填字段以 as any 绕过类型检查
214
+ return {
215
+ fields: fields.map(function (field) {
216
+ return {
217
+ name: field.name,
218
+ uiSchema: field.uiSchema,
219
+ interface: field.interface
220
+ };
221
+ }),
222
+ name: 'dataSourceSubForm',
223
+ tableName: 'dataSourceSubForm'
224
+ };
225
+ }, [fields]);
226
+
227
+ /**
228
+ * @title 渲染表单核心内容
229
+ * @description
230
+ * - 有 children:渲染低代码引擎注入的子组件
231
+ * - 无 children 但有 fields:用 renderFormItem 逐字段渲染 Antd 控件
232
+ * - 两者均无:显示空状态提示
233
+ */
234
+ var renderFormContent = function renderFormContent() {
235
+ if (!hasRealChildren && fields.length === 0) {
236
+ return /*#__PURE__*/React.createElement("div", {
237
+ className: "pisell-data-source-sub-form__empty"
238
+ }, "No fields configured. Please configure xRecordSchema or add children components.");
239
+ }
240
+ var formContent = /*#__PURE__*/React.createElement(JsonWrapperContext.Provider, {
241
+ value: {
242
+ path: [],
243
+ level: 0
244
+ }
245
+ }, /*#__PURE__*/React.createElement(Form, {
246
+ form: innerForm,
247
+ onValuesChange: handleValuesChange,
248
+ component: false,
249
+ layout: "vertical"
250
+ }, children));
251
+
252
+ // 提供完整上下文(mockDataSource 存在时包裹 DataSourceProvider)
253
+ if (mockDataSource) {
254
+ return /*#__PURE__*/React.createElement(FormSettingProvider, {
255
+ renderMode: renderMode,
256
+ groupInfoPosition: "top",
257
+ size: "large"
258
+ }, /*#__PURE__*/React.createElement(DataSourceProvider, {
259
+ dataSource: mockDataSource,
260
+ __designMode: __designMode
261
+ }, formContent));
262
+ }
263
+ return /*#__PURE__*/React.createElement(FormSettingProvider, {
264
+ renderMode: renderMode,
265
+ groupInfoPosition: "top",
266
+ size: "large"
267
+ }, formContent);
268
+ };
269
+ return /*#__PURE__*/React.createElement("div", {
270
+ className: classNames('pisell-data-source-sub-form', className),
271
+ style: style
272
+ }, renderFormContent());
273
+ });
274
+ export default DataSourceSubForm;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @title DataSourceSubForm 组件样式
3
+ * @description 独立的子表单组件样式定义
4
+ */
5
+
6
+ // .pisell-data-source-sub-form {
7
+ // width: 100%;
8
+
9
+ // &__empty {
10
+ // color: #999;
11
+ // font-size: 12px;
12
+ // padding: 12px 0;
13
+ // text-align: center;
14
+ // }
15
+
16
+ // &__form-wrapper {
17
+ // width: 100%;
18
+ // }
19
+ // }