@cloudbase/weda-ui 3.9.8 → 3.10.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 (218) hide show
  1. package/dist/configs/components/dataView.d.ts +31 -0
  2. package/dist/configs/components/dataView.js +53 -16
  3. package/dist/configs/components/grid/col.d.ts +1 -1
  4. package/dist/configs/components/grid/col.js +1 -1
  5. package/dist/configs/components/grid/grid.d.ts +1 -1
  6. package/dist/configs/components/grid/grid.js +1 -1
  7. package/dist/configs/components/grid/row.d.ts +1 -1
  8. package/dist/configs/components/grid/row.js +1 -1
  9. package/dist/configs/components/listView.d.ts +148 -444
  10. package/dist/configs/components/listView.js +991 -703
  11. package/dist/configs/components/wd-bubble.d.ts +6 -6
  12. package/dist/configs/components/wd-cascader.d.ts +1 -1
  13. package/dist/configs/components/wd-checkbox.d.ts +1 -1
  14. package/dist/configs/components/wd-code-editor.d.ts +1 -1
  15. package/dist/configs/components/wd-date-range.d.ts +1 -1
  16. package/dist/configs/components/wd-date.d.ts +1 -1
  17. package/dist/configs/components/wd-department.d.ts +1 -1
  18. package/dist/configs/components/wd-form-arr.d.ts +1 -1
  19. package/dist/configs/components/wd-form-detail.d.ts +1 -1
  20. package/dist/configs/components/wd-form-obj.d.ts +1 -1
  21. package/dist/configs/components/wd-form.js +2 -1
  22. package/dist/configs/components/wd-input-email.d.ts +4 -3
  23. package/dist/configs/components/wd-input-number.d.ts +2 -2
  24. package/dist/configs/components/wd-input-phone.d.ts +4 -3
  25. package/dist/configs/components/wd-input-url.d.ts +4 -3
  26. package/dist/configs/components/wd-input.d.ts +3 -1
  27. package/dist/configs/components/wd-layout.d.ts +4 -0
  28. package/dist/configs/components/wd-layout.js +12 -0
  29. package/dist/configs/components/wd-location.d.ts +1 -1
  30. package/dist/configs/components/wd-member.d.ts +1 -1
  31. package/dist/configs/components/wd-menu-layout.d.ts +3 -0
  32. package/dist/configs/components/wd-menu-layout.js +6 -0
  33. package/dist/configs/components/wd-menu-list.d.ts +2 -0
  34. package/dist/configs/components/wd-menu-list.js +6 -0
  35. package/dist/configs/components/wd-modal.js +2 -0
  36. package/dist/configs/components/wd-progress.d.ts +2 -2
  37. package/dist/configs/components/wd-radio.d.ts +1 -1
  38. package/dist/configs/components/wd-rating.d.ts +2 -2
  39. package/dist/configs/components/wd-region.d.ts +1 -1
  40. package/dist/configs/components/wd-rich-text.d.ts +1 -1
  41. package/dist/configs/components/wd-select-multiple.d.ts +18 -1
  42. package/dist/configs/components/wd-select-multiple.js +17 -1
  43. package/dist/configs/components/wd-select.d.ts +18 -1
  44. package/dist/configs/components/wd-select.js +16 -0
  45. package/dist/configs/components/wd-side-tab.d.ts +12 -0
  46. package/dist/configs/components/wd-side-tab.js +47 -3
  47. package/dist/configs/components/wd-switch.d.ts +2 -2
  48. package/dist/configs/components/wd-table.d.ts +4 -4
  49. package/dist/configs/components/wd-table.js +2 -1
  50. package/dist/configs/components/wd-tag-select.d.ts +3 -3
  51. package/dist/configs/components/wd-tag.d.ts +21 -21
  52. package/dist/configs/components/wd-textarea.d.ts +8 -1
  53. package/dist/configs/components/wd-textarea.js +1 -0
  54. package/dist/configs/components/wd-time.d.ts +1 -1
  55. package/dist/configs/components/wd-top-tab.d.ts +12 -0
  56. package/dist/configs/components/wd-top-tab.js +47 -3
  57. package/dist/configs/components/wd-upload-file.d.ts +5 -1
  58. package/dist/configs/components/wd-upload-file.js +15 -0
  59. package/dist/configs/components/wd-upload-image.d.ts +1 -1
  60. package/dist/configs/index.d.ts +891 -1407
  61. package/dist/configs/type-utils/index.d.ts +1 -1
  62. package/dist/configs/type-utils/type-form.d.ts +29 -14
  63. package/dist/configs/type-utils/type-form.js +43 -10
  64. package/dist/configs/type-utils/x-runtime-default.d.ts +6 -0
  65. package/dist/configs/type-utils/x-runtime-default.js +6 -0
  66. package/dist/configs/utils/constants.d.ts +2 -0
  67. package/dist/configs/utils/constants.js +3 -0
  68. package/dist/configs/utils/get-combinations.d.ts +1 -0
  69. package/dist/configs/utils/get-combinations.js +13 -0
  70. package/dist/style/index.css +10478 -0
  71. package/dist/style/index.scss +1 -1
  72. package/dist/style/weda-ui.min.css +4 -0
  73. package/dist/web/actions/showMessage/index.js +5 -0
  74. package/dist/web/components/carousel/index.js +5 -0
  75. package/dist/web/components/chart/common/core/eChartBase.js +5 -0
  76. package/dist/web/components/chart/statisticsCard/index.js +6 -1
  77. package/dist/web/components/flow/process/constants.d.ts +10 -5
  78. package/dist/web/components/flow/process/constants.js +3 -2
  79. package/dist/web/components/flow/process/process.js +1 -1
  80. package/dist/web/components/form/form/index.js +9 -1
  81. package/dist/web/components/form/location/common/mapChoose.js +17 -3
  82. package/dist/web/components/form/location/common/mapView.js +18 -5
  83. package/dist/web/components/form/select/dropdown-select/h5.d.ts +3 -1
  84. package/dist/web/components/form/select/dropdown-select/h5.js +20 -20
  85. package/dist/web/components/form/select/dropdown-select/index.css +8 -0
  86. package/dist/web/components/form/select/dropdown-select/index.d.ts +6 -1
  87. package/dist/web/components/form/select/dropdown-select/index.js +64 -30
  88. package/dist/web/components/form/select/dropdown-select/pc.d.ts +2 -1
  89. package/dist/web/components/form/select/dropdown-select/pc.js +3 -3
  90. package/dist/web/components/form/select/dropdown-select/ui.d.ts +5 -0
  91. package/dist/web/components/form/select/dropdown-select/ui.js +8 -4
  92. package/dist/web/components/form/select/formats-util.d.ts +1 -0
  93. package/dist/web/components/form/select/formats-util.js +8 -0
  94. package/dist/web/components/form/select/h5.d.ts +1 -1
  95. package/dist/web/components/form/select/h5.js +6 -3
  96. package/dist/web/components/form/select/index.css +34 -3
  97. package/dist/web/components/form/select/index.d.ts +3 -0
  98. package/dist/web/components/form/select/index.js +6 -3
  99. package/dist/web/components/form/select/region/index.js +5 -1
  100. package/dist/web/components/form/select/request.js +2 -1
  101. package/dist/web/components/form/select/status/index.d.ts +2 -0
  102. package/dist/web/components/form/select/status/index.js +2 -0
  103. package/dist/web/components/form/selectMultiple/dropdown-select/h5.d.ts +3 -1
  104. package/dist/web/components/form/selectMultiple/dropdown-select/h5.js +31 -31
  105. package/dist/web/components/form/selectMultiple/dropdown-select/index.css +23 -0
  106. package/dist/web/components/form/selectMultiple/dropdown-select/index.d.ts +6 -1
  107. package/dist/web/components/form/selectMultiple/dropdown-select/index.js +58 -24
  108. package/dist/web/components/form/selectMultiple/dropdown-select/pc.d.ts +2 -1
  109. package/dist/web/components/form/selectMultiple/dropdown-select/pc.js +2 -2
  110. package/dist/web/components/form/selectMultiple/dropdown-select/ui.d.ts +5 -0
  111. package/dist/web/components/form/selectMultiple/dropdown-select/ui.js +7 -5
  112. package/dist/web/components/form/selectMultiple/h5.d.ts +1 -1
  113. package/dist/web/components/form/selectMultiple/h5.js +6 -3
  114. package/dist/web/components/form/selectMultiple/index.d.ts +5 -0
  115. package/dist/web/components/form/selectMultiple/index.js +7 -4
  116. package/dist/web/components/form/selectMultiple/request.js +2 -1
  117. package/dist/web/components/form/selectMultiple/status/index.d.ts +2 -0
  118. package/dist/web/components/form/selectMultiple/status/index.js +2 -0
  119. package/dist/web/components/form/uploader/index.css +26 -0
  120. package/dist/web/components/form/uploader/uploader.h5.d.ts +11 -3
  121. package/dist/web/components/form/uploader/uploader.h5.js +32 -96
  122. package/dist/web/components/form/uploader/uploader.pc.d.ts +9 -0
  123. package/dist/web/components/form/uploader/uploader.pc.js +38 -102
  124. package/dist/web/components/form/uploader/useUploadFile.d.ts +16 -0
  125. package/dist/web/components/form/uploader/useUploadFile.js +99 -0
  126. package/dist/web/components/form/uploader/util.d.ts +2 -0
  127. package/dist/web/components/form/uploader/util.js +87 -0
  128. package/dist/web/components/form/uploaderFile/uploadFile.h5.d.ts +2 -1
  129. package/dist/web/components/form/uploaderFile/uploadFile.h5.js +14 -4
  130. package/dist/web/components/form/uploaderFile/uploadFile.pc.d.ts +2 -1
  131. package/dist/web/components/form/uploaderFile/uploadFile.pc.js +21 -5
  132. package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-model.js +5 -0
  133. package/dist/web/components/form/userOrgSelect/component/userOrgSelect.css +8 -0
  134. package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.h5.js +6 -0
  135. package/dist/web/components/form-date/index.d.ts +9 -10
  136. package/dist/web/components/form-depart-tree-select/index.d.ts +8 -8
  137. package/dist/web/components/form-email/index.d.ts +12 -19
  138. package/dist/web/components/form-image-uploader/index.d.ts +10 -13
  139. package/dist/web/components/form-input/index.d.ts +4 -4
  140. package/dist/web/components/form-input-hooks/index.js +7 -1
  141. package/dist/web/components/form-location/index.d.ts +8 -7
  142. package/dist/web/components/form-multi-region/index.d.ts +9 -10
  143. package/dist/web/components/form-phone/index.d.ts +12 -19
  144. package/dist/web/components/form-radio/index.d.ts +7 -6
  145. package/dist/web/components/form-region/index.d.ts +9 -10
  146. package/dist/web/components/form-rich-text/index.d.ts +8 -9
  147. package/dist/web/components/form-select/index.d.ts +12 -16
  148. package/dist/web/components/form-select-multiple/index.d.ts +9 -10
  149. package/dist/web/components/form-switch/index.d.ts +8 -7
  150. package/dist/web/components/form-text-area/index.d.ts +12 -19
  151. package/dist/web/components/form-time/index.d.ts +9 -10
  152. package/dist/web/components/form-upload-file/index.d.ts +10 -13
  153. package/dist/web/components/form-url/index.d.ts +12 -19
  154. package/dist/web/components/form-user-tree-select/index.d.ts +8 -8
  155. package/dist/web/components/grid/col.d.ts +6 -9
  156. package/dist/web/components/grid/grid.d.ts +6 -14
  157. package/dist/web/components/grid/row.d.ts +6 -12
  158. package/dist/web/components/listView/index.d.ts +21 -2
  159. package/dist/web/components/listView/index.js +0 -3
  160. package/dist/web/components/listView/interface.d.ts +4 -4
  161. package/dist/web/components/lottery/index.d.ts +13 -15
  162. package/dist/web/components/navigationBar/index.css +2 -1
  163. package/dist/web/components/richText/index.js +6 -0
  164. package/dist/web/components/richTextView/useImgTransform.js +6 -1
  165. package/dist/web/components/table/ImportFileModalByApi/index.js +6 -1
  166. package/dist/web/components/table/ImportFileModalByApi/uploadCSVFile.js +6 -1
  167. package/dist/web/components/wd-audio/wd-audio.js +5 -0
  168. package/dist/web/components/wd-canvas/wd-canvas.js +6 -1
  169. package/dist/web/components/wd-code-editor/wd-code-editor.js +7 -2
  170. package/dist/web/components/wd-date/elements/WheelPicker.js +7 -1
  171. package/dist/web/components/wd-form/index.d.ts +26 -40
  172. package/dist/web/components/wd-form/index.js +9 -2
  173. package/dist/web/components/wd-form-item/wd-form-item-read-only.d.ts +2 -0
  174. package/dist/web/components/wd-form-item/wd-form-item-read-only.js +15 -2
  175. package/dist/web/components/wd-form-item/wd-form-item.js +4 -3
  176. package/dist/web/components/wd-input/wd-input.d.ts +20 -42
  177. package/dist/web/components/wd-input-email/wd-input-email.d.ts +19 -41
  178. package/dist/web/components/wd-input-phone/wd-input-phone.d.ts +20 -42
  179. package/dist/web/components/wd-input-url/wd-input-url.d.ts +19 -41
  180. package/dist/web/components/wd-layout/wd-layout.d.ts +1 -1
  181. package/dist/web/components/wd-layout/wd-layout.js +2 -2
  182. package/dist/web/components/wd-markdown/wd-markdown.js +1 -1
  183. package/dist/web/components/wd-menu-layout/components/PlantMenu.js +1 -1
  184. package/dist/web/components/wd-menu-list/CommonMenuList.js +7 -1
  185. package/dist/web/components/wd-menu-list/HorizontalMenuList.js +7 -1
  186. package/dist/web/components/wd-select/relationalSetting.d.ts +7 -0
  187. package/dist/web/components/wd-select/relationalSetting.js +15 -0
  188. package/dist/web/components/wd-select/wd-select.css +43 -0
  189. package/dist/web/components/wd-select/wd-select.d.ts +2 -0
  190. package/dist/web/components/wd-select/wd-select.js +25 -6
  191. package/dist/web/components/wd-select-multiple/wd-select-multiple.css +4 -0
  192. package/dist/web/components/wd-select-multiple/wd-select-multiple.d.ts +6 -0
  193. package/dist/web/components/wd-select-multiple/wd-select-multiple.js +25 -6
  194. package/dist/web/components/wd-table/components/FieldRender/Form/Enum.js +18 -4
  195. package/dist/web/components/wd-table/components/FieldRender/index.js +34 -5
  196. package/dist/web/components/wd-table/utils/index.js +18 -4
  197. package/dist/web/components/wd-tabs/tabs-h5.js +2 -3
  198. package/dist/web/components/wd-tabs/tabs-pc.js +2 -3
  199. package/dist/web/components/wd-tabs/util.d.ts +1 -0
  200. package/dist/web/components/wd-tabs/util.js +21 -0
  201. package/dist/web/components/wd-textarea/wd-textarea.js +11 -1
  202. package/dist/web/components/wd-unified-link/utils.js +1 -1
  203. package/dist/web/components/wd-upload-file/wd-upload-file.js +2 -2
  204. package/dist/web/components/web-view/web-view.d.ts +14 -20
  205. package/dist/web/utils/color.js +5 -0
  206. package/dist/web/utils/datasource.js +30 -20
  207. package/dist/web/utils/error.d.ts +3 -1
  208. package/dist/web/utils/error.js +9 -4
  209. package/dist/web/utils/file.js +4 -1
  210. package/dist/web/utils/getModelParams.js +27 -2
  211. package/dist/web/utils/hooks/EnumHoc.js +3 -1
  212. package/dist/web/utils/hooks/useRecycle.d.ts +4 -0
  213. package/dist/web/utils/loadIconCss.js +2 -1
  214. package/dist/web/utils/moment.js +2 -1
  215. package/dist/web/utils/platform.js +5 -2
  216. package/dist/web/utils/tcb.js +5 -3
  217. package/dist/web/weda-ui.css +8 -4
  218. package/package.json +8 -3
