bkui-vue 0.0.1-beta.409 → 0.0.1-beta.410

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 (56) hide show
  1. package/dist/index.cjs.js +41 -41
  2. package/dist/index.esm.js +201 -81
  3. package/dist/index.umd.js +41 -41
  4. package/dist/locale/en.esm.js +1 -1
  5. package/dist/locale/en.esm.js.map +1 -1
  6. package/dist/locale/en.umd.js +1 -1
  7. package/dist/locale/en.umd.js.map +1 -1
  8. package/dist/locale/zh-cn.esm.js +1 -1
  9. package/dist/locale/zh-cn.esm.js.map +1 -1
  10. package/dist/locale/zh-cn.umd.js +1 -1
  11. package/dist/locale/zh-cn.umd.js.map +1 -1
  12. package/dist/style.css +1 -1
  13. package/dist/style.variable.css +1 -1
  14. package/lib/cascader/cascader.css +146 -9
  15. package/lib/cascader/cascader.d.ts +41 -3
  16. package/lib/cascader/cascader.less +92 -11
  17. package/lib/cascader/cascader.variable.css +157 -20
  18. package/lib/cascader/index.d.ts +96 -7
  19. package/lib/cascader/index.js +1 -1
  20. package/lib/cascader/store.d.ts +2 -0
  21. package/lib/config-provider/config-provider.d.ts +13 -1
  22. package/lib/config-provider/index.d.ts +25 -0
  23. package/lib/config-provider/index.js +1 -1
  24. package/lib/config-provider/type.d.ts +7 -1
  25. package/lib/dialog/dialog.css +6 -16
  26. package/lib/dialog/dialog.less +12 -23
  27. package/lib/dialog/dialog.variable.css +6 -16
  28. package/lib/dialog/index.js +1 -1
  29. package/lib/directives/index.js +1 -1
  30. package/lib/index.d.ts +1 -0
  31. package/lib/index.js +1 -1
  32. package/lib/info-box/index.d.ts +3 -2
  33. package/lib/info-box/index.js +1 -1
  34. package/lib/info-box/info-box.d.ts +7 -5
  35. package/lib/input/index.js +1 -1
  36. package/lib/locale/index.js +1 -1
  37. package/lib/locale/lang/en.d.ts +6 -0
  38. package/lib/message/messageConstructor.d.ts +1 -1
  39. package/lib/notify/notifyConstructor.d.ts +1 -1
  40. package/lib/plugin-popover/index.js +1 -1
  41. package/lib/popover/index.js +1 -1
  42. package/lib/preset.d.ts +12 -0
  43. package/lib/select/index.d.ts +4 -4
  44. package/lib/select/select.d.ts +1 -1
  45. package/lib/shared/index.js +1 -1
  46. package/lib/table/index.js +1 -1
  47. package/lib/table/table.css +9 -1
  48. package/lib/table/table.less +7 -1
  49. package/lib/table/table.variable.css +9 -1
  50. package/lib/table-column/index.js +1 -1
  51. package/lib/tag-input/index.d.ts +7 -4
  52. package/lib/tag-input/index.js +1 -1
  53. package/lib/tag-input/tag-input.d.ts +2 -15
  54. package/lib/transfer/index.d.ts +4 -4
  55. package/lib/transfer/transfer.d.ts +1 -1
  56. package/package.json +1 -1
