@nokecy/qc-ui 1.1.70 → 1.1.72

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.
@@ -8,7 +8,10 @@ var _react = require("react");
8
8
  // setSelectionRange 仅 textarea 与 text/search/url/tel/password 类型 input 支持;
9
9
  // checkbox/number/date 等调用会抛 InvalidStateError,故用白名单守卫。@author nokecy
10
10
  var supportsSelectionRange = function supportsSelectionRange(el) {
11
- return el.tagName === 'TEXTAREA' || /^(text|search|url|tel|password)$/i.test(el.type || 'text');
11
+ return (
12
+ // 日期组件自行管理光标和分段选区,表格只聚焦,不覆盖其选区。@author nokecy
13
+ !el.closest('.ant-picker') && (el.tagName === 'TEXTAREA' || /^(text|search|url|tel|password)$/i.test(el.type || 'text'))
14
+ );
12
15
  };
13
16
 
14
17
  /**
@@ -9,15 +9,22 @@ var _react2 = require("@formily/react");
9
9
  var _utils = require("./utils");
10
10
  var _agGridPlus = require("../ag-grid-plus");
11
11
  var _theme = require("./theme");
12
+ var _indexColumn = require("./indexColumn");
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14
  //@ts-ignore
14
15
  var ArrayTable = function ArrayTable(props) {
16
+ var _buildArrayTableColum;
15
17
  var height = props.height;
16
18
  var arrayTablePreviewTheme = (0, _theme.useArrayTableTheme)();
17
19
  var field = (0, _react2.useField)();
18
20
  var dataSource = Array.isArray(field.value) ? field.value.slice() : [];
19
21
  var sources = (0, _utils.useArrayTableSources)();
20
- var columns = (0, _utils.buildArrayTableColumns)(dataSource, field, sources);
22
+ var columns = (_buildArrayTableColum = (0, _utils.buildArrayTableColumns)(dataSource, field, sources)) !== null && _buildArrayTableColum !== void 0 ? _buildArrayTableColum : [];
23
+ // 阅读态与编辑态共用默认序号规则,已有序号列时不重复添加。@author nokecy
24
+ var showDefaultIndex = columns.length > 0 && !(0, _indexColumn.hasOwnIndexColumn)(sources);
25
+ if (showDefaultIndex) {
26
+ columns.unshift((0, _indexColumn.makeIndexColumn)());
27
+ }
21
28
  return /*#__PURE__*/_react.default.createElement("div", {
22
29
  style: {
23
30
  height: height ? height : 400
@@ -36,6 +43,15 @@ var ArrayTable = function ArrayTable(props) {
36
43
  theme: arrayTablePreviewTheme,
37
44
  rowHeight: _theme.ARRAY_TABLE_ROW_HEIGHT,
38
45
  pagination: false,
46
+ onRowDataUpdated: function onRowDataUpdated(event) {
47
+ // 阅读态明细替换或重排后刷新序号,不向表单写入编号。@author nokecy
48
+ if (showDefaultIndex) {
49
+ event.api.refreshCells({
50
+ columns: [_indexColumn.ARRAY_TABLE_INDEX_FIELD],
51
+ force: true
52
+ });
53
+ }
54
+ },
39
55
  columnDefs: columns,
40
56
  rowData: dataSource
41
57
  }));
@@ -2,7 +2,10 @@ import { useCallback } from 'react';
2
2
  // setSelectionRange 仅 textarea 与 text/search/url/tel/password 类型 input 支持;
3
3
  // checkbox/number/date 等调用会抛 InvalidStateError,故用白名单守卫。@author nokecy
4
4
  var supportsSelectionRange = function supportsSelectionRange(el) {
5
- return el.tagName === 'TEXTAREA' || /^(text|search|url|tel|password)$/i.test(el.type || 'text');
5
+ return (
6
+ // 日期组件自行管理光标和分段选区,表格只聚焦,不覆盖其选区。@author nokecy
7
+ !el.closest('.ant-picker') && (el.tagName === 'TEXTAREA' || /^(text|search|url|tel|password)$/i.test(el.type || 'text'))
8
+ );
6
9
  };
7
10
 
8
11
  /**
@@ -3,14 +3,21 @@ import { useField } from "@formily/react";
3
3
  import { buildArrayTableColumns, useArrayTableSources } from "./utils";
4
4
  import { AgGridPlus } from "../ag-grid-plus";
5
5
  import { useArrayTableTheme, ARRAY_TABLE_ROW_HEIGHT } from "./theme";
6
+ import { ARRAY_TABLE_INDEX_FIELD, hasOwnIndexColumn, makeIndexColumn } from "./indexColumn";
6
7
  //@ts-ignore
7
8
  var ArrayTable = function ArrayTable(props) {
9
+ var _buildArrayTableColum;
8
10
  var height = props.height;
9
11
  var arrayTablePreviewTheme = useArrayTableTheme();
10
12
  var field = useField();
11
13
  var dataSource = Array.isArray(field.value) ? field.value.slice() : [];
12
14
  var sources = useArrayTableSources();
13
- var columns = buildArrayTableColumns(dataSource, field, sources);
15
+ var columns = (_buildArrayTableColum = buildArrayTableColumns(dataSource, field, sources)) !== null && _buildArrayTableColum !== void 0 ? _buildArrayTableColum : [];
16
+ // 阅读态与编辑态共用默认序号规则,已有序号列时不重复添加。@author nokecy
17
+ var showDefaultIndex = columns.length > 0 && !hasOwnIndexColumn(sources);
18
+ if (showDefaultIndex) {
19
+ columns.unshift(makeIndexColumn());
20
+ }
14
21
  return /*#__PURE__*/React.createElement("div", {
15
22
  style: {
16
23
  height: height ? height : 400
@@ -29,6 +36,15 @@ var ArrayTable = function ArrayTable(props) {
29
36
  theme: arrayTablePreviewTheme,
30
37
  rowHeight: ARRAY_TABLE_ROW_HEIGHT,
31
38
  pagination: false,
39
+ onRowDataUpdated: function onRowDataUpdated(event) {
40
+ // 阅读态明细替换或重排后刷新序号,不向表单写入编号。@author nokecy
41
+ if (showDefaultIndex) {
42
+ event.api.refreshCells({
43
+ columns: [ARRAY_TABLE_INDEX_FIELD],
44
+ force: true
45
+ });
46
+ }
47
+ },
32
48
  columnDefs: columns,
33
49
  rowData: dataSource
34
50
  }));