@@ -2,6 +2,7 @@ import { getDataSourceFieldsWithAuth } from '../../../utils/datasource';
2
2
  import { TABLE_SLOT_PREFIX, GLOBAL_BUTTON, REL_DICT, } from '../../../utils/constant';
3
3
  import { callWedaApi, appCloudGetWedaUserId, getIsExitApi, } from '../../../utils/tcb';
4
4
  import { isObj, deepClone } from '../../../utils/tool';
5
+ import { errorHandler } from '../../../utils/error';
5
6
  // 新接口没有返回关联表的主列字段,从旧接口中查询出来
6
7
  const getPrimaryColumn = (fields, dataViewPropertiesList, selectedView) => {
7
8
  var _a, _b;
@@ -81,7 +82,10 @@ export const whereList = (whereProxy) => {
81
82
  return [];
82
83
  }
83
84
  catch (error) {
84
- console.error('getWhereList error', error);
85
+ errorHandler({
86
+ code: 'GetWhereListError',
87
+ error,
88
+ });
85
89
  return [];
86
90
  }
87
91
  };
@@ -396,8 +400,11 @@ export const getViews = async (dbName, selectedView) => {
396
400
  };
397
401
  }
398
402
  }
399
- catch (err) {
400
- console.error('err getViews', err);
403
+ catch (error) {
404
+ errorHandler({
405
+ code: 'GetViewsError',
406
+ error,
407
+ });
401
408
  }
402
409
  };
