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
@@ -50,6 +50,7 @@ declare const actionSheetProps: {
50
50
  };
51
51
  cancelText: StringConstructor;
52
52
  description: StringConstructor;
53
+ contentAdaptive: BooleanConstructor;
53
54
  closeOnPopstate: {
54
55
  type: BooleanConstructor;
55
56
  default: true;
@@ -102,6 +103,7 @@ declare const _default: import("vue").DefineComponent<{
102
103
  };
103
104
  cancelText: StringConstructor;
104
105
  description: StringConstructor;
106
+ contentAdaptive: BooleanConstructor;
105
107
  closeOnPopstate: {
106
108
  type: BooleanConstructor;
107
109
  default: true;
@@ -152,6 +154,7 @@ declare const _default: import("vue").DefineComponent<{
152
154
  };
153
155
  cancelText: StringConstructor;
154
156
  description: StringConstructor;
157
+ contentAdaptive: BooleanConstructor;
155
158
  closeOnPopstate: {
156
159
  type: BooleanConstructor;
157
160
  default: true;
@@ -178,5 +181,6 @@ declare const _default: import("vue").DefineComponent<{
178
181
  closeOnPopstate: boolean;
179
182
  actions: ActionSheetAction[];
180
183
  closeOnClickAction: boolean;
184
+ contentAdaptive: boolean;
181
185
  }>;
182
186
  export default _default;
@@ -13,6 +13,7 @@ const actionSheetProps = extend({}, popupSharedProps, {
13
13
  closeable: truthProp,
14
14
  cancelText: String,
15
15
  description: String,
16
+ contentAdaptive: Boolean,
16
17
  closeOnPopstate: truthProp,
17
18
  closeOnClickAction: Boolean,
18
19
  safeAreaInsetBottom: truthProp
@@ -121,7 +122,9 @@ var stdin_default = defineComponent({
121
122
  }
122
123
  };
123
124
  return () => _createVNode(Popup, _mergeProps({
124
- "class": bem(),
125
+ "class": bem({
126
+ "content-adaptive": props.contentAdaptive
127
+ }),
125
128
  "position": "bottom",
126
129
  "onUpdate:show": updateShow
127
130
  }, pick(props, popupInheritKeys)), {
@@ -1 +1 @@
1
- :root{--van-action-sheet-max-height:calc(100% - 96px);--van-action-sheet-header-height: 48px;--van-action-sheet-header-font-size: var(--van-font-size-lg);--van-action-sheet-description-color: var(--van-text-color-2);--van-action-sheet-description-font-size: var(--van-font-size-md);--van-action-sheet-description-line-height: var(--van-line-height-md);--van-action-sheet-item-background: var(--van-background-color-light);--van-action-sheet-item-font-size: var(--van-font-size-lg);--van-action-sheet-item-line-height: var(--van-line-height-lg);--van-action-sheet-item-text-color: var(--van-text-color);--van-action-sheet-item-disabled-text-color: var(--van-text-color-3);--van-action-sheet-subname-color: var(--van-text-color-2);--van-action-sheet-subname-font-size: var(--van-font-size-sm);--van-action-sheet-subname-line-height: var(--van-line-height-sm);--van-action-sheet-cancel-text-color: var(--van-gray-7);--van-action-sheet-cancel-padding-top: var(--van-padding-xs);--van-action-sheet-cancel-padding-color: var(--van-background-color);--van-action-sheet-loading-icon-size: 22px}.van-action-sheet{display:flex;flex-direction:column;max-height:var(--van-action-sheet-max-height);height:var(--van-action-sheet-max-height);overflow:hidden;color:var(--van-action-sheet-item-text-color);background:var(--van-gray-2)}.van-action-sheet__content{flex:1 auto;display:flex;flex-direction:column;gap:0;padding:0 var(--van-padding-md) var(--van-padding-md);overflow-y:auto;-webkit-overflow-scrolling:touch}.van-action-sheet__action-card{overflow:hidden;background:var(--van-white);border-radius:8px}.van-action-sheet__item,.van-action-sheet__cancel{display:block;width:100%;padding:14px var(--van-padding-md);font-size:var(--van-action-sheet-item-font-size);background:transparent;border:none;cursor:pointer}.van-action-sheet__item:active,.van-action-sheet__cancel:active{background-color:var(--van-active-color)}.van-action-sheet__item{position:relative;line-height:var(--van-action-sheet-item-line-height);text-align:left}.van-action-sheet__item--selected{font-weight:var(--van-font-weight-bold)}.van-action-sheet__item:not(:last-child):after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-border-color);transform:scaleY(.5)}.van-action-sheet__item--loading,.van-action-sheet__item--disabled{color:var(--van-action-sheet-item-disabled-text-color)}.van-action-sheet__item--loading:active,.van-action-sheet__item--disabled:active{background-color:var(--van-action-sheet-item-background)}.van-action-sheet__item--disabled{cursor:not-allowed}.van-action-sheet__item--loading{cursor:default}.van-action-sheet__cancel{flex-shrink:0;box-sizing:border-box;color:var(--van-action-sheet-cancel-text-color)}.van-action-sheet__subname{margin-top:var(--van-padding-xs);color:var(--van-action-sheet-subname-color);font-size:var(--van-action-sheet-subname-font-size);line-height:var(--van-action-sheet-subname-line-height)}.van-action-sheet__gap{display:block;height:var(--van-action-sheet-cancel-padding-top);background:var(--van-action-sheet-cancel-padding-color)}.van-action-sheet__header{flex-shrink:0;background:transparent}.van-action-sheet__nav-left{display:flex;align-items:center;height:var(--van-nav-bar-height);padding:0 6px 0 var(--van-padding-md)}.van-action-sheet__description{position:relative;flex-shrink:0;padding:20px var(--van-padding-md);color:var(--van-action-sheet-description-color);font-size:var(--van-action-sheet-description-font-size);line-height:var(--van-action-sheet-description-line-height);text-align:center}.van-action-sheet__description:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-border-color);transform:scaleY(.5)}.van-action-sheet__loading-icon .van-loading__spinner{width:var(--van-action-sheet-loading-icon-size);height:var(--van-action-sheet-loading-icon-size)}
1
+ :root{--van-action-sheet-max-height:calc(100% - 96px);--van-action-sheet-header-height: 48px;--van-action-sheet-header-font-size: var(--van-font-size-lg);--van-action-sheet-description-color: var(--van-text-color-2);--van-action-sheet-description-font-size: var(--van-font-size-md);--van-action-sheet-description-line-height: var(--van-line-height-md);--van-action-sheet-item-background: var(--van-background-color-light);--van-action-sheet-item-font-size: var(--van-font-size-lg);--van-action-sheet-item-line-height: var(--van-line-height-lg);--van-action-sheet-item-text-color: var(--van-text-color);--van-action-sheet-item-disabled-text-color: var(--van-text-color-3);--van-action-sheet-subname-color: var(--van-text-color-2);--van-action-sheet-subname-font-size: var(--van-font-size-sm);--van-action-sheet-subname-line-height: var(--van-line-height-sm);--van-action-sheet-cancel-text-color: var(--van-gray-7);--van-action-sheet-cancel-padding-top: var(--van-padding-xs);--van-action-sheet-cancel-padding-color: var(--van-background-color);--van-action-sheet-loading-icon-size: 22px}.van-action-sheet{display:flex;flex-direction:column;max-height:var(--van-action-sheet-max-height);height:var(--van-action-sheet-max-height);overflow:hidden;color:var(--van-action-sheet-item-text-color);background:var(--van-gray-2)}.van-action-sheet--content-adaptive{height:auto}.van-action-sheet__content{flex:1 auto;display:flex;flex-direction:column;gap:0;padding:0 var(--van-padding-md) var(--van-padding-md);overflow-y:auto;-webkit-overflow-scrolling:touch}.van-action-sheet__action-card{overflow:hidden;background:var(--van-white);border-radius:8px}.van-action-sheet__item,.van-action-sheet__cancel{display:block;width:100%;padding:14px var(--van-padding-md);font-size:var(--van-action-sheet-item-font-size);background:transparent;border:none;cursor:pointer}.van-action-sheet__item:active,.van-action-sheet__cancel:active{background-color:var(--van-active-color)}.van-action-sheet__item{position:relative;line-height:var(--van-action-sheet-item-line-height);text-align:left}.van-action-sheet__item--selected{font-weight:var(--van-font-weight-bold)}.van-action-sheet__item:not(:last-child):after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-border-color);transform:scaleY(.5)}.van-action-sheet__item--loading,.van-action-sheet__item--disabled{color:var(--van-action-sheet-item-disabled-text-color)}.van-action-sheet__item--loading:active,.van-action-sheet__item--disabled:active{background-color:var(--van-action-sheet-item-background)}.van-action-sheet__item--disabled{cursor:not-allowed}.van-action-sheet__item--loading{cursor:default}.van-action-sheet__cancel{flex-shrink:0;box-sizing:border-box;color:var(--van-action-sheet-cancel-text-color)}.van-action-sheet__subname{margin-top:var(--van-padding-xs);color:var(--van-action-sheet-subname-color);font-size:var(--van-action-sheet-subname-font-size);line-height:var(--van-action-sheet-subname-line-height)}.van-action-sheet__gap{display:block;height:var(--van-action-sheet-cancel-padding-top);background:var(--van-action-sheet-cancel-padding-color)}.van-action-sheet__header{flex-shrink:0;background:transparent}.van-action-sheet__nav-left{display:flex;align-items:center;height:var(--van-nav-bar-height);padding:0 6px 0 var(--van-padding-md)}.van-action-sheet__description{position:relative;flex-shrink:0;padding:20px var(--van-padding-md);color:var(--van-action-sheet-description-color);font-size:var(--van-action-sheet-description-font-size);line-height:var(--van-action-sheet-description-line-height);text-align:center}.van-action-sheet__description:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-border-color);transform:scaleY(.5)}.van-action-sheet__loading-icon .van-loading__spinner{width:var(--van-action-sheet-loading-icon-size);height:var(--van-action-sheet-loading-icon-size)}
@@ -39,6 +39,7 @@ export declare const ActionSheet: import("../utils").WithInstall<import("vue").D
39
39
  };
