persagy-vant 0.0.40 → 0.0.42

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 (139) hide show
  1. package/es/blue-mark/BlueMarkHeader.d.ts +13 -0
  2. package/es/blue-mark/BlueMarkHeader.mjs +3 -1
  3. package/es/blue-mark/CollapseToggle.d.ts +13 -0
  4. package/es/blue-mark/CollapseToggle.mjs +5 -1
  5. package/es/blue-mark/index.d.ts +18 -0
  6. package/es/checkbox-panel/CheckboxPanel.d.ts +86 -1
  7. package/es/checkbox-panel/CheckboxPanel.mjs +184 -36
  8. package/es/checkbox-panel/index.css +1 -1
  9. package/es/checkbox-panel/index.d.ts +63 -1
  10. package/es/checkbox-panel/index.less +89 -2
  11. package/es/checkbox-panel/style/index.mjs +5 -0
  12. package/es/checkbox-panel/style/less.mjs +5 -0
  13. package/es/index.d.ts +2 -1
  14. package/es/index.mjs +4 -1
  15. package/es/label/Label.d.ts +13 -0
  16. package/es/label/Label.mjs +11 -4
  17. package/es/label/index.css +1 -1
  18. package/es/label/index.d.ts +9 -0
  19. package/es/label/index.less +5 -0
  20. package/es/locale/lang/en-US.d.ts +3 -0
  21. package/es/locale/lang/en-US.mjs +3 -0
  22. package/es/locale/lang/zh-CN.d.ts +3 -0
  23. package/es/locale/lang/zh-CN.mjs +3 -0
  24. package/es/location-select/style/index.mjs +1 -1
  25. package/es/location-select/style/less.mjs +1 -1
  26. package/es/material-action-bar/MaterialActionBar.d.ts +19 -0
  27. package/es/material-action-bar/MaterialActionBar.mjs +12 -6
  28. package/es/material-action-bar/index.css +1 -1
  29. package/es/material-action-bar/index.d.ts +36 -0
  30. package/es/material-action-bar/index.less +5 -3
  31. package/es/material-add/index.css +1 -1
  32. package/es/material-add/style/index.mjs +1 -1
  33. package/es/material-add/style/less.mjs +1 -1
  34. package/es/material-display-bar/MaterialDisplayBar.mjs +0 -1
  35. package/es/material-display-bar/index.css +1 -1
  36. package/es/material-display-bar/index.less +2 -1
  37. package/es/material-display-bar/var.less +3 -2
  38. package/es/notice-bar/index.css +1 -1
  39. package/es/notice-bar/index.less +13 -0
  40. package/es/stepper/Stepper.d.ts +1 -1
  41. package/es/stepper/index.css +1 -1
  42. package/es/stepper/index.less +19 -0
  43. package/es/tabs/Tabs.mjs +3 -2
  44. package/es/tabs/index.css +1 -1
  45. package/es/tabs/index.less +15 -5
  46. package/es/tabs/var.less +1 -0
  47. package/es/title-bar/TitleBar.d.ts +44 -0
  48. package/es/title-bar/TitleBar.mjs +9 -1
  49. package/es/title-bar/index.css +1 -1
  50. package/es/title-bar/index.d.ts +30 -0
  51. package/es/title-bar/index.less +10 -3
  52. package/es/title-bar/var.less +2 -1
  53. package/es/tree-select/TreeSelect.d.ts +3 -0
  54. package/es/tree-select/TreeSelect.mjs +18 -2
  55. package/es/tree-select/index.d.ts +2 -0
  56. package/es/tree-select-panel/TreeSelectPanel.d.ts +181 -0
  57. package/es/tree-select-panel/TreeSelectPanel.mjs +213 -0
  58. package/es/tree-select-panel/index.css +1 -0
  59. package/es/tree-select-panel/index.d.ts +134 -0
  60. package/es/tree-select-panel/index.less +107 -0
  61. package/es/tree-select-panel/index.mjs +8 -0
  62. package/es/tree-select-panel/style/index.mjs +23 -0
  63. package/es/tree-select-panel/style/less.mjs +23 -0
  64. package/lib/blue-mark/BlueMarkHeader.d.ts +13 -0
  65. package/lib/blue-mark/BlueMarkHeader.js +2 -0
  66. package/lib/blue-mark/CollapseToggle.d.ts +13 -0
  67. package/lib/blue-mark/CollapseToggle.js +5 -1
  68. package/lib/blue-mark/index.d.ts +18 -0
  69. package/lib/checkbox-panel/CheckboxPanel.d.ts +86 -1
  70. package/lib/checkbox-panel/CheckboxPanel.js +183 -35
  71. package/lib/checkbox-panel/index.css +1 -1
  72. package/lib/checkbox-panel/index.d.ts +63 -1
  73. package/lib/checkbox-panel/index.less +89 -2
  74. package/lib/checkbox-panel/style/index.js +5 -0
  75. package/lib/checkbox-panel/style/less.js +5 -0
  76. package/lib/index.css +1 -1
  77. package/lib/index.d.ts +2 -1
  78. package/lib/index.js +4 -1
  79. package/lib/index.less +6 -5
  80. package/lib/label/Label.d.ts +13 -0
  81. package/lib/label/Label.js +11 -4
  82. package/lib/label/index.css +1 -1
  83. package/lib/label/index.d.ts +9 -0
  84. package/lib/label/index.less +5 -0
  85. package/lib/locale/lang/en-US.d.ts +3 -0
  86. package/lib/locale/lang/en-US.js +3 -0
  87. package/lib/locale/lang/zh-CN.d.ts +3 -0
  88. package/lib/locale/lang/zh-CN.js +3 -0
  89. package/lib/location-select/style/index.js +1 -1
  90. package/lib/location-select/style/less.js +1 -1
  91. package/lib/material-action-bar/MaterialActionBar.d.ts +19 -0
  92. package/lib/material-action-bar/MaterialActionBar.js +11 -5
  93. package/lib/material-action-bar/index.css +1 -1
  94. package/lib/material-action-bar/index.d.ts +36 -0
  95. package/lib/material-action-bar/index.less +5 -3
  96. package/lib/material-add/index.css +1 -1
  97. package/lib/material-add/style/index.js +1 -1
  98. package/lib/material-add/style/less.js +1 -1
  99. package/lib/material-display-bar/MaterialDisplayBar.js +0 -1
  100. package/lib/material-display-bar/index.css +1 -1
  101. package/lib/material-display-bar/index.less +2 -1
  102. package/lib/material-display-bar/var.less +3 -2
  103. package/lib/notice-bar/index.css +1 -1
  104. package/lib/notice-bar/index.less +13 -0
  105. package/lib/stepper/Stepper.d.ts +1 -1
  106. package/lib/stepper/index.css +1 -1
  107. package/lib/stepper/index.less +19 -0
  108. package/lib/tabs/Tabs.js +3 -2
  109. package/lib/tabs/index.css +1 -1
  110. package/lib/tabs/index.less +15 -5
  111. package/lib/tabs/var.less +1 -0
  112. package/lib/title-bar/TitleBar.d.ts +44 -0
  113. package/lib/title-bar/TitleBar.js +9 -1
  114. package/lib/title-bar/index.css +1 -1
  115. package/lib/title-bar/index.d.ts +30 -0
  116. package/lib/title-bar/index.less +10 -3
  117. package/lib/title-bar/var.less +2 -1
  118. package/lib/tree-select/TreeSelect.d.ts +3 -0
  119. package/lib/tree-select/TreeSelect.js +18 -2
  120. package/lib/tree-select/index.d.ts +2 -0
  121. package/lib/tree-select-panel/TreeSelectPanel.d.ts +181 -0
  122. package/lib/tree-select-panel/TreeSelectPanel.js +232 -0
  123. package/lib/tree-select-panel/index.css +1 -0
  124. package/lib/tree-select-panel/index.d.ts +134 -0
  125. package/lib/tree-select-panel/index.js +37 -0
  126. package/lib/tree-select-panel/index.less +107 -0
  127. package/lib/tree-select-panel/style/index.js +23 -0
  128. package/lib/tree-select-panel/style/less.js +23 -0
  129. package/lib/vant.cjs.js +1997 -1605
  130. package/lib/vant.es.js +1998 -1606
  131. package/lib/vant.js +1997 -1605
  132. package/lib/vant.min.js +1 -1
  133. package/lib/web-types.json +1 -1
  134. package/package.json +1 -1
  135. package/skills/use-persagy-vant/references/component-catalog.md +1 -1
  136. package/skills/use-persagy-vant/references/design-interaction-baseline.md +1 -0
  137. package/skills/use-persagy-vant/references/element-component-matching.md +1 -0
  138. package/skills/use-persagy-vant/references/page-recipes.md +1 -0
  139. package/skills/use-persagy-vant/references/public-style-system.md +6 -0
