bkui-vue 0.0.1-beta.181 → 0.0.1-beta.184

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 (43) hide show
  1. package/dist/index.cjs.js +33 -33
  2. package/dist/index.esm.js +212 -21
  3. package/dist/index.umd.js +33 -33
  4. package/dist/style.css +1 -1
  5. package/dist/style.variable.css +1 -1
  6. package/lib/cascader/cascader-panel.d.ts +38 -4
  7. package/lib/cascader/cascader.css +23 -0
  8. package/lib/cascader/cascader.d.ts +19 -5
  9. package/lib/cascader/cascader.less +26 -0
  10. package/lib/cascader/cascader.variable.css +23 -0
  11. package/lib/cascader/index.d.ts +93 -17
  12. package/lib/cascader/index.js +1 -1
  13. package/lib/cascader/interface.d.ts +4 -0
  14. package/lib/cascader/node.d.ts +7 -1
  15. package/lib/cascader/store.d.ts +5 -1
  16. package/lib/date-picker/index.js +1 -1
  17. package/lib/dialog/dialog.css +55 -1
  18. package/lib/dialog/dialog.d.ts +7 -0
  19. package/lib/dialog/dialog.less +23 -0
  20. package/lib/dialog/dialog.variable.css +55 -1
  21. package/lib/dialog/index.d.ts +16 -1
  22. package/lib/dialog/index.js +1 -1
  23. package/lib/dialog/props.d.ts +3 -0
  24. package/lib/info-box/index.css +35 -0
  25. package/lib/info-box/index.js +1 -1
  26. package/lib/info-box/index.less +48 -0
  27. package/lib/info-box/index.variable.css +35 -0
  28. package/lib/modal/index.d.ts +19 -1
  29. package/lib/modal/index.js +1 -1
  30. package/lib/modal/modal.css +37 -1
  31. package/lib/modal/modal.d.ts +7 -0
  32. package/lib/modal/modal.less +4 -1
  33. package/lib/modal/modal.variable.css +37 -1
  34. package/lib/modal/props.mixin.d.ts +3 -0
  35. package/lib/shared/index.d.ts +1 -1
  36. package/lib/shared/index.js +1 -1
  37. package/lib/shared/utils.d.ts +1 -0
  38. package/lib/sideslider/index.d.ts +16 -1
  39. package/lib/sideslider/sideslider.d.ts +7 -0
  40. package/lib/table/index.js +1 -1
  41. package/lib/tag-input/index.d.ts +4 -4
  42. package/lib/tag-input/tag-input.d.ts +1 -1
  43. package/package.json +1 -1
package/dist/index.esm.js CHANGED
@@ -7354,6 +7354,7 @@ const observerResize$1 = (root, callbackFn, delay = 60, immediate = false) => {
7354
7354
  }
7355
7355
  };
7356
7356
  };
