@zykj2024/much-library 1.0.9 → 1.0.10

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 (45) hide show
  1. package/README.md +23 -23
  2. package/dist/McLazyLoader/demo/basic.d.ts +2 -0
  3. package/dist/McLazyLoader/demo/basic.js +33 -0
  4. package/dist/McLazyLoader/demo/form.d.ts +2 -0
  5. package/dist/McLazyLoader/demo/form.js +38 -0
  6. package/dist/McLazyLoader/demo/has-root.d.ts +2 -0
  7. package/dist/McLazyLoader/demo/has-root.js +44 -0
  8. package/dist/McLazyLoader/index.d.ts +28 -0
  9. package/dist/McLazyLoader/index.js +75 -0
  10. package/dist/McProSelect/demo/async.d.ts +2 -0
  11. package/dist/McProSelect/demo/async.js +66 -0
  12. package/dist/McProSelect/demo/base.d.ts +2 -0
  13. package/dist/McProSelect/demo/base.js +29 -0
  14. package/dist/McProSelect/demo/exclusion-async-rename.d.ts +3 -0
  15. package/dist/McProSelect/demo/exclusion-async-rename.js +103 -0
  16. package/dist/McProSelect/demo/exclusion-rename.d.ts +3 -0
  17. package/dist/McProSelect/demo/exclusion-rename.js +74 -0
  18. package/dist/McProSelect/demo/exclusion.d.ts +3 -0
  19. package/dist/McProSelect/demo/exclusion.js +70 -0
  20. package/dist/McProSelect/demo/require.d.ts +2 -0
  21. package/dist/McProSelect/demo/require.js +82 -0
  22. package/dist/McProSelect/index.d.ts +35 -0
  23. package/dist/McProSelect/index.js +152 -0
  24. package/dist/McSelect/demo/exclusion.d.ts +3 -0
  25. package/dist/McSelect/demo/exclusion.js +64 -0
  26. package/dist/McSelect/index.d.ts +2 -2
  27. package/dist/McSelect/index.js +8 -6
  28. package/dist/McTag/demo/demo1.d.ts +2 -0
  29. package/dist/McTag/demo/demo1.js +18 -0
  30. package/dist/McTag/demo/demo2.d.ts +2 -0
  31. package/dist/McTag/demo/demo2.js +20 -0
  32. package/dist/McTag/demo/demo3.d.ts +2 -0
  33. package/dist/McTag/demo/demo3.js +19 -0
  34. package/dist/McTag/demo/demo4.d.ts +2 -0
  35. package/dist/McTag/demo/demo4.js +22 -0
  36. package/dist/McTag/index.d.ts +22 -0
  37. package/dist/McTag/index.js +59 -0
  38. package/dist/McThemeConfig/customToken.json +2 -1
  39. package/dist/McThemeConfig/demo/radio.js +39 -0
  40. package/dist/McThemeConfig/globalStyle.js +2 -4
  41. package/dist/Utils/index.d.ts +5 -4
  42. package/dist/Utils/index.js +6 -26
  43. package/dist/index.d.ts +5 -2
  44. package/dist/index.js +5 -2
  45. package/package.json +3 -1