403
410
  // 获取选中的筛选字段
@@ -441,6 +448,10 @@ export const getFilterFields = (filterFields, authFields) => {
441
448
  }
442
449
  }
443
450
  catch (error) {
451
+ errorHandler({
452
+ code: 'GetFilterFieldsError',
453
+ error,
454
+ });
444
455
  result = [];
445
456
  }
446
457
  result = result.filter((i) => !!i);
@@ -496,7 +507,10 @@ export const mapTableDataWithView = (viewFieldsData, records) => {
496
507
  return records;
497
508
  }
498
509
  catch (error) {
499
- console.error('err map table data with view');
510
+ errorHandler({
511
+ code: 'MapTableDataWithViewError',
512
+ error,
513
+ });
500
514
  return records;
501
515
  }
502
516
  };
@@ -4,6 +4,7 @@ import { useConfig } from '../../utils/config-context';
4
4
  import { usePlatform } from '../../utils/platform';
5
5
  import WdIcon from '../wd-icon';
6
6
  import { useSyncedRef } from '@react-hookz/web';
7
+ import { renderSlot } from './util';
7
8
  export const WdTabsH5 = ({ isMultipleSlot, tabsDatas, selectedIndex, ...restProps }) => {
8
9
  const { classPrefix } = useConfig();
9
10
  const $node = useSyncedRef(restProps.$node);
@@ -96,7 +97,5 @@ export const WdTabsH5 = ({ isMultipleSlot, tabsDatas, selectedIndex, ...restProp
96
97
  var _a;
97
98
  //滚动条高度
98
99
  setItemOffset((_a = event === null || event === void 0 ? void 0 : event.currentTarget) === null || _a === void 0 ? void 0 : _a.scrollLeft);
99
- }, children: tabsDatas === null || tabsDatas === void 0 ? void 0 : tabsDatas.map((item, index) => RenderTabItem(index, item)) }), showMask && restProps.direction !== 'vertical' && (_jsx("div", { className: `${classPrefix}-tabs__header-item-mask` }))] }) }), _jsx("div", { className: `${classPrefix}-tabs__body`, children: _jsx("div", { className: `${classPrefix}-tabs__body-content`, children: isMultipleSlot
100
- ? restProps[`panel${selectedTab + Number('1')}`]
101
- : restProps[`panel1`] }) })] }));
100
+ }, children: tabsDatas === null || tabsDatas === void 0 ? void 0 : tabsDatas.map((item, index) => RenderTabItem(index, item)) }), showMask && restProps.direction !== 'vertical' && (_jsx("div", { className: `${classPrefix}-tabs__header-item-mask` }))] }) }), _jsx("div", { className: `${classPrefix}-tabs__body`, children: _jsx("div", { className: `${classPrefix}-tabs__body-content`, children: renderSlot({ ...restProps, selectedTab, tabsDatas, isMultipleSlot }) }) })] }));
102
101
  };
