@dtjoy/dt-design 1.0.2 → 1.0.4

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 (51) hide show
  1. package/esm/blockHeader/index.js +4 -4
  2. package/esm/blockHeader/style/index.less +1 -1
  3. package/esm/collapsible/index.js +1 -1
  4. package/esm/flex/index.js +1 -1
  5. package/esm/flex/utils.js +1 -1
  6. package/esm/formList/index.d.ts +77 -0
  7. package/esm/formList/index.js +141 -0
  8. package/esm/formList/style/index.d.ts +2 -0
  9. package/esm/formList/style/index.js +2 -0
  10. package/esm/formList/style/index.less +45 -0
  11. package/esm/index.d.ts +5 -3
  12. package/esm/index.js +6 -47
  13. package/esm/overflowList/index.d.ts +39 -0
  14. package/esm/overflowList/index.js +165 -0
  15. package/esm/overflowList/style/index.d.ts +2 -0
  16. package/esm/overflowList/style/index.js +2 -0
  17. package/esm/overflowList/style/index.less +9 -0
  18. package/esm/resizeObserver/index.d.ts +45 -0
  19. package/esm/resizeObserver/index.js +175 -0
  20. package/esm/splitter/SplitBar.js +1 -1
  21. package/esm/splitter/Splitter.js +11 -40
  22. package/esm/splitter/hooks/sizeUtil.js +20 -4
  23. package/esm/splitter/hooks/useSizes.js +2 -2
  24. package/esm/splitter/interface.d.ts +1 -0
  25. package/esm/statusTag/index.js +9 -9
  26. package/lib/blockHeader/index.js +5 -5
  27. package/lib/blockHeader/style/index.less +1 -1
  28. package/lib/collapsible/index.js +3 -3
  29. package/lib/flex/index.js +2 -2
  30. package/lib/flex/utils.js +3 -2
  31. package/lib/formList/index.d.ts +77 -0
  32. package/lib/formList/index.js +128 -0
  33. package/lib/formList/style/index.d.ts +2 -0
  34. package/lib/formList/style/index.js +4 -0
  35. package/lib/formList/style/index.less +45 -0
  36. package/lib/index.d.ts +5 -3
  37. package/lib/index.js +31 -5
  38. package/lib/overflowList/index.d.ts +39 -0
  39. package/lib/overflowList/index.js +143 -0
  40. package/lib/overflowList/style/index.d.ts +2 -0
  41. package/lib/overflowList/style/index.js +4 -0
  42. package/lib/overflowList/style/index.less +9 -0
  43. package/lib/resizeObserver/index.d.ts +45 -0
  44. package/lib/resizeObserver/index.js +136 -0
  45. package/lib/splitter/SplitBar.js +3 -3
  46. package/lib/splitter/Splitter.js +9 -39
  47. package/lib/splitter/hooks/sizeUtil.js +12 -0
  48. package/lib/splitter/hooks/useSizes.js +2 -2
  49. package/lib/splitter/interface.d.ts +1 -0
  50. package/lib/statusTag/index.js +9 -9
  51. package/package.json +133 -142
@@ -12,7 +12,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
12
12
  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; } }
13
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
14
  import React, { useState } from 'react';
15
- import { QuestionOutlined, UpOutlined } from '@dtinsight/react-icons';
15
+ import { QuestionCircleOutlined, UpOutlined } from '@ant-design/icons';
16
16
  import { Tooltip } from 'antd';
17
17
  import { globalConfig } from 'antd/es/config-provider';
18
18
  import classNames from 'classnames';
