@kdcloudjs/kdesign 1.7.13 → 1.7.14

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.
@@ -13,6 +13,7 @@ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable
13
13
  var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
14
14
  var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
15
15
  var _splice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/splice"));
16
+ var _findIndex = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find-index"));
16
17
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
17
18
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
18
19
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
@@ -28,6 +29,7 @@ var _index = require("../index");
28
29
  var _option = _interopRequireDefault(require("./option"));
29
30
  var _usePopper = _interopRequireDefault(require("../_utils/usePopper"));
30
31
  var _virtualList = _interopRequireDefault(require("../virtual-list"));
32
+ var _KeyCode = _interopRequireDefault(require("../_utils/KeyCode"));
31
33
  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); }
32
34
  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; }
33
35
  var INPUT_MIN_WIDTH = 4; // 输入框最小宽度
@@ -212,13 +214,13 @@ var InternalSelect = function InternalSelect(props, ref) {
212
214
  onBlur && onBlur(e);
213
215
  }, [onBlur]);
214
216
  // 点击组件
215
- var handleClick = function handleClick() {
216
- if (disabled) return;
217
- if (optionShow) {
218
- var onDropdownVisibleChange = selectProps.onDropdownVisibleChange;
219
- onDropdownVisibleChange && onDropdownVisibleChange(true);
220
- }
221
- };
217
+ // const handleClick = () => {
218
+ // if (disabled) return
219
+ // if (optionShow) {
220
+ // const { onDropdownVisibleChange } = selectProps
221
+ // onDropdownVisibleChange && onDropdownVisibleChange(true)
222
+ // }
223
+ // }
222
224
  (0, _react.useEffect)(function () {
223
225
  selectionRef.current.addEventListener('mouseup', function (e) {
224
226
  var _a;
@@ -472,8 +474,12 @@ var InternalSelect = function InternalSelect(props, ref) {
472
474
  }, child.props, {
473
475
  key: index,
474
476
  index: index,
477
+ activeIndex: activeIndex,
475
478
  onChangeSelect: handleOption,
476
- values: multipleRef.current.selectedVal
479
+ values: multipleRef.current.selectedVal,
480
+ onChangeActiveIndex: function onChangeActiveIndex(i) {
481
+ setActiveIndex(i);
482
+ }
477
483
  }));
478
484
  } else {
479
485
  return /*#__PURE__*/_react.default.createElement(_option.default, (0, _extends2.default)({
@@ -481,8 +487,12 @@ var InternalSelect = function InternalSelect(props, ref) {
481
487
  value: child === null || child === void 0 ? void 0 : child.value,
482
488
  key: index,
483
489
  index: index,
490
+ activeIndex: activeIndex,
484
491
  onChangeSelect: handleOption,
485
- values: multipleRef.current.selectedVal
492
+ values: multipleRef.current.selectedVal,
493
+ onChangeActiveIndex: function onChangeActiveIndex(i) {
494
+ setActiveIndex(i);
495
+ }
486
496
  }, child), (child === null || child === void 0 ? void 0 : child.label) || (child === null || child === void 0 ? void 0 : child.value));
487
497
  }
488
498
  };
@@ -511,6 +521,7 @@ var InternalSelect = function InternalSelect(props, ref) {
511
521
  (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.focus();
512
522
  }
513
523
  }, [isShowSearch, autoFocus, disabled]);
524
+ var optionsListRef = _react.default.useRef(null);
514
525
  // 渲染下拉列表框
515
526
  var renderContent = function renderContent() {
516
527
  var dropdownRender = selectProps.dropdownRender,
@@ -536,7 +547,8 @@ var InternalSelect = function InternalSelect(props, ref) {
536
547
  },
537
548
  isStaticItemHeight: true,
538
549
  height: listHeight || 300,
539
- measureLongestItem: false
550
+ measureLongestItem: false,
551
+ ref: optionsListRef
540
552
  }, virtualListProps), function (child) {
541
553
  return child;
542
554
  });
@@ -695,6 +707,101 @@ var InternalSelect = function InternalSelect(props, ref) {
695
707
  }, renderSuffix()));
696
708
  };
697
709
  var singleCls = (0, _classnames.default)(commCls, (_classNames12 = {}, (0, _defineProperty2.default)(_classNames12, "".concat(selectPrefixCls, "-single"), true), (0, _defineProperty2.default)(_classNames12, "".concat(selectPrefixCls, "-single-disabled"), disabled), (0, _defineProperty2.default)(_classNames12, "".concat(selectPrefixCls, "-single-focused"), focusd && !disabled || optionShow), _classNames12));