@@ -4,6 +4,7 @@ import { useConfig } from '../../utils/config-context';
4
4
  import { usePlatform } from '../../utils/platform';
5
5
  import WdIcon from '../wd-icon';
6
6
  import { useSyncedRef } from '@react-hookz/web';
7
+ import { renderSlot } from './util';
7
8
  export const WdTabsPc = ({ isMultipleSlot, tabsDatas, selectedIndex, ...restProps }) => {
8
9
  const { classPrefix } = useConfig();
9
10
  const $node = useSyncedRef(restProps.$node);
@@ -115,7 +116,5 @@ export const WdTabsPc = ({ isMultipleSlot, tabsDatas, selectedIndex, ...restProp
115
116
  index: position.index + Number('1'),
116
117
  offset: result,
117
118
  });
118
- } }))] }), _jsx("div", { className: `${classPrefix}-tabs__body`, children: _jsx("div", { className: `${classPrefix}-tabs__body-content`, children: isMultipleSlot
119
- ? restProps[`panel${selectedTab + Number('1')}`]
120
- : restProps[`panel1`] }) })] }));
119
+ } }))] }), _jsx("div", { className: `${classPrefix}-tabs__body`, children: _jsx("div", { className: `${classPrefix}-tabs__body-content`, children: renderSlot({ ...restProps, selectedTab, tabsDatas, isMultipleSlot }) }) })] }));
121
120
  };