@@ -0,0 +1,82 @@
1
+ /**
2
+ * title: 内置为空校验
3
+ * description: 为空校验。required为true时,会自动校验是否为空。可通过设置required为string类型,自定义提示信息。
4
+ */
5
+ import { Flex, Form } from 'antd';
6
+ import { McProSelect } from "../..";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ import { jsxs as _jsxs } from "react/jsx-runtime";
9
+ var requireDemo = function requireDemo() {
10
+ return /*#__PURE__*/_jsx(Form, {
11
+ children: /*#__PURE__*/_jsxs(Flex, {
12
+ gap: "middle",
13
+ justify: "space-between",
14
+ children: [/*#__PURE__*/_jsx(McProSelect, {
15
+ name: "select1",
16
+ label: "select1",
17
+ fieldProps: {
18
+ defaultValue: 'lucy',
19
+ options: [{
20
+ value: 'jack',
21
+ label: 'Jack'
22
+ }, {
23
+ value: 'lucy',
24
+ label: 'Lucy'
25
+ }, {
26
+ value: 'Yiminghe',
27
+ label: 'yiminghe'
28
+ }, {
29
+ value: 'disabled',
30
+ label: 'Disabled',
31
+ disabled: true
32
+ }]
33
+ },
34
+ required: "\u8BF7\u9009\u62E9select1"
35
+ }), /*#__PURE__*/_jsx(McProSelect, {
36
+ name: "select2",
37
+ label: "select2",
38
+ fieldProps: {
39
+ defaultValue: 'lucy',
40
+ options: [{
41
+ value: 'jack',
42
+ label: 'Jack'
43
+ }, {
44
+ value: 'lucy',
45
+ label: 'Lucy'
46
+ }, {
47
+ value: 'Yiminghe',
48
+ label: 'yiminghe'
49
+ }, {
50
+ value: 'disabled',
51
+ label: 'Disabled',
52
+ disabled: true
53
+ }]
54
+ },
55
+ required: true
56
+ }), /*#__PURE__*/_jsx(McProSelect, {
57
+ name: "select3",
58
+ label: "select3",
59
+ multiple: true,
60
+ fieldProps: {
61
+ defaultValue: 'lucy',
62
+ options: [{
63
+ value: 'jack',
64
+ label: 'Jack'
65
+ }, {
66
+ value: 'lucy',
67
+ label: 'Lucy'
68
+ }, {
69
+ value: 'Yiminghe',
70
+ label: 'yiminghe'
71
+ }, {
72
+ value: 'disabled',
73
+ label: 'Disabled',
74
+ disabled: true
75
+ }]
76
+ },
77
+ required: true
78
+ })]
79
+ })
80
+ });
81
+ };
82
+ export default requireDemo;
@@ -0,0 +1,35 @@
1
+ import { FormItemProps } from 'antd/es/form/FormItem';
2
+ import { McSelectProps, Option } from '../McSelect';
3
+ type McProselectOptions<T> = (T & Partial<Pick<Option, 'title' | 'disabled'>> & {
4
+ extra?: T;
5
+ })[] | undefined;
6
+ type McProSelectProps<T = {
7
+ label: string;
8
+ value: string;
9
+ }> = Omit<FormItemProps, 'required'> & {
10
+ multiple?: boolean;
11
+ /** 默认为keyword */
12
+ searchKey?: string;
13
+ /** 为string时表示未填写时的提示文案 */
14
+ required?: boolean | string;
15
+ disabled?: boolean;
16
+ excludeIds?: (string | number)[];
17
+ fieldNames?: {
18
+ label?: keyof T;
19
+ value?: keyof T;
20
+ };
21
+ fieldProps?: Omit<McSelectProps, 'multiple' | 'fetchOption' | 'toFilterOptions' | 'options'> & {
22
+ options: McProselectOptions<T>;
23
+ };
24
+ request?: (params: {
25
+ current: number;
26
+ pageSize: number;
27
+ [key: string]: number | string;
28
+ }) => Promise<{
29
+ records: T[];
30
+ total: number;
31
+ [key: string]: any;
32
+ }>;
33
+ };
34
+ declare const McProSelect: <T extends Record<string, any>>({ label, name, fieldNames, required, request, multiple, disabled, searchKey, excludeIds, fieldProps, ...restProps }: McProSelectProps<T>) => import("react/jsx-runtime").JSX.Element;
35
+ export default McProSelect;
@@ -0,0 +1,152 @@
1
+ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
4
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
5
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
6
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
7
+ var _excluded = ["label", "name", "fieldNames", "required", "request", "multiple", "disabled", "searchKey", "excludeIds", "fieldProps"],
8
+ _excluded2 = ["options"],
9
+ _excluded3 = ["getValueFromEvent", "getValueProps", "rules"],
10
+ _excluded4 = ["current", "keyword"];
11
+ import { Form } from 'antd';
12
+ import { useMemo } from 'react';
13
+ import McSelect from "../McSelect";
14
+ import { isEmpty, isNil } from "../Utils";
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ var McProSelect = function McProSelect(_ref) {
17
+ var label = _ref.label,
18
+ name = _ref.name,
19
+ fieldNames = _ref.fieldNames,
20
+ required = _ref.required,
21
+ request = _ref.request,
22
+ multiple = _ref.multiple,
23
+ disabled = _ref.disabled,
24
+ _ref$searchKey = _ref.searchKey,
25
+ searchKey = _ref$searchKey === void 0 ? 'keyword' : _ref$searchKey,
26
+ excludeIds = _ref.excludeIds,
27
+ fieldProps = _ref.fieldProps,
28
+ restProps = _objectWithoutProperties(_ref, _excluded);
29
+ var labelKey = (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.label) || 'label';
30
+ var valueKey = (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value) || 'value';
31
+ var _ref2 = fieldProps !== null && fieldProps !== void 0 ? fieldProps : {},
32
+ optionsFromFieldProps = _ref2.options,
33
+ restFieldProps = _objectWithoutProperties(_ref2, _excluded2);
34
+ var customGetValueFromEvent = restProps.getValueFromEvent,
35
+ customGetValueProps = restProps.getValueProps,
36
+ rules = restProps.rules,
37
+ restFormItemProps = _objectWithoutProperties(restProps, _excluded3);
38
+
39
+ // 生成用fieldNames映射后的options
40
+ var createReflectedOptions = function createReflectedOptions(options) {
41
+ if (!options) return undefined;
42
+ return options.map(function (item) {
43
+ var _item$title;
44
+ return {
45
+ label: item[labelKey !== null && labelKey !== void 0 ? labelKey : 'label'],
46
+ value: item[valueKey !== null && valueKey !== void 0 ? valueKey : 'value'],
47
+ title: (_item$title = item.title) !== null && _item$title !== void 0 ? _item$title : '',
48
+ disabled: !!item.disabled,
49
+ extra: item
50
+ };
51
+ });
52
+ };
53
+
54
+ // 静态option
55
+ var staticOption = useMemo(function () {
56
+ // 非异步请求时,根据fieldNames转换为label&value格式
57
+ if (optionsFromFieldProps && optionsFromFieldProps.length > 0) {
58
+ return createReflectedOptions(optionsFromFieldProps);
59
+ }
60
+ return undefined;
61
+ }, [optionsFromFieldProps]);
62
+ var getValueProps = function getValueProps(value) {
63
+ var _label$value;
64
+ if (customGetValueProps) {
65
+ return customGetValueProps(value);
66
+ }
67
+ if (isNil(value)) return {
68
+ value: value
69
+ };
70
+ return {
71
+ value: multiple ? (value === null || value === void 0 ? void 0 : value.map(function (x) {
72
+ return {
73
+ label: x[labelKey],
74
+ value: x[valueKey]
75
+ };
76
+ })) || [] : (_label$value = {
77
+ label: value === null || value === void 0 ? void 0 : value[labelKey],
78
+ value: value === null || value === void 0 ? void 0 : value[valueKey]
79
+ }) !== null && _label$value !== void 0 ? _label$value : undefined
80
+ };
81
+ };
82
+ var getValueFromEvent = function getValueFromEvent(_selectedValues, options) {
83
+ var _options$map, _options$extra;
84
+ if (customGetValueFromEvent) return customGetValueFromEvent(_selectedValues, options);
85
+ if (!_selectedValues) return undefined;
86
+ // 如果其他业务要的value是number[], 不是option,需要修改这里。用到的时候再修改吧
87
+ if (multiple) return (_options$map = options === null || options === void 0 ? void 0 : options.map(function (item) {
88
+ var _item$extra;
89
+ return (_item$extra = item.extra) !== null && _item$extra !== void 0 ? _item$extra : item;
90
+ })) !== null && _options$map !== void 0 ? _options$map : [];
91
+ return (_options$extra = options === null || options === void 0 ? void 0 : options.extra) !== null && _options$extra !== void 0 ? _options$extra : options;
92
+ };
93
+ var requiredMsg = typeof required === 'string' ? required : '请选择';
94
+ return /*#__PURE__*/_jsx(Form.Item, _objectSpread(_objectSpread({
95
+ label: label,
96
+ name: name,
97
+ getValueProps: getValueProps,
98
+ getValueFromEvent: getValueFromEvent,
99
+ rules: required ? [{
100
+ required: true,
101
+ message: requiredMsg,
102
+ validator: function validator(_, value) {
103
+ if (isNil(value) || isEmpty(value)) return Promise.reject(new Error(requiredMsg));
104
+ return Promise.resolve();
105
+ }
106
+ }].concat(_toConsumableArray(restProps.rules || [])) : rules
107
+ }, restFormItemProps), {}, {
108
+ children: /*#__PURE__*/_jsx(McSelect, _objectSpread(_objectSpread({
109
+ multiple: multiple,
110
+ showSearch: true,
111
+ maxTagCount: undefined,
112
+ toFilterOptions: function toFilterOptions(options) {
113
+ if (!excludeIds || excludeIds.filter(Boolean).length === 0) return options;
114
+ return options.filter(function (option) {
115
+ return !excludeIds.includes(option.value);
116
+ });
117
+ },
118
+ fetchOptions: request ? ( /*#__PURE__*/function () {
119
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(params) {
120
+ var _createReflectedOptio, _result$total;
121
+ var current, keyword, rest, result;
122
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
123
+ while (1) switch (_context.prev = _context.next) {
124
+ case 0:
125
+ current = params.current, keyword = params.keyword, rest = _objectWithoutProperties(params, _excluded4);
126
+ _context.next = 3;
127
+ return request(_objectSpread(_objectSpread({}, rest), {}, _defineProperty({
128
+ current: current !== null && current !== void 0 ? current : 1
129
+ }, searchKey, keyword)));
130
+ case 3:
131
+ result = _context.sent;
132
+ return _context.abrupt("return", {
133
+ data: (_createReflectedOptio = createReflectedOptions(result === null || result === void 0 ? void 0 : result.records)) !== null && _createReflectedOptio !== void 0 ? _createReflectedOptio : [],
134
+ total: (_result$total = result === null || result === void 0 ? void 0 : result.total) !== null && _result$total !== void 0 ? _result$total : 0
135
+ });
136
+ case 5:
137
+ case "end":
138
+ return _context.stop();
139
+ }
140
+ }, _callee);
141
+ }));
142
+ return function (_x) {
143
+ return _ref3.apply(this, arguments);
144
+ };
145
+ }()) : undefined,
146
+ options: staticOption
147
+ }, restFieldProps), {}, {
148
+ disabled: disabled
149
+ }))
150
+ }));
151
+ };
152
+ export default McProSelect;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const App: React.FC;
3
+ export default App;
@@ -0,0 +1,64 @@
1
+ /**
2
+ * title: 两个互斥的select
3
+ * description: select1中选择的选项会在select2中被排除,反之亦然。此方法同样支持远程select。
4
+ */
5
+ import { Form } from 'antd';
6
+ import { McSelect } from "../..";
7
+ import React from 'react';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ import { jsxs as _jsxs } from "react/jsx-runtime";
10
+ var options = [{
11
+ value: 'gold'
12
+ }, {
13
+ value: 'lime'
14
+ }, {
15
+ value: 'green'
16
+ }, {
17
+ value: 'cyan'
18
+ }];
19
+ var App = function App() {
20
+ return /*#__PURE__*/_jsxs(Form, {
21
+ name: "exclusion1",
22
+ children: [/*#__PURE__*/_jsx(Form.Item, {
23
+ noStyle: true,
24
+ dependencies: ['select2'],
25
+ children: function children(_ref) {
26
+ var getFieldValue = _ref.getFieldValue;
27
+ return /*#__PURE__*/_jsx(Form.Item, {
28
+ name: "select1",
29
+ children: /*#__PURE__*/_jsx(McSelect, {
30
+ options: options,
31
+ label: "select1",
32
+ toFilterOptions: function toFilterOptions(options) {
33
+ return options.filter(function (option) {
34
+ return option.value !== getFieldValue('select2');
35
+ });
36
+ }
37
+ })
38
+ });
39
+ }
40
+ }), /*#__PURE__*/_jsx(Form.Item, {
41
+ noStyle: true,
42
+ dependencies: ['select1'],
43
+ children: function children(_ref2) {
44
+ var getFieldValue = _ref2.getFieldValue;
45
+ return /*#__PURE__*/_jsx(Form.Item, {
46
+ label: "select2",
47
+ name: "select2",
48
+ children: /*#__PURE__*/_jsx(McSelect, {
49
+ style: {
50
+ width: '100%'
51
+ },
52
+ options: options,
53
+ toFilterOptions: function toFilterOptions(options) {
54
+ return options.filter(function (option) {
55
+ return option.value !== getFieldValue('select1');
56
+ });
57
+ }
58
+ })
59
+ });
60
+ }
61
+ })]
62
+ });
63
+ };
64
+ export default App;
@@ -1,7 +1,7 @@
1
1
  import { SelectProps } from 'antd';