@@ -92,8 +92,8 @@ var BlockHeader = function BlockHeader(props) {
92
92
  }, title), tooltipProps !== null && tooltipProps !== void 0 && tooltipProps.title ? /*#__PURE__*/React.createElement("div", {
93
93
  className: "title__tooltip"
94
94
  }, /*#__PURE__*/React.createElement(Tooltip, _extends({}, tooltipProps, {
95
- className: classNames(tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.className, 'anticon')
96
- }), /*#__PURE__*/React.createElement(QuestionOutlined, null))) : null, description ? /*#__PURE__*/React.createElement("div", {
95
+ className: classNames(tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.className)
96
+ }), /*#__PURE__*/React.createElement(QuestionCircleOutlined, null))) : null, description ? /*#__PURE__*/React.createElement("div", {
97
97
  className: "title__description"
98
98
  }, description) : null), addonAfter && /*#__PURE__*/React.createElement("div", {
99
99
  className: "title__addon-after"
@@ -102,7 +102,7 @@ var BlockHeader = function BlockHeader(props) {
102
102
  }, /*#__PURE__*/React.createElement("div", {
103
103
  className: "collapse__text"
104
104
  }, currentExpand ? '收起' : '展开'), /*#__PURE__*/React.createElement(UpOutlined, {
105
- className: classNames('collapse__icon', 'anticon', {
105
+ className: classNames('collapse__icon', {
106
106
  'collapse__icon--up': currentExpand,
107
107
  'collapse__icon--down': !currentExpand
108
108
  })
@@ -85,7 +85,7 @@
85
85
  &__tooltip {
86
86
  display: flex;
87
87
  margin-right: 4px;
88
- font-size: 16px;
88
+ font-size: 14px;
89
89
  color: #b1b4c5;
90
90
  cursor: pointer;
91
91
  }
@@ -18,7 +18,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
18
18
  import React from 'react';
19
19
  import { globalConfig } from 'antd/es/config-provider';
20
20
  import classNames from 'classnames';
21
- import { isEqual, pick } from 'lodash';
21
+ import { isEqual, pick } from 'lodash-es';
22
22
  import "./style";
23
23
  var Collapsible = /*#__PURE__*/function (_React$Component) {
24
24
  _inherits(Collapsible, _React$Component);
package/esm/flex/index.js CHANGED
@@ -16,7 +16,7 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
16
16
  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; }
17
17
  import React from 'react';
18
18
  import { ConfigContext, globalConfig } from 'antd/es/config-provider';
19
- import { clsx } from 'clsx';
19
+ import clsx from 'classnames';
20
20
  import { omit } from 'lodash-es';
21
21
  import "./style";
22
22
  import { isPresetSize } from "../_util/gapSize";
package/esm/flex/utils.js CHANGED
@@ -4,7 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  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; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  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); }
7
- import { clsx } from 'clsx';
7
+ import clsx from 'classnames';
8
8
  export var flexWrapValues = ['wrap', 'nowrap', 'wrap-reverse'];
9
9
  export var justifyContentValues = ['flex-start', 'flex-end', 'start', 'end', 'center', 'space-between', 'space-around', 'space-evenly', 'stretch', 'normal', 'left', 'right'];
10
10
  export var alignItemsValues = ['center', 'start', 'end', 'flex-start', 'flex-end', 'self-start', 'self-end', 'baseline', 'normal', 'stretch'];
@@ -0,0 +1,77 @@
1
+ import React, { ReactNode } from 'react';
2
+ import { type FormListFieldData, type TableProps } from 'antd';
3
+ import type { FormItemProps, FormListProps, RuleObject, RuleRender } from 'antd/lib/form';
4
+ import type { ColumnType as TableColumnType } from 'antd/lib/table';
5
+ import './style';
6
+ declare type NotNullRowSelection = NonNullable<TableProps<any>['rowSelection']>;
7
+ /**
8
+ * Override NamePath parameters type
9
+ */
10
+ declare type OverrideParameters = (string | number)[];
11
+ declare type RcFormInstance = Parameters<RuleRender>[0];
12
+ declare type RawPanelRender = NonNullable<TableProps<any>['footer']>;
13
+ /**
14
+ * Override PanelRender type
15
+ */
16
+ declare type PanelRenderFunc = (...args: Parameters<FormListProps['children']>) => ReturnType<RawPanelRender>;
17
+ /**
18
+ * Form.Table 组件类型
19
+ */
20
+ export interface IFormTableProps
21
+ /**
22
+ * Support all FormListProps except children for which is re-defined in this component
23
+ * and prefixCls for which is not expected to be supported
24
+ */
25
+ extends Pick<FormListProps, 'name' | 'rules' | 'initialValue'>,
26
+ /**
27
+ * Support all TableProps except
28
+ * - re-define columns and re-defined rowSelection
29
+ * - and pagination which is expect to be not supported in Form.Table
30
+ * - and className which is renamed to tableClassName
31
+ * - and rowKey, dataSource for which are defined and not allowed to be modified
32
+ * - and footer, title, summary for which are re-defined to pass form's operation
33
+ */
34
+ Omit<TableProps<any>, 'columns' | 'rowSelection' | 'pagination' | 'className' | 'rowKey' | 'dataSource' | 'footer' | 'title' | 'summary'> {
35
+ /**
36
+ * 表格列的配置描述
37
+ */
38
+ columns?: ColumnType[] | ((...args: Parameters<FormListProps['children']>) => ColumnType[]);
39
+ /**
40
+ * Table 的 className
41
+ */
42
+ tableClassName?: TableProps<any>['className'];
43
+ /**
44
+ * 表格行是否可选择
45
+ */
46
+ rowSelection?: Omit<NotNullRowSelection, 'getCheckboxProps'> & {
47
+ getCheckboxProps?: (field: FormListFieldData) => ReturnType<NonNullable<NotNullRowSelection['getCheckboxProps']>>;
48
+ };
49
+ title?: PanelRenderFunc;
50
+ footer?: PanelRenderFunc;
51
+ summary?: PanelRenderFunc;
52
+ }
53
+ export interface ColumnType
54
+ /**
55
+ * Support all FormItemProps, and re-defined `rules` and `dependencies`
56
+ */
57
+ extends Omit<FormItemProps, 'rules' | 'dependencies' | 'prefixCls' | 'children'>,
58
+ /**
59
+ * Support all TableColumnType, and re-defined `render`
60
+ */
61
+ Omit<TableColumnType<FormListFieldData>, 'render'> {
62
+ /**
63
+ * 设置依赖字段, 支持通过回调函数获取当前字段名
64
+ */
65
+ dependencies?: ((namePath: OverrideParameters) => FormItemProps['dependencies']) | FormItemProps['dependencies'];
66
+ /**
67
+ * 校验规则,设置字段的校验逻辑,支持通过回调函数获取当前字段名
68
+ */
69
+ rules?: (RuleObject | ((form: RcFormInstance, namePath: OverrideParameters) => RuleObject))[];
70
+ /**
71
+ * 渲染函数
72
+ * @param formInstance 只有在设置了 `dependencies` 的情况下才有该参数
73
+ */
74
+ render?: (fieldData: FormListFieldData, namePath: OverrideParameters, formInstance?: RcFormInstance) => ReactNode;
75
+ }
76
+ export default function InternalTable({ name, rules, initialValue, ...tableProps }: IFormTableProps): React.JSX.Element;
77
+ export {};
@@ -0,0 +1,141 @@
1
+ var _excluded = ["name", "rules", "initialValue"],
2
+ _excluded2 = ["tableClassName", "columns", "title", "footer", "summary"],
3
+ _excluded3 = ["noStyle", "style", "className", "id", "hasFeedback", "validateStatus", "required", "hidden", "initialValue", "messageVariables", "tooltip", "dependencies", "rules", "validateFirst", "validateTrigger", "valuePropName", "render"];
4
+ 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); }
5
+ 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; }
6
+ 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; }
7
+ 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; }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
9
+ 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); }
10
+ 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); }
11
+ 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; }
12
+ 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; }
13
+ import React, { useMemo } from 'react';
14
+ import { Utils } from '@dtinsight/dt-utils';
15
+ import { Form, Table } from 'antd';
16
+ import { globalConfig } from 'antd/es/config-provider';
17
+ import classnames from 'classnames';
18
+ import "./style";
19
+
20
+ /**
21
+ * Override NamePath parameters type
22
+ */
23
+
24
+ /**
25
+ * Override PanelRender type
26
+ */
27
+
28
+ /**
29
+ * Form.Table 组件类型
30
+ */
31
+
32
+ export default function InternalTable(_ref) {
33
+ var name = _ref.name,
34
+ rules = _ref.rules,
35
+ initialValue = _ref.initialValue,
36
+ tableProps = _objectWithoutProperties(_ref, _excluded);
37
+ var tableClassName = tableProps.tableClassName,
38
+ rawColumns = tableProps.columns,
39
+ title = tableProps.title,
40
+ footer = tableProps.footer,
41
+ summary = tableProps.summary,
42
+ restProps = _objectWithoutProperties(tableProps, _excluded2);
43
+ var prefixCls = globalConfig().getPrefixCls('form-list');
44
+ var formInstance = Form.useFormInstance();
45
+ var convertRawToTableCol = function convertRawToTableCol(raw) {
46
+ if (!(raw !== null && raw !== void 0 && raw.length)) return [];
47
+ return raw.map(function (_ref2) {
48
+ var noStyle = _ref2.noStyle,
49
+ style = _ref2.style,
50
+ className = _ref2.className,
51
+ id = _ref2.id,
52
+ hasFeedback = _ref2.hasFeedback,
53
+ validateStatus = _ref2.validateStatus,
54
+ required = _ref2.required,
55
+ hidden = _ref2.hidden,
56
+ initialValue = _ref2.initialValue,
57
+ messageVariables = _ref2.messageVariables,
58
+ tooltip = _ref2.tooltip,
59
+ dependencies = _ref2.dependencies,
60
+ rawRules = _ref2.rules,
61
+ validateFirst = _ref2.validateFirst,
62
+ validateTrigger = _ref2.validateTrigger,
63
+ valuePropName = _ref2.valuePropName,
64
+ _render = _ref2.render,
65
+ cols = _objectWithoutProperties(_ref2, _excluded3);
66
+ var formItemProps = {
67
+ noStyle: noStyle,
68
+ style: style,
69
+ className: className,
70
+ id: id,
71
+ hasFeedback: hasFeedback,
72
+ validateStatus: validateStatus,
73
+ required: required,
74
+ hidden: hidden,
75
+ initialValue: initialValue,
76
+ messageVariables: messageVariables,
77
+ validateFirst: validateFirst,
78
+ validateTrigger: validateTrigger,
79
+ tooltip: tooltip,
80
+ valuePropName: valuePropName
81
+ };
82
+ var isRequired = required || (rawRules === null || rawRules === void 0 ? void 0 : rawRules.some(function (rule) {
83
+ return _typeof(rule) === 'object' && rule.required;
84
+ }));
85
+ return _objectSpread(_objectSpread({}, cols), {}, {
86
+ title: /*#__PURE__*/React.createElement(React.Fragment, null, isRequired && /*#__PURE__*/React.createElement("span", {
87
+ className: "dtc-form__table__column--required"
88
+ }), cols.title),
89
+ render: function render(_, fieldData) {
90
+ var currentNamePath = [fieldData.name, cols.dataIndex].filter(Utils.checkExist).flat();
91
+ var rules = rawRules === null || rawRules === void 0 ? void 0 : rawRules.map(function (rule) {
92
+ return typeof rule === 'function' ? function (form) {
93
+ return rule(form, currentNamePath);
94
+ } : rule;
95
+ });
96
+ if (dependencies) {
97
+ return /*#__PURE__*/React.createElement(Form.Item, {
98
+ noStyle: true,
99
+ dependencies: typeof dependencies === 'function' ? dependencies(currentNamePath) : dependencies
100
+ }, function (formInstance) {
101
+ return /*#__PURE__*/React.createElement(Form.Item, _extends({
102
+ name: currentNamePath,
103
+ rules: rules
104
+ }, formItemProps), _render === null || _render === void 0 ? void 0 : _render(fieldData, currentNamePath, formInstance));
105
+ });
106
+ }
107
+ return /*#__PURE__*/React.createElement(Form.Item, _extends({
108
+ name: currentNamePath,
109
+ rules: rules
110
+ }, formItemProps), _render === null || _render === void 0 ? void 0 : _render(fieldData, currentNamePath, formInstance));
111
+ }
112
+ });
113
+ });
114
+ };
115
+ var columns = useMemo(function () {
116
+ if (typeof rawColumns === 'function') return rawColumns;
117
+ return convertRawToTableCol(rawColumns);
118
+ }, [rawColumns]);
119
+ return /*#__PURE__*/React.createElement(Form.List, {
120
+ name: name,
121
+ rules: rules,
122
+ initialValue: initialValue
123
+ }, function (fields, ope, meta) {
124
+ return /*#__PURE__*/React.createElement(Table, _extends({
125
+ className: classnames(prefixCls, tableClassName),
126
+ rowKey: "key",
127
+ dataSource: fields,
128
+ pagination: false,
129
+ columns: typeof columns === 'function' ? convertRawToTableCol(columns(fields, ope, meta)) : columns,
130
+ footer: footer ? function () {
131
+ return footer(fields, ope, meta);
132
+ } : undefined,
133
+ title: title ? function () {
134
+ return title(fields, ope, meta);
135
+ } : undefined,
136
+ summary: summary ? function () {
137
+ return summary(fields, ope, meta);
138
+ } : undefined
139
+ }, restProps));
140
+ });
141
+ }
@@ -0,0 +1,2 @@
1
+ import '../../style/index.less';
2
+ import './index.less';
@@ -0,0 +1,2 @@
1
+ import "../../style/index.less";
2
+ import "./index.less";
@@ -0,0 +1,45 @@
1
+ @import '../../style/themes/index.less';
2
+
3
+ @form-list-prefix-cls: ~'@{ant-prefix}-form-list';
4
+
5
+ .@{form-list-prefix-cls} {
6
+ height: 100%;
7
+
8
+ &__column {
9
+ &--required {
10
+ &::before {
11
+ content: "*";
12
+ display: inline-block;
13
+ margin-inline-end: 4px;
14
+ font-size: 14px;
15
+ line-height: 1;
16
+ color: @error-color;
17
+ }
18
+
19
+ vertical-align: -0.1em;
20
+ }
21
+ }
22
+
23
+ .ant-table,
24
+ .ant-table-container {
25
+ height: 100%;
26
+ }
27
+
28
+ .ant-form-item {
29
+ margin-bottom: 0;
30
+ }
31
+
32
+ table colgroup > col.ant-table-selection-col {
33
+ width: 48px;
34
+ }
35
+
36
+ .ant-table-thead > tr > th.ant-table-selection-column {
37
+ padding: 0 16px;
38
+ }
39
+
40
+ .ant-table-tbody > tr > td.ant-table-selection-column {
41
+ padding: 0 16px;
42
+ }
43
+ }
44
+
45
+
package/esm/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
- import '@dtinsight/react-icons/dist/index.css';
2
1
  export { default as BlockHeader } from './blockHeader';
