persagy-vant 0.0.42 → 0.0.44

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 (67) hide show
  1. package/es/action-sheet/ActionSheet.d.ts +4 -0
  2. package/es/action-sheet/ActionSheet.mjs +4 -1
  3. package/es/action-sheet/index.css +1 -1
  4. package/es/action-sheet/index.d.ts +3 -0
  5. package/es/action-sheet/index.less +4 -0
  6. package/es/index.d.ts +1 -1
  7. package/es/index.mjs +1 -1
  8. package/es/locale/lang/en-US.d.ts +6 -0
  9. package/es/locale/lang/en-US.mjs +6 -0
  10. package/es/locale/lang/zh-CN.d.ts +6 -0
  11. package/es/locale/lang/zh-CN.mjs +6 -0
  12. package/es/object-select/ObjectSelect.d.ts +7 -2
  13. package/es/object-select/ObjectSelect.mjs +26 -13
  14. package/es/object-select/index.d.ts +5 -1
  15. package/es/tree-select/TreeSelect.d.ts +7 -1
  16. package/es/tree-select/TreeSelect.mjs +107 -54
  17. package/es/tree-select/index.css +1 -1
  18. package/es/tree-select/index.d.ts +6 -2
  19. package/es/tree-select/index.less +6 -0
  20. package/es/tree-select/style/index.mjs +1 -0
  21. package/es/tree-select/style/less.mjs +1 -0
  22. package/es/uploader/Uploader.d.ts +6 -1
  23. package/es/uploader/Uploader.mjs +80 -19
  24. package/es/uploader/index.css +1 -1
  25. package/es/uploader/index.d.ts +6 -2
  26. package/es/uploader/index.less +4 -0
  27. package/es/uploader/style/index.mjs +3 -0
  28. package/es/uploader/style/less.mjs +3 -0
  29. package/es/uploader/types.d.ts +2 -1
  30. package/lib/action-sheet/ActionSheet.d.ts +4 -0
  31. package/lib/action-sheet/ActionSheet.js +4 -1
  32. package/lib/action-sheet/index.css +1 -1
  33. package/lib/action-sheet/index.d.ts +3 -0
  34. package/lib/action-sheet/index.less +4 -0
  35. package/lib/index.css +1 -1
  36. package/lib/index.d.ts +1 -1
  37. package/lib/index.js +1 -1
  38. package/lib/locale/lang/en-US.d.ts +6 -0
  39. package/lib/locale/lang/en-US.js +6 -0
  40. package/lib/locale/lang/zh-CN.d.ts +6 -0
  41. package/lib/locale/lang/zh-CN.js +6 -0
  42. package/lib/object-select/ObjectSelect.d.ts +7 -2
  43. package/lib/object-select/ObjectSelect.js +25 -12
  44. package/lib/object-select/index.d.ts +5 -1
  45. package/lib/tree-select/TreeSelect.d.ts +7 -1
  46. package/lib/tree-select/TreeSelect.js +107 -52
  47. package/lib/tree-select/index.css +1 -1
  48. package/lib/tree-select/index.d.ts +6 -2
  49. package/lib/tree-select/index.less +6 -0
  50. package/lib/tree-select/style/index.js +1 -0
  51. package/lib/tree-select/style/less.js +1 -0
  52. package/lib/uploader/Uploader.d.ts +6 -1
  53. package/lib/uploader/Uploader.js +79 -18
  54. package/lib/uploader/index.css +1 -1
  55. package/lib/uploader/index.d.ts +6 -2
  56. package/lib/uploader/index.less +4 -0
  57. package/lib/uploader/style/index.js +3 -0
  58. package/lib/uploader/style/less.js +3 -0
  59. package/lib/uploader/types.d.ts +2 -1
  60. package/lib/vant.cjs.js +232 -98
  61. package/lib/vant.es.js +233 -99
  62. package/lib/vant.js +232 -98
  63. package/lib/vant.min.js +1 -1
  64. package/lib/web-types.json +1 -1
  65. package/package.json +1 -1
  66. package/skills/use-persagy-vant/references/business-component-catalog.md +1 -1
  67. package/skills/use-persagy-vant/references/component-catalog.md +2 -2
package/lib/index.d.ts CHANGED
@@ -117,4 +117,4 @@ declare namespace _default {
117
117
  }
118
118
  export default _default;
119
119
  export function install(app: any): void;
120
- export const version: "0.0.42";
120
+ export const version: "0.0.44";
package/lib/index.js CHANGED
@@ -248,7 +248,7 @@ __reExport(stdin_exports, require("./uploader"), module.exports);
248
248
  __reExport(stdin_exports, require("./video-preview"), module.exports);
249
249
  __reExport(stdin_exports, require("./work-order-card"), module.exports);
250
250
  __reExport(stdin_exports, require("./work-order-filter"), module.exports);
