@kdcloudjs/kdesign 1.7.18 → 1.7.20

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 (88) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/dist/kdesign-complete.less +362 -244
  3. package/dist/kdesign.css +270 -239
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +716 -788
  6. package/dist/kdesign.js.map +1 -1
  7. package/dist/kdesign.min.css +2 -2
  8. package/dist/kdesign.min.js +6 -6
  9. package/dist/kdesign.min.js.map +1 -1
  10. package/es/button/style/token.less +1 -0
  11. package/es/carousel/style/index.css +4 -0
  12. package/es/carousel/style/index.less +31 -5
  13. package/es/cascader/cascader.js +4 -2
  14. package/es/checkbox/checkbox.js +5 -5
  15. package/es/checkbox/style/index.css +2 -0
  16. package/es/checkbox/style/index.less +2 -0
  17. package/es/checkbox/style/token.less +1 -1
  18. package/es/city-picker/city-picker.d.ts +3 -23
  19. package/es/city-picker/city-picker.js +351 -124
  20. package/es/city-picker/interface.d.ts +57 -0
  21. package/es/city-picker/interface.js +3 -0
  22. package/es/city-picker/option.d.ts +4 -0
  23. package/es/city-picker/option.js +42 -0
  24. package/es/city-picker/style/index.css +264 -239
  25. package/es/city-picker/style/index.less +262 -218
  26. package/es/city-picker/style/mixin.less +26 -3
  27. package/es/city-picker/style/token.less +42 -14
  28. package/es/collapse/collapse.d.ts +1 -1
  29. package/es/config-provider/compDefaultProps.d.ts +13 -0
  30. package/es/config-provider/compDefaultProps.js +13 -0
  31. package/es/dropdown/dropdown.d.ts +1 -0
  32. package/es/dropdown/dropdown.js +7 -2
  33. package/es/input/style/token.less +2 -8
  34. package/es/upload/upload.js +87 -63
  35. package/lib/button/style/token.less +1 -0
  36. package/lib/carousel/style/index.css +4 -0
  37. package/lib/carousel/style/index.less +31 -5
  38. package/lib/cascader/cascader.js +4 -2
  39. package/lib/checkbox/checkbox.js +4 -4
  40. package/lib/checkbox/style/index.css +2 -0
  41. package/lib/checkbox/style/index.less +2 -0
  42. package/lib/checkbox/style/token.less +1 -1
  43. package/lib/city-picker/city-picker.d.ts +3 -23
  44. package/lib/city-picker/city-picker.js +350 -123
  45. package/lib/city-picker/interface.d.ts +57 -0
  46. package/lib/city-picker/interface.js +11 -0
  47. package/lib/city-picker/option.d.ts +4 -0
  48. package/lib/city-picker/option.js +55 -0
  49. package/lib/city-picker/style/index.css +264 -239
  50. package/lib/city-picker/style/index.less +262 -218
  51. package/lib/city-picker/style/mixin.less +26 -3
  52. package/lib/city-picker/style/token.less +42 -14
  53. package/lib/collapse/collapse.d.ts +1 -1
  54. package/lib/config-provider/compDefaultProps.d.ts +13 -0
  55. package/lib/config-provider/compDefaultProps.js +13 -0
  56. package/lib/dropdown/dropdown.d.ts +1 -0
  57. package/lib/dropdown/dropdown.js +7 -2
  58. package/lib/input/style/token.less +2 -8
  59. package/lib/upload/upload.js +86 -62
  60. package/package.json +1 -1
  61. package/es/city-picker/city-group.d.ts +0 -8
  62. package/es/city-picker/city-group.js +0 -38
  63. package/es/city-picker/city-list.d.ts +0 -12
  64. package/es/city-picker/city-list.js +0 -55
  65. package/es/city-picker/city-panel-item.d.ts +0 -13
  66. package/es/city-picker/city-panel-item.js +0 -22
  67. package/es/city-picker/city-panel.d.ts +0 -17
  68. package/es/city-picker/city-panel.js +0 -153
  69. package/es/city-picker/city-search-panel.d.ts +0 -9
  70. package/es/city-picker/city-search-panel.js +0 -44
  71. package/es/city-picker/no-data.d.ts +0 -3
  72. package/es/city-picker/no-data.js +0 -18
  73. package/es/city-picker/utils/grouping.d.ts +0 -7
  74. package/es/city-picker/utils/grouping.js +0 -24
  75. package/lib/city-picker/city-group.d.ts +0 -8
  76. package/lib/city-picker/city-group.js +0 -51
  77. package/lib/city-picker/city-list.d.ts +0 -12
  78. package/lib/city-picker/city-list.js +0 -68
  79. package/lib/city-picker/city-panel-item.d.ts +0 -13
  80. package/lib/city-picker/city-panel-item.js +0 -35
  81. package/lib/city-picker/city-panel.d.ts +0 -17
  82. package/lib/city-picker/city-panel.js +0 -166
  83. package/lib/city-picker/city-search-panel.d.ts +0 -9
  84. package/lib/city-picker/city-search-panel.js +0 -57
  85. package/lib/city-picker/no-data.d.ts +0 -3
  86. package/lib/city-picker/no-data.js +0 -31
  87. package/lib/city-picker/utils/grouping.d.ts +0 -7
  88. package/lib/city-picker/utils/grouping.js +0 -30