710
+ // keyboard
711
+ var getActiveIndex = function getActiveIndex(index) {
712
+ var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
713
+ var len = filledOptions.length;
714
+ for (var i = 0; i < len; i += 1) {
715
+ var current = (index + i * offset + len) % len;
716
+ var _props = filledOptions[current].props;
717
+ if (!(_props === null || _props === void 0 ? void 0 : _props.disabled)) {
718
+ return current;
719
+ }
720
+ }
721
+ return -1;
722
+ };
723
+ // reset activeIndex
724
+ (0, _react.useEffect)(function () {
725
+ if (searchValue) {
726
+ setActiveIndex(getActiveIndex(0));
727
+ }
728
+ }, [searchValue]);
729
+ (0, _react.useEffect)(function () {
730
+ if (optionShow && !disabled) {
731
+ var onDropdownVisibleChange = selectProps.onDropdownVisibleChange;
732
+ onDropdownVisibleChange && onDropdownVisibleChange(true);
733
+ }
734
+ }, [optionShow]);
735
+ var _useState13 = (0, _react.useState)(getActiveIndex(0)),
736
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
737
+ activeIndex = _useState14[0],
738
+ setActiveIndex = _useState14[1];
739
+ var onInternalKeyDown = function onInternalKeyDown(e) {
740
+ var _a, _b;
741
+ var which = e.which;
742
+ // open
743
+ if (which === _KeyCode.default.ENTER || which === _KeyCode.default.UP || which === _KeyCode.default.DOWN) {
744
+ e.preventDefault();
745
+ setOptionShow(true);
746
+ }
747
+ // backspace
748
+ var _multipleRef$current5 = multipleRef.current,
749
+ selectedVal = _multipleRef$current5.selectedVal,
750
+ selectMulOpts = _multipleRef$current5.selectMulOpts;
751
+ // isMultiple
752
+ if (which === _KeyCode.default.BACKSPACE && !searchValue && isMultiple && selectedVal.length && selectMulOpts.length) {
753
+ (0, _splice.default)(selectedVal).call(selectedVal, -1, 1);
754
+ (0, _splice.default)(selectMulOpts).call(selectMulOpts, -1, 1);
755
+ setMulOptions((0, _toConsumableArray2.default)(selectMulOpts));
756
+ onChange && onChange(labelInValue ? selectMulOpts : selectedVal, selectMulOpts);
757
+ // !isMultiple
758
+ } else if (which === _KeyCode.default.BACKSPACE && allowClear && !isMultiple) {
759
+ setInitValue('');
760
+ onClear && onClear('');
761
+ setSearchValue('');
762
+ onChange && onChange(undefined);
763
+ }
764
+ // optionsList: up、down、enter
765
+ if (optionShow) {
766
+ var offset = 0;
767
+ if (which === _KeyCode.default.UP) {
768
+ offset = -1;
769
+ } else if (which === _KeyCode.default.DOWN) {
770
+ offset = 1;
771
+ } else if (which === _KeyCode.default.ENTER) {
772
+ var item = filledOptions[activeIndex];
773
+ var key = ((_a = item.props) === null || _a === void 0 ? void 0 : _a.value) || item.value;
774
+ var label = ((_b = item.props) === null || _b === void 0 ? void 0 : _b.children) || item.label;
775
+ handleOption(key, label, true);
776
+ // search
777
+ if (searchValue) {
778
+ setActiveIndex((0, _findIndex.default)(realChildren).call(realChildren, function (child) {
779
+ var _a;
780
+ if (child && child.props) {
781
+ return ((_a = child.props) === null || _a === void 0 ? void 0 : _a.value) === key;
782
+ } else {
783
+ return (child === null || child === void 0 ? void 0 : child.value) === key;
784
+ }
785
+ }));
786
+ }
787
+ if (!isMultiple) {
788
+ setOptionShow(false);
789
+ }
790
+ } else if (which === _KeyCode.default.ESC) {
791
+ setOptionShow(false);
792
+ }
793
+ if (offset !== 0) {
794
+ var nextActiveIndex = getActiveIndex(activeIndex + offset, offset);
795
+ if (optionsListRef.current) {
796
+ optionsListRef.current.scrollTo({
797
+ index: nextActiveIndex
798
+ });
799
+ }
800
+ setActiveIndex(nextActiveIndex);
801
+ e.preventDefault();
802
+ }
803
+ }
804
+ };
698
805
  var renderSelect = function renderSelect() {
699
806
  return /*#__PURE__*/_react.default.createElement("div", {
700
807
  className: selectCls,
@@ -702,7 +809,6 @@ var InternalSelect = function InternalSelect(props, ref) {
702
809
  style: style
703
810
  }, /*#__PURE__*/_react.default.createElement("span", {
704
811
  className: selectionCls,
705
- onClick: handleClick,
706
812
  tabIndex: disabled ? -1 : 0,
707
813
  onFocus: function onFocus() {
708
814
  var _a;
@@ -711,7 +817,8 @@ var InternalSelect = function InternalSelect(props, ref) {
711
817
  onBlur: function onBlur() {
712
818
  var _a;
713
819
  return (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.blur();
714
- }
820
+ },
821
+ onKeyDown: onInternalKeyDown
715
822
  }, !isMultiple ? renderSingle() : renderMultiple()));
716
823
  };
717
824
  var catchStyle = function catchStyle() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kdcloudjs/kdesign",
3
- "version": "1.7.13",
3
+ "version": "1.7.14",
4
4
  "description": "KDesign 金蝶前端react 组件库",
5
5
  "title": "kdesign",
6
6
  "keywords": [