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.
- package/es/action-sheet/ActionSheet.d.ts +4 -0
- package/es/action-sheet/ActionSheet.mjs +4 -1
- package/es/action-sheet/index.css +1 -1
- package/es/action-sheet/index.d.ts +3 -0
- package/es/action-sheet/index.less +4 -0
- package/es/index.d.ts +1 -1
- package/es/index.mjs +1 -1
- package/es/locale/lang/en-US.d.ts +6 -0
- package/es/locale/lang/en-US.mjs +6 -0
- package/es/locale/lang/zh-CN.d.ts +6 -0
- package/es/locale/lang/zh-CN.mjs +6 -0
- package/es/object-select/ObjectSelect.d.ts +7 -2
- package/es/object-select/ObjectSelect.mjs +26 -13
- package/es/object-select/index.d.ts +5 -1
- package/es/tree-select/TreeSelect.d.ts +7 -1
- package/es/tree-select/TreeSelect.mjs +107 -54
- package/es/tree-select/index.css +1 -1
- package/es/tree-select/index.d.ts +6 -2
- package/es/tree-select/index.less +6 -0
- package/es/tree-select/style/index.mjs +1 -0
- package/es/tree-select/style/less.mjs +1 -0
- package/es/uploader/Uploader.d.ts +6 -1
- package/es/uploader/Uploader.mjs +80 -19
- package/es/uploader/index.css +1 -1
- package/es/uploader/index.d.ts +6 -2
- package/es/uploader/index.less +4 -0
- package/es/uploader/style/index.mjs +3 -0
- package/es/uploader/style/less.mjs +3 -0
- package/es/uploader/types.d.ts +2 -1
- package/lib/action-sheet/ActionSheet.d.ts +4 -0
- package/lib/action-sheet/ActionSheet.js +4 -1
- package/lib/action-sheet/index.css +1 -1
- package/lib/action-sheet/index.d.ts +3 -0
- package/lib/action-sheet/index.less +4 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/locale/lang/en-US.d.ts +6 -0
- package/lib/locale/lang/en-US.js +6 -0
- package/lib/locale/lang/zh-CN.d.ts +6 -0
- package/lib/locale/lang/zh-CN.js +6 -0
- package/lib/object-select/ObjectSelect.d.ts +7 -2
- package/lib/object-select/ObjectSelect.js +25 -12
- package/lib/object-select/index.d.ts +5 -1
- package/lib/tree-select/TreeSelect.d.ts +7 -1
- package/lib/tree-select/TreeSelect.js +107 -52
- package/lib/tree-select/index.css +1 -1
- package/lib/tree-select/index.d.ts +6 -2
- package/lib/tree-select/index.less +6 -0
- package/lib/tree-select/style/index.js +1 -0
- package/lib/tree-select/style/less.js +1 -0
- package/lib/uploader/Uploader.d.ts +6 -1
- package/lib/uploader/Uploader.js +79 -18
- package/lib/uploader/index.css +1 -1
- package/lib/uploader/index.d.ts +6 -2
- package/lib/uploader/index.less +4 -0
- package/lib/uploader/style/index.js +3 -0
- package/lib/uploader/style/less.js +3 -0
- package/lib/uploader/types.d.ts +2 -1
- package/lib/vant.cjs.js +232 -98
- package/lib/vant.es.js +233 -99
- package/lib/vant.js +232 -98
- package/lib/vant.min.js +1 -1
- package/lib/web-types.json +1 -1
- package/package.json +1 -1
- package/skills/use-persagy-vant/references/business-component-catalog.md +1 -1
- package/skills/use-persagy-vant/references/component-catalog.md +2 -2
package/lib/index.d.ts
CHANGED
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.
|
|
251
|
+
const version = "0.0.44";
|
|
252
252
|
function install(app) {
|
|
253
253
|
const components = [
|
|
254
254
|
import_action_bar.ActionBar,
|
package/lib/locale/lang/en-US.js
CHANGED
package/lib/locale/lang/zh-CN.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
95
|
-
if (!
|
|
109
|
+
const children = getChildren(item);
|
|
110
|
+
if (!children.length)
|
|
96
111
|
return;
|
|
97
|
-
syncParentSelection(
|
|
98
|
-
const childIds =
|
|
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
|
|
122
|
+
const updateExpanded = (id, expanded) => {
|
|
108
123
|
const next = expandedKeys.value.slice();
|
|
109
124
|
const index = next.indexOf(id);
|
|
110
|
-
|
|
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,
|
|
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
|
-
|
|
133
|
-
const hasChildren =
|
|
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
|
|
137
|
-
return ((
|
|
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
|
-
|
|
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
|
|
214
|
+
toggleExpanded(item);
|
|
178
215
|
}
|
|
179
|
-
}, [(0, import_vue.createVNode)(
|
|
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
|
-
}
|
|
186
|
-
|
|
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
|
-
}
|
|
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(
|
|
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
|
-
|
|
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");
|