@@ -9,157 +9,384 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.default = void 0;
11
11
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
12
- var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/values"));
13
- var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
14
- var _startsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/starts-with"));
12
+ var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
13
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
15
15
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
16
17
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
17
18
  var _react = _interopRequireWildcard(require("react"));
19
+ var _hooks = require("../_utils/hooks");
18
20
  var _classnames = _interopRequireDefault(require("classnames"));
19
21
  var _ConfigContext = _interopRequireDefault(require("../config-provider/ConfigContext"));
20
- var _cityPanelItem = _interopRequireDefault(require("./city-panel-item"));
21
- var _cityPanel = _interopRequireDefault(require("./city-panel"));
22
- var _citySearchPanel = _interopRequireDefault(require("./city-search-panel"));
22
+ var _utils = require("../_utils");
23
+ var _index = require("../index");
23
24
  var _usePopper = _interopRequireDefault(require("../_utils/usePopper"));
25
+ var _option = _interopRequireDefault(require("./option"));
26
+ var _escapeRegExp = _interopRequireDefault(require("lodash/escapeRegExp"));
24
27
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
- var CityPicker = function CityPicker(_ref) {
27
- var cityList = _ref.cityList,
28
- className = _ref.className,
29
- commons = _ref.commons,
30
- disabled = _ref.disabled,
31
- groups = _ref.groups,
32
- inputClassName = _ref.inputClassName,
33
- inputStyle = _ref.inputStyle,
34
- placeholder = _ref.placeholder,
35
- showTitle = _ref.showTitle,
36
- style = _ref.style,
37
- title = _ref.title;
29
+ var tabsData = [{
30
+ id: 'domestic',
31
+ name: '国内'
32
+ }, {
33
+ id: 'foreign',
34
+ name: '国际/中国港澳台'
35
+ }];
36
+ var InternalSelect = function InternalSelect(props, ref) {
37
+ var _context, _classNames3, _classNames5;
38
38
  var _useContext = (0, _react.useContext)(_ConfigContext.default),
39
39
  getPrefixCls = _useContext.getPrefixCls,
40
- prefixCls = _useContext.prefixCls;
41
- var _useState = (0, _react.useState)(''),
40
+ prefixCls = _useContext.prefixCls,
41
+ userDefaultProps = _useContext.compDefaultProps;
42
+ var selectProps = (0, _utils.getCompProps)('CityPicker', userDefaultProps, props);
43
+ var type = selectProps.type,
44
+ size = selectProps.size,
45
+ value = selectProps.value,
46
+ className = selectProps.className,
47
+ defaultOpen = selectProps.defaultOpen,
48
+ disabled = selectProps.disabled,
49
+ borderType = selectProps.borderType,
50
+ _selectProps$showArro = selectProps.showArrow,
51
+ showArrow = _selectProps$showArro === void 0 ? true : _selectProps$showArro,
52
+ allowClear = selectProps.allowClear,
53
+ customPrefixcls = selectProps.prefixCls,
54
+ onFocus = selectProps.onFocus,
55
+ onBlur = selectProps.onBlur,
56
+ onClear = selectProps.onClear,
57
+ onVisibleChange = selectProps.onVisibleChange,
58
+ onChange = selectProps.onChange,
59
+ onSearch = selectProps.onSearch,
60
+ defaultValue = selectProps.defaultValue,
61
+ placeholder = selectProps.placeholder,
62
+ _selectProps$dropdown = selectProps.dropdownStyle,
63
+ dropdownStyle = _selectProps$dropdown === void 0 ? {} : _selectProps$dropdown,
64
+ style = selectProps.style,
65
+ clearIcon = selectProps.clearIcon,
66
+ loading = selectProps.loading,
67
+ showDescription = selectProps.showDescription,
68
+ description = selectProps.description,
69
+ optionHighlightProps = selectProps.optionHighlightProps,
70
+ _selectProps$popperSt = selectProps.popperStyle,
71
+ popperStyle = _selectProps$popperSt === void 0 ? {} : _selectProps$popperSt,
72
+ _selectProps$commonLi = selectProps.commonList,
73
+ commonList = _selectProps$commonLi === void 0 ? [] : _selectProps$commonLi,
74
+ _selectProps$domestic = selectProps.domesticList,
75
+ domesticList = _selectProps$domestic === void 0 ? [] : _selectProps$domestic,
76
+ _selectProps$foreignL = selectProps.foreignList,
77
+ foreignList = _selectProps$foreignL === void 0 ? [] : _selectProps$foreignL,
78
+ itemRender = selectProps.itemRender;
79
+ var _useMergedState = (0, _hooks.useMergedState)(undefined, {
80
+ value: value,
81
+ defaultValue: defaultValue
82
+ }),
83
+ _useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2),
84
+ initValue = _useMergedState2[0],
85
+ setInitValue = _useMergedState2[1];
86
+ var innerRef = (0, _react.useRef)();
87
+ var selectRef = ref || innerRef;
88
+ var searchRef = (0, _react.useRef)(null); // 搜索框ref
89
+ var selectionRef = (0, _react.useRef)(null);
90
+ var clearRef = (0, _react.useRef)(null);
91
+ var _useState = (0, _react.useState)(typeof props.visible === 'undefined' ? !!defaultOpen : !!props.visible),
42
92
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
43
- inputVal = _useState2[0],
44
- setInputVal = _useState2[1];
93
+ optionShow = _useState2[0],
94
+ setOptionShow = _useState2[1];
45
95
  var _useState3 = (0, _react.useState)(''),
46
96
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
47
- additionalVal = _useState4[0],
48
- setAdditionalVal = _useState4[1];
97
+ searchValue = _useState4[0],
98
+ setSearchValue = _useState4[1];
49
99
  var _useState5 = (0, _react.useState)(false),
50
100
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
51
- popperVisible = _useState6[0],
52
- setPopperVisible = _useState6[1];
53
- var inputRef = (0, _react.useRef)(null);
54
- var allCity = (0, _react.useRef)([]);
101
+ focusd = _useState6[0],
102
+ setFocusd = _useState6[1];
103
+ var _useState7 = (0, _react.useState)(null),
104
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
105
+ seletedCity = _useState8[0],
106
+ setSeletedCity = _useState8[1];
107
+ var _useState9 = (0, _react.useState)('domestic'),
108
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
109
+ tabsValue = _useState10[0],
110
+ setTabsValue = _useState10[1];
111
+ var isDomestic = function isDomestic(type) {
112
+ return type === 'domestic';
113
+ };
114
+ var selectPrefixCls = getPrefixCls(prefixCls, 'city-picker', customPrefixcls);
115
+ var cityPickerCls = (0, _classnames.default)(selectPrefixCls, className, (0, _defineProperty2.default)({}, "".concat(selectPrefixCls, "-visible"), optionShow));
116
+ var selectionCls = (0, _classnames.default)((0, _defineProperty2.default)({}, "".concat(selectPrefixCls, "-selector"), true));
117
+ // 公共样式
118
+ var commCls = (0, _classnames.default)((_classNames3 = {}, (0, _defineProperty2.default)(_classNames3, "".concat(selectPrefixCls, "-bordered"), borderType === 'bordered'), (0, _defineProperty2.default)(_classNames3, "".concat(selectPrefixCls, "-underline"), borderType === 'underline'), (0, _defineProperty2.default)(_classNames3, "".concat(selectPrefixCls, "-borderless"), borderType === 'none'), (0, _defineProperty2.default)(_classNames3, (0, _concat.default)(_context = "".concat(selectPrefixCls, "-size-")).call(_context, size), size), (0, _defineProperty2.default)(_classNames3, "".concat(selectPrefixCls, "-wrapper"), true), (0, _defineProperty2.default)(_classNames3, "".concat(selectPrefixCls, "-show-search"), focusd), _classNames3));
55
119
  (0, _react.useEffect)(function () {
56
- var _context;
57
- if (!cityList) {
58
- return;
120
+ var _context2;
121
+ if (typeof value === 'undefined') return;
122
+ var cityList = (0, _concat.default)(_context2 = []).call(_context2, (0, _toConsumableArray2.default)(commonList), (0, _toConsumableArray2.default)(domesticList), (0, _toConsumableArray2.default)(foreignList));
123
+ var city = (0, _find.default)(cityList).call(cityList, function (city) {
124
+ return city.id === value;
125
+ });
126
+ if (city) {
127
+ setSeletedCity(city);
59
128
  }
60
- var domestic = cityList.domestic,
61
- foreign = cityList.foreign;
62
- allCity.current = (0, _concat.default)(_context = []).call(_context, (0, _toConsumableArray2.default)((0, _values.default)(domestic)), (0, _toConsumableArray2.default)((0, _values.default)(foreign))).reduce(function (arr, current) {
63
- return (0, _concat.default)(arr).call(arr, current);
64
- }, []);
65
- }, [cityList]);
66
- var cityPickerPrefixCls = getPrefixCls(prefixCls, 'city-picker');
67
- var containerCls = (0, _classnames.default)("".concat(cityPickerPrefixCls, "-container"), className);
68
- var contentCls = (0, _classnames.default)("".concat(cityPickerPrefixCls, "-content"));
69
- var titleCls = (0, _classnames.default)("".concat(cityPickerPrefixCls, "-title"));
70
- var additionalInfoCls = (0, _classnames.default)("".concat(cityPickerPrefixCls, "-info"));
71
- var inputCls = (0, _classnames.default)("".concat(cityPickerPrefixCls, "-input"), inputClassName);
72
- var arrowCls = (0, _classnames.default)('kdicon kdicon-arrow-down', "".concat(cityPickerPrefixCls, "-arrow"), {
73
- 'arrow-up': popperVisible
74
- });
75
- var handleContainerClick = function handleContainerClick() {
76
- var _a;
77
- if (document.activeElement === inputRef.current) {
78
- return;
129
+ }, [commonList, domesticList, foreignList, value]);
130
+ (0, _react.useEffect)(function () {
131
+ if (typeof props.visible !== 'undefined') {
132
+ setOptionShow(props.visible);
133
+ }
134
+ }, [props.visible]);
135
+ (0, _react.useEffect)(function () {
136
+ if (optionShow === false) {
137
+ handleClear();
79
138
  }
80
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
139
+ }, [optionShow]);
140
+ var handleFocus = (0, _react.useCallback)(function (e) {
141
+ e.stopPropagation();
142
+ setFocusd(true);
143
+ onFocus && onFocus(e);
144
+ }, [onFocus]);
145
+ var handleBlur = (0, _react.useCallback)(function (e) {
146
+ e.stopPropagation();
147
+ setFocusd(false);
148
+ onBlur && onBlur(e);
149
+ }, [onBlur]);
150
+ (0, _react.useEffect)(function () {
151
+ selectionRef.current.addEventListener('mouseup', function (e) {
152
+ var _a;
153
+ var isCloseBtn = ((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.className.indexOf('kd-tag-close-icon')) > -1;
154
+ if (isCloseBtn) {
155
+ e.stopPropagation();
156
+ }
157
+ });
158
+ }, []);
159
+ // 输入框变化搜索内容
160
+ var handleSearchChange = (0, _react.useCallback)(function (event) {
161
+ var val = event.currentTarget.value;
162
+ setOptionShow(true);
163
+ setSearchValue(val);
164
+ onSearch === null || onSearch === void 0 ? void 0 : onSearch(val);
165
+ }, [onSearch]);
166
+ // 清除搜索内容
167
+ var handleClear = (0, _react.useCallback)(function () {
168
+ if (searchRef.current) {
169
+ searchRef.current.value = '';
170
+ setSearchValue('');
171
+ }
172
+ }, [searchRef]);
173
+ // 清空选择器内容
174
+ var handleReset = function handleReset(e) {
175
+ e.stopPropagation();
176
+ onClear && onClear('');
177
+ setInitValue('');
178
+ setSeletedCity(null);
179
+ setSearchValue('');
180
+ onChange && onChange(undefined, '');
181
+ };
182
+ // 渲染后缀图标
183
+ var renderSuffix = function renderSuffix() {
184
+ var _classNames4;
185
+ if (disabled) return null;
186
+ var suffixIcon = selectProps.suffixIcon;
187
+ var arrowIconCls = (0, _classnames.default)((_classNames4 = {}, (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow"), true), (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow-up"), optionShow), (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow-down"), !optionShow), (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow-focus"), optionShow), _classNames4));
188
+ var iconShow = allowClear && !disabled && ((initValue !== null && initValue !== void 0 ? initValue : '') !== '' || searchValue);
189
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, iconShow && /*#__PURE__*/_react.default.createElement("span", {
190
+ onClick: handleReset,
191
+ onMouseDown: function onMouseDown(e) {
192
+ return e.preventDefault();
193
+ },
194
+ className: "".concat(selectPrefixCls, "-icon-clear"),
195
+ ref: clearRef
196
+ }, clearIcon || /*#__PURE__*/_react.default.createElement(_index.Icon, {
197
+ type: "close-solid"
198
+ })), showArrow && /*#__PURE__*/_react.default.createElement("span", {
199
+ className: arrowIconCls
200
+ }, suffixIcon || /*#__PURE__*/_react.default.createElement(_index.Icon, {
201
+ type: "arrow-down"
202
+ })));
81
203
  };