@@ -9,6 +9,10 @@ declare const blueMarkHeaderProps: {
9
9
  required: BooleanConstructor;
10
10
  actionText: StringConstructor;
11
11
  expandable: BooleanConstructor;
12
+ showExpandIcon: {
13
+ type: BooleanConstructor;
14
+ default: true;
15
+ };
12
16
  modelValue: BooleanConstructor;
13
17
  expandText: StringConstructor;
14
18
  collapseText: StringConstructor;
@@ -23,6 +27,10 @@ declare const _default: import("vue").DefineComponent<{
23
27
  required: BooleanConstructor;
24
28
  actionText: StringConstructor;
25
29
  expandable: BooleanConstructor;
30
+ showExpandIcon: {
31
+ type: BooleanConstructor;
32
+ default: true;
33
+ };
26
34
  modelValue: BooleanConstructor;
27
35
  expandText: StringConstructor;
28
36
  collapseText: StringConstructor;
@@ -35,6 +43,10 @@ declare const _default: import("vue").DefineComponent<{
35
43
  required: BooleanConstructor;
36
44
  actionText: StringConstructor;
37
45
  expandable: BooleanConstructor;
46
+ showExpandIcon: {
47
+ type: BooleanConstructor;
48
+ default: true;
49
+ };
38
50
  modelValue: BooleanConstructor;
39
51
  expandText: StringConstructor;
40
52
  collapseText: StringConstructor;
@@ -47,5 +59,6 @@ declare const _default: import("vue").DefineComponent<{
47
59
  size: BlueMarkSize;
48
60
  modelValue: boolean;
49
61
  expandable: boolean;
62
+ showExpandIcon: boolean;
50
63
  }>;
51
64
  export default _default;
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, createVNode as _createVNode, createTextVNode as _createTextVNode } from "vue";
2
- import { createNamespace, numericProp } from "../utils/index.mjs";
2
+ import { createNamespace, numericProp, truthProp } from "../utils/index.mjs";
3
3
  import BlueMark from "./BlueMark.mjs";
4
4
  import CollapseToggle from "./CollapseToggle.mjs";
5
5
  const [name, bem] = createNamespace("blue-mark-header");
@@ -12,6 +12,7 @@ const blueMarkHeaderProps = {
12
12
  required: Boolean,
13
13
  actionText: String,
14
14
  expandable: Boolean,
15
+ showExpandIcon: truthProp,
15
16
  modelValue: Boolean,
16
17
  expandText: String,
17
18
  collapseText: String
@@ -73,6 +74,7 @@ var stdin_default = defineComponent({
73
74
  "modelValue": props.modelValue,
74
75
  "expandText": props.expandText,
75
76
  "collapseText": props.collapseText,
77
+ "showIcon": props.showExpandIcon,
76
78
  "onUpdate:modelValue": onChange
77
79
  }, null)]);
78
80
  };