3
2
  export type { ButtonProps } from './button';
4
3
  export { default as Button } from './button';
4
+ export { default as Collapsible } from './collapsible';
5
+ export { default as CollapsibleActionItems } from './collapsibleActionItems';
5
6
  export { default as Flex } from './flex';
6
7
  export type { FlexProps } from './flex/interface';
7
- export { default as CollapsibleActionItems } from './collapsibleActionItems';
8
+ export { default as FormList } from './formList';
9
+ export * from './formList';
10
+ export { default as OverflowList } from './overflowList';
8
11
  export { default as Resize } from './resize';
9
12
  export { default as Splitter } from './splitter';
10
13
  export * from './splitter';
11
- export { default as Collapsible } from './collapsible';
12
14
  export { default as StatusTag } from './statusTag';
package/esm/index.js CHANGED
@@ -1,53 +1,12 @@
1
- import '@dtinsight/react-icons/dist/index.css';
2
1
  export { default as BlockHeader } from "./blockHeader";
3
2
  export { default as Button } from "./button";
4
- export { default as Flex } from "./flex";
5
- // export { default as Catalogue } from './catalogue';
6
- // export { default as Chat } from './chat';
3
+ export { default as Collapsible } from "./collapsible";
7
4
  export { default as CollapsibleActionItems } from "./collapsibleActionItems";