82
- var handleCitySelect = function handleCitySelect(city) {
83
- var _context2, _context3;
84
- setInputVal(city.name || '');
85
- var otherInfoStr = city.country === '中国' ? "".concat(city.province) : (0, _concat.default)(_context2 = (0, _concat.default)(_context3 = "".concat(city.province)).call(_context3, city.province ? ',' : '')).call(_context2, city.country);
86
- setAdditionalVal(otherInfoStr);
87
- setPopperVisible(false);
204
+ // 下拉列表为空时显示的内容
205
+ var renderNotContent = function renderNotContent(msg) {
206
+ var notFoundContent = selectProps.notFoundContent;
207
+ var emptyContent = notFoundContent || msg;
208
+ return /*#__PURE__*/_react.default.createElement("div", {
209
+ className: "".concat(selectPrefixCls, "-dropdown-empty")
210
+ }, emptyContent);
211
+ };
212
+ var getHighlightText = function getHighlightText(text, inputValue) {
213
+ if (!inputValue || !text) return text;
214
+ var regex = new RegExp(Array.isArray(inputValue) ? (0, _map.default)(inputValue).call(inputValue, function (item) {
215
+ return "(".concat((0, _escapeRegExp.default)(item), ")");
216
+ }).join('|') : "(".concat((0, _escapeRegExp.default)(inputValue), ")"), 'i');
217
+ var strArr = text === null || text === void 0 ? void 0 : text.split(regex);
218
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, strArr === null || strArr === void 0 ? void 0 : (0, _map.default)(strArr).call(strArr, function (item, index) {
219
+ return (regex === null || regex === void 0 ? void 0 : regex.test(item)) ? /*#__PURE__*/_react.default.createElement("span", {
220
+ key: index,
221
+ className: "".concat(selectPrefixCls, "-highlight")
222
+ }, item) : /*#__PURE__*/_react.default.createElement("span", {
223
+ key: index
224
+ }, item);
225
+ }));
226
+ };
227
+ var handleOption = function handleOption(city) {
228
+ handleVisibleChange(false);
229
+ (city === null || city === void 0 ? void 0 : city.id) !== initValue && (onChange === null || onChange === void 0 ? void 0 : onChange(city === null || city === void 0 ? void 0 : city.id, city));
230
+ if (typeof value === 'undefined') {
231
+ setSeletedCity(city);
232
+ setInitValue(city === null || city === void 0 ? void 0 : city.id);
233
+ }
88
234
  };
