@kaiheila/ui-components 1.0.1 → 1.0.3

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.
@@ -2196,7 +2196,7 @@ const logic_models_react_namespaceObject = require("@kookapp/logic-models-react"
2196
2196
 
2197
2197
 
2198
2198
  const OptionList = _ref => {
2199
- var _visibleRange$visible;
2199
+ var _visibleRange$visible, _visibleRange$visible2;
2200
2200
  let {
2201
2201
  filterData,
2202
2202
  optionsStyle,
@@ -2205,7 +2205,9 @@ const OptionList = _ref => {
2205
2205
  labelKey = "label",
2206
2206
  valueKey = "value",
2207
2207
  loadComponent,
2208
- onSelect
2208
+ onSelect,
2209
+ onReachBottom,
2210
+ loading = false
2209
2211
  } = _ref;
2210
2212
  const containerRef = (0,external_react_namespaceObject.useRef)(null);
2211
2213
  const ids = (0,external_react_namespaceObject.useMemo)(() => filterData.map(item => item[valueKey]), [filterData, valueKey]);
@@ -2213,10 +2215,18 @@ const OptionList = _ref => {
2213
2215
  visibleRange
2214
2216
  } = (0,logic_models_react_namespaceObject.useListVirtualScroll)({
2215
2217
  ids,
2216
- heightRender: 34 // 注意:这里需要手动维护跟样式上的高度一致,如果不能维护一致的话就需要写动态高度逻辑
2218
+ heightRender: id => {
2219
+ if ((0,logic_models_react_namespaceObject.isSentinelId)(id)) {
2220
+ // 所有元素必须有高度,否则滚动位置无法计算到该元素
2221
+ return 1;
2222
+ }
2223
+ return 34;
2224
+ } // 注意:这里需要手动维护跟样式上的高度一致,如果不能维护一致的话就需要写动态高度逻辑
2217
2225
  }, {
2218
- containerRef
2226
+ containerRef,
2227
+ onReachBottom
2219
2228
  });
2229
+ const empty = (visibleRange === null || visibleRange === void 0 || (_visibleRange$visible = visibleRange.visibleIds) === null || _visibleRange$visible === void 0 ? void 0 : _visibleRange$visible.length) == 0 || (visibleRange === null || visibleRange === void 0 || (_visibleRange$visible2 = visibleRange.visibleIds) === null || _visibleRange$visible2 === void 0 ? void 0 : _visibleRange$visible2.every(id => (0,logic_models_react_namespaceObject.isSentinelId)(id)));
2220
2230
  return /*#__PURE__*/external_react_default().createElement("ul", {
2221
2231
  className: "selector-search-option theme-scroll-bar",
2222
2232
  style: optionsStyle,
@@ -2234,7 +2244,10 @@ const OptionList = _ref => {
2234
2244
  padding: 8,
2235
2245
  transform: "translateY(".concat(visibleRange === null || visibleRange === void 0 ? void 0 : visibleRange.topSpace, "px)")
2236
2246
  }
2237
- }, (visibleRange === null || visibleRange === void 0 || (_visibleRange$visible = visibleRange.visibleIds) === null || _visibleRange$visible === void 0 ? void 0 : _visibleRange$visible.length) > 0 ? visibleRange === null || visibleRange === void 0 ? void 0 : visibleRange.visibleIds.map((id, i) => {
2247
+ }, !empty ? visibleRange === null || visibleRange === void 0 ? void 0 : visibleRange.visibleIds.map((id, i) => {
2248
+ if ((0,logic_models_react_namespaceObject.isSentinelId)(id)) {
2249
+ return null;
2250
+ }
2238
2251
  const item = filterData.find(item => item[valueKey] === id);
2239
2252
  const label = item === null || item === void 0 ? void 0 : item[labelKey];
2240
2253
  const value = item === null || item === void 0 ? void 0 : item[valueKey];
@@ -2252,7 +2265,9 @@ const OptionList = _ref => {
2252
2265
  key: value + i,
2253
2266
  title: label
2254
2267
  }, renderOption ? renderOption(item) : label);
2255
- }) : /*#__PURE__*/external_react_default().createElement("li", {
2268
+ }) : loading ? /*#__PURE__*/external_react_default().createElement("li", {
2269
+ key: "none"
2270
+ }, "\u52A0\u8F7D\u4E2D...") : /*#__PURE__*/external_react_default().createElement("li", {
2256
2271
  key: "none"
2257
2272
  }, "\u6CA1\u6709\u4EFB\u4F55\u5185\u5BB9")));
2258
2273
  };
@@ -2279,7 +2294,9 @@ function selector_search_toPrimitive(t, r) { if ("object" != typeof t || !t) ret
2279
2294
 
2280
2295
  class SelectorSearch extends external_react_namespaceObject.Component {
2281
2296
  constructor(props) {
2297
+ var _this;
2282
2298
  super(props);
2299
+ _this = this;
2283
2300
  selector_search_defineProperty(this, "calcOptionsStyle", () => {
2284
2301
  const {
2285
2302
  current
@@ -2302,7 +2319,7 @@ class SelectorSearch extends external_react_namespaceObject.Component {
2302
2319
  showList: false,
2303
2320
  keyword: ''
2304
2321
  }, () => {
2305
- this.changeFilterData();
2322
+ this.changeFilterData(true);
2306
2323
  });
2307
2324
  document.removeEventListener('click', this.hide);
2308
2325
  });
@@ -2328,7 +2345,7 @@ class SelectorSearch extends external_react_namespaceObject.Component {
2328
2345
  this.setState({
2329
2346
  keyword: ''
2330
2347
  }, () => {
2331
- this.changeFilterData();
2348
+ this.changeFilterData(true);
2332
2349
  });
2333
2350
  document.removeEventListener('click', this.hide);
2334
2351
  }
@@ -2345,10 +2362,10 @@ class SelectorSearch extends external_react_namespaceObject.Component {
2345
2362
  event.nativeEvent.stopImmediatePropagation();
2346
2363
  return;
2347
2364
  }
2348
- this.hide();
2349
2365
  this.setState({
2350
- keyword: ''
2366
+ currentItem: this.props.data.find(item => item[this.props.valueKey] == value)
2351
2367
  });
2368
+ this.hide();
2352
2369
  const {
2353
2370
  onChange
2354
2371
  } = this.props;
@@ -2361,6 +2378,12 @@ class SelectorSearch extends external_react_namespaceObject.Component {
2361
2378
  data = [],
2362
2379
  value
2363
2380
  } = this.props;
2381
+ const {
2382
+ currentItem
2383
+ } = this.state;
2384
+ if (currentItem && currentItem[valueKey] == value) {
2385
+ return currentItem[labelKey] || '';
2386
+ }
2364
2387
  return (data.find(item => {
2365
2388
  if (item[valueKey] === value) {
2366
2389
  return item;
@@ -2371,16 +2394,24 @@ class SelectorSearch extends external_react_namespaceObject.Component {
2371
2394
  this.setState({
2372
2395
  keyword: value
2373
2396
  }, () => {
2374
- this.changeFilterData();
2397
+ this.changeFilterData(true);
2375
2398
  });
2376
2399
  });
2377
- selector_search_defineProperty(this, "changeFilterData", () => {
2378
- const keyword = this.state.keyword.trim().toLocaleLowerCase();
2400
+ selector_search_defineProperty(this, "changeFilterData", function () {
2401
+ let updateFilterData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
2402
+ const keyword = _this.state.keyword.trim().toLocaleLowerCase();
2403
+
2404
+ // 受控模式下,组件渲染后的状态变更由受控逻辑接管,直接调用 keywordChange 回调
2405
+ if (_this.props.controlled && updateFilterData) {
2406
+ var _this$props$keywordCh, _this$props;
2407
+ (_this$props$keywordCh = (_this$props = _this.props).keywordChange) === null || _this$props$keywordCh === void 0 || _this$props$keywordCh.call(_this$props, keyword);
2408
+ return;
2409
+ }
2379
2410
  let filterData = [];
2380
2411
  const {
2381
2412
  getData,
2382
2413
  onSearchResultChange
2383
- } = this.props;
2414
+ } = _this.props;
2384
2415
  if (typeof getData == 'function') {
2385
2416
  getData({
2386
2417
  keyword
@@ -2388,21 +2419,21 @@ class SelectorSearch extends external_react_namespaceObject.Component {
2388
2419
  let {
2389
2420
  list
2390
2421
  } = _ref;
2391
- this.setState({
2422
+ _this.setState({
2392
2423
  filterData: list
2393
2424
  });
2394
2425
  });
2395
2426
  return;
2396
2427
  }
2397
2428
  if (keyword == '') {
2398
- filterData = this.props.data || [];
2429
+ filterData = _this.props.data || [];
2399
2430
  } else {
2400
- filterData = (this.props.data || []).filter(item => {
2401
- let label = item[this.props.labelKey || 'label'];
2431
+ filterData = (_this.props.data || []).filter(item => {
2432
+ let label = item[_this.props.labelKey || 'label'];
2402
2433
  return label.toLocaleLowerCase().includes(keyword);
2403
2434
  });
2404
2435
  }
2405
- this.setState({
2436
+ _this.setState({
2406
2437
  filterData
2407
2438
  });
2408
2439
 
@@ -2437,7 +2468,8 @@ class SelectorSearch extends external_react_namespaceObject.Component {
2437
2468
  showList: false,
2438
2469
  keyword: '',
2439
2470
  filterData: [],
2440
- optionsStyle: {}
2471
+ optionsStyle: {},
2472
+ currentItem: null
2441
2473
  };
2442
2474
  this.selectRef = /*#__PURE__*/external_react_default().createRef();
2443
2475
  }
@@ -2474,6 +2506,8 @@ class SelectorSearch extends external_react_namespaceObject.Component {
2474
2506
  placeholder,
2475
2507
  renderOption,
2476
2508
  disabledValues = [],
2509
+ onReachBottom,
2510
+ loading,
2477
2511
  labelKey = 'label',
2478
2512
  valueKey = 'value',
2479
2513
  loadComponent
@@ -2508,6 +2542,7 @@ class SelectorSearch extends external_react_namespaceObject.Component {
2508
2542
  }, label)), /*#__PURE__*/external_react_default().createElement("span", {
2509
2543
  className: "dropdown-icon"
2510
2544
  }, /*#__PURE__*/external_react_default().createElement(IconDropDown, null))), showList ? /*#__PURE__*/external_react_default().createElement(selector_search_OptionList, {
2545
+ loading: loading,
2511
2546
  filterData: filterData,
2512
2547
  optionsStyle: optionsStyle,
2513
2548
  renderOption: renderOption,
@@ -2515,7 +2550,8 @@ class SelectorSearch extends external_react_namespaceObject.Component {
2515
2550
  labelKey: labelKey,
2516
2551
  valueKey: valueKey,
2517
2552
  loadComponent: loadComponent,
2518
- onSelect: this.select
2553
+ onSelect: this.select,
2554
+ onReachBottom: onReachBottom
2519
2555
  }) : null);
2520
2556
  }
2521
2557
  }
@@ -2531,7 +2567,10 @@ selector_search_defineProperty(SelectorSearch, "propTypes", {
2531
2567
  onSearchResultChange: (external_prop_types_default()).func,
2532
2568
  // 搜索结果change
2533
2569
  onBlur: (external_prop_types_default()).func,
2534
- onFocus: (external_prop_types_default()).func
2570
+ onFocus: (external_prop_types_default()).func,
2571
+ controlled: (external_prop_types_default()).bool,
2572
+ keywordChange: (external_prop_types_default()).func
2573
+ // loading: PropTypes.bool, // 如果是loading 则在filter面板显示 转圈
2535
2574
  });
2536
2575
  ;// ./src/components/selector-search/index.js
2537
2576
 
@@ -5615,7 +5654,7 @@ class TimeSelector extends external_react_namespaceObject.Component {
5615
5654
 
5616
5655
  /* harmony default export */ const time_selector = (TimeSelector);
5617
5656
  ;// ./package.json
5618
- const package_namespaceObject = {"rE":"1.0.1"};
5657
+ const package_namespaceObject = {"rE":"1.0.3"};
5619
5658
  ;// ./src/index.js
5620
5659
 
5621
5660
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaiheila/ui-components",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "开黑啦 UI Components",
5
5
  "main": "dist/ui-components.js",
6
6
  "scripts": {
@@ -20,7 +20,7 @@
20
20
  "@babel/core": "^7.15.5",
21
21
  "@babel/preset-env": "^7.15.6",
22
22
  "@babel/preset-react": "^7.14.5",
23
- "@kookapp/logic-models-react": "^1.0.1",
23
+ "@kookapp/logic-models-react": "1.0.7",
24
24
  "babel-loader": "^8.2.2",
25
25
  "classnames": "^2.3.1",
26
26
  "css-loader": "^6.7.1",
@@ -38,7 +38,7 @@
38
38
  "webpack-dev-server": "^4.11.1"
39
39
  },
40
40
  "peerDependencies": {
41
- "@kookapp/logic-models-react": "^1.0.1",
41
+ "@kookapp/logic-models-react": "^1.0.7",
42
42
  "react": "^18",
43
43
  "react-dom": "^18"
44
44
  },