8
- // export { default as ConfigProvider } from './configProvider';
9
- // export { default as ContentLayout } from './contentLayout';
10
- // export { default as ContextMenu } from './contextMenu';
11
- // export { default as Copy } from './copy';
12
- // export { default as Descriptions } from './descriptions';
13
- // export { default as Drawer } from './drawer';
14
- // export { default as Dropdown } from './dropdown';
15
- // export { default as EllipsisText } from './ellipsisText';
16
- // export { default as Empty } from './empty';
17
- // export { default as ErrorBoundary } from './errorBoundary';
18
- // export { default as LoadError } from './errorBoundary/loadError';
19
- // export { default as FilterRules } from './filterRules';
20
- // export { default as Flex } from './flex';
21
- // export type { FlexProps } from './flex/interface';
22
- // export { default as Float } from './float';
23
- // export { default as Form } from './form';
24
- // export { default as Fullscreen } from './fullscreen';
25
- // export { default as GlobalLoading } from './globalLoading';
26
- // export { default as Image } from './image';
27
- // export { default as Input } from './input';
28
- // export { default as KeyEventListener } from './keyEventListener';
29
- // export { default as enUS } from './locale/en-US';
30
- // export { default as useLocale } from './locale/useLocale';
31
- // export { default as zhCN } from './locale/zh-CN';
32
- // export { default as MarkdownRender } from './markdownRender';
33
- // export { default as Modal } from './modal/modal';
34
- // export { default as NotFound } from './notFound';
35
- // export { default as ProgressBar } from './progressBar';
36
- // export { default as ProgressLine } from './progressLine';
5
+ export { default as Flex } from "./flex";
6
+ export { default as FormList } from "./formList";
7
+ export * from "./formList";
8
+ export { default as OverflowList } from "./overflowList";
37
9
  export { default as Resize } from "./resize";