@@ -2,6 +2,10 @@ import { type ExtractPropTypes } from 'vue';
2
2
  declare const collapseToggleProps: {
3
3
  modelValue: BooleanConstructor;
4
4
  divider: BooleanConstructor;
5
+ showIcon: {
6
+ type: BooleanConstructor;
7
+ default: boolean;
8
+ };
5
9
  expandText: {
6
10
  type: import("vue").PropType<string>;
7
11
  default: string;
@@ -15,6 +19,10 @@ export declare type CollapseToggleProps = ExtractPropTypes<typeof collapseToggle
15
19
  declare const _default: import("vue").DefineComponent<{
16
20
  modelValue: BooleanConstructor;
17
21
  divider: BooleanConstructor;
22
+ showIcon: {
23
+ type: BooleanConstructor;
24
+ default: boolean;
25
+ };
18
26
  expandText: {
19
27
  type: import("vue").PropType<string>;
20
28
  default: string;
@@ -26,6 +34,10 @@ declare const _default: import("vue").DefineComponent<{
26
34
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "update:modelValue")[], "change" | "update:modelValue", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
27
35
  modelValue: BooleanConstructor;
28
36
  divider: BooleanConstructor;
37
+ showIcon: {
38
+ type: BooleanConstructor;
39
+ default: boolean;
40
+ };
29
41
  expandText: {
30
42
  type: import("vue").PropType<string>;
31
43
  default: string;
@@ -38,6 +50,7 @@ declare const _default: import("vue").DefineComponent<{
38
50
  onChange?: ((...args: any[]) => any) | undefined;
39
51
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
40
52
  }, {
53
+ showIcon: boolean;
41
54
  modelValue: boolean;
42
55
  divider: boolean;
43
56
  expandText: string;
@@ -6,6 +6,10 @@ const [name, bem] = createNamespace("collapse-toggle");
6
6
  const collapseToggleProps = {
7
7
  modelValue: Boolean,
8
8
  divider: Boolean,
9
+ showIcon: {
10
+ type: Boolean,
11
+ default: true
12
+ },
9
13
  expandText: makeStringProp("\u5C55\u5F00"),
10
14
  collapseText: makeStringProp("\u6536\u8D77")
11
15
  };
@@ -37,7 +41,7 @@ var stdin_default = defineComponent({
37
41
  }, [_createVNode("span", null, [((_a = slots.default) == null ? void 0 : _a.call(slots, {
38
42
  expanded,
39
43
  text
40
- })) || text]), _createVNode(Icon, {
44
+ })) || text]), props.showIcon && _createVNode(Icon, {
41
45
  "name": "arrow-down",
42
46
  "class": bem("icon")
43
47
  }, null)]);
@@ -37,6 +37,10 @@ export declare const BlueMarkHeader: import("../utils").WithInstall<import("vue"
37
37
  required: BooleanConstructor;
38
38
  actionText: StringConstructor;
39
39
  expandable: BooleanConstructor;
40
+ showExpandIcon: {
41
+ type: BooleanConstructor;
42
+ default: true;
43
+ };
40
44
  modelValue: BooleanConstructor;
41
45
  expandText: StringConstructor;
42
46
  collapseText: StringConstructor;
@@ -49,6 +53,10 @@ export declare const BlueMarkHeader: import("../utils").WithInstall<import("vue"
49
53
  required: BooleanConstructor;
50
54
  actionText: StringConstructor;
51
55
  expandable: BooleanConstructor;
56
+ showExpandIcon: {
57
+ type: BooleanConstructor;
58
+ default: true;
59
+ };
52
60
  modelValue: BooleanConstructor;
53
61
  expandText: StringConstructor;
54
62
  collapseText: StringConstructor;
@@ -61,10 +69,15 @@ export declare const BlueMarkHeader: import("../utils").WithInstall<import("vue"
61
69
  size: import("./BlueMark").BlueMarkSize;
62
70
  modelValue: boolean;
63
71
  expandable: boolean;
72
+ showExpandIcon: boolean;
64
73
  }>>;
65
74
  export declare const CollapseToggle: import("../utils").WithInstall<import("vue").DefineComponent<{
66
75
  modelValue: BooleanConstructor;
67
76
  divider: BooleanConstructor;
77
+ showIcon: {
78
+ type: BooleanConstructor;
79
+ default: boolean;
80
+ };
68
81
  expandText: {
69
82
  type: import("vue").PropType<string>;
70
83
  default: string;
@@ -76,6 +89,10 @@ export declare const CollapseToggle: import("../utils").WithInstall<import("vue"
76
89
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "update:modelValue")[], "change" | "update:modelValue", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
77
90
  modelValue: BooleanConstructor;
78
91
  divider: BooleanConstructor;
92
+ showIcon: {
93
+ type: BooleanConstructor;
94
+ default: boolean;
95
+ };
79
96
  expandText: {
80
97
  type: import("vue").PropType<string>;
81
98
  default: string;
@@ -88,6 +105,7 @@ export declare const CollapseToggle: import("../utils").WithInstall<import("vue"
88
105
  onChange?: ((...args: any[]) => any) | undefined;
89
106
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
90
107
  }, {
108
+ showIcon: boolean;
91
109
  modelValue: boolean;
92
110
  divider: boolean;
93
111
  expandText: string;
@@ -12,6 +12,17 @@ declare const checkboxPanelProps: {
12
12
  default: () => never[];
13
13
  };
14
14
  modelValue: PropType<string[]>;
15
+ searchable: BooleanConstructor;
16
+ searchPlaceholder: StringConstructor;
17
+ filterable: BooleanConstructor;
18
+ filterActive: BooleanConstructor;
19
+ loading: BooleanConstructor;
20
+ finished: BooleanConstructor;
21
+ error: BooleanConstructor;
22
+ lazy: BooleanConstructor;
23
+ loadingText: StringConstructor;
24
+ finishedText: StringConstructor;
25
+ errorText: StringConstructor;
15
26
  confirmText: {
16
27
  type: PropType<string>;
17
28
  default: string;
@@ -24,6 +35,18 @@ declare const checkboxPanelProps: {
24
35
  type: PropType<string>;
25
36
  default: string;
26
37
  };
38
+ selectedText: {
39
+ type: PropType<string>;
40
+ default: string;
41
+ };
42
+ collapseSelectedText: {
43
+ type: PropType<string>;
44
+ default: string;
45
+ };
46
+ clearSelectedText: {
47
+ type: PropType<string>;
48
+ default: string;
49
+ };
27
50
  };
28
51
  export declare type CheckboxPanelProps = ExtractPropTypes<typeof checkboxPanelProps>;
29
52
  declare const _default: import("vue").DefineComponent<{
@@ -34,6 +57,17 @@ declare const _default: import("vue").DefineComponent<{
34
57
  default: () => never[];
35
58
  };
36
59
  modelValue: PropType<string[]>;
60
+ searchable: BooleanConstructor;
61
+ searchPlaceholder: StringConstructor;
62
+ filterable: BooleanConstructor;
63
+ filterActive: BooleanConstructor;
64
+ loading: BooleanConstructor;
65
+ finished: BooleanConstructor;
66
+ error: BooleanConstructor;
67
+ lazy: BooleanConstructor;
68
+ loadingText: StringConstructor;
69
+ finishedText: StringConstructor;
70
+ errorText: StringConstructor;
37
71
  confirmText: {
38
72
  type: PropType<string>;
39
73
  default: string;
@@ -46,7 +80,19 @@ declare const _default: import("vue").DefineComponent<{
46
80
  type: PropType<string>;
47
81
  default: string;
48
82
  };
49
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "update:show" | "confirm")[], "update:modelValue" | "update:show" | "confirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
83
+ selectedText: {
84
+ type: PropType<string>;
85
+ default: string;
86
+ };
87
+ collapseSelectedText: {
88
+ type: PropType<string>;
89
+ default: string;
90
+ };
91
+ clearSelectedText: {
92
+ type: PropType<string>;
93
+ default: string;
94
+ };
95
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("search" | "update:modelValue" | "load" | "update:show" | "confirm" | "filter" | "update:error" | "update:loading" | "show-selected")[], "search" | "filter" | "update:modelValue" | "load" | "update:show" | "confirm" | "update:error" | "update:loading" | "show-selected", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
50
96
  show: BooleanConstructor;
51
97
  title: StringConstructor;
52
98
  options: {
@@ -54,6 +100,17 @@ declare const _default: import("vue").DefineComponent<{
54
100
  default: () => never[];
55
101
  };
56
102
  modelValue: PropType<string[]>;
103
+ searchable: BooleanConstructor;
104
+ searchPlaceholder: StringConstructor;
105
+ filterable: BooleanConstructor;
106
+ filterActive: BooleanConstructor;
107
+ loading: BooleanConstructor;
108
+ finished: BooleanConstructor;
109
+ error: BooleanConstructor;
110
+ lazy: BooleanConstructor;
111
+ loadingText: StringConstructor;
112
+ finishedText: StringConstructor;
113
+ errorText: StringConstructor;
57
114
  confirmText: {
58
115
  type: PropType<string>;
59
116
  default: string;
@@ -66,15 +123,43 @@ declare const _default: import("vue").DefineComponent<{
66
123
  type: PropType<string>;
67
124
  default: string;
68
125
  };
126
+ selectedText: {
127
+ type: PropType<string>;
128
+ default: string;
129
+ };
130
+ collapseSelectedText: {
131
+ type: PropType<string>;
132
+ default: string;
133
+ };
134
+ clearSelectedText: {
135
+ type: PropType<string>;
136
+ default: string;
137
+ };
69
138
  }>> & {
139
+ onLoad?: ((...args: any[]) => any) | undefined;
70
140
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
71
141
  "onUpdate:show"?: ((...args: any[]) => any) | undefined;
72
142
  onConfirm?: ((...args: any[]) => any) | undefined;
143
+ "onUpdate:error"?: ((...args: any[]) => any) | undefined;
144
+ "onUpdate:loading"?: ((...args: any[]) => any) | undefined;
145
+ onSearch?: ((...args: any[]) => any) | undefined;
146
+ onFilter?: ((...args: any[]) => any) | undefined;
147
+ "onShow-selected"?: ((...args: any[]) => any) | undefined;
73
148
  }, {
74
149
  show: boolean;
150
+ error: boolean;
151
+ loading: boolean;
75
152
  options: CheckboxPanelOption[];
76
153
  confirmText: string;
154
+ finished: boolean;
155
+ searchable: boolean;
156
+ filterable: boolean;
157
+ filterActive: boolean;
158
+ lazy: boolean;
77
159
  selectAllText: string;
78
160
  cancelSelectAllText: string;
161
+ selectedText: string;
162
+ collapseSelectedText: string;
163
+ clearSelectedText: string;
79
164
  }>;
80
165
  export default _default;
@@ -1,46 +1,147 @@
1
- import { computed, defineComponent, createVNode as _createVNode } from "vue";
1
+ import { computed, defineComponent, ref, watch, createVNode as _createVNode } from "vue";
2
2
  import { createNamespace, makeArrayProp, makeStringProp } from "../utils/index.mjs";
3
3
  import { ActionSheet } from "../action-sheet/index.mjs";
4
4
  import { NavBar } from "../nav-bar/index.mjs";
5
5
  import { Icon } from "../icon/index.mjs";
6
+ import { Badge } from "../badge/index.mjs";
6
7
  import { Cell } from "../cell/index.mjs";
8
+ import { Empty } from "../empty/index.mjs";
9
+ import { List } from "../list/index.mjs";
7
10
  import { Checkbox } from "../checkbox/index.mjs";
8
11
  import { CheckboxGroup } from "../checkbox-group/index.mjs";
9
- import { Button } from "../button/index.mjs";
12
+ import { BottomActionBar } from "../bottom-action-bar/index.mjs";
13
+ import { Search } from "../search/index.mjs";
10
14
  const [name, bem] = createNamespace("checkbox-panel");
15
+ const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
11
16
  const checkboxPanelProps = {
12
17
  show: Boolean,
13
18
  title: String,
14
19
  options: makeArrayProp(),
15
20
  modelValue: Array,
21
+ searchable: Boolean,
22
+ searchPlaceholder: String,
23
+ filterable: Boolean,
24
+ filterActive: Boolean,
25
+ loading: Boolean,
26
+ finished: Boolean,
27
+ error: Boolean,
28
+ lazy: Boolean,
29
+ loadingText: String,
30
+ finishedText: String,
31
+ errorText: String,
16
32
  confirmText: makeStringProp("\u786E\u5B9A"),
17
33
  selectAllText: makeStringProp("\u5168\u9009"),
18
- cancelSelectAllText: makeStringProp("\u53D6\u6D88\u5168\u9009")
34
+ cancelSelectAllText: makeStringProp("\u53D6\u6D88\u5168\u9009"),
35
+ selectedText: makeStringProp("\u5C55\u5F00\u5DF2\u9009"),
36
+ collapseSelectedText: makeStringProp("\u6536\u8D77\u5DF2\u9009"),
37
+ clearSelectedText: makeStringProp("\u6E05\u7A7A\u5DF2\u9009")
19
38
  };
20
39
  var stdin_default = defineComponent({
21
40
  name,
22
41
  props: checkboxPanelProps,
23
- emits: ["update:show", "update:modelValue", "confirm"],
42
+ emits: ["update:show", "update:modelValue", "update:loading", "update:error", "confirm", "search", "filter", "load", "show-selected"],
24
43
  setup(props, {
25
- emit
44
+ emit,
45
+ slots
26
46
  }) {
47
+ const keyword = ref("");
48
+ const expandedSelected = ref(false);
27
49
  const selectedValues = computed(() => props.modelValue || []);
28
- const selectableOptions = computed(() => props.options.filter((option) => !option.disabled));
50
+ const selectedOptions = computed(() => props.options.filter((option) => selectedValues.value.includes(option.value)));
51
+ const filteredOptions = computed(() => {
52
+ const query = keyword.value.trim().toLocaleLowerCase();
53
+ if (!query)
54
+ return props.options;
55
+ return props.options.filter((option) => option.label.toLocaleLowerCase().includes(query));
56
+ });
57
+ const selectableOptions = computed(() => filteredOptions.value.filter((option) => !option.disabled));
29
58
  const isAllSelected = computed(() => selectableOptions.value.length > 0 && selectableOptions.value.every((option) => selectedValues.value.includes(option.value)));
30
59
  const close = () => emit("update:show", false);
60
+ const updateSelectedValues = (values) => {
61
+ if (!values.length)
62
+ expandedSelected.value = false;
63
+ emit("update:modelValue", values);
64
+ };
31
65
  const toggleOption = (option) => {
32
66
  if (option.disabled)
33
67
  return;
34
68
  const values = [...selectedValues.value];
35
69
  const index = values.indexOf(option.value);
36
70
  index === -1 ? values.push(option.value) : values.splice(index, 1);
37
- emit("update:modelValue", values);
71
+ updateSelectedValues(values);
72
+ };
73
+ const toggleAll = () => {
74
+ const selectableValues = selectableOptions.value.map((option) => option.value);
75
+ const values = isAllSelected.value ? selectedValues.value.filter((value) => !selectableValues.includes(value)) : [.../* @__PURE__ */ new Set([...selectedValues.value, ...selectableValues])];
76
+ updateSelectedValues(values);
77
+ };
78
+ const removeSelected = (option) => {
79
+ updateSelectedValues(selectedValues.value.filter((value) => value !== option.value));
38
80
  };
39
- const toggleAll = () => emit("update:modelValue", isAllSelected.value ? [] : selectableOptions.value.map((option) => option.value));
81
+ const clearSelected = () => updateSelectedValues([]);
40
82
  const confirm = () => {
41
83
  emit("confirm", selectedValues.value);
42
84
  close();
43
85
  };
86
+ const renderFilterAction = () => {
87
+ if (slots.filter)
88
+ return slots.filter();
89
+ if (!props.filterable)
90
+ return;
91
+ return _createVNode("button", {
92
+ "type": "button",
93
+ "class": bem("filter"),
94
+ "aria-label": "\u7B5B\u9009",
95
+ "onClick": () => emit("filter")
96
+ }, [_createVNode(Badge, {
97
+ "dot": props.filterActive
98
+ }, {
99
+ default: () => [_createVNode(Icon, {
100
+ "name": "filter-o",
101
+ "size": "22"
102
+ }, null)]
103
+ })]);
104
+ };
105
+ const renderOptionLabel = (label) => {
106
+ const query = keyword.value.trim();
107
+ if (!query)
108
+ return label;
109
+ const normalizedQuery = query.toLocaleLowerCase();
110
+ return label.split(new RegExp(`(${escapeRegExp(query)})`, "ig")).map((part) => part.toLocaleLowerCase() === normalizedQuery ? _createVNode("span", {
111
+ "class": bem("match")
112
+ }, [part]) : part);
113
+ };
114
+ const renderOptions = () => {
115
+ if (!filteredOptions.value.length) {
116
+ return _createVNode(Empty, {
117
+ "imageSize": 60,
118
+ "description": "\u6682\u65E0\u5339\u914D\u9009\u9879"
119
+ }, null);
120
+ }
121
+ return _createVNode(CheckboxGroup, {
122
+ "modelValue": selectedValues.value,
123
+ "class": bem("card"),
124
+ "onUpdate:modelValue": (value) => emit("update:modelValue", value)
125
+ }, {
126
+ default: () => [filteredOptions.value.map((option) => _createVNode(Cell, {
127
+ "key": option.value,
128
+ "clickable": !option.disabled,
129
+ "title": option.label,
130
+ "onClick": () => toggleOption(option)
131
+ }, {
132
+ title: () => renderOptionLabel(option.label),
133
+ "right-icon": () => _createVNode(Checkbox, {
134
+ "name": option.value,
135
+ "disabled": option.disabled,
136
+ "onClick": (event) => event.stopPropagation()
137
+ }, null)
138
+ }))]
139
+ });
140
+ };
141
+ watch(selectedValues, (values) => {
142
+ if (!values.length)
143
+ expandedSelected.value = false;
144
+ });
44
145
  return () => _createVNode(ActionSheet, {
45
146
  "show": props.show,
46
147
  "class": bem(),
@@ -60,38 +161,85 @@ var stdin_default = defineComponent({
60
161
  "size": "22",
61
162
  "onClick": close
62
163
  }, null),
63
- right: () => _createVNode("span", {
64
- "class": bem("select-all"),
65
- "onClick": toggleAll
66
- }, [isAllSelected.value ? props.cancelSelectAllText : props.selectAllText])
67
- })]), _createVNode("div", {
164
+ right: renderFilterAction
165
+ })]), props.searchable && _createVNode(Search, {
166
+ "modelValue": keyword.value,
167
+ "class": bem("search"),
168
+ "shape": "round",
169
+ "inputAlign": "left",
170
+ "placeholder": props.searchPlaceholder || "\u8BF7\u8F93\u5165\u641C\u7D22\u5173\u952E\u8BCD",
171
+ "maxlength": 200,
172
+ "onUpdate:modelValue": (value) => {
173
+ keyword.value = value;
174
+ emit("search", value);
175
+ },
176
+ "onSearch": (value) => emit("search", value)
177
+ }, null), _createVNode("div", {
68
178
  "class": bem("body")
69
- }, [_createVNode(CheckboxGroup, {
70
- "modelValue": selectedValues.value,
71
- "class": bem("card"),
72
- "onUpdate:modelValue": (value) => emit("update:modelValue", value)
179
+ }, [props.lazy ? _createVNode(List, {
180
+ "loading": props.loading,
181
+ "finished": props.finished,
182
+ "error": props.error,
183
+ "loadingText": props.loadingText,
184
+ "finishedText": props.finishedText,
185
+ "errorText": props.errorText,
186
+ "onUpdate:loading": (value) => emit("update:loading", value),
187
+ "onUpdate:error": (value) => emit("update:error", value),
188
+ "onLoad": () => emit("load")
73
189
  }, {
74
- default: () => [props.options.map((option) => _createVNode(Cell, {
75
- "key": option.value,
76
- "clickable": !option.disabled,
77
- "title": option.label,
78
- "onClick": () => toggleOption(option)
79
- }, {
80
- "right-icon": () => _createVNode(Checkbox, {
81
- "name": option.value,
82
- "disabled": option.disabled,
83
- "onClick": (event) => event.stopPropagation()
84
- }, null)
85
- }))]
86
- })]), _createVNode("div", {
190
+ default: () => [renderOptions()]
191
+ }) : renderOptions()]), _createVNode("div", {
87
192
  "class": bem("footer")
88
- }, [_createVNode(Button, {
89
- "block": true,
90
- "type": "primary",
91
- "onClick": confirm
193
+ }, [_createVNode(BottomActionBar, {
194
+ "fixed": false,
195
+ "moreIcon": "passed",
196
+ "moreText": expandedSelected.value ? props.collapseSelectedText : props.selectedText,
197
+ "moreBadge": selectedValues.value.length,
198
+ "moreBadgeMax": 99,
199
+ "secondaryText": isAllSelected.value ? props.cancelSelectAllText : props.selectAllText,
200
+ "secondaryDisabled": !selectableOptions.value.length,
201
+ "confirmText": props.confirmText,
202
+ "moreDisabled": !selectedValues.value.length,
203
+ "confirmDisabled": !selectedValues.value.length,
204
+ "onSecondary": toggleAll,
205
+ "onMore": () => {
206
+ expandedSelected.value = !expandedSelected.value;
207
+ emit("show-selected", selectedValues.value);
208
+ },
209
+ "onConfirm": confirm
210
+ }, null), expandedSelected.value && _createVNode("div", {
211
+ "class": bem("selected-panel")
212
+ }, [_createVNode("div", {
213
+ "class": bem("selected-header")
214
+ }, [_createVNode("button", {
215
+ "type": "button",
216
+ "class": bem("clear"),
217
+ "onClick": clearSelected
218
+ }, [props.clearSelectedText]), _createVNode("button", {
219
+ "type": "button",
220
+ "class": bem("collapse"),
221
+ "onClick": () => {
222
+ expandedSelected.value = false;
223
+ }
224
+ }, [props.collapseSelectedText, _createVNode(Icon, {
225
+ "name": "arrow-down"
226
+ }, null)])]), _createVNode("div", {
227
+ "class": bem("selected-list")
228
+ }, [selectedOptions.value.map((option) => _createVNode(Cell, {
229
+ "key": option.value,
230
+ "title": option.label,
231
+ "class": bem("selected-item"),
232
+ "border": false
92
233
  }, {
93
- default: () => [props.confirmText]
94
- })])])]
234
+ "right-icon": () => _createVNode("button", {
235
+ "type": "button",
236
+ "class": bem("remove"),
237
+ "aria-label": `\u79FB\u9664${option.label}`,
238
+ "onClick": () => removeSelected(option)
239
+ }, [_createVNode(Icon, {
240
+ "name": "cross"
241
+ }, null)])
242
+ }))])])])])]
95
243
  });