package/dist/index.esm.js CHANGED
@@ -7446,7 +7446,12 @@ class BkMaskManager {
7446
7446
  this.setMaskStyle(style2);
7447
7447
  this.mask.style.setProperty("display", "block");
7448
7448
  this.mask.style.setProperty("z-index", `${localZIndex}`);
7449
+ this.mask.style.setProperty("pointer-events", "all");
7449
7450
  this.backupMask.style.setProperty("z-index", `${localZIndex - 1}`);
7451
+ if (!showMask) {
7452
+ this.mask.style.setProperty("pointer-events", "none");
7453
+ content == null ? void 0 : content.style.setProperty("pointer-events", "all");
7454
+ }
7450
7455
  if (content) {
7451
7456
  if (transfer2)
7452
7457
  content.style.setProperty("z-index", `${localZIndex + 1}`);
@@ -7982,7 +7987,7 @@ var RenderType = /* @__PURE__ */ ((RenderType2) => {
7982
7987
  return RenderType2;
7983
7988
  })(RenderType || {});
7984
7989
  function renderType() {
7985
- return j("trigger", {}).def("auto");
7990
+ return j("popRenderType", {}).def("shown");
7986
7991
  }
7987
7992
  function dialogTypeUnion() {
7988
7993
  return j("dialogType", {
@@ -8295,6 +8300,12 @@ const zhCn = {
8295
8300
  drapFileOr: "\u5C06\u6587\u4EF6\u62D6\u5230\u6B64\u5904\u6216",
8296
8301
  clickUpload: "\u70B9\u51FB\u4E0A\u4F20",
8297
8302
  uploadLabel: "\u4E0A\u4F20\u6587\u4EF6"
8303
+ },
8304
+ input: {
8305
+ placeholder: "\u8BF7\u8F93\u5165"
8306
+ },
8307
+ tagInput: {
8308
+ placeholder: "\u8BF7\u8F93\u5165\u5E76\u6309Enter\u7ED3\u675F"
8298
8309
  }
8299
8310
  };
8300
8311
  const configProviderProps = {
@@ -9681,7 +9692,7 @@ const inputType = {
9681
9692
  clearable: PropTypes.bool,
9682
9693
  disabled: PropTypes.bool,
9683
9694
  readonly: PropTypes.bool,
9684
- placeholder: PropTypes.string.def("\u8BF7\u8F93\u5165"),
9695
+ placeholder: PropTypes.string.def(""),
9685
9696
  prefixIcon: PropTypes.string,
9686
9697
  suffixIcon: PropTypes.string,
9687
9698
  suffix: PropTypes.string,
@@ -9747,6 +9758,7 @@ var Component$w = defineComponent({
9747
9758
  emits: inputEmitEventsType,
9748
9759
  setup(props2, ctx) {
9749
9760
  const formItem = useFormItem();
9761
+ const t2 = useLocale("input");
9750
9762
  const isFocused = ref(false);
9751
9763
  const isCNInput = ref(false);
9752
9764
  const isTextArea = computed(() => props2.type === "textarea");
@@ -9899,7 +9911,7 @@ var Component$w = defineComponent({
9899
9911
  };
9900
9912
  return __spreadProps(__spreadValues({}, val), {
9901
9913
  maxlength: props2.maxlength,
9902
- placeholder: props2.placeholder,
9914
+ placeholder: props2.placeholder || t2.value.placeholder,
9903
9915
  readonly: props2.readonly,
9904
9916
  disabled: props2.disabled
9905
9917
  });
@@ -10918,10 +10930,9 @@ var Dialog = defineComponent({
10918
10930
  default: () => [this.localConfirmText]
10919
10931
  })]) : ""]);
10920
10932
  },
10921
- close: () => createVNode("span", {
10922
- "class": resolveClassName("dialog-close"),
10933
+ close: () => createVNode(error, {
10923
10934
  "onClick": this.handleClose
10924
- }, [createTextVNode("+")])
10935
+ }, null)
10925
10936
  };
10926
10937
  const className = `${resolveClassName("dialog-wrapper ")} ${this.scrollable ? "scroll-able" : ""} ${this.multiInstance ? "multi-instance" : ""} ${this.hasFooter ? "has-footer" : "no-footer"}`;
10927
10938
  return createVNode(BkModal, mergeProps(this.$props, {
@@ -12775,7 +12786,9 @@ var useFloating = (props2, ctx, {
12775
12786
  elContent
12776
12787
  } = resolvePopElements();
12777
12788
  cleanup = autoUpdate(elReference, elContent, () => {
12778
- updatePopover(null, props2);
12789
+ if (localIsShow.value) {
12790
+ updatePopover(null, props2);
12791
+ }
12779
12792
  });
12780
12793
  };
12781
12794
  const updatePopover = (virtualEl = null, props3 = {}) => {
@@ -12820,8 +12833,12 @@ var useFloating = (props2, ctx, {
12820
12833
  const showPopover = () => {
12821
12834
  const delay = resolvePopoverDelay()[0];
12822
12835
  popShowTimerId = setTimeout(() => {
12823
- popHideTimerId && clearTimeout(popHideTimerId);
12824
- !props2.disabled && (localIsShow.value = true);
12836
+ if (popHideTimerId) {
12837
+ clearTimeout(popHideTimerId);
12838
+ }
12839
+ if (!props2.disabled) {
12840
+ localIsShow.value = true;
12841
+ }
12825
12842
  }, delay);
12826
12843
  };
12827
12844
  const hidePopover = () => {
@@ -13329,10 +13346,8 @@ function createPopoverComponent(options) {
13329
13346
  };
13330
13347
  updateStyle(refProps.value.target);
13331
13348
  const show3 = () => {
13332
- setTimeout(() => {
13333
- var _a, _b;
13334
- (_b = (_a = refReference.value) == null ? void 0 : _a.show) == null ? void 0 : _b.call(_a);
13335
- });
13349
+ var _a, _b;
13350
+ (_b = (_a = refReference.value) == null ? void 0 : _a.show) == null ? void 0 : _b.call(_a);
13336
13351
  };
13337
13352
  const hide3 = () => {
13338
13353
  var _a, _b;
@@ -13401,10 +13416,8 @@ function createPopoverComponent(options) {
13401
13416
  if ($PopoverInstance === null) {
13402
13417
  $PopoverInstanceEl = document.createElement("div");
13403
13418
  getBoundaryDom(resolvedOptions.boundary).append($PopoverInstanceEl);
13404
- setTimeout(() => {
13405
- $PopoverInstance = createApp(popoverComponent);
13406
- $PopoverInstanceVm = $PopoverInstance.mount($PopoverInstanceEl);
13407
- });
13419
+ $PopoverInstance = createApp(popoverComponent);
13420
+ $PopoverInstanceVm = $PopoverInstance.mount($PopoverInstanceEl);
13408
13421
  }
13409
13422
  function close2() {
13410
13423
  if ($PopoverInstance) {
@@ -15051,15 +15064,13 @@ const createInstance = (el, binding) => {
15051
15064
  createTimer && clearTimeout(createTimer);
15052
15065
  createTimer = setTimeout(() => {
15053
15066
  const targetOptions = resolveOptions(el, binding);
15067
+ targetOptions.isShow = true;
15054
15068
  targetOptions.content = targetOptions.content || el.innerHTML;
15055
15069
  Object.assign(targetOptions, {
15056
15070
  onContentMouseenter: handleContentEnter,
15057
15071
  onContentMouseleave: handleContentLeave
15058
15072
  });
15059
15073
  instance = createPopoverComponent(targetOptions);
15060
- setTimeout(() => {
15061
- instance.show();
15062
- });
15063
15074
  }, 100);
15064
15075
  };
15065
15076
  const handleMouseLeave = () => {
@@ -16874,7 +16885,7 @@ const IColumnType = {
16874
16885
  field: PropTypes.oneOfType([PropTypes.func.def(() => ""), PropTypes.string.def("")]),
16875
16886
  render: PropTypes.oneOfType([PropTypes.func.def(() => ""), PropTypes.string.def("")]),
16876
16887
  width: PropTypes.oneOfType([PropTypes.number.def(void 0), PropTypes.string.def("auto")]),
16877
- minWidth: PropTypes.oneOfType([PropTypes.number.def(void 0), PropTypes.string.def("auto")]).def(80),
16888
+ minWidth: PropTypes.oneOfType([PropTypes.number.def(void 0), PropTypes.string.def("auto")]).def(30),
16878
16889
  columnKey: PropTypes.string.def(""),
16879
16890
  showOverflowTooltip: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({
16880
16891
  content: PropTypes.string.def(""),
@@ -18405,6 +18416,7 @@ var TableCell = defineComponent({
18405
18416
  } = props2;
18406
18417
  let content = refRoot.value.innerText;
18407
18418
  let mode = "auto";
18419
+ let watchCellResize = true;
18408
18420
  if (typeof showOverflowTooltip === "boolean") {
18409
18421
  disabled = !showOverflowTooltip;
18410
18422
  }
@@ -18415,6 +18427,7 @@ var TableCell = defineComponent({
18415
18427
  if (typeof showOverflowTooltip.content === "function") {
18416
18428
  content = showOverflowTooltip.content(props2.column, props2.row);
18417
18429
  }
18430
+ watchCellResize = showOverflowTooltip.watchCellResize;
18418
18431
  mode = showOverflowTooltip.mode || "auto";
18419
18432
  }
18420
18433
  if (typeof disabled === "function") {
@@ -18424,7 +18437,8 @@ var TableCell = defineComponent({
18424
18437
  disabled,
18425
18438
  content,
18426
18439
  mode,
18427
- resizerWay
18440
+ resizerWay,
18441
+ watchCellResize
18428
18442
  };
18429
18443
  };
18430
18444
  const resolveOverflowTooltip = () => {
@@ -18445,7 +18459,11 @@ var TableCell = defineComponent({
18445
18459
  if (isTipsEnabled.value) {
18446
18460
  const bindings = ref(resolveTooltipOption());
18447
18461
  if (bkEllipsisIns === null) {
18448
- bkEllipsisIns = createInstance(refRoot.value, bindings);
18462
+ bkEllipsisIns = createInstance(refRoot.value, {
18463
+ disabled: bindings.value.disabled,
18464
+ content: bindings.value.content,
18465
+ mode: bindings.value.mode
18466
+ });
18449
18467
  }
18450
18468
  } else {
18451
18469
  bkEllipsisIns == null ? void 0 : bkEllipsisIns.destroyInstance(refRoot.value);
@@ -18453,14 +18471,14 @@ var TableCell = defineComponent({
18453
18471
  }
18454
18472
  };
18455
18473
  onMounted(() => {
18456
- var _a;
18457
18474
  const {
18458
18475
  disabled,
18459
- resizerWay
18476
+ resizerWay,
18477
+ watchCellResize
18460
18478
  } = resolveTooltipOption();
18461
18479
  if (!disabled) {
18462
18480
  resolveOverflowTooltip();
18463
- if (((_a = props2.column.showOverflowTooltip) == null ? void 0 : _a.watchCellResize) !== false && props2.observerResize) {
18481
+ if (watchCellResize !== false && props2.observerResize) {
18464
18482
  let observerIns = observerResize(refRoot.value, () => {
18465
18483
  resolveOverflowTooltip();
18466
18484
  }, 60, true, resizerWay);
@@ -18789,16 +18807,21 @@ var Settings = defineComponent({
18789
18807
  const resolvedColVal = (item, index2) => resolvePropVal(item, ["field", "type"], [item, index2]);
18790
18808
  const checkAll = ref(false);
18791
18809
  const isShow = ref(false);
18792
- const localSettings = typeof props2.settings === "boolean" ? ref({
18793
- fields: props2.columns.map((col) => __spreadProps(__spreadValues({}, col), {
18794
- field: col.field || col.type
18795
- })),
18796
- checked: [],
18797
- limit: 0,
18798
- size: "small",
18799
- sizeList: defaultSizeList,
18800
- showLineHeight: true
18801
- }) : ref(props2.settings);
18810
+ const localSettings = computed(() => {
18811
+ if (typeof props2.settings === "boolean") {
18812
+ return {
18813
+ fields: props2.columns.map((col) => __spreadProps(__spreadValues({}, col), {
18814
+ field: col.field || col.type
18815
+ })),
18816
+ checked: [],
18817
+ limit: 0,
18818
+ size: "small",
18819
+ sizeList: defaultSizeList,
18820
+ showLineHeight: true
18821
+ };
18822
+ }
18823
+ return props2.settings;
18824
+ });
18802
18825
  const activeSize = ref(localSettings.value.size || "small");
18803
18826
  const activeHeight = ref(props2.rowHeight);
18804
18827
  const checkedFields = ref(localSettings.value.checked || []);
@@ -19295,7 +19318,9 @@ class TableRender {
19295
19318
  cells.push(this.getFilterCell(column, index2));
19296
19319
  }
19297
19320
  const cellText = getHeadCellText(column, index2);
19298
- cells.unshift(cellText);
19321
+ cells.unshift(createVNode("span", {
19322
+ "class": "head-text"
19323
+ }, [cellText]));
19299
19324
  const showTitle = typeof cellText === "string" ? cellText : void 0;
19300
19325
  return createVNode(TableCell, {
19301
19326
  "title": showTitle,
@@ -20738,7 +20763,7 @@ var ListTagRender = defineComponent({
20738
20763
  });
20739
20764
  const tagProps = () => ({
20740
20765
  modelValue: PropTypes.arrayOf(PropTypes.string).def([]),
20741
- placeholder: PropTypes.string.def("\u8BF7\u8F93\u5165\u5E76\u6309 Enter \u7ED3\u675F"),
20766
+ placeholder: PropTypes.string.def(""),
20742
20767
  list: PropTypes.arrayOf(PropTypes.object).def([]),
20743
20768
  disabled: PropTypes.bool.def(false),
20744
20769
  tooltipKey: PropTypes.string.def(""),
@@ -20852,6 +20877,7 @@ var Component$d = defineComponent({
20852
20877
  emit
20853
20878
  }) {
20854
20879
  const formItem = useFormItem();
20880
+ const t2 = useLocale("tagInput");
20855
20881
  const state = reactive({
20856
20882
  isEdit: false,
20857
20883
  isHover: false,
@@ -20883,6 +20909,7 @@ var Component$d = defineComponent({
20883
20909
  const showTagClose = computed(() => !props2.disabled && props2.hasDeleteIcon);
20884
20910
  const isSingleSelect = computed(() => props2.maxData === 1);
20885
20911
  const isShowPlaceholder = computed(() => listState.selectedTagList.length === 0 && curInputValue.value === "" && !state.isEdit);
20912
+ const placeholderText = computed(() => props2.placeholder || t2.value.placeholder);
20886
20913
  const isShowClear = computed(() => props2.clearable && !props2.disabled && listState.selectedTagList.length !== 0 && (props2.showClearOnlyHover ? state.isHover : true));
20887
20914
  const triggerClass = computed(() => ({
20888
20915
  "bk-tag-input-trigger": true,
@@ -21488,6 +21515,7 @@ var Component$d = defineComponent({
21488
21515
  }, toRefs(state)), toRefs(listState)), toRefs(pageState)), {
21489
21516
  isShowPlaceholder,
21490
21517
  isShowClear,
21518
+ placeholderText,
21491
21519
  curInputValue,
21492
21520
  renderList,
21493
21521
  showTagClose,
@@ -21583,7 +21611,7 @@ var Component$d = defineComponent({
21583
21611
  "class": "text"
21584
21612
  }, [createTextVNode("+"), this.selectedTagList.length - this.overflowTagIndex])])])]), withDirectives(createVNode("p", {
21585
21613
  "class": "placeholder"
21586
- }, [this.placeholder]), [[vShow, this.isShowPlaceholder]]), (_c = (_b = (_a = this.$slots) == null ? void 0 : _a.suffix) == null ? void 0 : _b.call(_a)) != null ? _c : this.isShowClear && createVNode(close$1, {
21614
+ }, [this.placeholderText]), [[vShow, this.isShowPlaceholder]]), (_c = (_b = (_a = this.$slots) == null ? void 0 : _a.suffix) == null ? void 0 : _b.call(_a)) != null ? _c : this.isShowClear && createVNode(close$1, {
21587
21615
  "class": "clear-icon",
21588
21616
  "onClick": this.handleClear
21589
21617
  }, null)]);
@@ -22393,8 +22421,8 @@ const InfoBox = (config) => {
22393
22421
  }), getContent());
22394
22422
  }
22395
22423
  });
22396
- const app = createApp(dialog2).mount(container2);
22397
- const instance = {
22424
+ let app = createApp(dialog2).mount(container2);
22425
+ return {
22398
22426
  show: () => {
22399
22427
  isShow.value = true;
22400
22428
  },
@@ -22403,9 +22431,12 @@ const InfoBox = (config) => {
22403
22431
  },
22404
22432
  update: (config2) => {
22405
22433
  app.update(config2);
22434
+ },
22435
+ destroy: () => {
22436
+ app.unmount();
22437
+ app = null;
22406
22438
  }
22407
22439
  };
22408
- return instance;
22409
22440
  };
22410
22441
  const BkInfoBox = withInstall(InfoBox);
22411
22442
  var NotifyThemeEnum;
@@ -30841,13 +30872,13 @@ var CascaderPanel = defineComponent({
30841
30872
  render() {
30842
30873
  const emptyWidth = parseInt(this.panelWidth, 10) > 200 ? this.panelWidth : `${200}px`;
30843
30874
  const searchPanelRender = () => this.suggestions.length ? createVNode("ul", {
30844
- "class": "bk-cascader-panel bk-scroll-y",
30875
+ "class": [resolveClassName("cascader-panel"), "bk-scroll-y"],
30845
30876
  "style": {
30846
30877
  height: this.panelHeight,
30847
30878
  width: this.panelWidth
30848
30879
  }
30849
30880
  }, [this.suggestions.map((node) => createVNode("li", mergeProps({
30850
- "class": ["bk-cascader-node", {
30881
+ "class": [resolveClassName("cascader-node"), {
30851
30882
  "is-selected": this.isNodeInPath(node)
30852
30883
  }, {
30853
30884
  "is-disabled": node.isDisabled
@@ -30855,15 +30886,15 @@ var CascaderPanel = defineComponent({
30855
30886
  "is-checked": this.isCheckedNode(node, this.checkValue)
30856
30887
  }]
30857
30888
  }, this.searchPanelEvents(node)), [node.pathNames.join(this.separator)]))]) : createVNode("div", {
30858
- "class": "bk-cascader-search-empty",
30889
+ "class": resolveClassName("cascader-search-empty"),
30859
30890
  "style": {
30860
30891
  width: emptyWidth
30861
30892
  }
30862
30893
  }, [createVNode("span", null, [createTextVNode("\u6682\u65E0\u641C\u7D22\u7ED3\u679C")])]);
30863
30894
  return createVNode("div", {
30864
- "class": "bk-cascader-panel-wrapper"
30895
+ "class": resolveClassName("cascader-panel-wrapper")
30865
30896
  }, [this.isFiltering ? searchPanelRender() : this.menus.list.map((menu2) => createVNode("ul", {
30866
- "class": "bk-cascader-panel bk-scroll-y",
30897
+ "class": [resolveClassName("cascader-panel"), "bk-scroll-y"],
30867
30898
  "style": {
30868
30899
  height: this.panelHeight,
30869
30900
  width: this.panelWidth
@@ -30871,7 +30902,7 @@ var CascaderPanel = defineComponent({
30871
30902
  }, [menu2.map((node) => {
30872
30903
  var _a, _b;
30873
30904
  return createVNode("li", mergeProps({
30874
- "class": ["bk-cascader-node", {
30905
+ "class": [resolveClassName("cascader-node"), {
30875
30906
  "is-selected": this.isNodeInPath(node)
30876
30907
  }, {
30877
30908
  "is-disabled": node.isDisabled
@@ -30883,6 +30914,7 @@ var CascaderPanel = defineComponent({
30883
30914
  "modelValue": node.checked,
30884
30915
  "onUpdate:modelValue": ($event) => node.checked = $event,
30885
30916
  "indeterminate": node.isIndeterminate,
30917
+ "style": "margin-right: 5px",
30886
30918
  "onChange": (val) => this.checkNode(node, val)
30887
30919
  }, null), (_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a, {
30888
30920
  node,
@@ -31031,6 +31063,16 @@ class Store {
31031
31063
  getFlattedNodes(leafOnly = false) {
31032
31064
  return flatNodes(this.nodes, leafOnly);
31033
31065
  }
31066
+ setNodesCheck(nodes) {
31067
+ this.getFlattedNodes().forEach((node) => {
31068
+ node.checked = false;
31069
+ const checkedNode = nodes.find((nodeValue) => arrayEqual(node.path, nodeValue));
31070
+ if (checkedNode) {
31071
+ const currentNode = this.getNodeByValue(checkedNode);
31072
+ currentNode.checked = true;
31073
+ }
31074
+ });
31075
+ }
31034
31076
  getCheckedNodes() {
31035
31077
  return this.getFlattedNodes().filter((node) => node.checked);
31036
31078
  }
@@ -31054,16 +31096,18 @@ class Store {
31054
31096
  var Component$7 = defineComponent({
31055
31097
  name: "Cascader",
31056
31098
  directives: {
31057
- clickoutside: ClickOutside
31099
+ bkTooltips: tooltips
31058
31100
  },
31059
31101
  components: {
31060
31102
  CascaderPanel,
31061
- BkPopover
31103
+ BkPopover,
31104
+ Tag: BkTag
31062
31105
  },
31063
31106
  props: {
31064
31107
  modelValue: PropTypes.arrayOf(PropTypes.oneOfType([q(), String, Number])),
31065
31108
  list: PropTypes.array.def([]),
31066
31109
  placeholder: PropTypes.string.def("\u8BF7\u9009\u62E9"),
31110
+ behavior: PropTypes.string.def("normal"),
31067
31111
  filterable: PropTypes.bool.def(false),
31068
31112
  multiple: PropTypes.bool.def(false),
31069
31113
  disabled: PropTypes.bool.def(false),
@@ -31080,9 +31124,17 @@ var Component$7 = defineComponent({
31080
31124
  limitOneLine: PropTypes.bool.def(false),
31081
31125
  extCls: PropTypes.string.def(""),
31082
31126
  scrollHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).def(216),
31083
- scrollWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).def("auto")
31127
+ scrollWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).def("auto"),
31128
+ collapseTags: {
31129
+ type: Boolean,
31130
+ default: true
31131
+ },
31132
+ floatMode: {
31133
+ type: Boolean,
31134
+ default: false
31135
+ }
31084
31136
  },
31085
- emits: ["update:modelValue", "change", "clear", "toggle"],
31137
+ emits: ["update:modelValue", "change", "clear", "toggle", "focus"],
31086
31138
  setup(props2, {
31087
31139
  emit
31088
31140
  }) {
@@ -31096,7 +31148,6 @@ var Component$7 = defineComponent({
31096
31148
  cancelHover
31097
31149
  } = useHover();
31098
31150
  const store = ref(new Store(props2));
31099
- const panelShow = ref(false);
31100
31151
  const selectedText = ref("");
31101
31152
  const selectedTags = ref([]);
31102
31153
  const {
@@ -31106,6 +31157,8 @@ var Component$7 = defineComponent({
31106
31157
  const searchKey = ref("");
31107
31158
  const suggestions = ref([]);
31108
31159
  const isFiltering = ref(false);
31160
+ const isEdit = ref(false);
31161
+ const isFocus = ref(false);
31109
31162
  const checkedValue = computed({
31110
31163
  get: () => modelValue.value,
31111
31164
  set: (value) => {
@@ -31113,6 +31166,8 @@ var Component$7 = defineComponent({
31113
31166
  }
31114
31167
  });
31115
31168
  const popover2 = ref(null);
31169
+ const bkCascaderRef = ref(null);
31170
+ const inputRef = ref(null);
31116
31171
  const getShowText = (node) => props2.showCompleteName ? node.pathNames.join(separator2) : node.pathNames[node.pathNames.length - 1];
31117
31172
  const updateSearchKey = () => {
31118
31173
  searchKey.value = selectedText.value;
@@ -31120,10 +31175,12 @@ var Component$7 = defineComponent({
31120
31175
  const updateValue = (val) => {
31121
31176
  var _a;
31122
31177
  if (multiple) {
31178
+ store.value.setNodesCheck(val);
31123
31179
  selectedTags.value = store.value.getCheckedNodes().map((node) => ({
31124
31180
  text: getShowText(node),
31125
31181
  key: node.id
31126
31182
  }));
31183
+ selectedText.value = selectedTags.value.map((item) => item.text).join(", ");
31127
31184
  return;
31128
31185
  }
31129
31186
  !props2.checkAnyLevel && ((_a = popover2 == null ? void 0 : popover2.value) == null ? void 0 : _a.hide());
@@ -31149,14 +31206,20 @@ var Component$7 = defineComponent({
31149
31206
  e.stopPropagation();
31150
31207
  const current = JSON.parse(JSON.stringify(value));
31151
31208
  const tag2 = current.splice(index2, 1)[0];
31209
+ isEdit.value = true;
31152
31210
  store.value.removeTag(tag2);
31153
31211
  updateValue(current);
31154
31212
  emit("update:modelValue", store.value.getCheckedNodes().map((node) => node.path));
31213
+ setTimeout(() => {
31214
+ isEdit.value = isFocus.value;
31215
+ });
31155
31216
  };
31156
31217
  const modelValueChangeHandler = (value, oldValue) => {
31218
+ var _a;
31157
31219
  updateValue(value);
31158
31220
  emit("update:modelValue", value);
31159
31221
  oldValue !== void 0 && emit("change", value);
31222
+ (_a = inputRef == null ? void 0 : inputRef.value) == null ? void 0 : _a.focus();
31160
31223
  };
31161
31224
  const listChangeHandler = () => {
31162
31225
  store.value = new Store(props2);
@@ -31164,6 +31227,13 @@ var Component$7 = defineComponent({
31164
31227
  };
31165
31228
  const popoverChangeEmitter = (val) => {
31166
31229
  emit("toggle", val.isShow);
31230
+ isEdit.value = val.isShow;
31231
+ isFocus.value = val.isShow;
31232
+ nextTick(() => {
31233
+ var _a;
31234
+ val && ((_a = inputRef.value) == null ? void 0 : _a.focus());
31235
+ });
31236
+ val.isShow && focusEmitter();
31167
31237
  if (!val.isShow) {
31168
31238
  isFiltering.value = false;
31169
31239
  }
@@ -31185,6 +31255,9 @@ var Component$7 = defineComponent({
31185
31255
  suggestions.value = targetNodes;
31186
31256
  !(popover2 == null ? void 0 : popover2.value.isShow) && (popover2 == null ? void 0 : popover2.value.show());
31187
31257
  });
31258
+ const focusEmitter = () => {
31259
+ emit("focus");
31260
+ };
31188
31261
  watch(() => props2.modelValue, modelValueChangeHandler, {
31189
31262
  immediate: true
31190
31263
  });
@@ -31192,10 +31265,20 @@ var Component$7 = defineComponent({
31192
31265
  deep: true,
31193
31266
  immediate: true
31194
31267
  });
31268
+ const tagList = computed(() => selectedTags.value.map((item) => item.text));
31269
+ const isCollapse = computed(() => props2.collapseTags ? props2.collapseTags && isFocus.value : props2.collapseTags);
31270
+ const isEditMode = computed(() => props2.collapseTags ? props2.collapseTags && isEdit.value : props2.collapseTags);
31271
+ const {
31272
+ overflowTagIndex
31273
+ } = useTagsOverflow(bkCascaderRef, isEditMode, tagList);
31195
31274
  return {
31275
+ bkCascaderRef,
31276
+ inputRef,
31277
+ overflowTagIndex,
31278
+ isCollapse,
31279
+ isFocus,
31196
31280
  store,
31197
31281
  updateValue,
31198
- panelShow,
31199
31282
  selectedText,
31200
31283
  checkedValue,
31201
31284
  handleClear,
@@ -31210,69 +31293,106 @@ var Component$7 = defineComponent({
31210
31293
  searchKey,
31211
31294
  suggestions,
31212
31295
  isFiltering,
31213
- searchInputHandler
31296
+ searchInputHandler,
31297
+ focusEmitter,
31298
+ tagList,
31299
+ isEdit
31214
31300
  };
31215
31301
  },
31216
31302
  render() {
31217
31303
  const suffixIcon = () => {
31218
- if (this.clearable && this.isHover) {
31304
+ if (this.clearable && this.isHover && !this.disabled) {
31219
31305
  return createVNode(close$1, {
31220
- "class": "bk-icon-clear-icon",
31306
+ "class": resolveClassName("icon-clear-icon"),
31221
31307
  "onClick": this.handleClear
31222
31308
  }, null);
31223
31309
  }
31224
31310
  return createVNode(angleUp, {
31225
- "class": "bk-icon-angle-up"
31311
+ "class": resolveClassName("icon-angle-up")
31226
31312
  }, null);
31227
31313
  };
31314
+ this.overflowTagIndex = this.overflowTagIndex === 0 ? 1 : this.overflowTagIndex;
31315
+ const collapseTooltip = this.tagList.reduce((acc, cur, curIndex) => {
31316
+ if (this.overflowTagIndex !== null && curIndex >= this.overflowTagIndex) {
31317
+ acc.push(cur);
31318
+ }
31319
+ return acc;
31320
+ }, []);
31228
31321
  const renderTags = () => {
31229
31322
  if (this.limitOneLine) {
31230
- return createVNode("span", null, [this.selectedText]);
31323
+ return createVNode("span", {
31324
+ "class": "cascader-selected-text"
31325
+ }, [this.selectedText]);
31231
31326
  }
31232
31327
  return createVNode("div", {
31233
31328
  "class": "cascader-tag-list"
31234
- }, [this.selectedTags.map((tag2, index2) => createVNode("span", {
31235
- "class": "cascader-tag-item"
31236
- }, [createVNode("span", {
31237
- "class": "cascader-tag-item-name"
31238
- }, [tag2.text]), createVNode(error, {
31239
- "class": "bk-icon-clear-icon",
31240
- "onClick": (e) => this.removeTag(this.modelValue, index2, e)
31241
- }, null)]))]);
31329
+ }, [this.tagList.map((tag2, index2) => {
31330
+ const isOverflow = !this.isCollapse && this.overflowTagIndex !== null && index2 >= this.overflowTagIndex;
31331
+ return createVNode("span", {
31332
+ "class": "tag-item",
31333
+ "style": {
31334
+ display: isOverflow ? "none" : ""
31335
+ },
31336
+ "key": tag2
31337
+ }, [createVNode("span", {
31338
+ "class": "tag-item-name"
31339
+ }, [tag2]), createVNode(error, {
31340
+ "class": resolveClassName("icon-clear-icon"),
31341
+ "onClick": (e) => {
31342
+ e.stopPropagation();
31343
+ this.removeTag(this.modelValue, index2, e);
31344
+ }
31345
+ }, null)]);
31346
+ }), this.overflowTagIndex !== null && !this.isCollapse && withDirectives(createVNode(BkTag, {
31347
+ "style": "margin-top: 0"
31348
+ }, {
31349
+ default: () => [createTextVNode("+"), this.selectedTags.length - this.overflowTagIndex]
31350
+ }), [[resolveDirective("bk-tooltips"), collapseTooltip.join(", ")]])]);
31242
31351
  };
31352
+ const textRender = () => this.multiple ? null : createVNode("span", null, [this.selectedText]);
31243
31353
  return createVNode("div", {
31244
- "class": ["bk-cascader", "bk-cascader-wrapper", this.extCls, {
31245
- "bk-is-show-panel": this.panelShow,
31354
+ "class": [resolveClassName("cascader-wrapper"), this.floatMode ? "float-mode" : ""]
31355
+ }, [createVNode("div", {
31356
+ "class": [resolveClassName("cascader"), this.extCls, {
31246
31357
  "is-unselected": this.modelValue.length === 0,
31247
31358
  "is-hover": this.isHover,
31248
- "is-filterable": this.filterable
31359
+ "is-filterable": this.filterable,
31360
+ "is-focus": this.isFocus,
31361
+ "is-disabled": this.disabled,
31362
+ "is-simplicity": this.behavior === "simplicity"
31249
31363
  }],
31250
31364
  "tabindex": "0",
31251
31365
  "data-placeholder": this.placeholder,
31252
31366
  "onMouseenter": this.setHover,
31253
- "onMouseleave": this.cancelHover
31367
+ "onMouseleave": this.cancelHover,
31368
+ "ref": "bkCascaderRef"
31254
31369
  }, [suffixIcon(), createVNode(BkPopover, {
31255
31370
  "placement": "bottom-start",
31256
- "theme": "light bk-cascader-popover",
31371
+ "theme": `light ${resolveClassName("cascader-popover")}`,
31257
31372
  "trigger": "click",
31258
31373
  "arrow": false,
31259
- "class": "bk-cascader-popover-wrapper",
31374
+ "disabled": this.disabled,
31375
+ "class": resolveClassName("cascader-popover-wrapper"),
31260
31376
  "ref": "popover",
31261
31377
  "onAfterHidden": this.popoverChangeEmitter,
31262
31378
  "onAfterShow": this.popoverChangeEmitter,
31263
31379
  "boundary": "body"
31264
31380
  }, {
31265
31381
  default: () => createVNode("div", {
31266
- "class": "bk-cascader-name"
31267
- }, [this.multiple && this.selectedTags.length > 0 && renderTags(), this.filterable ? createVNode("input", {
31268
- "class": "bk-cascader-search-input",
31382
+ "class": [resolveClassName("cascader-name"), "bk-scroll-y"]
31383
+ }, [this.multiple && this.selectedTags.length > 0 && renderTags(), this.filterable ? (this.isCollapse || this.selectedTags.length === 0) && createVNode("input", {
31384
+ "class": [resolveClassName("cascader-search-input"), {
31385
+ "is-disabled": this.disabled
31386
+ }],
31269
31387
  "type": "text",
31270
31388
  "onInput": this.searchInputHandler,
31271
31389
  "placeholder": this.placeholder,
31272
- "value": this.searchKey
31273
- }, null) : createVNode("span", null, [this.selectedText])]),
31390
+ "value": this.searchKey,
31391
+ "disabled": this.disabled,
31392
+ "ref": "inputRef"
31393
+ }, null) : textRender()]),
31274
31394
  content: () => createVNode("div", {
31275
- "class": "bk-cascader-popover"
31395
+ "class": resolveClassName("cascader-popover")
31276
31396
  }, [createVNode(CascaderPanel, {
31277
31397
  "store": this.store,
31278
31398
  "ref": "cascaderPanel",
@@ -31286,10 +31406,10 @@ var Component$7 = defineComponent({
31286
31406
  "onUpdate:modelValue": ($event) => this.checkedValue = $event
31287
31407
  }, {
31288
31408
  default: (scope) => this.$slots.default ? this.$slots.default(scope) : createVNode("span", {
31289
- "class": "bk-cascader-node-name"
31409
+ "class": resolveClassName("cascader-node-name")
31290
31410
  }, [scope.node.name])
31291
31411
  })])
31292
- })]);
31412
+ })])]);
31293
31413
  }
31294
31414
  });
31295
31415
  const BkCascader = withInstallProps(Component$7, { CascaderPanel });