38
10
  export { default as Splitter } from "./splitter";
39
11
  export * from "./splitter";
40
- // export { default as SpreadSheet } from './spreadSheet';
41
- export { default as Collapsible } from "./collapsible";
42
- export { default as StatusTag } from "./statusTag";
43
- // export { default as Table } from './table';
44
- // export { default as TinyTag } from './tinyTag';
45
- // export { default as useCookieListener } from './useCookieListener';
46
- // export { default as useDebounce } from './useDebounce';
47
- // export { default as useIntersectionObserver } from './useIntersectionObserver';
48
- // export { default as useList } from './useList';
49
- // export { default as useMeasure } from './useMeasure';
50
- // export { default as useMergeOption } from './useMergeOption';
51
- // export { default as useModal } from './useModal';
52
- // export { default as useTyping } from './useTyping';
53
- // export { default as useWindowSwitchListener } from './useWindowSwitchListener';
12
+ export { default as StatusTag } from "./statusTag";
@@ -0,0 +1,39 @@
1
+ import React, { Component, ReactElement, ReactNode } from 'react';
2
+ import './style';
3
+ export declare type OverflowItem<T = Record<string, any>> = T;
4
+ export interface OverflowListProps<T = Record<string, any>> {
5
+ items: OverflowItem<T>[];
6
+ visibleItemRenderer: (item: OverflowItem<T>, index: number) => ReactElement;
7
+ overflowRenderer: (overflowItems: OverflowItem<T>[]) => ReactNode | ReactNode[];
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ renderMode?: 'collapse' | 'scroll';
11
+ collapseFrom?: 'start' | 'end';
12
+ minVisibleItems?: number;
13
+ onOverflow?: (overflowItems: OverflowItem<T>[]) => void;
14
+ }
15
+ interface OverflowListState {
16
+ visibleCount: number;
17
+ isMeasuring: boolean;
18
+ }
19
+ declare class OverflowList<T extends object> extends Component<OverflowListProps<T>, OverflowListState> {
20
+ static defaultProps: {
21
+ items: never[];
22
+ collapseFrom: string;
23
+ minVisibleItems: number;
24
+ renderMode: string;
25
+ };
26
+ static displayName: string;
27
+ private containerRef;
28
+ private overflowRef;
29
+ private itemRefs;
30
+ private prefixCls;
31
+ constructor(props: OverflowListProps<T>);
32
+ componentDidMount(): void;
33
+ componentUpdate(prevProps: OverflowListProps<T>): void;
34
+ private measureAndAdjust;
35
+ private getOverflowItems;
36
+ renderCollapse(): React.JSX.Element;
37
+ render(): React.JSX.Element;
38
+ }
39
+ export default OverflowList;
@@ -0,0 +1,165 @@
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 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; }
3
+ 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; }
4
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
6
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
8
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
9
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
10
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
11
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
12
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
13
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
14
+ 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; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
16
+ 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); }
17
+ import React, { Component, createRef } from 'react';
18
+ import { globalConfig } from 'antd/es/config-provider';
19
+ import classNames from 'classnames';
20
+ import "./style";
21
+ import ReactResizeObserver from "../resizeObserver";
22
+ var OverflowList = /*#__PURE__*/function (_Component) {
23
+ _inherits(OverflowList, _Component);
24
+ var _super = _createSuper(OverflowList);
25
+ function OverflowList(props) {
26
+ var _this;
27
+ _classCallCheck(this, OverflowList);
28
+ _this = _super.call(this, props);
29
+ _defineProperty(_assertThisInitialized(_this), "containerRef", /*#__PURE__*/createRef());
30
+ _defineProperty(_assertThisInitialized(_this), "overflowRef", /*#__PURE__*/createRef());
31
+ _defineProperty(_assertThisInitialized(_this), "itemRefs", new Map());
32
+ _defineProperty(_assertThisInitialized(_this), "prefixCls", 'overflow-list');
33
+ _defineProperty(_assertThisInitialized(_this), "measureAndAdjust", function () {
34
+ var _this$overflowRef$cur, _this$overflowRef$cur2;
35
+ var container = _this.containerRef.current;
36
+ if (!container || _this.props.renderMode !== 'collapse') return;
37
+ var _this$props = _this.props,
38
+ items = _this$props.items,
39
+ minVisibleItems = _this$props.minVisibleItems,
40
+ collapseFrom = _this$props.collapseFrom,
41
+ onOverflow = _this$props.onOverflow;
42
+ var containerWidth = container.offsetWidth;
43
+ var overflowWidth = (_this$overflowRef$cur = (_this$overflowRef$cur2 = _this.overflowRef.current) === null || _this$overflowRef$cur2 === void 0 ? void 0 : _this$overflowRef$cur2.offsetWidth) !== null && _this$overflowRef$cur !== void 0 ? _this$overflowRef$cur : 0;
44
+ var totalWidth = 0;
45
+ var newVisibleCount = 0;
46
+ for (var i = 0; i < items.length; i++) {
47
+ var _this$itemRefs$get$ge, _this$itemRefs$get;
48
+ var _index = collapseFrom === 'end' ? i : items.length - 1 - i;
49
+ var itemWidth = (_this$itemRefs$get$ge = (_this$itemRefs$get = _this.itemRefs.get(_index)) === null || _this$itemRefs$get === void 0 ? void 0 : _this$itemRefs$get.getBoundingClientRect().width) !== null && _this$itemRefs$get$ge !== void 0 ? _this$itemRefs$get$ge : 0;
50
+ var isLast = i === items.length - 1;
51
+ var limit = isLast ? containerWidth : containerWidth - overflowWidth;
52
+ if (totalWidth + itemWidth <= limit || newVisibleCount < (minVisibleItems || 0)) {
53
+ totalWidth += itemWidth;
54
+ newVisibleCount++;
55
+ } else {
56
+ break;
57
+ }
58
+ }
59
+ _this.setState({
60
+ visibleCount: newVisibleCount,
61
+ isMeasuring: false
62
+ }, function () {
63
+ if (onOverflow) {
64
+ onOverflow(_this.getOverflowItems(newVisibleCount));
65
+ }
66
+ });
67
+ });
68
+ _defineProperty(_assertThisInitialized(_this), "getOverflowItems", function (count) {
69
+ var _this$props2 = _this.props,
70
+ items = _this$props2.items,
71
+ collapseFrom = _this$props2.collapseFrom;
72
+ return collapseFrom === 'end' ? items.slice(count) : items.slice(0, items.length - count);
73
+ });
74
+ _this.prefixCls = globalConfig().getPrefixCls(_this.prefixCls);
75
+ _this.state = {
76
+ visibleCount: props.items.length,
77
+ isMeasuring: props.renderMode === 'collapse'
78
+ };
79
+ return _this;
80
+ }
81
+ _createClass(OverflowList, [{
82
+ key: "componentDidMount",
83
+ value: function componentDidMount() {
84
+ if (this.props.renderMode === 'collapse') {
85
+ this.measureAndAdjust();
86
+ }
87
+ }
88
+ }, {
89
+ key: "componentUpdate",
90
+ value: function componentUpdate(prevProps) {
91
+ if (prevProps.items !== this.props.items || prevProps.renderMode !== this.props.renderMode) {
92
+ this.setState({
93
+ isMeasuring: true,
94
+ visibleCount: this.props.items.length
95
+ }, this.measureAndAdjust);
96
+ }
97
+ }
98
+ }, {
99
+ key: "renderCollapse",
100
+ value: function renderCollapse() {
101
+ var _this2 = this;
102
+ var _this$props3 = this.props,
103
+ items = _this$props3.items,
104
+ visibleItemRenderer = _this$props3.visibleItemRenderer,
105
+ overflowRenderer = _this$props3.overflowRenderer,
106
+ collapseFrom = _this$props3.collapseFrom,
107
+ style = _this$props3.style,
108
+ className = _this$props3.className;
109
+ var _this$state = this.state,
110
+ visibleCount = _this$state.visibleCount,
111
+ isMeasuring = _this$state.isMeasuring;
112
+ var overflowItems = this.getOverflowItems(visibleCount);
113
+ var hasOverflow = overflowItems.length > 0;
114
+ var containerStyle = _objectSpread({
115
+ maxWidth: '100%',
116
+ visibility: 'visible'
117
+ }, style);
118
+ var renderItems = function renderItems() {
119
+ return items.map(function (item, i) {
120
+ var isVisible = isMeasuring || (collapseFrom === 'end' ? i < visibleCount : i >= items.length - visibleCount);
121
+ if (!isVisible) return null;
122
+ return /*#__PURE__*/React.createElement("div", {
123
+ key: i,
124
+ ref: function ref(el) {
125
+ if (el) _this2.itemRefs.set(i, el);else _this2.itemRefs.delete(i);
126
+ },
127
+ className: "".concat(_this2.prefixCls, "-item")
128
+ }, visibleItemRenderer(item, i));
129
+ });
130
+ };
131
+ var overflowNode = (hasOverflow || isMeasuring) && /*#__PURE__*/React.createElement("div", {
132
+ ref: this.overflowRef,
133
+ className: "".concat(this.prefixCls, "-overflow")
134
+ }, overflowRenderer(isMeasuring ? items : overflowItems));
135
+ return /*#__PURE__*/React.createElement(ReactResizeObserver, {
136
+ onResize: function onResize() {
137
+ return _this2.setState({
138
+ isMeasuring: true
139
+ }, _this2.measureAndAdjust);
140
+ }
141
+ }, /*#__PURE__*/React.createElement("div", {
142
+ ref: this.containerRef,
143
+ className: classNames(this.prefixCls, className),
144
+ style: containerStyle
145
+ }, collapseFrom === 'start' && overflowNode, renderItems(), collapseFrom === 'end' && overflowNode));
146
+ }
147
+ }, {
148
+ key: "render",
149
+ value: function render() {
150
+ return this.renderCollapse();
151
+ }
152
+ }]);
153
+ return OverflowList;
154
+ }(Component);
155
+ _defineProperty(OverflowList, "defaultProps", {
156
+ items: [],
157
+ collapseFrom: 'end',
158
+ minVisibleItems: 0,
159
+ renderMode: 'collapse'
160
+ });
161
+ _defineProperty(OverflowList, "displayName", void 0);
162
+ if (process.env.NODE_ENV === 'development') {
163
+ OverflowList.displayName = 'OverflowList';
164
+ }
165
+ export default OverflowList;
@@ -0,0 +1,2 @@
1
+ import '../../style/index.less';
2
+ import './index.less';
@@ -0,0 +1,2 @@
1
+ import "../../style/index.less";
2
+ import "./index.less";