96
244
  }
97
245
  });
@@ -1 +1 @@
1
- .van-checkbox-panel{box-sizing:border-box;display:flex;height:calc(100% - 96px);max-height:calc(100% - 96px);overflow:hidden;background:var(--van-gray-1)}.van-checkbox-panel .van-action-sheet__content{display:flex;flex:1;min-height:0;gap:0;padding:0;overflow:hidden}.van-checkbox-panel__content{display:flex;flex:1;flex-direction:column;min-height:0;overflow:hidden;background:var(--van-gray-1)}.van-checkbox-panel__nav-wrapper{flex:none;width:100%;min-width:0;max-width:100%;overflow:hidden}.van-checkbox-panel__nav{box-sizing:border-box;width:100%;min-width:0;max-width:100%;overflow:hidden;--van-nav-bar-background-color: var(--van-gray-1)}.van-checkbox-panel__nav .van-nav-bar__content{box-sizing:border-box;width:100%;overflow:hidden}.van-checkbox-panel__nav .van-nav-bar__left--slot,.van-checkbox-panel__nav .van-nav-bar__right--slot{padding:0}.van-checkbox-panel__nav .van-nav-bar__left--slot{left:var(--van-padding-md)}.van-checkbox-panel__nav .van-nav-bar__right--slot{right:var(--van-padding-md)}.van-checkbox-panel__body{flex:1;min-height:0;padding:0 var(--van-padding-md);overflow-y:auto}.van-checkbox-panel__card{overflow:hidden;background:var(--van-white);border-radius:var(--van-border-radius-lg)}.van-checkbox-panel__footer{flex:none;padding:var(--van-padding-xs) 12px;background:var(--van-white);box-shadow:0 3px 12px rgba(27,33,41,.12),0 .5px 3px rgba(27,33,41,.08)}.van-checkbox-panel__select-all{color:var(--van-primary-color);font-weight:var(--van-font-weight-bold);font-size:var(--van-font-size-md)}.van-checkbox-panel .van-cell{min-height:44px}.van-checkbox-panel .van-checkbox{margin:0}
1
+ .van-checkbox-panel{box-sizing:border-box;display:flex;height:calc(100% - 96px);max-height:calc(100% - 96px);overflow:hidden;background:var(--van-gray-1)}.van-checkbox-panel .van-action-sheet__content{display:flex;flex:1;min-height:0;gap:0;padding:0;overflow:hidden}.van-checkbox-panel__content{display:flex;flex:1;flex-direction:column;min-height:0;overflow:hidden;background:var(--van-gray-1)}.van-checkbox-panel__nav-wrapper{flex:none;width:100%;min-width:0;max-width:100%;overflow:hidden}.van-checkbox-panel__nav{box-sizing:border-box;width:100%;min-width:0;max-width:100%;overflow:hidden;--van-nav-bar-background-color: var(--van-gray-1)}.van-checkbox-panel__nav .van-nav-bar__content{box-sizing:border-box;width:100%;overflow:hidden}.van-checkbox-panel__nav .van-nav-bar__left--slot,.van-checkbox-panel__nav .van-nav-bar__right--slot{padding:0}.van-checkbox-panel__nav .van-nav-bar__left--slot{left:var(--van-padding-md)}.van-checkbox-panel__nav .van-nav-bar__right--slot{right:var(--van-padding-md)}.van-checkbox-panel__filter{display:flex;align-items:center;justify-content:center;width:34px;height:46px;padding:0;color:inherit;background:transparent;border:0}.van-checkbox-panel__search{--van-search-padding: 8px var(--van-padding-md);--van-search-background-color: var(--van-gray-1);--van-search-content-background-color: var(--van-white)}.van-checkbox-panel__match{color:var(--van-primary-color)}.van-checkbox-panel__body{flex:1;min-height:0;padding:0 var(--van-padding-md);overflow-y:auto}.van-checkbox-panel__card{overflow:hidden;background:var(--van-white);border-radius:var(--van-border-radius-lg)}.van-checkbox-panel__footer{position:relative;flex:none;background:var(--van-white);box-shadow:0 -2px 5px rgba(27,33,41,.1)}.van-checkbox-panel__footer .van-bottom-action-bar{box-shadow:none}.van-checkbox-panel__footer .van-bottom-action-bar__secondary{flex:0 0 auto;width:auto;padding:0 var(--van-padding-md)}.van-checkbox-panel__selected-panel{position:absolute;right:0;bottom:60px;left:0;display:flex;flex-direction:column;max-height:min(340px,calc(100vh - 156px));overflow:hidden;background:var(--van-white);box-shadow:0 -2px 5px rgba(27,33,41,.1)}.van-checkbox-panel__selected-header{display:flex;flex:none;align-items:center;justify-content:space-between;padding:12px var(--van-padding-md) 4px}.van-checkbox-panel__clear,.van-checkbox-panel__collapse{display:inline-flex;align-items:center;padding:0;font:inherit;font-size:var(--van-font-size-md);line-height:var(--van-line-height-lg);background:transparent;border:0}.van-checkbox-panel__clear{color:var(--van-primary-color)}.van-checkbox-panel__collapse,.van-checkbox-panel__remove,.van-checkbox-panel__collapse .van-icon,.van-checkbox-panel__remove .van-icon{color:var(--van-gray-6)}.van-checkbox-panel__collapse{gap:2px}.van-checkbox-panel__selected-list{display:flex;flex:0 1 auto;flex-direction:column;gap:6px;min-height:0;padding:var(--van-padding-xs) var(--van-padding-md);overflow-y:auto;overscroll-behavior:contain}.van-checkbox-panel__selected-item{flex:none;min-height:44px;padding:11px var(--van-padding-md);background:var(--van-gray-1);border-radius:8px}.van-checkbox-panel__remove{display:inline-flex;align-self:flex-start;align-items:center;justify-content:center;width:22px;height:22px;padding:0;background:transparent;border:0}.van-checkbox-panel .van-cell{min-height:44px}.van-checkbox-panel .van-checkbox{margin:0}