@@ -0,0 +1 @@
1
+ export declare const renderSlot: (props: any) => any;
@@ -0,0 +1,21 @@
1
+ const TAB_SLOT_PREFIX = 'autoPanel';
2
+ const getSlots = (props) => Object.keys(props).reduce((acc, key) => {
3
+ if (key.startsWith(TAB_SLOT_PREFIX)) {
4
+ acc[key] = props[key];
5
+ }
6
+ return acc;
7
+ }, {});
8
+ export const renderSlot = (props) => {
9
+ var _a;
10
+ const { tabsDatas, selectedTab, isMultipleSlot } = props;
11
+ if (props.isSlotAuto) {
12
+ const slot = getSlots(props);
13
+ const slotKey = ((_a = tabsDatas[selectedTab]) === null || _a === void 0 ? void 0 : _a.slotKey) || '1';
14
+ return slot[`${TAB_SLOT_PREFIX}_${slotKey}`];
15
+ }
16
+ else {
17
+ return isMultipleSlot
18
+ ? props[`panel${selectedTab + Number('1')}`]
19
+ : props[`panel1`];
20
+ }
21
+ };
@@ -84,6 +84,16 @@ export const WdTextarea = forwardRef(function WdTextarea(props, ref) {
84
84
  zhRef.current = false;
85
85
  onChange(e);
86
86
  };
87
+ const handleKeyDown = (e) => {
88
+ var _a;
89
+ if (e.key === 'Enter' && !e.shiftKey) {
90
+ // 判断输入法是否正在输入中文字符
91
+ if (!e.target.isComposing) {
92
+ e.preventDefault();
93
+ (_a = events.confirm) === null || _a === void 0 ? void 0 : _a.call(events, { value: e.target.value }, { originEvent: e });
94
+ }
95
+ }
96
+ };
87
97
  /** widgets */
88
98
  useImperativeHandle(ref, () => ({
89
99
  ...innerHandle,
@@ -95,5 +105,5 @@ export const WdTextarea = forwardRef(function WdTextarea(props, ref) {
95
105
  disabled,
96
106
  readOnly,
97
107
  }), [innerHandle, name, value, label, required, visible, disabled, readOnly]);
98
- return (visible && (_jsx(WdFormItem, { ...props, validateErrorMsg: validateErrorMsg, validateState: validateState, readOnly: readOnly, disabled: disabled, readValue: value, classRoot: classRoot, inputId: inputId, layout: props.layout, children: _jsxs("div", { className: cls, ref: wrapRef, onFocus: () => wrapRef.current.classList.add('is-focused'), onBlur: () => wrapRef.current.classList.remove('is-focused'), children: [_jsx("textarea", { id: inputId, ref: textareaRef, rows: 2, placeholder: placeholder, name: name, value: displayValue, maxLength: maxLength, autoFocus: focus, disabled: disabled, readOnly: readOnly, onChange: onChange, onFocus: onFocus, onBlur: onBlur, onCompositionStart: handleZhStart, onCompositionEnd: handleZhEnd, ...startWithOnProps }), counterVisible && (_jsxs("label", { className: countCls, children: [counter, "/", maxLength] }))] }) })));
108
+ return (visible && (_jsx(WdFormItem, { ...props, validateErrorMsg: validateErrorMsg, validateState: validateState, readOnly: readOnly, disabled: disabled, readValue: value, classRoot: classRoot, inputId: inputId, layout: props.layout, children: _jsxs("div", { className: cls, ref: wrapRef, onFocus: () => wrapRef.current.classList.add('is-focused'), onBlur: () => wrapRef.current.classList.remove('is-focused'), children: [_jsx("textarea", { id: inputId, ref: textareaRef, rows: 2, placeholder: placeholder, name: name, value: displayValue, maxLength: maxLength, autoFocus: focus, disabled: disabled, readOnly: readOnly, onChange: onChange, onFocus: onFocus, onBlur: onBlur, onKeyDown: handleKeyDown, onCompositionStart: handleZhStart, onCompositionEnd: handleZhEnd, ...startWithOnProps }), counterVisible && (_jsxs("label", { className: countCls, children: [counter, "/", maxLength] }))] }) })));
99
109
  });
@@ -13,7 +13,7 @@ export const getOnClick = (props) => {
13
13
  if (!e.defaultPrevented) {
14
14
  e.preventDefault();
15
15
  const URL_REG = /^(weda-page|plugin|miniprogram):\/\/([0-9.\-A-Za-z]+)(?:\/([^?#]*))?(?:\?([^#]*))?$/;
16
- const matched = url.match(URL_REG);
16
+ const matched = url === null || url === void 0 ? void 0 : url.match(URL_REG);
17
17
  if (matched) {
18
18
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
19
19
  const [_, protocol, ...restOpts] = matched;
@@ -12,7 +12,7 @@ import './style';
12
12
  * 文件上传-标准化
13
13
  */
14
14
  export const WdUploadFile = forwardRef(function WdUploadFile(props, ref) {
15
- const { classRoot = 'upload-file', acceptTypes: _acceptTypes = X_RUNTIME_DEFAULT._acceptTypesInFile, maxSize = X_RUNTIME_DEFAULT.maxSize, single = X_RUNTIME_DEFAULT.single, maxUploadCount = X_RUNTIME_DEFAULT.maxUploadCount, events = emptyObject, deleteVisible = X_RUNTIME_DEFAULT.deleteVisible, downloadVisible = X_RUNTIME_DEFAULT.downloadVisible, callbacks, } = props;
15
+ const { classRoot = 'upload-file', acceptTypes: _acceptTypes = X_RUNTIME_DEFAULT._acceptTypesInFile, maxSize = X_RUNTIME_DEFAULT.maxSize, single = X_RUNTIME_DEFAULT.single, maxUploadCount = X_RUNTIME_DEFAULT.maxUploadCount, events = emptyObject, deleteVisible = X_RUNTIME_DEFAULT.deleteVisible, downloadVisible = X_RUNTIME_DEFAULT.downloadVisible, callbacks, uploadButtonText = X_RUNTIME_DEFAULT._uploadButtonText, uploadTipText = X_RUNTIME_DEFAULT._uploadTipText, } = props;
16
16
  const acceptTypes = useMemo(() => convertAcceptTypes(_acceptTypes), [_acceptTypes]);
17
17
  // 强制转换初始值
18
18
  const initRef = useRef(false);
@@ -34,5 +34,5 @@ export const WdUploadFile = forwardRef(function WdUploadFile(props, ref) {
34
34
  };
35
35
  if (!visible)
36
36
  return null;
37
- return (_jsx(WdFormItem, { ...formItemProps, children: _jsx(UploaderFile, { events: events, labelVisible: false, acceptTypes: acceptTypes, defaultValue: value, deleteVisible: deleteVisible, downloadVisible: downloadVisible, maxSize: maxSize, maxUploadCount: maxUploadCount, single: single, readOnly: readOnly, disabled: disabled, decorator: null, onChange: onChange, callbacks: callbacks }) }));
37
+ return (_jsx(WdFormItem, { ...formItemProps, children: _jsx(UploaderFile, { btnTitle: uploadButtonText, uploadTipText: uploadTipText, events: events, labelVisible: false, acceptTypes: acceptTypes, defaultValue: value, deleteVisible: deleteVisible, downloadVisible: downloadVisible, maxSize: maxSize, maxUploadCount: maxUploadCount, single: single, readOnly: readOnly, disabled: disabled, decorator: null, onChange: onChange, callbacks: callbacks }) }));
38
38
  });
@@ -2,25 +2,19 @@ import React from 'react';
2
2
  import type { CommonPropsType } from '../../types';
3
3
  import type { DataType, EventsType } from '../../../configs/components/web-view';
4
4
  import './style';
5
- export declare const WebView: React.ForwardRefExoticComponent<CommonPropsType & import("type-fest").Simplify<{
5
+ export declare const WebView: React.ForwardRefExoticComponent<CommonPropsType & {
6
6
  link: string;
7
- }> & import("type-fest").Simplify<import("../../../configs/type-utils").StaticEventsType<[{
8
- readonly name: "load";
9
- readonly title: "网页加载成功";
10
- readonly detail: import("@sinclair/typebox").TObject<{
11
- src: import("@sinclair/typebox").TString;
12
- }>;
13
- }, {
14
- readonly name: "error";
15
- readonly title: "网页加载失败";
16
- readonly detail: import("@sinclair/typebox").TObject<{
17
- src: import("@sinclair/typebox").TString;
18
- }>;
19
- }, {
20
- readonly name: "message";
21
- readonly title: "接收网页消息";
22
- readonly detail: import("@sinclair/typebox").TObject<{
23
- data: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny>;
24
- }>;
25
- }]>> & React.RefAttributes<unknown>>;
7
+ } & {
8
+ events: {
9
+ load: (eventDetail: {
10
+ src: string;
11
+ }, ...args: unknown[]) => unknown;
12
+ error: (eventDetail: {
13
+ src: string;
14
+ }, ...args: unknown[]) => unknown;
15
+ message: (eventDetail: {
16
+ data: Record<string, any>;
17
+ }, ...args: unknown[]) => unknown;
18
+ };
19
+ } & React.RefAttributes<unknown>>;
26
20
  export type WdWebViewProps = CommonPropsType & DataType & EventsType;
@@ -1,3 +1,4 @@
1
+ import { errorHandler } from './error';
1
2
  /**
2
3
  * 十六进制、rgba、rgb、hsl、hsla 都换算成 rgba
3
4
  */
@@ -50,6 +51,10 @@ export function colorToRgba(color, alpha = 1) {
50
51
  return `rgba(${r},${g},${b},${a})`;
51
52
  }
52
53
  catch (e) {
54
+ errorHandler({
55
+ code: 'ColorsToRgbaError',
56
+ error: e,
57
+ });
53
58
  return color;
54
59
  }
55
60
  }
@@ -1,6 +1,6 @@
1
- import { isInIde, alertErrorMessage, isSystemField } from './platform';
1
+ import { isInIde, isSystemField } from './platform';
2
2
  import { callDataSource, callConnector, callWedaApi } from './tcb';
3
- import { WdCompError } from './error';
3
+ import { WdCompError, errorHandler } from './error';
4
4
  import { getUuid } from './tool';
5
5
  /* **** 数据源相关方法 **** */
6
6
  export class DataSource {
@@ -26,12 +26,12 @@ export class DataSource {
26
26
  return res;
27
27
  }
28
28
  catch (error) {
29
- if (!isInIde()) {
30
- console.error('错误', error);
31
- alertErrorMessage({
32
- message: `获取数据源字段失败,错误信息:${error.message}`,
33
- });
34
- }
29
+ errorHandler({
30
+ code: 'WedaGetRecordsError',
31
+ error,
32
+ message: `获取数据源字段失败,错误信息:${error.message}`,
33
+ showTip: true,
34
+ });
35
35
  return {};
36
36
  }
37
37
  }
@@ -65,12 +65,12 @@ export class DataSource {
65
65
  return res;
66
66
  }
67
67
  catch (error) {
68
- if (!isInIde()) {
69
- console.error('错误', error);
70
- alertErrorMessage({
71
- message: `获取数据源字段失败,错误信息:${error.message}`,
72
- });
73
- }
68
+ errorHandler({
69
+ code: 'WedaGetRecordsV2Error',
70
+ error,
71
+ message: `获取数据源字段失败,错误信息:${error.message}`,
72
+ showTip: true,
73
+ });
74
74
  return {};
75
75
  }
76
76
  }
@@ -212,8 +212,12 @@ export const getDataSourceByName = async (dbName, GetColumnAuth = true, swrMode
212
212
  return datasource;
213
213
  }
214
214
  catch (error) {
215
- alertErrorMessage({ message: `获取数据源字段失败,错误信息:${error}` });
216
- console.error(`获取数据源字段失败,错误信息:${error}`);
215
+ errorHandler({
216
+ code: 'GetDataSourceByNameError',
217
+ error,
218
+ message: `获取数据源字段失败,错误信息:${error.message}`,
219
+ showTip: true,
220
+ });
217
221
  return {};
218
222
  }
219
223
  };
@@ -227,8 +231,12 @@ export const getDataSourceByNameCompatibleProvite = async (dbName) => {
227
231
  return datasource;
228
232
  }
229
233
  catch (error) {
230
- alertErrorMessage({ message: `获取数据源字段失败,错误信息:${error}` });
231
- console.error(`获取数据源字段失败,错误信息:${error}`);
234
+ errorHandler({
235
+ code: 'GetDataSourceProfileError',
236
+ error,
237
+ message: `获取数据源字段失败,错误信息:${error.message}`,
238
+ showTip: true,
239
+ });
232
240
  return {};
233
241
  }
234
242
  };
@@ -263,6 +271,7 @@ export const getAuthFieldsByName = async (dbName) => {
263
271
  }
264
272
  catch (e) {
265
273
  console.error('模型:请求权限出错.', e);
274
+ errorHandler({ code: 'GetAuthFieldsByNameError', error: e });
266
275
  }
267
276
  return fieldsAuthObj;
268
277
  };
@@ -305,7 +314,7 @@ export const getDataSourceFieldsWithAuth = (authList, resourceCheckInfos) => {
305
314
  return authList;
306
315
  }
307
316
  catch (err) {
308
- console.error('getDataSourceFieldsWithAuth err', err);
317
+ errorHandler({ code: 'getDataSourceFieldsWithAuthError', error: err });
309
318
  }
310
319
  };
311
320
  /**
@@ -455,7 +464,8 @@ export const getPrimaryField = (_data) => {
455
464
  data = { ..._data, ...data };
456
465
  }
457
466
  catch (error) {
458
- console.error('主列字段数据转换出错', error);
467
+ console.error('模型:主列字段转换错误.', error);
468
+ errorHandler({ code: 'GetPrimaryFieldError', error });
459
469
  return _data;
460
470
  }
461
471
  return data;
@@ -8,10 +8,12 @@ export declare class WdCompError extends Error {
8
8
  original?: Error;
9
9
  });
10
10
  }
11
- export declare const errorHandler: ({ id, code, error }: {
11
+ export declare const errorHandler: ({ id, code, error, message, showTip, }: {
12
12
  id?: string;
13
13
  code: any;
14
14
  error: any;
15
+ message?: string;
16
+ showTip?: boolean;
15
17
  }) => {
16
18
  compError: WdCompError;
17
19
  comErrorInfo: {
@@ -1,3 +1,4 @@
1
+ import { alertErrorMessage } from './platform';
1
2
  export class WdCompError extends Error {
2
3
  constructor(message, context = {}) {
3
4
  super(message);
@@ -25,14 +26,18 @@ export class WdCompError extends Error {
25
26
  this.original = context === null || context === void 0 ? void 0 : context.original;
26
27
  }
27
28
  }
28
- export const errorHandler = ({ id = '', code, error }) => {
29
+ export const errorHandler = ({ id = '', code, error, message = '', showTip = false, }) => {
30
+ const _message = message || `[组件${id}:${code}]${(error === null || error === void 0 ? void 0 : error.message) || code}`;
29
31
  const comErrorInfo = {
30
- code: (error === null || error === void 0 ? void 0 : error.code) || code,
32
+ code: code,
31
33
  requestId: error === null || error === void 0 ? void 0 : error.requestId,
32
34
  original: error,
33
- message: `[组件${id}:${code}]${(error === null || error === void 0 ? void 0 : error.message) || code}`,
35
+ message: _message,
34
36
  };
37
+ if (showTip) {
38
+ alertErrorMessage({ message: _message });
39
+ }
35
40
  const compError = new WdCompError(comErrorInfo.message, comErrorInfo);
36
- console.error(comErrorInfo);
41
+ console.error(`${comErrorInfo.code}:`, comErrorInfo);
37
42
  return { compError, comErrorInfo };
38
43
  };
@@ -1,6 +1,7 @@
1
1
  import jsonExport from 'jsonexport/dist';
2
2
  import moment from 'moment';
3
3
  import { utils, writeFile, SSF, readFile } from 'xlsx';
4
+ import { errorHandler } from './error';
4
5
  /**
5
6
  * 将数据导出为 CSV 或 JSON
6
7
  */
@@ -27,7 +28,9 @@ export const exportData = async (data, fileType = 'csv', name = 'weda-data-expor
27
28
  await saveFile(new Blob([csv], { type: 'text/csv,charset=utf-8' }), title);
28
29
  }
29
30
  }
30
- catch (e) { }
31
+ catch (e) {
32
+ errorHandler({ code: 'ExportDataError', error: e });
33
+ }
31
34
  };