2
2
  import { CSSProperties, FC, ReactNode } from 'react';
3
3
  import './index.less';
4
- interface Option {
4
+ export interface Option {
5
5
  value: string | number;
6
6
  label?: React.ReactNode;
7
7
  title?: string;
@@ -25,6 +25,7 @@ export type FetchOptions = (params: {
25
25
  export type McSelectProps = Omit<SelectProps, 'mode' | 'fieldNames'> & {
26
26
  style?: CSSProperties;
27
27
  className?: string;
28
+ toFilterOptions?: (options: Option[]) => Option[];
28
29
  name?: string;
29
30
  label?: ReactNode;
30
31
  multiple?: boolean;
@@ -34,7 +35,6 @@ export type McSelectProps = Omit<SelectProps, 'mode' | 'fieldNames'> & {
34
35
  pageSize?: number;
35
36
  extra?: any;
36
37
  options?: Option[];
37
- [key: string]: any;
38
38
  };
39
39
  declare const McSelect: FC<McSelectProps>;
40
40
  export default McSelect;
@@ -3,9 +3,9 @@ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
3
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
4
4
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
5
5
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
6
- var _excluded = ["style", "className", "label", "multiple", "changeOnHidden", "inexistent", "fetchOptions", "pageSize", "extra", "value", "onChange", "labelInValue", "options", "disabled", "maxTagCount", "onSearch", "onPopupScroll", "onBlur", "onDropdownVisibleChange"];
6
+ var _excluded = ["style", "className", "label", "multiple", "changeOnHidden", "inexistent", "fetchOptions", "pageSize", "extra", "value", "onChange", "labelInValue", "options", "disabled", "maxTagCount", "onSearch", "onPopupScroll", "onBlur", "onDropdownVisibleChange", "toFilterOptions"];
7
7
  import { Empty, Popover, Select, Spin } from 'antd';
8
- import { Utils } from "./..";
8
+ import { debounce } from "../Utils";
9
9
  import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';
10
10
  import "./index.css";
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -32,6 +32,7 @@ var McSelect = /*#__PURE__*/forwardRef(function (props, ref) {
32
32
  onPopupScroll = props.onPopupScroll,
33
33
  onBlur = props.onBlur,
34
34
  onDropdownVisibleChange = props.onDropdownVisibleChange,
35
+ toFilterOptions = props.toFilterOptions,
35
36
  rest = _objectWithoutProperties(props, _excluded);
36
37
  var _ref = typeof inexistent === 'boolean' ? {} : inexistent,
37
38
  _ref$inexistentText = _ref.inexistentText,
@@ -87,6 +88,7 @@ var McSelect = /*#__PURE__*/forwardRef(function (props, ref) {
87
88
  var _oldValue = useRef();
88
89
  var _changeOption = useRef();
89
90
  var _inexistent = useRef(false);
91
+ var filteredOptions = toFilterOptions ? toFilterOptions(selectOptions) : selectOptions; // 只要有render就需要重新生成options
90
92
 
91
93
  // 监听值和备选项的变化(赋值备选项,执行不存在值的判断逻辑)
92
94
  useEffect(function () {
@@ -209,7 +211,7 @@ var McSelect = /*#__PURE__*/forwardRef(function (props, ref) {
209
211
 
210
212
  // 搜索防抖函数
211
213
  var debounceSearcher = useMemo(function () {
212
- return Utils.debounce(loadOptions, 350);
214
+ return debounce(loadOptions, 350);
213
215
  }, [loadOptions]);
214
216
 
215
217
  // 文本框值变化时回调
@@ -231,7 +233,7 @@ var McSelect = /*#__PURE__*/forwardRef(function (props, ref) {
231
233
  _extra.current = extra;
232
234
  }, [extra, loadOptions]);
233
235
 
234
- // 滚动触底防抖函数
236
+ // 滚动触底防抖函数。注意需要pageSize要够大,否则不会触发滚动条滚动,也就不会翻页。建议用默认的20
235
237
  var debounceScrollor = useMemo(function () {
236
238
  var scroll = function scroll(e) {
237
239
  var start = e.target.scrollTop + e.target.offsetHeight;
@@ -241,7 +243,7 @@ var McSelect = /*#__PURE__*/forwardRef(function (props, ref) {
241
243
  loadOptions(searchValue, _current.current + 1);
242
244
  }
243
245
  };
244
- return Utils.debounce(scroll, 350);
246
+ return debounce(scroll, 350);
245
247
  }, [loadOptions, searchValue]);
246
248
 
247
249
  // 下拉列表滚动时的回调
@@ -297,7 +299,7 @@ var McSelect = /*#__PURE__*/forwardRef(function (props, ref) {
297
299
  value: selectValue,
298
300
  onChange: change,
299
301
  labelInValue: labelInValue,
300
- options: selectOptions,
302
+ options: filteredOptions,
301
303
  disabled: disabled,
302
304
  placeholder: "\u8BF7\u9009\u62E9",
303
305
  showSearch: true,
@@ -0,0 +1,2 @@
1
+ declare const _default: () => import("react/jsx-runtime").JSX.Element;
2
+ export default _default;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * title: 设置本身宽度以支持ellipsis
3
+ * description: 在McTag上设置宽度,以支持ellipsis。同时支持复制
4
+ */
5
+ import McTag from "../index";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export default (function () {
8
+ var uri = '/recommend/page/123/page/123/page/123';
9
+ return /*#__PURE__*/_jsx(McTag, {
10
+ style: {
11
+ maxWidth: 150
12
+ },
13
+ ellipsis: true,
14
+ color: "blue",
15
+ copyable: true,
16
+ children: uri
17
+ });
18
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: () => import("react/jsx-runtime").JSX.Element;
2
+ export default _default;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * title: 设置父组件宽度以支持ellipsis
3
+ * description: 在McTag上设置宽度,以支持ellipsis。同时支持复制
4
+ */
5
+ import McTag from "../index";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export default (function () {
8
+ var uri = '/recommend/page/123/page/123/page/123';
9
+ return /*#__PURE__*/_jsx("div", {
10
+ style: {
11
+ width: 200
12
+ },
13
+ children: /*#__PURE__*/_jsx(McTag, {
14
+ color: "blue",
15
+ copyable: true,
16
+ ellipsis: true,
17
+ children: uri
18
+ })
19
+ });
20
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: () => import("react/jsx-runtime").JSX.Element;
2
+ export default _default;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * title: 支持复制
3
+ * description: 普通McTag模式也支持复制
4
+ */
5
+ import { ExclamationCircleOutlined } from 'much-icons';
6
+ import McTag from "../index";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export default (function () {
9
+ return /*#__PURE__*/_jsx(McTag, {
10
+ style: {
11
+ maxWidth: 150
12
+ },
13
+ ellipsis: true,
14
+ color: "warning",
15
+ icon: /*#__PURE__*/_jsx(ExclamationCircleOutlined, {}),
16
+ copyable: true,
17
+ children: "click me to copy"
18
+ });
19
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: () => import("react/jsx-runtime").JSX.Element;
2
+ export default _default;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * title: 自定义ellipsis属性
3
+ */
4
+ import McTag from "../index";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ export default (function () {
7
+ var uri = '/recommend/page/123/page/123/page/123';
8
+ return /*#__PURE__*/_jsx("div", {
9
+ style: {
10
+ width: 200
11
+ },
12
+ children: /*#__PURE__*/_jsx(McTag, {
13
+ color: "blue",
14
+ copyable: true,
15
+ ellipsis: {
16
+ tooltip: true,
17
+ suffix: '等'
18
+ },
19
+ children: uri
20
+ })
21
+ });
22
+ });
@@ -0,0 +1,22 @@
1
+ /// <reference types="react" />
2
+ import { TagProps } from 'antd';
3
+ import { EllipsisConfig } from 'antd/es/typography/Base';
4
+ interface McTagProps {
5
+ /**
6
+ * @description 为true时,使用默认行为,展示tooltip;为对象时,传递给Typography.Text的ellipsis属性
7
+ * @default undefined
8
+ */
9
+ ellipsis?: true | EllipsisConfig;
10
+ /**
11
+ * @description 是否可复制
12
+ * @default 默认为false
13
+ */
14
+ copyable?: boolean;
15
+ /**
16
+ * @description 省略模式时,设置文字样式。(一般用不上)
17
+ * @default undefined
18
+ */
19
+ ellipsisTextStyle?: React.CSSProperties;
20
+ }
21
+ declare const McTag: (props: TagProps & McTagProps) => import("react/jsx-runtime").JSX.Element;
22
+ export default McTag;
@@ -0,0 +1,59 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ var _excluded = ["ellipsis", "children", "copyable", "onClick", "ellipsisTextStyle"],
4
+ _excluded2 = ["style"];
5
+ import { message, Tag, Typography } from 'antd';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ var McTag = function McTag(props) {
8
+ var ellipsis = props.ellipsis,
9
+ children = props.children,
10
+ copyable = props.copyable,
11
+ _onClick = props.onClick,
12
+ ellipsisTextStyle = props.ellipsisTextStyle,
13
+ tagProps = _objectWithoutProperties(props, _excluded);
14
+ var useEllipsis = typeof children === 'string' && !!ellipsis;
15
+ var style = tagProps.style,
16
+ restTagProps = _objectWithoutProperties(tagProps, _excluded2);
17
+ var renderChildren = function renderChildren() {
18
+ if (useEllipsis) {
19
+ return /*#__PURE__*/_jsx(Typography.Text, {
20
+ style: _objectSpread({
21
+ color: 'inherit',
22
+ fontSize: 'inherit'
23
+ }, ellipsisTextStyle),
24
+ ellipsis: ellipsis === true ? {
25
+ tooltip: children
26
+ } : ellipsis,
27
+ children: children
28
+ });
29
+ }
30
+ return children;
31
+ };
32
+ return /*#__PURE__*/_jsx(Tag, _objectSpread(_objectSpread({
33
+ onClick: function onClick(e) {
34
+ if (copyable) {
35
+ var copyText = typeof copyable === 'string' ? copyable : children;
36
+ if (!(typeof copyText === 'string')) {
37
+ if (process.env.NODE_ENV === 'development') throw Error('copyable prop only support string children or string copyable');
38
+ return;
39
+ }
40
+ if (navigator.clipboard) {
41
+ navigator.clipboard.writeText(copyText).then(function () {
42
+ return message.success('复制成功!');
43
+ }, function () {
44
+ return message.error('复制失败!');
45
+ });
46
+ } else {
47
+ message.error('当前域名无权限使用剪切板');
48
+ }
49
+ }
50
+ if (_onClick) _onClick(e);
51
+ },
52
+ style: _objectSpread({
53
+ maxWidth: useEllipsis ? '100%' : 'none'
54
+ }, style)
55
+ }, restTagProps), {}, {
56
+ children: renderChildren()
57
+ }));
58
+ };
59
+ export default McTag;
@@ -32,7 +32,8 @@
32
32
  },
33
33
  "Radio": {
34
34
  "buttonLineBg": "rgb(216, 216, 216)",
35
- "buttonLineHeight": 16
35
+ "buttonLineHeight": 16,
36
+ "buttonCheckedBorderColorDisabled": "rgb(216, 216, 216)"
36
37
  }
37
38
  }
38
39
  }