fan-standard-comp 4.1.47 → 4.1.49

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.
@@ -16,6 +16,10 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
16
16
  import React, { useMemo, forwardRef } from 'react';
17
17
  import Field from "../FieldComponent/index";
18
18
  import dayjs from "dayjs";
19
+ import isoWeek from 'dayjs/plugin/isoWeek'; // 引入ISO周插件
20
+
21
+ dayjs.extend(isoWeek); // 必须执行此步才能使用 isoWeek 方法
22
+
19
23
  import classNames from 'classnames';
20
24
  import useStyle from "./style";
21
25
  var DateTimeRangePicker = /*#__PURE__*/forwardRef(function (props, ref) {
@@ -41,6 +45,9 @@ var DateTimeRangePicker = /*#__PURE__*/forwardRef(function (props, ref) {
41
45
  }, {
42
46
  label: '日',
43
47
  value: 'day'
48
+ }, {
49
+ label: '周',
50
+ value: 'week'
44
51
  }, {
45
52
  label: '月',
46
53
  value: 'month'
@@ -77,6 +84,14 @@ var DateTimeRangePicker = /*#__PURE__*/forwardRef(function (props, ref) {
77
84
  config.format = 'YYYY-MM-DD';
78
85
  config = _objectSpread(_objectSpread({}, config), (timeTypeConfig === null || timeTypeConfig === void 0 ? void 0 : timeTypeConfig[activeType]) || {});
79
86
  break;
87
+ case "week":
88
+ config.picker = 'week';
89
+ var customWeekStartEndFormat = function customWeekStartEndFormat(date) {
90
+ return "".concat(date.year(), "\u5E74\u7B2C").concat(dayjs(date).isoWeek(), "\u5468");
91
+ };
92
+ config.format = customWeekStartEndFormat;
93
+ config = _objectSpread(_objectSpread({}, config), (timeTypeConfig === null || timeTypeConfig === void 0 ? void 0 : timeTypeConfig[activeType]) || {});
94
+ break;
80
95
  case "month":
81
96
  config.picker = 'month';
82
97
  config.format = 'MM月';
@@ -82,7 +82,8 @@ var FieldComponent = /*#__PURE__*/React.forwardRef(function (props, ref) {
82
82
  render = _providerConfig$props.render,
83
83
  _providerConfig$props7 = _providerConfig$props.defaultStyle,
84
84
  defaultStyle = _providerConfig$props7 === void 0 ? {} : _providerConfig$props7,
85
- extendConfig = _providerConfig$props.extendConfig;
85
+ extendConfig = _providerConfig$props.extendConfig,
86
+ id = _providerConfig$props.id;
86
87
  var _providerConfig$props8 = _objectSpread(_objectSpread({}, providerConfig), props),
87
88
  selectOptions = _providerConfig$props8.selectOptions;
88
89
  var providerProtoConfig = (InitFanContext === null || InitFanContext === void 0 ? void 0 : InitFanContext[type || '']) || {}; // 使用上下文(全局配置)设置控件扩展的配置项
@@ -104,7 +105,8 @@ var FieldComponent = /*#__PURE__*/React.forwardRef(function (props, ref) {
104
105
  value: value,
105
106
  render: render,
106
107
  size: size,
107
- ref: ref
108
+ ref: ref,
109
+ id: id
108
110
  }, providerProtoConfig), protoConfig);
109
111
  defaultProps.disabled = setFieldDisabled(fieldStatus === 'disabled', protoConfig);
110
112
  if (defaultProps.hasOwnProperty('showSearch') && type !== 'select' && type !== 'tree-select' && type !== 'cascader') {
@@ -61,7 +61,8 @@ var RenderItemGroup = function RenderItemGroup(props) {
61
61
  gutter = props.gutter,
62
62
  columnCount = props.columnCount,
63
63
  parentNode = props.parentNode,
64
- onFieldsChange = props.onFieldsChange;
64
+ onFieldsChange = props.onFieldsChange,
65
+ formName = props.formName;
65
66
  var componentName = 'spec-item-group';
66
67
  var _useStyle = useStyle(componentName),
67
68
  _useStyle2 = _slicedToArray(_useStyle, 2),
@@ -183,6 +184,10 @@ var RenderItemGroup = function RenderItemGroup(props) {
183
184
  var componentStyle = field.componentStyle,
184
185
  extra = field.extra,
185
186
  preExtra = field.preExtra; // 当前可传参的配置值
187
+ if (field.label) {
188
+ // 修复label无法匹配控件id
189
+ field.id = formName ? formName + '_' + (field.filedName || field.fieldName) : field.filedName || field.fieldName;
190
+ }
186
191
  // 表单控件样式默认最小宽,如有单独配置width时,则不配置
187
192
  // @ts-ignore
188
193
  var FieldDefaultWidth = layout === 'inline' ? _objectSpread({}, (_general$inlineFormIt = general.inlineFormItemStyle) === null || _general$inlineFormIt === void 0 ? void 0 : _general$inlineFormIt[size]) : _objectSpread({}, general.inlineFormItemStyle.wide); // componentStyle?.width ? {} : { width: layout === 'inline' ? general.formItemStyle?.[size].width : general.formItemStyle.wide.width }
@@ -292,6 +292,8 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
292
292
 
293
293
  // 更新表单控件值,用于外部获取当前表单实例(force是否强制清空表单)
294
294
  var updateFormFields = function updateFormFields(newVal, force, noForceUpdate) {
295
+ // 重置内部触发搜索的标志位,确保后续操作正常
296
+ triggerByFilterSubmit.current = false;
295
297
  // 标准化新值,undefined/null 视为空对象
296
298
  var normalizedNewVal = newVal || {};
297
299
  var isEmpty = Object.keys(normalizedNewVal).length === 0;
@@ -528,6 +530,7 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
528
530
  if (Array.isArray(reFormItemGroup)) {
529
531
  // 数组则默认加上"确认与取消"按钮
530
532
  return /*#__PURE__*/React.createElement(RenderItemGroup, _extends({
533
+ formName: formName,
531
534
  itemGroup: reFormItemGroup.concat(filterActionButtons),
532
535
  size: filterFormLayout === 'horizontal' ? 'xxlg' : 'md' // size决定栅格排列数量(4列排版)
533
536
  ,
@@ -567,8 +570,11 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
567
570
  permissionCodes: permissionCodes
568
571
  }, buttonGroupConfig))) : null;
569
572
  };
573
+ var formName = useMemo(function () {
574
+ return 'standard-filter-form-' + guid();
575
+ }, []);
570
576
  return wrapSSR( /*#__PURE__*/React.createElement(Form, {
571
- name: 'standard-filter-form-' + guid()
577
+ name: formName
572
578
  // ref={filterFormRef}
573
579
  ,
574
580
  form: filterForm,
@@ -1,4 +1,5 @@
1
1
  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); }
2
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
3
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
3
4
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
5
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
@@ -82,7 +83,9 @@ var StandardList = /*#__PURE__*/forwardRef(function (props, ref) {
82
83
  _providerConfig$props4 = _providerConfig$props.loading,
83
84
  loading = _providerConfig$props4 === void 0 ? false : _providerConfig$props4,
84
85
  sortable = _providerConfig$props.sortable,
85
- onChange = _providerConfig$props.onChange;
86
+ onChange = _providerConfig$props.onChange,
87
+ _providerConfig$props5 = _providerConfig$props.dndContextConfig,
88
+ dndContextConfig = _providerConfig$props5 === void 0 ? {} : _providerConfig$props5;
86
89
  var contentRef = useRef();
87
90
  useImperativeHandle(ref, function () {
88
91
  return contentRef === null || contentRef === void 0 ? void 0 : contentRef.current;
@@ -127,7 +130,19 @@ var StandardList = /*#__PURE__*/forwardRef(function (props, ref) {
127
130
  // useEffect(() => {
128
131
  // props?.onChange(dataList);// 这里写你自己对父组件传值的方式
129
132
  // }, []);
130
-
133
+ // 关键配置:设置拖拽激活的最小移动距离
134
+ // const sensors = useSensors(
135
+ // useSensor(MouseSensor, {
136
+ // activationConstraint: {
137
+ // distance: 5, // 移动超过 5px 才开始拖拽
138
+ // },
139
+ // }),
140
+ // useSensor(TouchSensor, {
141
+ // activationConstraint: {
142
+ // distance: 5, // 触摸设备同理
143
+ // },
144
+ // })
145
+ // );
131
146
  return wrapSSR( /*#__PURE__*/React.createElement("div", {
132
147
  className: classNames(componentName, className, hashId, fullHeight ? 'spec-standard-list-fullheight' : ''),
133
148
  style: style,
@@ -136,10 +151,10 @@ var StandardList = /*#__PURE__*/forwardRef(function (props, ref) {
136
151
  spinning: loading,
137
152
  wrapperClassName: 'spec-standard-list-loading'
138
153
  }, sortable // 开启排序
139
- ? /*#__PURE__*/React.createElement(DndContext, {
154
+ ? /*#__PURE__*/React.createElement(DndContext, _extends({
140
155
  onDragEnd: dragEndEvent,
141
156
  modifiers: [restrictToParentElement] // 拖动范围只能是父节点下区域
142
- }, /*#__PURE__*/React.createElement(SortableContext, {
157
+ }, dndContextConfig), /*#__PURE__*/React.createElement(SortableContext, {
143
158
  items: options.map(function (c) {
144
159
  return c[optionName === null || optionName === void 0 ? void 0 : optionName.value];
145
160
  }),
@@ -8,6 +8,7 @@ exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _index = _interopRequireDefault(require("../FieldComponent/index"));
10
10
  var _dayjs = _interopRequireDefault(require("dayjs"));
11
+ var _isoWeek = _interopRequireDefault(require("dayjs/plugin/isoWeek"));
11
12
  var _classnames = _interopRequireDefault(require("classnames"));
12
13
  var _style = _interopRequireDefault(require("./style"));
13
14
  var _excluded = ["options", "value", "onChange", "optionType", "timeTypeConfig", "radioConfig", "outerStyle", "outerClassname"];
@@ -27,6 +28,10 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
27
28
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
28
29
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
29
30
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
31
+ // 引入ISO周插件
32
+
33
+ _dayjs.default.extend(_isoWeek.default); // 必须执行此步才能使用 isoWeek 方法
34
+
30
35
  var DateTimeRangePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
31
36
  var options = props.options,
32
37
  value = props.value,
@@ -50,6 +55,9 @@ var DateTimeRangePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, r
50
55
  }, {
51
56
  label: '日',
52
57
  value: 'day'
58
+ }, {
59
+ label: '周',
60
+ value: 'week'
53
61
  }, {
54
62
  label: '月',
55
63
  value: 'month'
@@ -86,6 +94,14 @@ var DateTimeRangePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, r
86
94
  config.format = 'YYYY-MM-DD';
87
95
  config = _objectSpread(_objectSpread({}, config), (timeTypeConfig === null || timeTypeConfig === void 0 ? void 0 : timeTypeConfig[activeType]) || {});
88
96
  break;
97
+ case "week":
98
+ config.picker = 'week';
99
+ var customWeekStartEndFormat = function customWeekStartEndFormat(date) {
100
+ return "".concat(date.year(), "\u5E74\u7B2C").concat((0, _dayjs.default)(date).isoWeek(), "\u5468");
101
+ };
102
+ config.format = customWeekStartEndFormat;
103
+ config = _objectSpread(_objectSpread({}, config), (timeTypeConfig === null || timeTypeConfig === void 0 ? void 0 : timeTypeConfig[activeType]) || {});
104
+ break;
89
105
  case "month":
90
106
  config.picker = 'month';
91
107
  config.format = 'MM月';
@@ -89,7 +89,8 @@ var FieldComponent = /*#__PURE__*/_react.default.forwardRef(function (props, ref
89
89
  render = _providerConfig$props.render,
90
90
  _providerConfig$props7 = _providerConfig$props.defaultStyle,
91
91
  defaultStyle = _providerConfig$props7 === void 0 ? {} : _providerConfig$props7,
92
- extendConfig = _providerConfig$props.extendConfig;
92
+ extendConfig = _providerConfig$props.extendConfig,
93
+ id = _providerConfig$props.id;
93
94
  var _providerConfig$props8 = _objectSpread(_objectSpread({}, providerConfig), props),
94
95
  selectOptions = _providerConfig$props8.selectOptions;
95
96
  var providerProtoConfig = (InitFanContext === null || InitFanContext === void 0 ? void 0 : InitFanContext[type || '']) || {}; // 使用上下文(全局配置)设置控件扩展的配置项
@@ -111,7 +112,8 @@ var FieldComponent = /*#__PURE__*/_react.default.forwardRef(function (props, ref
111
112
  value: value,
112
113
  render: render,
113
114
  size: size,
114
- ref: ref
115
+ ref: ref,
116
+ id: id
115
117
  }, providerProtoConfig), protoConfig);
116
118
  defaultProps.disabled = setFieldDisabled(fieldStatus === 'disabled', protoConfig);
117
119
  if (defaultProps.hasOwnProperty('showSearch') && type !== 'select' && type !== 'tree-select' && type !== 'cascader') {
@@ -67,7 +67,8 @@ var RenderItemGroup = function RenderItemGroup(props) {
67
67
  gutter = props.gutter,
68
68
  columnCount = props.columnCount,
69
69
  parentNode = props.parentNode,
70
- onFieldsChange = props.onFieldsChange;
70
+ onFieldsChange = props.onFieldsChange,
71
+ formName = props.formName;
71
72
  var componentName = 'spec-item-group';
72
73
  var _useStyle = (0, _style.default)(componentName),
73
74
  _useStyle2 = _slicedToArray(_useStyle, 2),
@@ -189,6 +190,10 @@ var RenderItemGroup = function RenderItemGroup(props) {
189
190
  var componentStyle = field.componentStyle,
190
191
  extra = field.extra,
191
192
  preExtra = field.preExtra; // 当前可传参的配置值
193
+ if (field.label) {
194
+ // 修复label无法匹配控件id
195
+ field.id = formName ? formName + '_' + (field.filedName || field.fieldName) : field.filedName || field.fieldName;
196
+ }
192
197
  // 表单控件样式默认最小宽,如有单独配置width时,则不配置
193
198
  // @ts-ignore
194
199
  var FieldDefaultWidth = layout === 'inline' ? _objectSpread({}, (_general$inlineFormIt = _data.general.inlineFormItemStyle) === null || _general$inlineFormIt === void 0 ? void 0 : _general$inlineFormIt[size]) : _objectSpread({}, _data.general.inlineFormItemStyle.wide); // componentStyle?.width ? {} : { width: layout === 'inline' ? general.formItemStyle?.[size].width : general.formItemStyle.wide.width }
@@ -300,6 +300,8 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
300
300
 
301
301
  // 更新表单控件值,用于外部获取当前表单实例(force是否强制清空表单)
302
302
  var updateFormFields = function updateFormFields(newVal, force, noForceUpdate) {
303
+ // 重置内部触发搜索的标志位,确保后续操作正常
304
+ triggerByFilterSubmit.current = false;
303
305
  // 标准化新值,undefined/null 视为空对象
304
306
  var normalizedNewVal = newVal || {};
305
307
  var isEmpty = Object.keys(normalizedNewVal).length === 0;
@@ -536,6 +538,7 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
536
538
  if (Array.isArray(reFormItemGroup)) {
537
539
  // 数组则默认加上"确认与取消"按钮
538
540
  return /*#__PURE__*/_react.default.createElement(_RenderItemGroup.default, _extends({
541
+ formName: formName,
539
542
  itemGroup: reFormItemGroup.concat(filterActionButtons),
540
543
  size: filterFormLayout === 'horizontal' ? 'xxlg' : 'md' // size决定栅格排列数量(4列排版)
541
544
  ,
@@ -575,8 +578,11 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
575
578
  permissionCodes: permissionCodes
576
579
  }, buttonGroupConfig))) : null;
577
580
  };
581
+ var formName = (0, _react.useMemo)(function () {
582
+ return 'standard-filter-form-' + guid();
583
+ }, []);
578
584
  return wrapSSR( /*#__PURE__*/_react.default.createElement(_antd.Form, {
579
- name: 'standard-filter-form-' + guid()
585
+ name: formName
580
586
  // ref={filterFormRef}
581
587
  ,
582
588
  form: filterForm,
@@ -17,6 +17,7 @@ var _SortableItem = _interopRequireDefault(require("./SortableItem"));
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
19
19
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
20
21
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
21
22
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
22
23
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
@@ -90,7 +91,9 @@ var StandardList = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
90
91
  _providerConfig$props4 = _providerConfig$props.loading,
91
92
  loading = _providerConfig$props4 === void 0 ? false : _providerConfig$props4,
92
93
  sortable = _providerConfig$props.sortable,
93
- onChange = _providerConfig$props.onChange;
94
+ onChange = _providerConfig$props.onChange,
95
+ _providerConfig$props5 = _providerConfig$props.dndContextConfig,
96
+ dndContextConfig = _providerConfig$props5 === void 0 ? {} : _providerConfig$props5;
94
97
  var contentRef = (0, _react.useRef)();
95
98
  (0, _react.useImperativeHandle)(ref, function () {
96
99
  return contentRef === null || contentRef === void 0 ? void 0 : contentRef.current;
@@ -135,7 +138,19 @@ var StandardList = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
135
138
  // useEffect(() => {
136
139
  // props?.onChange(dataList);// 这里写你自己对父组件传值的方式
137
140
  // }, []);
138
-
141
+ // 关键配置:设置拖拽激活的最小移动距离
142
+ // const sensors = useSensors(
143
+ // useSensor(MouseSensor, {
144
+ // activationConstraint: {
145
+ // distance: 5, // 移动超过 5px 才开始拖拽
146
+ // },
147
+ // }),
148
+ // useSensor(TouchSensor, {
149
+ // activationConstraint: {
150
+ // distance: 5, // 触摸设备同理
151
+ // },
152
+ // })
153
+ // );
139
154
  return wrapSSR( /*#__PURE__*/_react.default.createElement("div", {
140
155
  className: (0, _classnames.default)(componentName, className, hashId, fullHeight ? 'spec-standard-list-fullheight' : ''),
141
156
  style: style,
@@ -144,10 +159,10 @@ var StandardList = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
144
159
  spinning: loading,
145
160
  wrapperClassName: 'spec-standard-list-loading'
146
161
  }, sortable // 开启排序
147
- ? /*#__PURE__*/_react.default.createElement(_core.DndContext, {
162
+ ? /*#__PURE__*/_react.default.createElement(_core.DndContext, _extends({
148
163
  onDragEnd: dragEndEvent,
149
164
  modifiers: [_modifiers.restrictToParentElement] // 拖动范围只能是父节点下区域
150
- }, /*#__PURE__*/_react.default.createElement(_sortable.SortableContext, {
165
+ }, dndContextConfig), /*#__PURE__*/_react.default.createElement(_sortable.SortableContext, {
151
166
  items: options.map(function (c) {
152
167
  return c[optionName === null || optionName === void 0 ? void 0 : optionName.value];
153
168
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fan-standard-comp",
3
- "version": "4.1.47",
3
+ "version": "4.1.49",
4
4
  "description": "FZ standard-comp,basic of antd5.0 and custom component.",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",