32
35
  /**
33
36
  * 取每列最大宽度,实现excel列宽自适应
@@ -1,4 +1,5 @@
1
1
  import { getWhereList, getParseValue } from './platform';
2
+ import { errorHandler } from './error';
2
3
  /**
3
4
  * 兼容新旧查询条件协议
4
5
  */
@@ -14,7 +15,9 @@ export const convertWhere = (props, supportManyRelated) => {
14
15
  where = props.queryCondition || getWhereList(props.where);
15
16
  where = getParseValue(where);
16
17
  }
17
- catch (e) { }
18
+ catch (e) {
19
+ errorHandler({ code: 'ConvertQueryError', error: e });
20
+ }
18
21
  const isEmptyObj = (obj) => Object.keys(obj).length === 0;
19
22
  return Array.isArray(where) ? where === null || where === void 0 ? void 0 : where.filter((i) => !isEmptyObj(i)) : [];
20
23
  };
@@ -93,6 +96,14 @@ export const getModelParams = (props) => {
93
96
  params['filter'] = getFilter(props.queryCondition);
94
97
  }
95
98
  params.select = getSelectFields(props);
99
+ // 处理排序字段
100
+ if (params.orderBy && ['asc', 'desc'].includes(params.orderType)) {
101
+ params.orderBy = [{ [params.orderBy]: params.orderType }];
102
+ }
103
+ // 支持多字段排序
104
+ if (props.isSupportMultipleSort) {
105
+ params.orderBy = transformSorter(props.sorter);
106
+ }
96
107
  }