7357
+ const capitalize = (str) => str[0].toUpperCase() + str.slice(1);
7357
7358
  class BkMaskManager {
7358
7359
  constructor(config) {
7359
7360
  this.multiInstance = false;
@@ -8017,6 +8018,9 @@ function arrayEqual(arr1 = [], arr2 = []) {
8017
8018
  return false;
8018
8019
  }
8019
8020
  for (let i2 = 0; i2 < arr1.length; i2++) {
8021
+ if (Array.isArray(arr1[i2])) {
8022
+ return arrayEqual(arr1[i2], arr2[i2]);
8023
+ }
8020
8024
  if (arr1[i2] !== arr2[i2]) {
8021
8025
  return false;
8022
8026
  }
@@ -10150,7 +10154,8 @@ const propsMixin$1 = {
10150
10154
  renderDirective: PropTypes.commonType(["show", "if"], "renderDirective").def("show"),
10151
10155
  beforeClose: PropTypes.custom(() => true),
10152
10156
  dialogType: PropTypes.commonType(["show", "operation", "confirm", "process"], "dialogType").def("operation"),
10153
- multiInstance: PropTypes.bool.def(true)
10157
+ multiInstance: PropTypes.bool.def(true),
10158
+ infoType: PropTypes.commonType(["success", "warning", "danger", "loading"], "infoType").def()
10154
10159
  };
10155
10160
  var Component$u = defineComponent({
10156
10161
  name: "Modal",
@@ -10404,6 +10409,23 @@ var Dialog = defineComponent({
10404
10409
  };
10405
10410
  },
10406
10411
  render() {
10412
+ const renderIcon = () => {
10413
+ const iconMap = {
10414
+ loading: createVNode(spinner, {
10415
+ "class": "bk-info-icon primary"
10416
+ }, null),
10417
+ warning: createVNode(warn, {
10418
+ "class": "bk-info-icon warning"
10419
+ }, null),
10420
+ success: createVNode(success, {
10421
+ "class": "bk-info-icon success"
10422
+ }, null),
10423
+ danger: createVNode(close$1, {
10424
+ "class": "bk-info-icon danger"
10425
+ }, null)
10426
+ };
10427
+ return iconMap[this.infoType];
10428
+ };
10407
10429
  const dialogSlot = {
10408
10430
  header: () => {
10409
10431
  var _a, _b, _c, _d, _e, _f;
@@ -10412,7 +10434,11 @@ var Dialog = defineComponent({
10412
10434
  "onMousedown": this.moveHandler
10413
10435
  }, [(_c = (_b = (_a = this.$slots).tools) == null ? void 0 : _b.call(_a)) != null ? _c : ""]), createVNode("div", {
10414
10436
  "class": "bk-dialog-header"
10415
- }, [createVNode("span", {
10437
+ }, [createVNode("div", {
10438
+ "class": "bk-header-icon"
10439
+ }, [this.infoType ? renderIcon() : createVNode("slot", {
10440
+ "name": "info-icon"
10441
+ }, null)]), createVNode("span", {
10416
10442
  "class": "bk-dialog-title",
10417
10443
  "style": `text-align: ${this.headerAlign}`
10418
10444
  }, [(_f = (_e = (_d = this.$slots).header) == null ? void 0 : _e.call(_d)) != null ? _f : this.title])])];
@@ -16980,7 +17006,7 @@ var TableCell = defineComponent({
16980
17006
  }
16981
17007
  });
16982
17008
  onBeforeUnmount(() => {
16983
- observerIns.stop();
17009
+ observerIns == null ? void 0 : observerIns.stop();
16984
17010
  bkEllipsisIns == null ? void 0 : bkEllipsisIns.destroyInstance(refRoot.value);
16985
17011
  });
16986
17012
  return () => {
@@ -20152,10 +20178,14 @@ const InfoBox = (config) => {
20152
20178
  if (modalFuncProps.value.subTitle) {
20153
20179
  switch (typeof modalFuncProps.value.subTitle) {
20154
20180
  case "string":
20155
- children.push(h$1("div", modalFuncProps.value.subTitle));
20181
+ children.push(h$1("div", {
20182
+ class: "bk-info-subTitle"
20183
+ }, modalFuncProps.value.subTitle));
20156
20184
  break;
20157
20185
  case "function":
20158
- children.push(h$1("div", modalFuncProps.value.subTitle()));
20186
+ children.push(h$1("div", {
20187
+ class: "bk-info-subTitle"
20188
+ }, modalFuncProps.value.subTitle()));
20159
20189
  break;
20160
20190
  default:
20161
20191
  children.push(h$1(modalFuncProps.value.subTitle));
@@ -20166,6 +20196,7 @@ const InfoBox = (config) => {
20166
20196
  };
20167
20197
  return () => createVNode(Dialog, __spreadProps(__spreadValues({}, modalFuncProps.value), {
20168
20198
  isShow: isShow.value,
20199
+ class: "bk-info-wrapper",
20169
20200
  onClosed,
20170
20201
  onConfirm
20171
20202
  }), getContent());
@@ -23309,7 +23340,6 @@ const mergeDateHMS = (date, ...hms) => {
23309
23340
  newDate.setSeconds(hms[2]);
23310
23341
  return newDate;
23311
23342
  };
23312
- const capitalize = (str) => str[0].toUpperCase() + str.slice(1);
23313
23343
  const dateTableProps = {
23314
23344
  tableDate: {
23315
23345
  type: Date,
@@ -27974,7 +28004,11 @@ var CascaderPanel = defineComponent({
27974
28004
  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).def("auto"),
27975
28005
  height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).def(216),
27976
28006
  store: PropTypes.object.def({}),
27977
- modelValue: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number).def([]), PropTypes.arrayOf(PropTypes.string).def([])])
28007
+ separator: PropTypes.string.def(""),
28008
+ suggestions: PropTypes.arrayOf(A()),
28009
+ isFiltering: PropTypes.bool.def(false),
28010
+ searchKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).def(""),
28011
+ modelValue: PropTypes.arrayOf(PropTypes.oneOfType([q(), String, Number]))
27978
28012
  },
27979
28013
  emits: ["update:modelValue"],
27980
28014
  setup(props2, {
@@ -28008,6 +28042,9 @@ var CascaderPanel = defineComponent({
28008
28042
  checkValue.value = value;
28009
28043
  };
28010
28044
  const nodeCheckHandler = (node) => {
28045
+ if (node.isDisabled) {
28046
+ return;
28047
+ }
28011
28048
  if (node.config.multiple) {
28012
28049
  checkValue.value = store.getCheckedNodes().map((node2) => node2.path);
28013
28050
  } else {
@@ -28057,6 +28094,23 @@ var CascaderPanel = defineComponent({
28057
28094
  };
28058
28095
  return events;
28059
28096
  };
28097
+ const searchPanelEvents = (node) => {
28098
+ const {
28099
+ multiple
28100
+ } = node.config;
28101
+ const events = {
28102
+ onClick: (e) => {
28103
+ if (multiple) {
28104
+ e.stopPropagation();
28105
+ checkNode(node, !node.checked);
28106
+ return;
28107
+ }
28108
+ nodeExpandHandler(node);
28109
+ node.isLeaf && !multiple && nodeCheckHandler(node);
28110
+ }
28111
+ };
28112
+ return events;
28113
+ };
28060
28114
  const isNodeInPath = (node) => {
28061
28115
  const currentLevel = activePath.value[node.level - 1] || {};
28062
28116
  return currentLevel.id === node.id;
@@ -28066,12 +28120,12 @@ var CascaderPanel = defineComponent({
28066
28120
  multiple
28067
28121
  } = node.config;
28068
28122
  if (multiple) {
28069
- return false;
28123
+ return checkValue2.some((val) => arrayEqual(val, node.path));
28070
28124
  }
28071
28125
  return arrayEqual(checkValue2, node.path);
28072
28126
  };
28073
28127
  const checkNode = (node, value) => {
28074
- node.setNodeCheck(value);
28128
+ node.setNodeCheck(value ? value : false);
28075
28129
  nodeCheckHandler(node);
28076
28130
  };
28077
28131
  const iconRender = (node) => node.loading ? createVNode(spinner, {
@@ -28098,13 +28152,35 @@ var CascaderPanel = defineComponent({
28098
28152
  checkNode,
28099
28153
  iconRender,
28100
28154
  panelWidth,
28101
- panelHeight
28155
+ panelHeight,
28156
+ searchPanelEvents
28102
28157
  };
28103
28158
  },
28104
28159
  render() {
28160
+ const emptyWidth = parseInt(this.panelWidth, 10) > 200 ? this.panelWidth : `${200}px`;
28161
+ const searchPanelRender = () => this.suggestions.length ? createVNode("ul", {
28162
+ "class": "bk-cascader-panel bk-scroll-y",
28163
+ "style": {
28164
+ height: this.panelHeight,
28165
+ width: this.panelWidth
28166
+ }
28167
+ }, [this.suggestions.map((node) => createVNode("li", mergeProps({
28168
+ "class": ["bk-cascader-node", {
28169
+ "is-selected": this.isNodeInPath(node)
28170
+ }, {
28171
+ "is-disabled": node.isDisabled
28172
+ }, {
28173
+ "is-checked": this.isCheckedNode(node, this.checkValue)
28174
+ }]
28175
+ }, this.searchPanelEvents(node)), [node.pathNames.join(this.separator)]))]) : createVNode("div", {
28176
+ "class": "bk-cascader-search-empty",
28177
+ "style": {
28178
+ width: emptyWidth
28179
+ }
28180
+ }, [createVNode("span", null, [createTextVNode("\u6682\u65E0\u641C\u7D22\u7ED3\u679C")])]);
28105
28181
  return createVNode("div", {
28106
28182
  "class": "bk-cascader-panel-wrapper"
28107
- }, [this.menus.list.map((menu2) => createVNode("ul", {
28183
+ }, [this.isFiltering ? searchPanelRender() : this.menus.list.map((menu2) => createVNode("ul", {
28108
28184
  "class": "bk-cascader-panel bk-scroll-y",
28109
28185
  "style": {
28110
28186
  height: this.panelHeight,
@@ -28118,12 +28194,13 @@ var CascaderPanel = defineComponent({
28118
28194
  }, {
28119
28195
  "is-disabled": node.isDisabled
28120
28196
  }, {
28121
- "is-checked": this.isCheckedNode(node, this.checkValue)
28197
+ "is-checked": !node.config.multiple && this.isCheckedNode(node, this.checkValue)
28122
28198
  }]
28123
- }, this.nodeEvent(node)), [node.config.multiple && createVNode(BkCheckbox, {
28199
+ }, Object.assign(this.nodeEvent(node), node.config.multiple ? {} : {})), [node.config.multiple && createVNode(BkCheckbox, {
28124
28200
  "disabled": node.isDisabled,
28125
28201
  "modelValue": node.checked,
28126
28202
  "onUpdate:modelValue": ($event) => node.checked = $event,
28203
+ "indeterminate": node.isIndeterminate,
28127
28204
  "onChange": (val) => this.checkNode(node, val)
28128
28205
  }, null), (_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a, {
28129
28206
  node,
@@ -28132,6 +28209,15 @@ var CascaderPanel = defineComponent({
28132
28209
  })]))]);
28133
28210
  }
28134
28211
  });
28212
+ function isNodeDisabled(node) {
28213
+ if (node.data.disabled) {
28214
+ return true;
28215
+ }
28216
+ if (node.level !== 1) {
28217
+ return isNodeDisabled(node.parent);
28218
+ }
28219
+ return node.data.disabled;
28220
+ }
28135
28221
  class Node$1 {
28136
28222
  constructor(node, config, parent) {
28137
28223
  this.data = node;
@@ -28163,10 +28249,58 @@ class Node$1 {
28163
28249
  return !(Array.isArray(this.children) && ((_a = this.children) == null ? void 0 : _a.length) !== 0);
28164
28250
  }
28165
28251
  get isDisabled() {
28166
- return this.data.disabled;
28252
+ return isNodeDisabled(this);
28253
+ }
28254
+ broadcast(event, checkStatus) {
28255
+ const handlerName = `onParent${capitalize(event)}`;
28256
+ this.children.forEach((child) => {
28257
+ var _a;
28258
+ if (child) {
28259
+ child.broadcast(event, checkStatus);
28260
+ (_a = child[handlerName]) == null ? void 0 : _a.call(child, checkStatus);
28261
+ }
28262
+ });
28263
+ }
28264
+ emit(event) {
28265
+ var _a;
28266
+ const { parent } = this;
28267
+ const handlerName = `onChild${capitalize(event)}`;
28268
+ if (parent) {
28269
+ (_a = parent[handlerName]) == null ? void 0 : _a.call(parent);
28270
+ parent.emit(event);
28271
+ }
28272
+ }
28273
+ onParentCheck(checked) {
28274
+ if (!this.isDisabled) {
28275
+ this.setCheckState(checked);
28276
+ }
28277
+ }
28278
+ onChildCheck() {
28279
+ const { children } = this;
28280
+ const validChildren = children.filter((child) => !child.isDisabled);
28281
+ const checked = validChildren.length ? validChildren.every((child) => child.checked) : false;
28282
+ this.setCheckState(checked);
28283
+ }
28284
+ setCheckState(checked) {
28285
+ const totalNum = this.children.length;
28286
+ const checkedNum = this.children.reduce((c2, p2) => {
28287
+ const tempNum = p2.isIndeterminate ? 0.5 : 0;
28288
+ const num = p2.checked ? 1 : tempNum;
28289
+ return c2 + num;
28290
+ }, 0);
28291
+ this.checked = checked;
28292
+ this.isIndeterminate = checkedNum !== totalNum && checkedNum > 0;
28167
28293
  }
28168
28294
  setNodeCheck(status) {
28169
- this.checked = status;
28295
+ if (this.checked !== status) {
28296
+ if (this.config.checkAnyLevel) {
28297
+ this.checked = status;
28298
+ return;
28299
+ }
28300
+ this.broadcast("check", status);
28301
+ this.setCheckState(status);
28302
+ this.emit("check");
28303
+ }
28170
28304
  }
28171
28305
  calculateNodesPath() {
28172
28306
  const nodes = [this];
@@ -28197,6 +28331,21 @@ class Store {
28197
28331
  getNodes() {
28198
28332
  return this.nodes;
28199
28333
  }
28334
+ clearChecked() {
28335
+ this.getFlattedNodes().forEach((node) => {
28336
+ node.checked = false;
28337
+ node.isIndeterminate = false;
28338
+ });
28339
+ }
28340
+ removeTag(tag2) {
28341
+ this.getFlattedNodes().find((node) => {
28342
+ if (arrayEqual(tag2, node.path)) {
28343
+ node.checked = false;
28344
+ return true;
28345
+ }
28346
+ return false;
28347
+ });
28348
+ }
28200
28349
  getFlattedNodes(leafOnly = false) {
28201
28350
  return flatNodes(this.nodes, leafOnly);
28202
28351
  }
@@ -28230,7 +28379,7 @@ var Component$6 = defineComponent({
28230
28379
  BkPopover: BkPopover2
28231
28380
  },
28232
28381
  props: {
28233
- modelValue: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number).def([]), PropTypes.arrayOf(PropTypes.string).def([])]),
28382
+ modelValue: PropTypes.arrayOf(PropTypes.oneOfType([q(), String, Number])),
28234
28383
  list: PropTypes.array.def([]),
28235
28384
  placeholder: PropTypes.string.def("\u8BF7\u9009\u62E9"),
28236
28385
  filterable: PropTypes.bool.def(false),
@@ -28272,6 +28421,9 @@ var Component$6 = defineComponent({
28272
28421
  modelValue
28273
28422
  } = toRefs(props2);
28274
28423
  const cascaderPanel = ref();
28424
+ const searchKey = ref("");
28425
+ const suggestions = ref([]);
28426
+ const isFiltering = ref(false);
28275
28427
  const checkedValue = computed({
28276
28428
  get: () => modelValue.value,
28277
28429
  set: (value) => {
@@ -28280,6 +28432,9 @@ var Component$6 = defineComponent({
28280
28432
  });
28281
28433
  const popover3 = ref(null);
28282
28434
  const getShowText = (node) => props2.showCompleteName ? node.pathNames.join(separator2) : node.pathNames[node.pathNames.length - 1];
28435
+ const updateSearchKey = () => {
28436
+ searchKey.value = selectedText.value;
28437
+ };
28283
28438
  const updateValue = (val) => {
28284
28439
  var _a;
28285
28440
  if (multiple) {
@@ -28298,9 +28453,12 @@ var Component$6 = defineComponent({
28298
28453
  return;
28299
28454
  selectedText.value = getShowText(node);
28300
28455
  }
28456
+ updateSearchKey();
28301
28457
  };
28302
28458
  const handleClear = (e) => {
28303
28459
  e.stopPropagation();
28460
+ store.value.clearChecked();
28461
+ searchKey.value = "";
28304
28462
  updateValue([]);
28305
28463
  emit("update:modelValue", []);
28306
28464
  emit("clear", JSON.parse(JSON.stringify(props2.modelValue)));
@@ -28308,8 +28466,10 @@ var Component$6 = defineComponent({
28308
28466
  const removeTag = (value, index, e) => {
28309
28467
  e.stopPropagation();
28310
28468
  const current = JSON.parse(JSON.stringify(value));
28311
- current.splice(index, 1);
28469
+ const tag2 = current.splice(index, 1)[0];
28470
+ store.value.removeTag(tag2);
28312
28471
  updateValue(current);
28472
+ emit("update:modelValue", store.value.getCheckedNodes().map((node) => node.path));
28313
28473
  };
28314
28474
  const modelValueChangeHandler = (value, oldValue) => {
28315
28475
  updateValue(value);
@@ -28322,7 +28482,27 @@ var Component$6 = defineComponent({
28322
28482
  };
28323
28483
  const popoverChangeEmitter = (val) => {
28324
28484
  emit("toggle", val.isShow);
28485
+ if (!val.isShow) {
28486
+ isFiltering.value = false;
28487
+ }
28325
28488
  };
28489
+ const searchInputHandler = debounce(200, (e) => {
28490
+ const target = e.target;
28491
+ searchKey.value = target.value;
28492
+ if (searchKey.value === "") {
28493
+ isFiltering.value = false;
28494
+ return;
28495
+ }
28496
+ isFiltering.value = true;
28497
+ const targetNodes = store.value.getFlattedNodes().filter((node) => {
28498
+ if (props2.checkAnyLevel) {
28499
+ return node.pathNames.join(props2.separator).includes(searchKey.value);
28500
+ }
28501
+ return node.isLeaf && node.pathNames.join(props2.separator).includes(searchKey.value);
28502
+ });
28503
+ suggestions.value = targetNodes;
28504
+ !(popover3 == null ? void 0 : popover3.value.isShow) && (popover3 == null ? void 0 : popover3.value.show());
28505
+ });
28326
28506
  watch(() => props2.modelValue, modelValueChangeHandler, {
28327
28507
  immediate: true
28328
28508
  });
@@ -28344,7 +28524,11 @@ var Component$6 = defineComponent({
28344
28524
  selectedTags,
28345
28525
  removeTag,
28346
28526
  cascaderPanel,
28347
- popoverChangeEmitter
28527
+ popoverChangeEmitter,
28528
+ searchKey,
28529
+ suggestions,
28530
+ isFiltering,
28531
+ searchInputHandler
28348
28532
  };
28349
28533
  },
28350
28534
  render() {
@@ -28378,7 +28562,8 @@ var Component$6 = defineComponent({
28378
28562
  "class": ["bk-cascader", "bk-cascader-wrapper", this.extCls, {
28379
28563
  "bk-is-show-panel": this.panelShow,
28380
28564
  "is-unselected": this.modelValue.length === 0,
28381
- "is-hover": this.isHover
28565
+ "is-hover": this.isHover,
28566
+ "is-filterable": this.filterable
28382
28567
  }],
28383
28568
  "tabindex": "0",
28384
28569
  "data-placeholder": this.placeholder,
@@ -28397,10 +28582,12 @@ var Component$6 = defineComponent({
28397
28582
  }, {
28398
28583
  default: () => createVNode("div", {
28399
28584
  "class": "bk-cascader-name"
28400
- }, [this.multiple && renderTags(), this.filterable ? createVNode("input", {
28585
+ }, [this.multiple && this.selectedTags.length > 0 && renderTags(), this.filterable ? createVNode("input", {
28401
28586
  "class": "bk-cascader-search-input",
28402
28587
  "type": "text",
28403
- "placeholder": this.placeholder
28588
+ "onInput": this.searchInputHandler,
28589
+ "placeholder": this.placeholder,
28590
+ "value": this.searchKey
28404
28591
  }, null) : createVNode("span", null, [this.selectedText])]),
28405
28592
  content: () => createVNode("div", {
28406
28593
  "class": "bk-cascader-popover"
@@ -28409,6 +28596,10 @@ var Component$6 = defineComponent({
28409
28596
  "ref": "cascaderPanel",
28410
28597
  "width": this.scrollWidth,
28411
28598
  "height": this.scrollHeight,
28599
+ "search-key": this.searchKey,
28600
+ "separator": this.separator,
28601
+ "is-filtering": this.isFiltering,
28602
+ "suggestions": this.suggestions,
28412
28603
  "modelValue": this.checkedValue,
28413
28604
  "onUpdate:modelValue": ($event) => this.checkedValue = $event
28414
28605
  }, {