89
- var handleFocus = function handleFocus() {
90
- if (popperVisible) {
91
- return;
235
+ var renderNodeList = function renderNodeList(data, notContent) {
236
+ if (!data.length) {
237
+ return renderNotContent(notContent);
92
238
  }
93
- setPopperVisible(true);
239
+ return /*#__PURE__*/_react.default.createElement("div", {
240
+ className: "".concat(selectPrefixCls, "-list")
241
+ }, (0, _map.default)(data).call(data, function (item) {
242
+ return /*#__PURE__*/_react.default.createElement(_option.default, {
243
+ key: item.id,
244
+ value: initValue,
245
+ city: item,
246
+ renderCityInfo: renderCityInfo,
247
+ onChangeSelect: handleOption,
248
+ itemRender: itemRender
249
+ }, searchValue ? getHighlightText(item === null || item === void 0 ? void 0 : item.name, (item === null || item === void 0 ? void 0 : item[optionHighlightProps]) || searchValue) : item === null || item === void 0 ? void 0 : item.name);
250
+ }));
94
251
  };
95
- var handleChange = function handleChange(evt) {
96
- var value = evt.target.value;
97
- setAdditionalVal('');
98
- setInputVal(value);
252
+ var renderLoading = function renderLoading() {
253
+ return /*#__PURE__*/_react.default.createElement("div", {
254
+ className: "".concat(selectPrefixCls, "-dropdown-loading")
255
+ }, /*#__PURE__*/_react.default.createElement(_index.Spin, {
256
+ type: "container"
257
+ }));
99
258
  };
100
- var handlePopperVisibleChange = function handlePopperVisibleChange(visible) {
101
- if (!visible) {
102
- setPopperVisible(false);
259
+ var toggleTabPane = function toggleTabPane(type) {
260
+ setTabsValue(type);
261
+ };
262
+ // 渲染下拉列表框
263
+ var renderContent = function renderContent() {
264
+ return loading ? renderLoading() : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, searchValue ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isDomestic(type) && /*#__PURE__*/_react.default.createElement(_index.Tabs, {
265
+ noContainer: true,
266
+ onChange: toggleTabPane,
267
+ activeKey: tabsValue
268
+ }, (0, _map.default)(tabsData).call(tabsData, function (item) {
269
+ return /*#__PURE__*/_react.default.createElement(_index.Tabs.TabPane, {
270
+ key: item.id,
271
+ tab: item.name
272
+ }, item);
273
+ })), tabsValue === 'domestic' ? renderNodeList(domesticList, '暂无数据') : renderNodeList(foreignList, '暂无数据')) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !!commonList.length && /*#__PURE__*/_react.default.createElement("div", {
274
+ className: "".concat(selectPrefixCls, "-dropdown-common")
275
+ }, "\u5E38\u7528"), renderNodeList(commonList, '无常用城市')));
276
+ };
277
+ var renderCityInfo = (0, _react.useCallback)(function (data) {
278
+ var flag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
279
+ var symbol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ', ';
280
+ if (!data) return null;
281
+ if (isDomestic(type)) {
282
+ var _context3;
283
+ return (0, _concat.default)(_context3 = "".concat(flag && (data === null || data === void 0 ? void 0 : data.province) ? symbol : '')).call(_context3, data === null || data === void 0 ? void 0 : data.province);
284
+ } else {
285
+ var _context4, _context5, _context6;
286
+ return (0, _concat.default)(_context4 = (0, _concat.default)(_context5 = (0, _concat.default)(_context6 = "".concat(flag && (data === null || data === void 0 ? void 0 : data.province) ? symbol : '')).call(_context6, data === null || data === void 0 ? void 0 : data.province)).call(_context5, (data === null || data === void 0 ? void 0 : data.country) ? symbol : '')).call(_context4, data === null || data === void 0 ? void 0 : data.country);
103
287
  }
288
+ }, [type]);
289
+ var renderSingle = function renderSingle() {
290
+ var hiddenStyle = !!searchValue || (initValue !== null && initValue !== void 0 ? initValue : '') !== '' ? {
291
+ visibility: 'hidden'
292
+ } : undefined;
293
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
294
+ className: singleCls,
295
+ ref: selectionRef
296
+ }, /*#__PURE__*/_react.default.createElement("div", {
297
+ className: "".concat(selectPrefixCls, "-content")
298
+ }, /*#__PURE__*/_react.default.createElement("span", {
299
+ className: "".concat(selectPrefixCls, "-content-search")
300
+ }, /*#__PURE__*/_react.default.createElement("input", {
301
+ ref: searchRef,
302
+ value: searchValue,
303
+ className: "".concat(selectPrefixCls, "-content-search-input"),
304
+ onChange: handleSearchChange,
305
+ onFocus: handleFocus,
306
+ onBlur: handleBlur,
307
+ readOnly: !!disabled
308
+ }), !searchValue && /*#__PURE__*/_react.default.createElement("span", {
309
+ className: "".concat(selectPrefixCls, "-content-item"),
310
+ title: seletedCity === null || seletedCity === void 0 ? void 0 : seletedCity.name
311
+ }, seletedCity === null || seletedCity === void 0 ? void 0 : seletedCity.name)), !searchValue && /*#__PURE__*/_react.default.createElement("span", {
312
+ className: "".concat(selectPrefixCls, "-content-info")
313
+ }, renderCityInfo(seletedCity))), /*#__PURE__*/_react.default.createElement("span", {
314
+ className: "".concat(selectPrefixCls, "-placeholder"),
315
+ style: hiddenStyle
316
+ }, placeholder), /*#__PURE__*/_react.default.createElement("span", {
317
+ className: "".concat(selectPrefixCls, "-suffix")
318
+ }, renderSuffix())));
104
319
  };