97
108
  else {
98
109
  const where = convertWhere(props);
@@ -102,7 +113,21 @@ export const getModelParams = (props) => {
102
113
  }
103
114
  }
104
115
  catch (e) {
105
- console.error('getModelParams error', e);
116
+ errorHandler({ code: 'GetModelParamsError', error: e });
106
117
  }
107
118
  return params;
108
119
  };
120
+ const transformSorter = (sorter = []) => {
121
+ var _a;
122
+ return (_a = sorter === null || sorter === void 0 ? void 0 : sorter.filter((n) => (n.orderBy && n.orderType) || n.relationalTableName)) === null || _a === void 0 ? void 0 : _a.map((i) => {
123
+ var _a, _b;
124
+ if (i.relationalTableName) {
125
+ return {
126
+ [i.relationalTableName]: (_b = (_a = i.sorter) === null || _a === void 0 ? void 0 : _a.filter((j) => j.orderBy && j.orderType)) === null || _b === void 0 ? void 0 : _b.map((k) => ({ [k.orderBy]: k.orderType })),
127
+ };
128
+ }
129
+ else {
130
+ return { [i.orderBy]: i.orderType };
131
+ }
132
+ });
133
+ };
@@ -4,6 +4,7 @@ import { callWedaApi } from '../tcb';
4
4
  import { EnumContext } from './context';
5
5
  import isObjectEqual from '../isObjectEqual';
6
6
  import { useSyncValue } from './useSyncValue';
7
+ import { errorHandler } from '../error';
7
8
  /**
8
9
  * 选项集高阶组件,提供 loading 状态
9
10
  */
@@ -57,7 +58,7 @@ async function getEnumOptions(fields) {
57
58
  }
58
59
  }
59
60
  catch (e) {
60
- console.error('getEnumOptions: ', e);
61
+ errorHandler({ code: 'GetEnumOptions', error: e });
61
62
  }
62
63
  return result;
63
64
  }
@@ -77,6 +78,7 @@ function flattenFields(fields, result = []) {
77
78
  }
78
79
  catch (e) {
79
80
  result = fields;
81
+ errorHandler({ code: 'GetEnumOptions', error: e });
80
82
  }
81
83
  return result;
82
84
  }
@@ -1,9 +1,13 @@
1
1
  /// <reference types="react" />
2
+ import { AttachContainer } from 'tea-component/lib/_util/get-overlay-root';
2
3
  interface IRecycle {
4
+ format?: string;
3
5
  version?: 'wd';
4
6
  readOnly?: boolean;
5
7
  children?: any;
6
8
  recycleBack?: (v: any) => void;
9
+ onRelationTagClick?: (v: any) => void;
10
+ portalContainer?: AttachContainer;
7
11
  }
8
12
  export declare const useRecycle: () => IRecycle;