251
- const version = "0.0.42";
251
+ const version = "0.0.44";
252
252
  function install(app) {
253
253
  const components = [
254
254
  import_action_bar.ActionBar,
@@ -63,5 +63,11 @@ declare const _default: {
63
63
  vanTabs: {
64
64
  moreTitle: string;
65
65
  };
66
+ vanUploader: {
67
+ sourcePickerTitle: string;
68
+ takePhoto: string;
69
+ recordVideo: string;
70
+ chooseFromAlbum: string;
71
+ };
66
72
  };
67
73
  export default _default;
@@ -84,5 +84,11 @@ var stdin_default = {
84
84
  },
85
85
  vanTabs: {
86
86
  moreTitle: "More tabs"
87
+ },
88
+ vanUploader: {
89
+ sourcePickerTitle: "Choose upload source",
90
+ takePhoto: "Take photo",
91
+ recordVideo: "Record video",
92
+ chooseFromAlbum: "Choose from album"
87
93
  }
88
94
  };
@@ -63,5 +63,11 @@ declare const _default: {
63
63
  vanTabs: {
64
64
  moreTitle: string;
65
65
  };
66
+ vanUploader: {
67
+ sourcePickerTitle: string;
68
+ takePhoto: string;
69
+ recordVideo: string;
70
+ chooseFromAlbum: string;
71
+ };
66
72
  };
67
73
  export default _default;
@@ -84,5 +84,11 @@ var stdin_default = {
84
84
  },
85
85
  vanTabs: {
86
86
  moreTitle: "\u66F4\u591A\u6807\u7B7E"
87
+ },
88
+ vanUploader: {
89
+ sourcePickerTitle: "\u9009\u62E9\u4E0A\u4F20\u65B9\u5F0F",
90
+ takePhoto: "\u62CD\u7167",
91
+ recordVideo: "\u62CD\u89C6\u9891",
92
+ chooseFromAlbum: "\u4ECE\u76F8\u518C\u9009\u62E9"
87
93
  }
88
94
  };
@@ -1,6 +1,6 @@
1
1
  import { type ExtractPropTypes, type PropType } from 'vue';
2
2
  import { type Numeric } from '../utils';
3
- import { type TreeSelectItem } from '../tree-select';
3
+ import { type TreeSelectItem, type TreeSelectLoadChildren } from '../tree-select';
4
4
  import type { ObjectSelectSpecialty } from './types';
5
5
  declare const objectSelectProps: {
6
6
  show: BooleanConstructor;
@@ -24,6 +24,7 @@ declare const objectSelectProps: {
24
24
  type: PropType<ObjectSelectSpecialty[]>;
25
25
  default: () => ObjectSelectSpecialty[];
26
26
  };
27
+ loadChildren: PropType<TreeSelectLoadChildren>;
27
28
  };
28
29
  export declare type ObjectSelectProps = ExtractPropTypes<typeof objectSelectProps>;
29
30
  declare const _default: import("vue").DefineComponent<{
@@ -48,7 +49,8 @@ declare const _default: import("vue").DefineComponent<{
48
49
  type: PropType<ObjectSelectSpecialty[]>;
49
50
  default: () => ObjectSelectSpecialty[];
50
51
  };
51
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "update:modelValue" | "update:show" | "confirm")[], "change" | "update:modelValue" | "update:show" | "confirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
52
+ loadChildren: PropType<TreeSelectLoadChildren>;
53
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "update:modelValue" | "load" | "update:show" | "confirm" | "load-error")[], "change" | "update:modelValue" | "load" | "update:show" | "confirm" | "load-error", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
52
54
  show: BooleanConstructor;
53
55
  modelValue: {
54
56
  type: PropType<Numeric[]>;
@@ -70,11 +72,14 @@ declare const _default: import("vue").DefineComponent<{
70
72
  type: PropType<ObjectSelectSpecialty[]>;
71
73
  default: () => ObjectSelectSpecialty[];
72
74
  };
75
+ loadChildren: PropType<TreeSelectLoadChildren>;
73
76
  }>> & {
74
77
  onChange?: ((...args: any[]) => any) | undefined;
78
+ onLoad?: ((...args: any[]) => any) | undefined;
75
79
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
76
80
  "onUpdate:show"?: ((...args: any[]) => any) | undefined;
77
81
  onConfirm?: ((...args: any[]) => any) | undefined;
82
+ "onLoad-error"?: ((...args: any[]) => any) | undefined;
78
83
  }, {
79
84
  title: string;
80
85
  modelValue: Numeric[];
@@ -68,13 +68,7 @@ const spaceItems = [{
68
68
  id: "high-voltage",
69
69
  text: "\u9AD8\u538B\u8BA1\u91CF\u67DC",
70
70
  selectable: false,
71
- children: [{
72
- id: "metering-cabinet-1",
73
- text: "B3_\u9AD8\u538B\u8BA1\u91CF\u67DC_1#"
74
- }, {
75
- id: "metering-cabinet-2",
76
- text: "B3_\u9AD8\u538B\u8BA1\u91CF\u67DC_2#"
77
- }]
71
+ children: []
78
72
  }]
79
73
  }, {
80
74
  id: "chiller-room",
@@ -394,13 +388,14 @@ const objectSelectProps = {
394
388
  specialties: {
395
389
  type: Array,
396
390
  default: () => specialties
397
- }
391
+ },
392
+ loadChildren: Function
398
393
  };