105
- var inputSelector = /*#__PURE__*/_react.default.createElement("div", {
106
- className: containerCls,
107
- style: style,
108
- onClick: handleContainerClick
109
- }, showTitle && /*#__PURE__*/_react.default.createElement("div", {
110
- className: titleCls
111
- }, title), /*#__PURE__*/_react.default.createElement("div", {
112
- className: contentCls
113
- }, /*#__PURE__*/_react.default.createElement("input", {
114
- ref: inputRef,
115
- type: "text",
116
- readOnly: disabled,
117
- onChange: handleChange,
118
- placeholder: placeholder,
119
- style: inputStyle,
120
- className: inputCls,
121
- title: inputVal,
122
- value: inputVal,
123
- onFocus: handleFocus
124
- }), /*#__PURE__*/_react.default.createElement("span", {
125
- className: additionalInfoCls
126
- }, additionalVal), /*#__PURE__*/_react.default.createElement("i", {
127
- className: arrowCls
128
- })));
129
- var cityPanel = /*#__PURE__*/_react.default.createElement(_cityPanel.default, {
130
- commons: commons,
131
- groups: groups,
132
- cityList: cityList,
133
- onSelect: handleCitySelect
134
- });
135
- var getSearchResults = function getSearchResults() {
136
- var _context4;
137
- if (!allCity.current || allCity.current.length === 0 || !inputVal) {
138
- return [];
320
+ var singleCls = (0, _classnames.default)(commCls, (_classNames5 = {}, (0, _defineProperty2.default)(_classNames5, "".concat(selectPrefixCls, "-disabled"), disabled), (0, _defineProperty2.default)(_classNames5, "".concat(selectPrefixCls, "-focused"), !disabled && focusd || optionShow), _classNames5));
321
+ (0, _react.useEffect)(function () {
322
+ if (optionShow && !disabled) {
323
+ var onDropdownVisibleChange = selectProps.onDropdownVisibleChange;
324
+ onDropdownVisibleChange && onDropdownVisibleChange(true);
139
325
  }
140
- return (0, _filter.default)(_context4 = allCity.current).call(_context4, function (city) {
326
+ }, [optionShow]);
327
+ (0, _react.useEffect)(function () {
328
+ var _a;
329
+ var fn = function fn(e) {
330
+ e.stopPropagation();
331
+ };
332
+ (_a = clearRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('mouseup', fn);
333
+ return function () {
141
334
  var _a;
142
- return (_a = city.name) === null || _a === void 0 ? void 0 : (0, _startsWith.default)(_a).call(_a, inputVal);
143
- });
335
+ (_a = clearRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('mouseup', fn);
336
+ };
337
+ }, [initValue]);
338
+ var renderCityPicker = function renderCityPicker() {
339
+ return /*#__PURE__*/_react.default.createElement("div", {
340
+ className: cityPickerCls,
341
+ ref: selectRef,
342
+ style: style
343
+ }, showDescription && /*#__PURE__*/_react.default.createElement("span", {
344
+ className: "".concat(selectPrefixCls, "-description")
345
+ }, description), /*#__PURE__*/_react.default.createElement("span", {
346
+ className: selectionCls,
347
+ tabIndex: disabled ? -1 : 0,
348
+ onFocus: function onFocus() {
349
+ var _a;
350
+ return (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.focus();
351
+ },
352
+ onBlur: function onBlur() {
353
+ var _a;
354
+ return (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.blur();
355
+ }
356
+ }, renderSingle()));
144
357
  };
145
- var searchPanel = /*#__PURE__*/_react.default.createElement(_citySearchPanel.default, {
146
- keyword: inputVal,
147
- data: getSearchResults(),
148
- onSelect: handleCitySelect
149
- });
150
- var popperProps = {
151
- visible: popperVisible,
152
- placement: 'bottomLeft',
153
- trigger: 'focus',
154
- prefixCls: "".concat(cityPickerPrefixCls, "-panel"),
155
- onVisibleChange: handlePopperVisibleChange
358
+ var catchStyle = function catchStyle() {
359
+ var _a;
360
+ if (selectRef === null || selectRef === void 0 ? void 0 : selectRef.current) {
361
+ var _ref = (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect(),
362
+ width = _ref.width;
363
+ return (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({
364
+ minWidth: width,
365
+ maxWidth: 600
366
+ }, dropdownStyle), {
367
+ width: (dropdownStyle === null || dropdownStyle === void 0 ? void 0 : dropdownStyle.width) || 'auto',
368
+ zIndex: 1050
369
+ }), popperStyle);
370
+ }
156
371
  };
157
- var panel = inputVal.length > 0 ? searchPanel : cityPanel;
158
- return (0, _usePopper.default)(inputSelector, panel, popperProps);
372
+ var handleVisibleChange = function handleVisibleChange(visible) {
373
+ if (visible !== optionShow) {
374
+ props.visible === undefined && setOptionShow(visible);
375
+ onVisibleChange && onVisibleChange(visible);
376
+ }
377
+ };
378
+ var popperProps = (0, _extends2.default)((0, _extends2.default)({}, selectProps), {
379
+ prefixCls: "".concat(selectPrefixCls, "-dropdown"),
380
+ placement: 'bottomLeft',
381
+ popperStyle: catchStyle(),
382
+ defaultVisible: optionShow,
383
+ visible: optionShow,
384
+ onVisibleChange: handleVisibleChange,
385
+ clickToClose: !searchValue
386
+ });
387
+ return (0, _usePopper.default)(renderCityPicker(), renderContent(), popperProps);
159
388
  };
160
- CityPicker.displayName = 'CityPicker';
161
- CityPicker.PanelItem = _cityPanelItem.default;
162
- CityPicker.Panel = _cityPanel.default;
163
- CityPicker.SearchPanel = _citySearchPanel.default;
164
- var _default = CityPicker;
389
+ var Select = /*#__PURE__*/_react.default.forwardRef(InternalSelect);
390
+ Select.displayName = 'CityPicker';
391
+ var _default = Select;
165
392
  exports.default = _default;
@@ -0,0 +1,57 @@
1
+ import * as React from 'react';
2
+ export declare type City = {
3
+ id?: string | number;
4
+ country?: string;
5
+ province?: string;
6
+ name?: string;
7
+ [key: string]: any;
8
+ };
9
+ export declare const BorderTypes: ["none", "underline", "bordered"];
10
+ export declare type BorderType = typeof BorderTypes[number];
11
+ export declare const Sizes: ["large", "middle", "small"];
12
+ export declare type Size = typeof Sizes[number];
13
+ export declare type Type = 'domestic' | 'foreign';
14
+ export declare type CityList = Array<City>;
15
+ export interface CityPickerProps {
16
+ prefixCls?: string;
17
+ size?: Size;
18
+ borderType?: BorderType;
19
+ notFoundContent?: React.ReactNode;
20
+ showArrow?: boolean;
21
+ defaultOpen?: boolean;
22
+ allowClear?: boolean;
23
+ placeholder?: React.ReactNode;
24
+ type?: Type;
25
+ loading?: boolean;
26
+ domesticList?: CityList;
27
+ foreignList?: CityList;
28
+ commonList?: CityList;
29
+ className?: string;
30
+ disabled?: boolean;
31
+ style?: React.CSSProperties;
32
+ title?: string;
33
+ clearIcon?: React.ReactNode;
34
+ suffixIcon?: React.ReactNode;
35
+ optionHighlightProps?: string;
36
+ value?: string | number;
37
+ defaultValue?: string | number;
38
+ description?: React.ReactNode;
39
+ showDescription?: boolean;
40
+ onChange?: (value: string | number, city: City) => void;
41
+ onBlur?: (e: React.ChangeEvent<HTMLSpanElement>) => void;
42
+ onFocus?: () => void;
43
+ onSearch?: (value: string) => void;
44
+ onClear?: () => void;
45
+ itemRender?: (city: City) => React.ReactNode;
46
+ }
47
+ export interface ICityPickerOptionProps {
48
+ disabled?: boolean;
49
+ city?: City;
50
+ value?: string | number;
51
+ children?: React.ReactNode;
52
+ className?: string;
53
+ style?: React.CSSProperties;
54
+ onChangeSelect?: (city: City | null) => void;
55
+ renderCityInfo?: (city: City, flag?: boolean, symbol?: string) => React.ReactNode;
56
+ itemRender?: (city: City) => React.ReactNode;
57
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Sizes = exports.BorderTypes = void 0;
7
+ var _type = require("../_utils/type");
8
+ var BorderTypes = (0, _type.tuple)('none', 'underline', 'bordered');
9
+ exports.BorderTypes = BorderTypes;
10
+ var Sizes = (0, _type.tuple)('large', 'middle', 'small'); // 选择框大小
11
+ exports.Sizes = Sizes;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ICityPickerOptionProps } from './interface';
3
+ declare const Option: React.ForwardRefExoticComponent<ICityPickerOptionProps & React.RefAttributes<unknown>>;
4
+ export default Option;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
5
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
6
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _classnames = _interopRequireDefault(require("classnames"));
14
+ var _ConfigContext = _interopRequireDefault(require("../config-provider/ConfigContext"));
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ var InternalOption = function InternalOption(props, ref) {
18
+ var _classNames;
19
+ var optionRef = (0, _react.useRef)(null) || ref;
20
+ var children = props.children,
21
+ value = props.value,
22
+ disabled = props.disabled,
23
+ onChangeSelect = props.onChangeSelect,
24
+ _props$city = props.city,
25
+ city = _props$city === void 0 ? {} : _props$city,
26
+ renderCityInfo = props.renderCityInfo,
27
+ itemRender = props.itemRender;
28
+ var id = city.id,
29
+ name = city.name;
30
+ var _useContext = (0, _react.useContext)(_ConfigContext.default),
31
+ getPrefixCls = _useContext.getPrefixCls,
32
+ prefixCls = _useContext.prefixCls;
33
+ var selectOptionPrefixCls = getPrefixCls(prefixCls, 'city-picker-list-item');
34
+ var isSelected = id !== undefined ? id === value : false;
35
+ var optionCls = (0, _classnames.default)(selectOptionPrefixCls, (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(selectOptionPrefixCls, "-selected"), isSelected), (0, _defineProperty2.default)(_classNames, "".concat(selectOptionPrefixCls, "-disabled"), disabled), _classNames));
36
+ var handleClick = function handleClick(e) {
37
+ e.preventDefault();
38
+ if (disabled || id === undefined) return;
39
+ onChangeSelect === null || onChangeSelect === void 0 ? void 0 : onChangeSelect(city);
40
+ };
41
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
42
+ ref: optionRef,
43
+ className: optionCls,
44
+ title: name,
45
+ onClick: handleClick
46
+ }, typeof itemRender === 'function' ? itemRender(city) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
47
+ className: "".concat(selectOptionPrefixCls, "-content")
48
+ }, children), /*#__PURE__*/_react.default.createElement("div", {
49
+ className: "".concat(selectOptionPrefixCls, "-info")
50
+ }, renderCityInfo === null || renderCityInfo === void 0 ? void 0 : renderCityInfo(city, true)))));
51
+ };
52
+ var Option = /*#__PURE__*/_react.default.forwardRef(InternalOption);
53
+ Option.displayName = 'CityPickerOption';
54
+ var _default = Option;
55
+ exports.default = _default;