9
13
  /**
@@ -1,5 +1,6 @@
1
1
  import cfg from '../../iconConfig.json';
2
2
  import { getUrlPath } from './tool';
3
+ import { errorHandler } from './error';
3
4
  // 加载样式,失败抛出错误
4
5
  function loadLink(url, className) {
5
6
  return new Promise((resolve, reject) => {
@@ -26,6 +27,6 @@ function loadLink(url, className) {
26
27
  loadLink(getUrlPath(cfg.path, cfg.cssFile), 'wd-load-remote-icon');
27
28
  }
28
29
  catch (e) {
29
- console.error('加载图标库失败', e);
30
+ errorHandler({ code: 'LoadIconResourceError', error: e });
30
31
  }
31
32
  })();
@@ -1,4 +1,5 @@
1
1
  import * as _moment from 'moment';
2
+ import { errorHandler } from './error';
2
3
  const moment = typeof _moment === 'function' ? _moment : _moment.default;
3
4
  // 将时间值转 moment 类型
4
5
  export const convertMoment = (val) => {
@@ -11,7 +12,7 @@ export const convertMoment = (val) => {
11
12
  return null;
12
13
  }
13
14
  catch (e) {
14
- console.warn('[function convertMoment]: ', e);
15
+ errorHandler({ code: 'ConvertMomentError', error: e });
15
16
  }
16
17
  return m;
17
18
  };
@@ -1,5 +1,6 @@
1
1
  import { REL_DICT, SystemDefaultFields } from './constant';
2
2
  import { message as TeaMessage } from 'tea-component';
3
+ import { errorHandler } from './error';
3
4
  /**
4
5
  * 当前环境是否为 H5 端
5
6
  */
@@ -15,6 +16,7 @@ export const isH5Platform = () => {
15
16
  is = /Android|webOS|BlackBerry|iPhone|iPad|iPod|iOS/i.test(ua);
16
17
  }
17
18
  catch (e) {
19
+ errorHandler({ code: 'H5PlatformCheckError', error: e });
18
20
  null;
19
21
  }
20
22
  return is;
@@ -57,7 +59,7 @@ export function inH5IsMobile() {
57
59
  return is_mobile_ua;
58
60
  }
59
61
  catch (e) {
60
- console.error('isMobile checker err', e);
62
+ errorHandler({ code: 'MobileCheckError', error: e });
61
63
  }
62
64
  }
63
65
  /**
@@ -166,6 +168,7 @@ export const resolveStaticResourceUrl = (path) => {
166
168
  return resourceUrl;
167
169
  }
168
170
  catch (error) {
171
+ errorHandler({ code: 'ResolveStaticResourceUrl', error });
169
172
  return '';
170
173
  }
171
174
  };
@@ -263,7 +266,7 @@ export const getWhereList = (where) => {
263
266
  return [];
264
267
  }
265
268
  catch (error) {
266
- console.error('getWhereList error', error);
269
+ errorHandler({ code: 'GetWhereListError', error });
267
270
  return [];
268
271
  }
269
272
  };
@@ -1,5 +1,6 @@
1
1
  import { isInIde } from './platform';
2
2
  import { deepClone } from './tool';
3
+ import { errorHandler } from './error';
3
4
  // 默认使用swr的methodName
4
5
  const SWR_METHOD_DEFAULT = [
5
6
  'wedaGetItem',
@@ -79,7 +80,7 @@ export async function callDataSource(param, throwError = false) {
79
80
  return res;
80
81
  }
81
82
  catch (error) {
82
- console.error('callDataSource: ', error);
83
+ errorHandler({ code: 'callDataSource', error });
83
84
  if (throwError)
84
85
  throw error;
85
86
  return {};
@@ -100,7 +101,7 @@ export async function callConnector(param, throwError = false) {
100
101
  return res;
101
102
  }
102
103
  catch (error) {
103
- console.error('callConnector: ', error);
104
+ errorHandler({ code: 'CallConnector', error });
104
105
  if (throwError)
105
106
  throw error;
106
107
  return {};
@@ -129,7 +130,7 @@ export async function getAppCustomNav() {
129
130
  return res;
130
131
  }
131
132
  catch (error) {
132
- console.error('错误', error);
133
+ errorHandler({ code: 'GetAppCustomNav', error });
133
134
  return {};
134
135
  }
135
136
  }
@@ -146,6 +147,7 @@ export const getIsExitApi = async (params) => {
146
147
  const message = (_b = (_a = error === null || error === void 0 ? void 0 : error.original) === null || _a === void 0 ? void 0 : _a.result) === null || _b === void 0 ? void 0 : _b.message;
147
148
  const status = (message === null || message === void 0 ? void 0 : message.indexOf('Action不存在')) != -1 ||
148
149
  (message === null || message === void 0 ? void 0 : message.indexOf('接口不存在')) != -1;
150
+ errorHandler({ code: 'GetIsExitApi', error });
149
151
  return !status;
150
152
  }
151
153
  };
@@ -510,21 +510,25 @@ NED }}}
510
510
  }
511
511
 
512
512
  /* ---- theme start */
513
- :root .wd-btn__margin-right {
513
+ :root .wd-btn__margin-right,
514
+ :host .wd-btn__margin-right {
514
515
  margin-right: 5px;
515
516
  }
516
- :root .wedatea2td-dropdown-box .wedatea2td-list--option > li.is-selected {
517
+ :root .wedatea2td-dropdown-box .wedatea2td-list--option > li.is-selected,
518
+ :host .wedatea2td-dropdown-box .wedatea2td-list--option > li.is-selected {
517
519
  color: var(--wd-color-brand, #0052d9);
518
520
  background-color: var(--wd-color-brand-light, #ecf2fe);
519
521
  }
520
522
 
521
- :root .weda-picker .weui-btn {
523
+ :root .weda-picker .weui-btn,
524
+ :host .weda-picker .weui-btn {
522
525
  background-color: var(--wd-color-brand, #006eff);
523
526
  border-color: var(--wd-color-brand);
524
527
  color: var(--wd-color-text-inverse, #fff);
525
528
  }
526
529
 
527
- :root .weda-ui.weda-picker .weui-btn_primary:not(.weui-btn_disabled):active {
530
+ :root .weda-ui.weda-picker .weui-btn_primary:not(.weui-btn_disabled):active,
531
+ :host .weda-ui.weda-picker .weui-btn_primary:not(.weui-btn_disabled):active {
528
532
  background-color: var(--wd-color-brand-active);
529
533
  }
530
534
  /* ---- theme end */