40
40
  cancelText: StringConstructor;
41
41
  description: StringConstructor;
42
+ contentAdaptive: BooleanConstructor;
42
43
  closeOnPopstate: {
43
44
  type: BooleanConstructor;
44
45
  default: true;
@@ -89,6 +90,7 @@ export declare const ActionSheet: import("../utils").WithInstall<import("vue").D
89
90
  };
90
91
  cancelText: StringConstructor;
91
92
  description: StringConstructor;
93
+ contentAdaptive: BooleanConstructor;
92
94
  closeOnPopstate: {
93
95
  type: BooleanConstructor;
94
96
  default: true;
@@ -115,6 +117,7 @@ export declare const ActionSheet: import("../utils").WithInstall<import("vue").D
115
117
  closeOnPopstate: boolean;
116
118
  actions: import("./ActionSheet").ActionSheetAction[];
117
119
  closeOnClickAction: boolean;
120
+ contentAdaptive: boolean;
118
121
  }>>;
119
122
  export default ActionSheet;
120
123
  export type { ActionSheetProps, ActionSheetAction } from './ActionSheet';
@@ -31,6 +31,10 @@
31
31
  color: var(--van-action-sheet-item-text-color);
32
32
  background: var(--van-gray-2);
33
33
 
34
+ &--content-adaptive {
35
+ height: auto;
36
+ }
37
+
34
38
  &__content {
35
39
  flex: 1 auto;
36
40
  display: flex;
package/es/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/es/index.mjs CHANGED
@@ -110,7 +110,7 @@ import { Uploader } from "./uploader/index.mjs";
110
110
  import { VideoPreview } from "./video-preview/index.mjs";
111
111
  import { WorkOrderCard } from "./work-order-card/index.mjs";
112
112
  import { WorkOrderFilter } from "./work-order-filter/index.mjs";
113
- const version = "0.0.42";
113
+ const version = "0.0.44";
114
114
  function install(app) {
115
115
  const components = [
116
116
  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;
@@ -62,6 +62,12 @@ var stdin_default = {
62
62
  },
63
63
  vanTabs: {
64
64
  moreTitle: "More tabs"
65
+ },
66
+ vanUploader: {
67
+ sourcePickerTitle: "Choose upload source",
68
+ takePhoto: "Take photo",
69
+ recordVideo: "Record video",
70
+ chooseFromAlbum: "Choose from album"
65
71
  }
66
72
  };
67
73
  export {
@@ -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;
@@ -62,6 +62,12 @@ var stdin_default = {
62
62
  },
63
63
  vanTabs: {
64
64
  moreTitle: "\u66F4\u591A\u6807\u7B7E"
65
+ },
66
+ vanUploader: {
67
+ sourcePickerTitle: "\u9009\u62E9\u4E0A\u4F20\u65B9\u5F0F",
68
+ takePhoto: "\u62CD\u7167",
69
+ recordVideo: "\u62CD\u89C6\u9891",
70
+ chooseFromAlbum: "\u4ECE\u76F8\u518C\u9009\u62E9"
65
71
  }
66
72
  };
67
73
  export {
@@ -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[];
@@ -1,4 +1,4 @@
1
- import { computed, defineComponent, ref, watch, createVNode as _createVNode, Fragment as _Fragment, createTextVNode as _createTextVNode } from "vue";
1
+ import { computed, defineComponent, ref, shallowReactive, watch, createVNode as _createVNode, Fragment as _Fragment, createTextVNode as _createTextVNode } from "vue";
2
2
  import { createNamespace, extend, makeArrayProp, makeStringProp } from "../utils/index.mjs";
3
3
  import { ActionSheet } from "../action-sheet/index.mjs";
4
4
  import { BlueMarkHeader } from "../blue-mark/index.mjs";
@@ -46,13 +46,7 @@ const spaceItems = [{
46
46
  id: "high-voltage",
47
47
  text: "\u9AD8\u538B\u8BA1\u91CF\u67DC",
48
48
  selectable: false,
49
- children: [{
50
- id: "metering-cabinet-1",
51
- text: "B3_\u9AD8\u538B\u8BA1\u91CF\u67DC_1#"
52
- }, {
53
- id: "metering-cabinet-2",
54
- text: "B3_\u9AD8\u538B\u8BA1\u91CF\u67DC_2#"
55
- }]
49
+ children: []
56
50
  }]
57
51
  }, {
58
52
  id: "chiller-room",
@@ -372,13 +366,14 @@ const objectSelectProps = {
372
366
  specialties: {
373
367
  type: Array,
374
368
  default: () => specialties
375
- }
369
+ },
370
+ loadChildren: Function
376
371
  };
377
372
  const flattenItems = (items) => items.flatMap((item) => [item, ...item.children ? flattenItems(item.children) : []]);
378
373
  var stdin_default = defineComponent({
379
374
  name,
380
375
  props: objectSelectProps,
381
- emits: ["update:show", "update:modelValue", "change", "confirm"],
376
+ emits: ["update:show", "update:modelValue", "change", "confirm", "load", "load-error"],
382
377
  setup(props, {
383
378
  emit
384
379
  }) {
@@ -391,6 +386,14 @@ var stdin_default = defineComponent({
391
386
  const expandedSelected = ref(false);
392
387
  const searching = ref(false);
393
388
  const keyword = ref("");
389
+ const loadedChildren = shallowReactive(/* @__PURE__ */ new Map());
390
+ const getChildren = (item) => loadedChildren.get(item.id) || item.children || [];
391
+ const hydrateItems = (items) => items.map((item) => {
392
+ const children = getChildren(item);
393
+ return children.length ? extend({}, item, {
394
+ children: hydrateItems(children)
395
+ }) : item;
396
+ });
394
397
  const currentSpecialtyItems = (specialty) => specialtyType.value === 0 ? specialty.deviceItems : specialty.systemItems;
395
398
  const expandOnlySpecialty = () => {
396
399
  if (props.specialties.length === 1) {
@@ -415,7 +418,7 @@ var stdin_default = defineComponent({
415
418
  immediate: true
416
419
  });
417
420
  const selected = computed(() => props.modelValue);
418
- const allItems = computed(() => flattenItems([...props.spaceItems, ...props.specialties.flatMap((specialty) => [...specialty.deviceItems, ...specialty.systemItems])]));
421
+ const allItems = computed(() => flattenItems(hydrateItems([...props.spaceItems, ...props.specialties.flatMap((specialty) => [...specialty.deviceItems, ...specialty.systemItems])])));
419
422
  const selectedItems = computed(() => allItems.value.filter((item) => selected.value.includes(item.id)));
420
423
  const searchResults = computed(() => {
421
424
  const query = keyword.value.trim().toLowerCase();
@@ -460,19 +463,29 @@ var stdin_default = defineComponent({
460
463
  update([]);
461
464
  expandedSelected.value = false;
462
465
  };
466
+ const onLoad = (item, children) => {
467
+ loadedChildren.set(item.id, children);
468
+ emit("load", item, children);
469
+ };
470
+ const onLoadError = (item, error) => {
471
+ emit("load-error", item, error);
472
+ };
463
473
  const renderTree = (items) => _createVNode("div", {
464
474
  "class": bem("tree-card")
465
475
  }, [_createVNode(TreeSelect, {
466
476
  "modelValue": selected.value,
467
477
  "expandedKeys": expandedKeys.value,
468
- "items": items,
478
+ "items": hydrateItems(items),
469
479
  "multiple": true,
470
480
  "showParentSelect": true,
471
481
  "cascade": false,
482
+ "loadChildren": props.loadChildren,
472
483
  "onUpdate:modelValue": update,
473
484
  "onUpdate:expandedKeys": (value) => {
474
485
  expandedKeys.value = value;
475
- }
486
+ },
487
+ "onLoad": onLoad,
488
+ "onLoad-error": onLoadError
476
489
  }, null)]);
477
490
  const renderSpecialty = (specialty) => {
478
491
  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,23 +1,28 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
- var __hasOwnProp = Object.prototype.hasOwnProperty;
4
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
- var __spreadValues = (a, b) => {
7
- for (var prop in b || (b = {}))
8
- if (__hasOwnProp.call(b, prop))
9
- __defNormalProp(a, prop, b[prop]);
10
- if (__getOwnPropSymbols)
11
- for (var prop of __getOwnPropSymbols(b)) {
12
- if (__propIsEnum.call(b, prop))
13
- __defNormalProp(a, prop, b[prop]);
14
- }
15
- return a;
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
16
20
  };
17
- import { computed, defineComponent, Transition, createVNode as _createVNode } from "vue";
21
+ import { computed, defineComponent, shallowReactive, Transition, createVNode as _createVNode } from "vue";
18
22
  import { makeArrayProp, createNamespace, truthProp } from "../utils/index.mjs";
19
23
  import { Cell } from "../cell/index.mjs";
20
24
  import { Icon } from "../icon/index.mjs";
25
+ import { Loading } from "../loading/index.mjs";
21
26
  const [name, bem] = createNamespace("tree-select");
22
27
  const treeSelectProps = {
23
28
  items: makeArrayProp(),
@@ -28,20 +33,31 @@ const treeSelectProps = {
28
33
  selectableParent: Boolean,
29
34
  showParentSelect: Boolean,
30
35
  showSelectLevels: Array,
31
- showDivider: truthProp
36
+ showDivider: truthProp,
37
+ loadChildren: Function
32
38
  };
33
39
  var stdin_default = defineComponent({
34
40
  name,
35
41
  props: treeSelectProps,
36
- emits: ["update:modelValue", "update:expandedKeys", "select", "expand"],
42
+ emits: ["update:modelValue", "update:expandedKeys", "select", "expand", "load", "load-error"],
37
43
  setup(props, {
38
44
  emit,
39
45
  slots
40
46
  }) {
41
47
  const selectedKeys = computed(() => props.modelValue);
42
48
  const expandedKeys = computed(() => props.expandedKeys);
49
+ const resolvedChildren = shallowReactive(/* @__PURE__ */ new Map());
50
+ const loadingKeys = shallowReactive(/* @__PURE__ */ new Set());
51
+ const loadedKeys = shallowReactive(/* @__PURE__ */ new Set());
43
52
  const isExpanded = (id) => expandedKeys.value.includes(id);
44
53
  const isSelected = (id) => selectedKeys.value.includes(id);
54
+ const isLoading = (id) => loadingKeys.has(id);
55
+ const getChildren = (item) => {
56
+ var _a;
57
+ return ((_a = item.children) == null ? void 0 : _a.length) ? item.children : resolvedChildren.get(item.id) || item.children || [];
58
+ };
59
+ const isLoadable = (item) => !!props.loadChildren && Array.isArray(item.children) && !item.children.length && !loadedKeys.has(item.id);
60
+ const isBranch = (item) => !!getChildren(item).length || isLoadable(item) || isLoading(item.id);
45
61
  const isSelectionVisible = (hasChildren, level) => {
46
62
  var _a;
47
63
  const configuredVisibility = (_a = props.showSelectLevels) == null ? void 0 : _a[level];
@@ -53,10 +69,7 @@ var stdin_default = defineComponent({
53
69
  paddingLeft: `calc(var(--van-padding-md) + ${level * 16}px)`,
54
70
  "--van-tree-select-divider-left": `calc(var(--van-padding-md) + ${level * 16}px)`
55
71
  });
56
- const getDescendantIds = (item) => {
57
- var _a;
58
- return ((_a = item.children) == null ? void 0 : _a.flatMap((child) => [child.id, ...getDescendantIds(child)])) || [];
59
- };
72
+ const getDescendantIds = (item) => getChildren(item).flatMap((child) => [child.id, ...getDescendantIds(child)]);
60
73
  const getSelectionState = (item) => {
61
74
  const descendantIds = getDescendantIds(item);
62
75
  if (!props.cascade || !descendantIds.length) {
@@ -71,11 +84,11 @@ var stdin_default = defineComponent({
71
84
  };
72
85
  const syncParentSelection = (items, values) => {
73
86
  items.forEach((item) => {
74
- var _a;
75
- if (!((_a = item.children) == null ? void 0 : _a.length))
87
+ const children = getChildren(item);
88
+ if (!children.length)
76
89
  return;
77
- syncParentSelection(item.children, values);
78
- const childIds = item.children.map((child) => child.id);
90
+ syncParentSelection(children, values);
91
+ const childIds = children.map((child) => child.id);
79
92
  const index = values.indexOf(item.id);
80
93
  const allChildrenSelected = childIds.every((id) => values.includes(id));
81
94
  if (allChildrenSelected && index === -1)
@@ -84,13 +97,45 @@ var stdin_default = defineComponent({
84
97
  values.splice(index, 1);
85
98
  });
86
99
  };
87
- const toggleExpanded = (id) => {
100
+ const updateExpanded = (id, expanded) => {
88
101
  const next = expandedKeys.value.slice();
89
102
  const index = next.indexOf(id);
90
- index === -1 ? next.push(id) : next.splice(index, 1);
103
+ if (expanded && index === -1)
104
+ next.push(id);
105
+ if (!expanded && index !== -1)
106
+ next.splice(index, 1);
91
107
  emit("update:expandedKeys", next);
92
- emit("expand", id, index === -1);
108
+ emit("expand", id, expanded);
93
109
  };
110
+ const toggleExpanded = (item) => __async(this, null, function* () {
111
+ const {
112
+ id
113
+ } = item;
114
+ if (isLoading(id))
115
+ return;
116
+ if (isExpanded(id)) {
117
+ updateExpanded(id, false);
118
+ return;
119
+ }
120
+ if (isLoadable(item)) {
121
+ loadingKeys.add(id);
122
+ try {
123
+ const result = yield props.loadChildren(item);
124
+ const children = Array.isArray(result) ? result : [];
125
+ resolvedChildren.set(id, children);
126
+ loadedKeys.add(id);
127
+ emit("load", item, children);
128
+ if (children.length)
129
+ updateExpanded(id, true);
130
+ } catch (error) {
131
+ emit("load-error", item, error);
132
+ } finally {
133
+ loadingKeys.delete(id);
134
+ }
135
+ return;
136
+ }
137
+ updateExpanded(id, true);
138
+ });
94
139
  const updateSelected = (item, selected) => {
95
140
  if (item.disabled || item.selectable === false)
96
141
  return;
@@ -109,12 +154,13 @@ var stdin_default = defineComponent({
109
154
  emit("select", item, selected);
110
155
  };
111
156
  const renderNodes = (items, level = 0) => items.map((item) => {
112
- var _a;
113
- const hasChildren = !!((_a = item.children) == null ? void 0 : _a.length);
157
+ const children = getChildren(item);
158
+ const hasChildren = isBranch(item);
114
159
  const expanded = isExpanded(item.id);
160
+ const loading = isLoading(item.id);
115
161
  const renderTitle = () => {
116
- var _a2;
117
- return ((_a2 = slots.title) == null ? void 0 : _a2.call(slots, {
162
+ var _a;
163
+ return ((_a = slots.title) == null ? void 0 : _a.call(slots, {
118
164
  item,
119
165
  level,
120
166
  hasChildren
@@ -134,36 +180,29 @@ var stdin_default = defineComponent({
134
180
  }
135
181
  const selectable = item.selectable !== false && isSelectionVisible(hasChildren, level);
136
182
  const selectionState = getSelectionState(item);
137
- return _createVNode("div", {
138
- "key": item.id,
139
- "class": bem("node")
140
- }, [_createVNode(Cell, {
141
- "class": bem("cell", {
142
- branch: hasChildren
143
- }),
144
- "title": item.text,
145
- "border": props.showDivider,
146
- "style": getNodeStyle(level),
147
- "rightSelect": selectable && selectionState !== "indeterminate" ? selectionState === "checked" : void 0,
148
- "selectType": props.multiple ? "checkbox" : "radio",
149
- "onUpdate:rightSelect": (value) => updateSelected(item, value)
150
- }, __spreadValues({
183
+ const cellSlots = {
151
184
  title: () => [hasChildren ? _createVNode("button", {
152
185
  "type": "button",
153
186
  "class": bem("expand-control"),
154
187
  "disabled": item.disabled,
188
+ "aria-busy": loading,
189
+ "aria-disabled": loading,
155
190
  "onClick": (event) => {
156
191
  event.stopPropagation();
157
- toggleExpanded(item.id);
192
+ toggleExpanded(item);
158
193
  }
159
- }, [_createVNode(Icon, {
194
+ }, [loading ? _createVNode(Loading, {
195
+ "class": bem("loading"),
196
+ "size": "var(--van-tree-select-arrow-size)"
197
+ }, null) : _createVNode(Icon, {
160
198
  "name": "trangle-down",
161
199
  "class": bem("arrow", {
162
200
  expanded
163
201
  })
164
202
  }, null), _createVNode("span", null, [renderTitle()])]) : _createVNode("span", null, [renderTitle()])]
165
- }, selectable && selectionState === "indeterminate" ? {
166
- "right-select": () => _createVNode("button", {
203
+ };
204
+ if (selectable && selectionState === "indeterminate") {
205
+ cellSlots["right-select"] = () => _createVNode("button", {
167
206
  "type": "button",
168
207
  "class": bem("indeterminate"),
169
208
  "aria-label": `\u90E8\u5206\u9009\u4E2D${item.text}`,
@@ -171,13 +210,27 @@ var stdin_default = defineComponent({
171
210
  event.stopPropagation();
172
211
  updateSelected(item, true);
173
212
  }
174
- }, null)
175
- } : {})), _createVNode(Transition, {
213
+ }, null);
214
+ }
215
+ return _createVNode("div", {
216
+ "key": item.id,
217
+ "class": bem("node")
218
+ }, [_createVNode(Cell, {
219
+ "class": bem("cell", {
220
+ branch: hasChildren
221
+ }),
222
+ "title": item.text,
223
+ "border": props.showDivider,
224
+ "style": getNodeStyle(level),
225
+ "rightSelect": selectable && selectionState !== "indeterminate" ? selectionState === "checked" : void 0,
226
+ "selectType": props.multiple ? "checkbox" : "radio",
227
+ "onUpdate:rightSelect": (value) => updateSelected(item, value)
228
+ }, cellSlots), _createVNode(Transition, {
176
229
  "name": "van-tree-select-expand"
177
230
  }, {
178
231
  default: () => [hasChildren && expanded && _createVNode("div", {
179
232
  "class": bem("children")
180
- }, [renderNodes(item.children, level + 1)])]
233
+ }, [renderNodes(children, level + 1)])]
181
234
  })]);
182
235
  });
183
236
  return () => _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}