399
394
  const flattenItems = (items) => items.flatMap((item) => [item, ...item.children ? flattenItems(item.children) : []]);
400
395
  var stdin_default = (0, import_vue.defineComponent)({
401
396
  name,
402
397
  props: objectSelectProps,
403
- emits: ["update:show", "update:modelValue", "change", "confirm"],
398
+ emits: ["update:show", "update:modelValue", "change", "confirm", "load", "load-error"],
404
399
  setup(props, {
405
400
  emit
406
401
  }) {
@@ -413,6 +408,14 @@ var stdin_default = (0, import_vue.defineComponent)({
413
408
  const expandedSelected = (0, import_vue.ref)(false);
414
409
  const searching = (0, import_vue.ref)(false);
415
410
  const keyword = (0, import_vue.ref)("");
411
+ const loadedChildren = (0, import_vue.shallowReactive)(/* @__PURE__ */ new Map());
412
+ const getChildren = (item) => loadedChildren.get(item.id) || item.children || [];
413
+ const hydrateItems = (items) => items.map((item) => {
414
+ const children = getChildren(item);
415
+ return children.length ? (0, import_utils.extend)({}, item, {
416
+ children: hydrateItems(children)
417
+ }) : item;
418
+ });
416
419
  const currentSpecialtyItems = (specialty) => specialtyType.value === 0 ? specialty.deviceItems : specialty.systemItems;
417
420
  const expandOnlySpecialty = () => {
418
421
  if (props.specialties.length === 1) {
@@ -437,7 +440,7 @@ var stdin_default = (0, import_vue.defineComponent)({
437
440
  immediate: true
438
441
  });
439
442
  const selected = (0, import_vue.computed)(() => props.modelValue);
440
- const allItems = (0, import_vue.computed)(() => flattenItems([...props.spaceItems, ...props.specialties.flatMap((specialty) => [...specialty.deviceItems, ...specialty.systemItems])]));
443
+ const allItems = (0, import_vue.computed)(() => flattenItems(hydrateItems([...props.spaceItems, ...props.specialties.flatMap((specialty) => [...specialty.deviceItems, ...specialty.systemItems])])));
441
444
  const selectedItems = (0, import_vue.computed)(() => allItems.value.filter((item) => selected.value.includes(item.id)));
442
445
  const searchResults = (0, import_vue.computed)(() => {
443
446
  const query = keyword.value.trim().toLowerCase();
@@ -482,19 +485,29 @@ var stdin_default = (0, import_vue.defineComponent)({
482
485
  update([]);
483
486
  expandedSelected.value = false;
484
487
  };
488
+ const onLoad = (item, children) => {
489
+ loadedChildren.set(item.id, children);
490
+ emit("load", item, children);
491
+ };
492
+ const onLoadError = (item, error) => {
493
+ emit("load-error", item, error);
494
+ };
485
495
  const renderTree = (items) => (0, import_vue.createVNode)("div", {
486
496
  "class": bem("tree-card")
487
497
  }, [(0, import_vue.createVNode)(import_tree_select.TreeSelect, {
488
498
  "modelValue": selected.value,
489
499
  "expandedKeys": expandedKeys.value,
490
- "items": items,
500
+ "items": hydrateItems(items),
491
501
  "multiple": true,
492
502
  "showParentSelect": true,
493
503
  "cascade": false,
504
+ "loadChildren": props.loadChildren,
494
505
  "onUpdate:modelValue": update,
495
506
  "onUpdate:expandedKeys": (value) => {
496
507
  expandedKeys.value = value;
497
- }
508
+ },
509
+ "onLoad": onLoad,
510
+ "onLoad-error": onLoadError
498
511
  }, null)]);
499
512
  const renderSpecialty = (specialty) => {
500
513
  var _a;
@@ -20,7 +20,8 @@ export declare const ObjectSelect: import("../utils").WithInstall<import("vue").
20
20
  type: import("vue").PropType<import("./types").ObjectSelectSpecialty[]>;
21
21
  default: () => import("./types").ObjectSelectSpecialty[];
22
22
  };
23
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "update:modelValue" | "update:show" | "confirm")[], "change" | "update:modelValue" | "update:show" | "confirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
23
+ loadChildren: import("vue").PropType<import("..").TreeSelectLoadChildren>;
24
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "update:modelValue" | "load" | "update:show" | "confirm" | "load-error")[], "change" | "update:modelValue" | "load" | "update:show" | "confirm" | "load-error", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
24
25
  show: BooleanConstructor;
25
26
  modelValue: {
26
27
  type: import("vue").PropType<import("../utils").Numeric[]>;
@@ -42,11 +43,14 @@ export declare const ObjectSelect: import("../utils").WithInstall<import("vue").
42
43
  type: import("vue").PropType<import("./types").ObjectSelectSpecialty[]>;
43
44
  default: () => import("./types").ObjectSelectSpecialty[];
44
45
  };
46
+ loadChildren: import("vue").PropType<import("..").TreeSelectLoadChildren>;
45
47
  }>> & {
46
48
  onChange?: ((...args: any[]) => any) | undefined;
49
+ onLoad?: ((...args: any[]) => any) | undefined;
47
50
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
48
51
  "onUpdate:show"?: ((...args: any[]) => any) | undefined;
49
52
  onConfirm?: ((...args: any[]) => any) | undefined;
53
+ "onLoad-error"?: ((...args: any[]) => any) | undefined;
50
54
  }, {
51
55
  title: string;
52
56
  modelValue: import("../utils").Numeric[];
@@ -8,6 +8,7 @@ export declare type TreeSelectItem = {
8
8
  selectable?: boolean;
9
9
  };
10
10
  export declare type TreeSelectChild = TreeSelectItem;
11
+ export declare type TreeSelectLoadChildren = (item: TreeSelectItem) => TreeSelectItem[] | Promise<TreeSelectItem[]>;
11
12
  declare const treeSelectProps: {
12
13
  items: {
13
14
  type: PropType<TreeSelectItem[]>;
@@ -30,6 +31,7 @@ declare const treeSelectProps: {
30
31
  type: BooleanConstructor;
31
32
  default: true;
32
33
  };
34
+ loadChildren: PropType<TreeSelectLoadChildren>;
33
35
  };
34
36
  export declare type TreeSelectProps = ExtractPropTypes<typeof treeSelectProps>;
35
37
  declare const _default: import("vue").DefineComponent<{
@@ -54,7 +56,8 @@ declare const _default: import("vue").DefineComponent<{
54
56
  type: BooleanConstructor;
55
57
  default: true;
56
58
  };
57
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("select" | "update:modelValue" | "update:expandedKeys" | "expand")[], "select" | "update:modelValue" | "update:expandedKeys" | "expand", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
59
+ loadChildren: PropType<TreeSelectLoadChildren>;
60
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("select" | "update:modelValue" | "load" | "update:expandedKeys" | "expand" | "load-error")[], "select" | "update:modelValue" | "load" | "update:expandedKeys" | "expand" | "load-error", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
58
61
  items: {
59
62
  type: PropType<TreeSelectItem[]>;
60
63
  default: () => never[];
@@ -76,11 +79,14 @@ declare const _default: import("vue").DefineComponent<{
76
79
  type: BooleanConstructor;
77
80
  default: true;
78
81
  };
82
+ loadChildren: PropType<TreeSelectLoadChildren>;
79
83
  }>> & {
84
+ onLoad?: ((...args: any[]) => any) | undefined;
80
85
  onSelect?: ((...args: any[]) => any) | undefined;
81
86
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
82
87
  "onUpdate:expandedKeys"?: ((...args: any[]) => any) | undefined;
83
88
  onExpand?: ((...args: any[]) => any) | undefined;
89
+ "onLoad-error"?: ((...args: any[]) => any) | undefined;
84
90
  }, {
85
91
  modelValue: Numeric[];
86
92
  multiple: boolean;
@@ -1,21 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
5
  var __export = (target, all) => {
20
6
  for (var name2 in all)
21
7
  __defProp(target, name2, { get: all[name2], enumerable: true });
@@ -29,6 +15,26 @@ var __copyProps = (to, from, except, desc) => {
29
15
  return to;
30
16
  };
31
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var __async = (__this, __arguments, generator) => {
19
+ return new Promise((resolve, reject) => {
20
+ var fulfilled = (value) => {
21
+ try {
22
+ step(generator.next(value));
23
+ } catch (e) {
24
+ reject(e);
25
+ }
26
+ };
27
+ var rejected = (value) => {
28
+ try {
29
+ step(generator.throw(value));
30
+ } catch (e) {
31
+ reject(e);
32
+ }
33
+ };
34
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
35
+ step((generator = generator.apply(__this, __arguments)).next());
36
+ });
37
+ };
32
38
  var stdin_exports = {};
33
39
  __export(stdin_exports, {
34
40
  default: () => stdin_default
@@ -38,6 +44,7 @@ var import_vue = require("vue");
38
44
  var import_utils = require("../utils");
39
45
  var import_cell = require("../cell");
40
46
  var import_icon = require("../icon");
47
+ var import_loading = require("../loading");
41
48
  const [name, bem] = (0, import_utils.createNamespace)("tree-select");
42
49
  const treeSelectProps = {
43
50
  items: (0, import_utils.makeArrayProp)(),
@@ -48,20 +55,31 @@ const treeSelectProps = {
48
55
  selectableParent: Boolean,
49
56
  showParentSelect: Boolean,
50
57
  showSelectLevels: Array,
51
- showDivider: import_utils.truthProp
58
+ showDivider: import_utils.truthProp,
59
+ loadChildren: Function
52
60
  };
53
61
  var stdin_default = (0, import_vue.defineComponent)({
54
62
  name,
55
63
  props: treeSelectProps,
56
- emits: ["update:modelValue", "update:expandedKeys", "select", "expand"],
64
+ emits: ["update:modelValue", "update:expandedKeys", "select", "expand", "load", "load-error"],
57
65
  setup(props, {
58
66
  emit,
59
67
  slots
60
68
  }) {
61
69
  const selectedKeys = (0, import_vue.computed)(() => props.modelValue);
62
70
  const expandedKeys = (0, import_vue.computed)(() => props.expandedKeys);
71
+ const resolvedChildren = (0, import_vue.shallowReactive)(/* @__PURE__ */ new Map());
72
+ const loadingKeys = (0, import_vue.shallowReactive)(/* @__PURE__ */ new Set());
73
+ const loadedKeys = (0, import_vue.shallowReactive)(/* @__PURE__ */ new Set());
63
74
  const isExpanded = (id) => expandedKeys.value.includes(id);
64
75
  const isSelected = (id) => selectedKeys.value.includes(id);
76
+ const isLoading = (id) => loadingKeys.has(id);
77
+ const getChildren = (item) => {
78
+ var _a;
79
+ return ((_a = item.children) == null ? void 0 : _a.length) ? item.children : resolvedChildren.get(item.id) || item.children || [];
80
+ };
81
+ const isLoadable = (item) => !!props.loadChildren && Array.isArray(item.children) && !item.children.length && !loadedKeys.has(item.id);
82
+ const isBranch = (item) => !!getChildren(item).length || isLoadable(item) || isLoading(item.id);
65
83
  const isSelectionVisible = (hasChildren, level) => {
66
84
  var _a;
67
85
  const configuredVisibility = (_a = props.showSelectLevels) == null ? void 0 : _a[level];
@@ -73,10 +91,7 @@ var stdin_default = (0, import_vue.defineComponent)({
73
91
  paddingLeft: `calc(var(--van-padding-md) + ${level * 16}px)`,
74
92
  "--van-tree-select-divider-left": `calc(var(--van-padding-md) + ${level * 16}px)`
75
93
  });
76
- const getDescendantIds = (item) => {
77
- var _a;
78
- return ((_a = item.children) == null ? void 0 : _a.flatMap((child) => [child.id, ...getDescendantIds(child)])) || [];
79
- };
94
+ const getDescendantIds = (item) => getChildren(item).flatMap((child) => [child.id, ...getDescendantIds(child)]);
80
95
  const getSelectionState = (item) => {
81
96
  const descendantIds = getDescendantIds(item);
82
97
  if (!props.cascade || !descendantIds.length) {
@@ -91,11 +106,11 @@ var stdin_default = (0, import_vue.defineComponent)({
91
106
  };
92
107
  const syncParentSelection = (items, values) => {
93
108
  items.forEach((item) => {
94
- var _a;
95
- if (!((_a = item.children) == null ? void 0 : _a.length))
109
+ const children = getChildren(item);
110
+ if (!children.length)
96
111
  return;
97
- syncParentSelection(item.children, values);
98
- const childIds = item.children.map((child) => child.id);
112
+ syncParentSelection(children, values);
113
+ const childIds = children.map((child) => child.id);
99
114
  const index = values.indexOf(item.id);
100
115
  const allChildrenSelected = childIds.every((id) => values.includes(id));
101
116
  if (allChildrenSelected && index === -1)
@@ -104,13 +119,45 @@ var stdin_default = (0, import_vue.defineComponent)({
104
119
  values.splice(index, 1);
105
120
  });
106
121
  };
107
- const toggleExpanded = (id) => {
122
+ const updateExpanded = (id, expanded) => {
108
123
  const next = expandedKeys.value.slice();
109
124
  const index = next.indexOf(id);
110
- index === -1 ? next.push(id) : next.splice(index, 1);
125
+ if (expanded && index === -1)
126
+ next.push(id);
127
+ if (!expanded && index !== -1)
128
+ next.splice(index, 1);
111
129
  emit("update:expandedKeys", next);
112
- emit("expand", id, index === -1);
130
+ emit("expand", id, expanded);
113
131
  };
132
+ const toggleExpanded = (item) => __async(this, null, function* () {
133
+ const {
134
+ id
135
+ } = item;
136
+ if (isLoading(id))
137
+ return;
138
+ if (isExpanded(id)) {
139
+ updateExpanded(id, false);
140
+ return;
141
+ }
142
+ if (isLoadable(item)) {
143
+ loadingKeys.add(id);
144
+ try {
145
+ const result = yield props.loadChildren(item);
146
+ const children = Array.isArray(result) ? result : [];
147
+ resolvedChildren.set(id, children);
148
+ loadedKeys.add(id);
149
+ emit("load", item, children);
150
+ if (children.length)
151
+ updateExpanded(id, true);
152
+ } catch (error) {
153
+ emit("load-error", item, error);
154
+ } finally {
155
+ loadingKeys.delete(id);
156
+ }
157
+ return;
158
+ }
159
+ updateExpanded(id, true);
160
+ });
114
161
  const updateSelected = (item, selected) => {
115
162
  if (item.disabled || item.selectable === false)
116
163
  return;
@@ -129,12 +176,13 @@ var stdin_default = (0, import_vue.defineComponent)({
129
176
  emit("select", item, selected);
130
177
  };
131
178
  const renderNodes = (items, level = 0) => items.map((item) => {
132
- var _a;
133
- const hasChildren = !!((_a = item.children) == null ? void 0 : _a.length);
179
+ const children = getChildren(item);
180
+ const hasChildren = isBranch(item);
134
181
  const expanded = isExpanded(item.id);
182
+ const loading = isLoading(item.id);
135
183
  const renderTitle = () => {
136
- var _a2;
137
- return ((_a2 = slots.title) == null ? void 0 : _a2.call(slots, {
184
+ var _a;
185
+ return ((_a = slots.title) == null ? void 0 : _a.call(slots, {
138
186
  item,
139
187
  level,
140
188
  hasChildren
@@ -154,36 +202,29 @@ var stdin_default = (0, import_vue.defineComponent)({
154
202
  }
155
203
  const selectable = item.selectable !== false && isSelectionVisible(hasChildren, level);
156
204
  const selectionState = getSelectionState(item);
157
- return (0, import_vue.createVNode)("div", {
158
- "key": item.id,
159
- "class": bem("node")
160
- }, [(0, import_vue.createVNode)(import_cell.Cell, {
161
- "class": bem("cell", {
162
- branch: hasChildren
163
- }),
164
- "title": item.text,
165
- "border": props.showDivider,
166
- "style": getNodeStyle(level),
167
- "rightSelect": selectable && selectionState !== "indeterminate" ? selectionState === "checked" : void 0,
168
- "selectType": props.multiple ? "checkbox" : "radio",
169
- "onUpdate:rightSelect": (value) => updateSelected(item, value)
170
- }, __spreadValues({
205
+ const cellSlots = {
171
206
  title: () => [hasChildren ? (0, import_vue.createVNode)("button", {
172
207
  "type": "button",
173
208
  "class": bem("expand-control"),
174
209
  "disabled": item.disabled,
210
+ "aria-busy": loading,
211
+ "aria-disabled": loading,
175
212
  "onClick": (event) => {
176
213
  event.stopPropagation();
177
- toggleExpanded(item.id);
214
+ toggleExpanded(item);
178
215
  }
179
- }, [(0, import_vue.createVNode)(import_icon.Icon, {
216
+ }, [loading ? (0, import_vue.createVNode)(import_loading.Loading, {
217
+ "class": bem("loading"),
218
+ "size": "var(--van-tree-select-arrow-size)"
219
+ }, null) : (0, import_vue.createVNode)(import_icon.Icon, {
180
220
  "name": "trangle-down",
181
221
  "class": bem("arrow", {
182
222
  expanded
183
223
  })
184
224
  }, null), (0, import_vue.createVNode)("span", null, [renderTitle()])]) : (0, import_vue.createVNode)("span", null, [renderTitle()])]
185
- }, selectable && selectionState === "indeterminate" ? {
186
- "right-select": () => (0, import_vue.createVNode)("button", {
225
+ };
226
+ if (selectable && selectionState === "indeterminate") {
227
+ cellSlots["right-select"] = () => (0, import_vue.createVNode)("button", {
187
228
  "type": "button",
188
229
  "class": bem("indeterminate"),
189
230
  "aria-label": `\u90E8\u5206\u9009\u4E2D${item.text}`,
@@ -191,13 +232,27 @@ var stdin_default = (0, import_vue.defineComponent)({
191
232
  event.stopPropagation();
192
233
  updateSelected(item, true);
193
234
  }
194
- }, null)
195
- } : {})), (0, import_vue.createVNode)(import_vue.Transition, {
235
+ }, null);
236
+ }
237
+ return (0, import_vue.createVNode)("div", {
238
+ "key": item.id,
239
+ "class": bem("node")
240
+ }, [(0, import_vue.createVNode)(import_cell.Cell, {
241
+ "class": bem("cell", {
242
+ branch: hasChildren
243
+ }),
244
+ "title": item.text,
245
+ "border": props.showDivider,
246
+ "style": getNodeStyle(level),
247
+ "rightSelect": selectable && selectionState !== "indeterminate" ? selectionState === "checked" : void 0,
248
+ "selectType": props.multiple ? "checkbox" : "radio",
249
+ "onUpdate:rightSelect": (value) => updateSelected(item, value)
250
+ }, cellSlots), (0, import_vue.createVNode)(import_vue.Transition, {
196
251
  "name": "van-tree-select-expand"
197
252
  }, {
198
253
  default: () => [hasChildren && expanded && (0, import_vue.createVNode)("div", {
199
254
  "class": bem("children")
200
- }, [renderNodes(item.children, level + 1)])]
255
+ }, [renderNodes(children, level + 1)])]
201
256
  })]);
202
257
  });
203
258
  return () => (0, import_vue.createVNode)("div", {
@@ -1 +1 @@
1
- :root{--van-tree-select-indent: var(--van-padding-md);--van-tree-select-arrow-size: 16px;--van-tree-select-animation-duration: .24s;--van-tree-select-divider-left: var(--van-padding-md)}.van-tree-select{overflow:hidden;color:var(--van-cell-text-color);background:var(--van-white)}.van-tree-select__node{overflow:hidden}.van-tree-select__leaf{position:relative;box-sizing:border-box}.van-tree-select__leaf--divider:not(:last-child):after{position:absolute;right:var(--van-padding-md);bottom:0;left:var(--van-tree-select-divider-left);height:1px;background:var(--van-border-color);content:"";transform:scaleY(.5)}.van-tree-select__cell{min-height:44px;padding:10px var(--van-padding-md)}.van-tree-select__cell .van-cell__title-row{align-items:center}.van-tree-select__cell .van-cell__title{font-size:var(--van-font-size-md);line-height:22px}.van-tree-select__node:not(:last-child)>.van-tree-select__cell:not(.van-cell--borderless):after{display:block;left:var(--van-tree-select-divider-left)}.van-tree-select__cell--branch:not(.van-cell--borderless):after{display:block;left:var(--van-tree-select-divider-left)}.van-tree-select__arrow{flex:none;margin-right:var(--van-padding-base);color:var(--van-gray-5);font-size:var(--van-tree-select-arrow-size);transition:transform var(--van-tree-select-animation-duration) ease}.van-tree-select__arrow--expanded{transform:rotate(0)}.van-tree-select__arrow:not(.van-tree-select__arrow--expanded){transform:rotate(-90deg)}.van-tree-select__expand-control{display:inline-flex;align-items:center;padding:0;color:inherit;font:inherit;line-height:inherit;text-align:left;background:transparent;border:0}.van-tree-select__expand-control:not(:disabled){cursor:pointer}.van-tree-select__expand-control:disabled{color:var(--van-text-color-3);cursor:not-allowed}.van-tree-select__children{overflow:hidden}.van-tree-select__indeterminate{position:relative;display:block;width:14px;height:14px;padding:0;background:var(--van-primary-color);border:0;border-radius:50%}.van-tree-select__indeterminate:after{position:absolute;top:calc(50% - 1px);right:25%;left:25%;height:2px;content:"";background:var(--van-white);border-radius:1px}.van-tree-select-expand-enter-active,.van-tree-select-expand-leave-active{overflow:hidden;transition:max-height var(--van-tree-select-animation-duration) ease,opacity var(--van-tree-select-animation-duration) ease}.van-tree-select-expand-enter-from,.van-tree-select-expand-leave-to{max-height:0;opacity:0}.van-tree-select-expand-enter-to,.van-tree-select-expand-leave-from{max-height:1000px;opacity:1}
1
+ :root{--van-tree-select-indent: var(--van-padding-md);--van-tree-select-arrow-size: 16px;--van-tree-select-animation-duration: .24s;--van-tree-select-divider-left: var(--van-padding-md)}.van-tree-select{overflow:hidden;color:var(--van-cell-text-color);background:var(--van-white)}.van-tree-select__node{overflow:hidden}.van-tree-select__leaf{position:relative;box-sizing:border-box}.van-tree-select__leaf--divider:not(:last-child):after{position:absolute;right:var(--van-padding-md);bottom:0;left:var(--van-tree-select-divider-left);height:1px;background:var(--van-border-color);content:"";transform:scaleY(.5)}.van-tree-select__cell{min-height:44px;padding:10px var(--van-padding-md)}.van-tree-select__cell .van-cell__title-row{align-items:center}.van-tree-select__cell .van-cell__title{font-size:var(--van-font-size-md);line-height:22px}.van-tree-select__node:not(:last-child)>.van-tree-select__cell:not(.van-cell--borderless):after{display:block;left:var(--van-tree-select-divider-left)}.van-tree-select__cell--branch:not(.van-cell--borderless):after{display:block;left:var(--van-tree-select-divider-left)}.van-tree-select__arrow{flex:none;margin-right:var(--van-padding-base);color:var(--van-gray-5);font-size:var(--van-tree-select-arrow-size);transition:transform var(--van-tree-select-animation-duration) ease}.van-tree-select__arrow--expanded{transform:rotate(0)}.van-tree-select__arrow:not(.van-tree-select__arrow--expanded){transform:rotate(-90deg)}.van-tree-select__loading{flex:none;margin-right:var(--van-padding-base);color:var(--van-gray-5)}.van-tree-select__expand-control{display:inline-flex;align-items:center;padding:0;color:inherit;font:inherit;line-height:inherit;text-align:left;background:transparent;border:0}.van-tree-select__expand-control:not(:disabled){cursor:pointer}.van-tree-select__expand-control:disabled{color:var(--van-text-color-3);cursor:not-allowed}.van-tree-select__children{overflow:hidden}.van-tree-select__indeterminate{position:relative;display:block;width:14px;height:14px;padding:0;background:var(--van-primary-color);border:0;border-radius:50%}.van-tree-select__indeterminate:after{position:absolute;top:calc(50% - 1px);right:25%;left:25%;height:2px;content:"";background:var(--van-white);border-radius:1px}.van-tree-select-expand-enter-active,.van-tree-select-expand-leave-active{overflow:hidden;transition:max-height var(--van-tree-select-animation-duration) ease,opacity var(--van-tree-select-animation-duration) ease}.van-tree-select-expand-enter-from,.van-tree-select-expand-leave-to{max-height:0;opacity:0}.van-tree-select-expand-enter-to,.van-tree-select-expand-leave-from{max-height:1000px;opacity:1}
@@ -20,7 +20,8 @@ export declare const TreeSelect: import("../utils").WithInstall<import("vue").De
20
20
  type: BooleanConstructor;
21
21
  default: true;
22
22
  };
23
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("select" | "update:modelValue" | "update:expandedKeys" | "expand")[], "select" | "update:modelValue" | "update:expandedKeys" | "expand", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
23
+ loadChildren: import("vue").PropType<import("./TreeSelect").TreeSelectLoadChildren>;
24
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("select" | "update:modelValue" | "load" | "update:expandedKeys" | "expand" | "load-error")[], "select" | "update:modelValue" | "load" | "update:expandedKeys" | "expand" | "load-error", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
24
25
  items: {
25
26
  type: import("vue").PropType<import("./TreeSelect").TreeSelectItem[]>;
26
27
  default: () => never[];
@@ -42,11 +43,14 @@ export declare const TreeSelect: import("../utils").WithInstall<import("vue").De
42
43
  type: BooleanConstructor;
43
44
  default: true;
44
45
  };
46
+ loadChildren: import("vue").PropType<import("./TreeSelect").TreeSelectLoadChildren>;
45
47
  }>> & {
48
+ onLoad?: ((...args: any[]) => any) | undefined;
46
49
  onSelect?: ((...args: any[]) => any) | undefined;
47
50
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
48
51
  "onUpdate:expandedKeys"?: ((...args: any[]) => any) | undefined;
49
52
  onExpand?: ((...args: any[]) => any) | undefined;
53
+ "onLoad-error"?: ((...args: any[]) => any) | undefined;
50
54
  }, {
51
55
  modelValue: import("../utils").Numeric[];
52
56
  multiple: boolean;
@@ -58,7 +62,7 @@ export declare const TreeSelect: import("../utils").WithInstall<import("vue").De
58
62
  showDivider: boolean;
59
63
  }>>;
60
64
  export default TreeSelect;
61
- export type { TreeSelectItem, TreeSelectChild, TreeSelectProps, } from './TreeSelect';
65
+ export type { TreeSelectItem, TreeSelectChild, TreeSelectLoadChildren, TreeSelectProps, } from './TreeSelect';
62
66
  declare module 'vue' {
63
67
  interface GlobalComponents {
64
68
  VanTreeSelect: typeof TreeSelect;
@@ -66,6 +66,12 @@
66
66
  &:not(.van-tree-select__arrow--expanded) { transform: rotate(-90deg); }
67
67
  }
68
68
 
69
+ &__loading {
70
+ flex: none;
71
+ margin-right: var(--van-padding-base);
72
+ color: var(--van-gray-5);
73
+ }
74
+
69
75
  &__expand-control {
70
76
  display: inline-flex;
71
77
  align-items: center;
@@ -2,6 +2,7 @@ require("../../style/base.css");
2
2
  require("../../badge/index.css");
3
3
  require("../../icon/index.css");
4
4
  require("../../tag/index.css");
5
+ require("../../loading/index.css");
5
6
  require("../../checkbox-group/index.css");
6
7
  require("../../checkbox/index.css");
7
8
  require("../../radio-group/index.css");
@@ -2,6 +2,7 @@ require("../../style/base.less");
2
2
  require("../../badge/index.less");
3
3
  require("../../icon/index.less");
4
4
  require("../../tag/index.less");
5
+ require("../../loading/index.less");
5
6
  require("../../checkbox-group/index.less");
6
7
  require("../../checkbox/index.less");
7
8
  require("../../radio-group/index.less");