persagy-vant 0.0.46 → 0.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/es/cell/Cell.d.ts +12 -1
  2. package/es/cell/Cell.mjs +41 -9
  3. package/es/cell/index.css +1 -1
  4. package/es/cell/index.d.ts +5 -1
  5. package/es/cell/index.less +26 -0
  6. package/es/collapse-item/CollapseItem.d.ts +4 -0
  7. package/es/collapse-item/index.d.ts +3 -0
  8. package/es/field/Field.d.ts +4 -0
  9. package/es/field/index.d.ts +3 -0
  10. package/es/index.d.ts +1 -1
  11. package/es/index.mjs +1 -1
  12. package/es/label/Label.d.ts +2 -2
  13. package/es/label/index.d.ts +2 -2
  14. package/es/tree-select-panel/TreeSelectPanel.d.ts +13 -0
  15. package/es/tree-select-panel/TreeSelectPanel.mjs +25 -7
  16. package/es/tree-select-panel/index.css +1 -1
  17. package/es/tree-select-panel/index.d.ts +9 -0
  18. package/es/tree-select-panel/index.less +2 -0
  19. package/lib/cell/Cell.d.ts +12 -1
  20. package/lib/cell/Cell.js +40 -8
  21. package/lib/cell/index.css +1 -1
  22. package/lib/cell/index.d.ts +5 -1
  23. package/lib/cell/index.less +26 -0
  24. package/lib/collapse-item/CollapseItem.d.ts +4 -0
  25. package/lib/collapse-item/index.d.ts +3 -0
  26. package/lib/field/Field.d.ts +4 -0
  27. package/lib/field/index.d.ts +3 -0
  28. package/lib/index.css +1 -1
  29. package/lib/index.d.ts +1 -1
  30. package/lib/index.js +1 -1
  31. package/lib/label/Label.d.ts +2 -2
  32. package/lib/label/index.d.ts +2 -2
  33. package/lib/tree-select-panel/TreeSelectPanel.d.ts +13 -0
  34. package/lib/tree-select-panel/TreeSelectPanel.js +24 -6
  35. package/lib/tree-select-panel/index.css +1 -1
  36. package/lib/tree-select-panel/index.d.ts +9 -0
  37. package/lib/tree-select-panel/index.less +2 -0
  38. package/lib/vant.cjs.js +65 -15
  39. package/lib/vant.es.js +65 -15
  40. package/lib/vant.js +65 -15
  41. package/lib/vant.min.js +1 -1
  42. package/lib/web-types.json +1 -1
  43. package/package.json +1 -1
package/lib/index.d.ts CHANGED
@@ -117,4 +117,4 @@ declare namespace _default {
117
117
  }
118
118
  export default _default;
119
119
  export function install(app: any): void;
120
- export const version: "0.0.46";
120
+ export const version: "0.0.47";
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.46";
251
+ const version = "0.0.47";
252
252
  function install(app) {
253
253
  const components = [
254
254
  import_action_bar.ActionBar,
@@ -126,7 +126,7 @@ declare const _default: import("vue").DefineComponent<{
126
126
  type: PropType<LabelMedia[]>;
127
127
  default: () => never[];
128
128
  };
129
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("click" | "click-media" | "long-press")[], "click" | "click-media" | "long-press", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
129
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("click" | "long-press" | "click-media")[], "click" | "long-press" | "click-media", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
130
130
  label: {
131
131
  type: PropType<string>;
132
132
  default: string;
@@ -183,8 +183,8 @@ declare const _default: import("vue").DefineComponent<{
183
183
  };
184
184
  }>> & {
185
185
  onClick?: ((...args: any[]) => any) | undefined;
186
- "onClick-media"?: ((...args: any[]) => any) | undefined;
187
186
  "onLong-press"?: ((...args: any[]) => any) | undefined;
187
+ "onClick-media"?: ((...args: any[]) => any) | undefined;
188
188
  }, {
189
189
  type: LabelType;
190
190
  label: string;
@@ -53,7 +53,7 @@ export declare const Label: import("../utils").WithInstall<import("vue").DefineC
53
53
  type: import("vue").PropType<import("./Label").LabelMedia[]>;
54
54
  default: () => never[];
55
55
  };
56
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("click" | "click-media" | "long-press")[], "click" | "click-media" | "long-press", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
56
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("click" | "long-press" | "click-media")[], "click" | "long-press" | "click-media", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
57
57
  label: {
58
58
  type: import("vue").PropType<string>;
59
59
  default: string;
@@ -110,8 +110,8 @@ export declare const Label: import("../utils").WithInstall<import("vue").DefineC
110
110
  };
111
111
  }>> & {
112
112
  onClick?: ((...args: any[]) => any) | undefined;
113
- "onClick-media"?: ((...args: any[]) => any) | undefined;
114
113
  "onLong-press"?: ((...args: any[]) => any) | undefined;
114
+ "onClick-media"?: ((...args: any[]) => any) | undefined;
115
115
  }, {
116
116
  type: import("./Label").LabelType;
117
117
  label: string;
@@ -26,6 +26,10 @@ declare const treeSelectPanelProps: {
26
26
  default: true;
27
27
  };
28
28
  searchPlaceholder: StringConstructor;
29
+ showSearchParentPath: {
30
+ type: BooleanConstructor;
31
+ default: true;
32
+ };
29
33
  lazy: BooleanConstructor;
30
34
  loading: BooleanConstructor;
31
35
  finished: BooleanConstructor;
@@ -76,6 +80,10 @@ declare const _default: import("vue").DefineComponent<{
76
80
  default: true;
77
81
  };
78
82
  searchPlaceholder: StringConstructor;
83
+ showSearchParentPath: {
84
+ type: BooleanConstructor;
85
+ default: true;
86
+ };
79
87
  lazy: BooleanConstructor;
80
88
  loading: BooleanConstructor;
81
89
  finished: BooleanConstructor;
@@ -124,6 +132,10 @@ declare const _default: import("vue").DefineComponent<{
124
132
  default: true;
125
133
  };
126
134
  searchPlaceholder: StringConstructor;
135
+ showSearchParentPath: {
136
+ type: BooleanConstructor;
137
+ default: true;
138
+ };
127
139
  lazy: BooleanConstructor;
128
140
  loading: BooleanConstructor;
129
141
  finished: BooleanConstructor;
@@ -177,5 +189,6 @@ declare const _default: import("vue").DefineComponent<{
177
189
  expandedKeys: Numeric[];
178
190
  selectableParent: boolean;
179
191
  showParentSelect: boolean;
192
+ showSearchParentPath: boolean;
180
193
  }>;
181
194
  export default _default;
@@ -46,6 +46,7 @@ const treeSelectPanelProps = {
46
46
  showSelectLevels: Array,
47
47
  searchable: import_utils.truthProp,
48
48
  searchPlaceholder: String,
49
+ showSearchParentPath: import_utils.truthProp,
49
50
  lazy: Boolean,
50
51
  loading: Boolean,
51
52
  finished: Boolean,
@@ -58,11 +59,15 @@ const treeSelectPanelProps = {
58
59
  clearSelectedText: (0, import_utils.makeStringProp)("\u6E05\u7A7A\u5DF2\u9009"),
59
60
  confirmText: (0, import_utils.makeStringProp)("\u786E\u5B9A")
60
61
  };
61
- const findMatchingLeaves = (items, keyword) => items.flatMap((item) => {
62
+ const findMatchingLeaves = (items, keyword, parentPath = []) => items.flatMap((item) => {
62
63
  var _a;
63
- if ((_a = item.children) == null ? void 0 : _a.length)
64
- return findMatchingLeaves(item.children, keyword);
65
- return item.text.toLocaleLowerCase().includes(keyword) ? [item] : [];
64
+ if ((_a = item.children) == null ? void 0 : _a.length) {
65
+ return findMatchingLeaves(item.children, keyword, [...parentPath, item.text]);
66
+ }
67
+ return item.text.toLocaleLowerCase().includes(keyword) ? [{
68
+ item,
69
+ parentPath
70
+ }] : [];
66
71
  });
67
72
  const flattenItems = (items) => items.flatMap((item) => [item, ...item.children ? flattenItems(item.children) : []]);
68
73
  var stdin_default = (0, import_vue.defineComponent)({
@@ -75,7 +80,10 @@ var stdin_default = (0, import_vue.defineComponent)({
75
80
  const keyword = (0, import_vue.ref)("");
76
81
  const expandedSelected = (0, import_vue.ref)(false);
77
82
  const normalizedKeyword = (0, import_vue.computed)(() => keyword.value.trim().toLocaleLowerCase());
78
- const filteredItems = (0, import_vue.computed)(() => normalizedKeyword.value ? findMatchingLeaves(props.items, normalizedKeyword.value) : props.items);
83
+ const searchResults = (0, import_vue.computed)(() => normalizedKeyword.value ? findMatchingLeaves(props.items, normalizedKeyword.value) : []);
84
+ const filteredItems = (0, import_vue.computed)(() => normalizedKeyword.value ? searchResults.value.map(({
85
+ item
86
+ }) => item) : props.items);
79
87
  const selectedItems = (0, import_vue.computed)(() => flattenItems(props.items).filter((item) => props.modelValue.includes(item.id)));
80
88
  const close = () => emit("update:show", false);
81
89
  const updateSelected = (value) => {
@@ -130,7 +138,17 @@ var stdin_default = (0, import_vue.defineComponent)({
130
138
  title: ({
131
139
  item,
132
140
  hasChildren
133
- }) => hasChildren ? item.text : renderHighlightedTitle(item.text)
141
+ }) => {
142
+ if (hasChildren || !normalizedKeyword.value)
143
+ return item.text;
144
+ const result = searchResults.value.find((result2) => result2.item.id === item.id);
145
+ if (!result || !props.showSearchParentPath || !result.parentPath.length) {
146
+ return renderHighlightedTitle(item.text);
147
+ }
148
+ return (0, import_vue.createVNode)(import_vue.Fragment, null, [result.parentPath.join("/"), (0, import_vue.createVNode)("span", {
149
+ "class": bem("path-separator")
150
+ }, [(0, import_vue.createTextVNode)("/")]), renderHighlightedTitle(item.text)]);
151
+ }
134
152
  })]);
135
153
  };
136
154
  return () => (0, import_vue.createVNode)(import_action_sheet.ActionSheet, {
@@ -1 +1 @@
1
- .van-tree-select-panel{box-sizing:border-box;display:flex;height:calc(100% - 96px);max-height:calc(100% - 96px);overflow:hidden;background:var(--van-gray-1)}.van-tree-select-panel .van-action-sheet__content,.van-tree-select-panel__content{display:flex;flex:1;flex-direction:column;min-height:0;padding:0;overflow:hidden;background:var(--van-gray-1)}.van-tree-select-panel__nav{flex:none;--van-nav-bar-background-color: var(--van-gray-1)}.van-tree-select-panel__nav .van-nav-bar__left--slot{padding:0}.van-tree-select-panel__nav .van-nav-bar__left--slot{left:var(--van-padding-md)}.van-tree-select-panel__search-wrapper{margin:0 var(--van-padding-md) 6px}.van-tree-select-panel__body{flex:1;min-height:0;padding:0 var(--van-padding-md) var(--van-padding-md);overflow-y:auto}.van-tree-select-panel__footer{position:relative;flex:none;background:var(--van-white);box-shadow:0 -2px 5px rgba(27,33,41,.1)}.van-tree-select-panel__footer .van-bottom-action-bar{box-shadow:none}.van-tree-select-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-tree-select-panel__selected-header{display:flex;flex:none;align-items:center;justify-content:space-between;padding:12px var(--van-padding-md) 4px}.van-tree-select-panel__clear,.van-tree-select-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-tree-select-panel__clear{color:var(--van-primary-color)}.van-tree-select-panel__collapse,.van-tree-select-panel__remove,.van-tree-select-panel__collapse .van-icon,.van-tree-select-panel__remove .van-icon{color:var(--van-gray-6)}.van-tree-select-panel__collapse{gap:2px}.van-tree-select-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-tree-select-panel__selected-item{flex:none;min-height:44px;padding:11px var(--van-padding-md);background:var(--van-gray-1);border-radius:8px}.van-tree-select-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-tree-select-panel__card{overflow:hidden;background:var(--van-white);border-radius:var(--van-border-radius-lg)}.van-tree-select-panel__match{color:var(--van-primary-color)}.van-tree-select-panel .van-list{min-height:100%}
1
+ .van-tree-select-panel{box-sizing:border-box;display:flex;height:calc(100% - 96px);max-height:calc(100% - 96px);overflow:hidden;background:var(--van-gray-1)}.van-tree-select-panel .van-action-sheet__content,.van-tree-select-panel__content{display:flex;flex:1;flex-direction:column;min-height:0;padding:0;overflow:hidden;background:var(--van-gray-1)}.van-tree-select-panel__nav{flex:none;--van-nav-bar-background-color: var(--van-gray-1)}.van-tree-select-panel__nav .van-nav-bar__left--slot{padding:0}.van-tree-select-panel__nav .van-nav-bar__left--slot{left:var(--van-padding-md)}.van-tree-select-panel__search-wrapper{margin:0 var(--van-padding-md) 6px}.van-tree-select-panel__body{flex:1;min-height:0;padding:0 var(--van-padding-md) var(--van-padding-md);overflow-y:auto}.van-tree-select-panel__footer{position:relative;flex:none;background:var(--van-white);box-shadow:0 -2px 5px rgba(27,33,41,.1)}.van-tree-select-panel__footer .van-bottom-action-bar{box-shadow:none}.van-tree-select-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-tree-select-panel__selected-header{display:flex;flex:none;align-items:center;justify-content:space-between;padding:12px var(--van-padding-md) 4px}.van-tree-select-panel__clear,.van-tree-select-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-tree-select-panel__clear{color:var(--van-primary-color)}.van-tree-select-panel__collapse,.van-tree-select-panel__remove,.van-tree-select-panel__collapse .van-icon,.van-tree-select-panel__remove .van-icon{color:var(--van-gray-6)}.van-tree-select-panel__collapse{gap:2px}.van-tree-select-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-tree-select-panel__selected-item{flex:none;min-height:44px;padding:11px var(--van-padding-md);background:var(--van-gray-1);border-radius:8px}.van-tree-select-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-tree-select-panel__card{overflow:hidden;background:var(--van-white);border-radius:var(--van-border-radius-lg)}.van-tree-select-panel__match{color:var(--van-primary-color)}.van-tree-select-panel__path-separator{color:var(--van-text-color-2)}.van-tree-select-panel .van-list{min-height:100%}
@@ -23,6 +23,10 @@ export declare const TreeSelectPanel: import("../utils").WithInstall<import("vue
23
23
  default: true;
24
24
  };
25
25
  searchPlaceholder: StringConstructor;
26
+ showSearchParentPath: {
27
+ type: BooleanConstructor;
28
+ default: true;
29
+ };
26
30
  lazy: BooleanConstructor;
27
31
  loading: BooleanConstructor;
28
32
  finished: BooleanConstructor;
@@ -71,6 +75,10 @@ export declare const TreeSelectPanel: import("../utils").WithInstall<import("vue
71
75
  default: true;
72
76
  };
73
77
  searchPlaceholder: StringConstructor;
78
+ showSearchParentPath: {
79
+ type: BooleanConstructor;
80
+ default: true;
81
+ };
74
82
  lazy: BooleanConstructor;
75
83
  loading: BooleanConstructor;
76
84
  finished: BooleanConstructor;
@@ -124,6 +132,7 @@ export declare const TreeSelectPanel: import("../utils").WithInstall<import("vue
124
132
  expandedKeys: import("../utils").Numeric[];
125
133
  selectableParent: boolean;
126
134
  showParentSelect: boolean;
135
+ showSearchParentPath: boolean;
127
136
  }>>;
128
137
  export default TreeSelectPanel;
129
138
  export type { TreeSelectPanelProps } from './TreeSelectPanel';
@@ -103,5 +103,7 @@
103
103
  }
104
104
  &__card { overflow: hidden; background: var(--van-white); border-radius: var(--van-border-radius-lg); }
105
105
  &__match { color: var(--van-primary-color); }
106
+
107
+ &__path-separator { color: var(--van-text-color-2); }
106
108
  .van-list { min-height: 100%; }
107
109
  }
package/lib/vant.cjs.js CHANGED
@@ -3178,6 +3178,7 @@ const cellSharedProps = {
3178
3178
  showTitleCollapseIcon: Boolean,
3179
3179
  defaultMultiLineNotesCollapsed: Boolean,
3180
3180
  threeLine: Boolean,
3181
+ threeLineEllipsis: Boolean,
3181
3182
  labelSize: numericProp,
3182
3183
  avatar: String,
3183
3184
  showAvatar: {
@@ -3280,13 +3281,39 @@ const cellProps = extend({}, cellSharedProps, routeProps);
3280
3281
  var stdin_default$1M = vue.defineComponent({
3281
3282
  name: name$1D,
3282
3283
  props: cellProps,
3283
- emits: ["click", "click-label", "click-description", "click-note", "click-title-icon", "update:leftSelect", "update:rightSelect", "update:multiLineNotesCollapsed"],
3284
+ emits: ["click", "click-label", "click-description", "click-note", "click-title-icon", "long-press", "update:leftSelect", "update:rightSelect", "update:multiLineNotesCollapsed"],
3284
3285
  setup(props2, {
3285
3286
  slots,
3286
3287
  emit
3287
3288
  }) {
3288
3289
  var _a, _b;
3290
+ let longPressTimer;
3289
3291
  const config = vue.inject(CONFIG_PROVIDER_KEY, null);
3292
+ const clearLongPress = () => {
3293
+ if (longPressTimer !== void 0) {
3294
+ clearTimeout(longPressTimer);
3295
+ longPressTimer = void 0;
3296
+ }
3297
+ };
3298
+ const startLongPress = (target, text) => {
3299
+ if (!props2.threeLine || !props2.threeLineEllipsis || !isDef(text))
3300
+ return;
3301
+ clearLongPress();
3302
+ longPressTimer = setTimeout(() => {
3303
+ longPressTimer = void 0;
3304
+ const payload = {
3305
+ target,
3306
+ text: String(text)
3307
+ };
3308
+ emit("long-press", payload);
3309
+ }, 500);
3310
+ };
3311
+ const longPressEvents = (target, text) => ({
3312
+ onPointerdown: () => startLongPress(target, text),
3313
+ onPointerup: clearLongPress,
3314
+ onPointercancel: clearLongPress,
3315
+ onPointerleave: clearLongPress
3316
+ });
3290
3317
  const route2 = useRoute();
3291
3318
  const vm = vue.getCurrentInstance().proxy;
3292
3319
  const leftSelectState = vue.ref((_a = props2.leftSelect) != null ? _a : false);
@@ -3333,7 +3360,7 @@ var stdin_default$1M = vue.defineComponent({
3333
3360
  const showLabel = slots.label || isDef(props2.label);
3334
3361
  const showLabelIcon = (_a2 = props2.showLabelIcon) != null ? _a2 : !!(slots["label-icon"] || props2.labelIcon);
3335
3362
  if (showLabel) {
3336
- return vue.createVNode("div", {
3363
+ return vue.createVNode("div", vue.mergeProps({
3337
3364
  "class": [bem$1z("label", {
3338
3365
  clickable: props2.labelClickable
3339
3366
  }), props2.labelClass],
@@ -3348,19 +3375,21 @@ var stdin_default$1M = vue.defineComponent({
3348
3375
  event.stopPropagation();
3349
3376
  emit("click-label", event);
3350
3377
  }
3351
- }, [showLabelIcon && slots["label-icon"] ? vue.createVNode("span", {
3378
+ }, longPressEvents("label", props2.label)), [showLabelIcon && slots["label-icon"] ? vue.createVNode("span", {
3352
3379
  "class": bem$1z("label-icon")
3353
3380
  }, [slots["label-icon"]()]) : showLabelIcon ? vue.createVNode(Icon, {
3354
3381
  "name": props2.labelIcon || "location-o",
3355
3382
  "class": bem$1z("label-icon"),
3356
3383
  "classPrefix": props2.iconPrefix
3357
- }, null) : null, vue.createVNode("span", null, [slots.label ? slots.label() : props2.label])]);
3384
+ }, null) : null, vue.createVNode("span", {
3385
+ "class": bem$1z("label-content")
3386
+ }, [slots.label ? slots.label() : props2.label])]);
3358
3387
  }
3359
3388
  };
3360
3389
  const renderDescription = () => {
3361
3390
  const showDescription = slots.description || isDef(props2.description);
3362
3391
  if (showDescription) {
3363
- return vue.createVNode("div", {
3392
+ return vue.createVNode("div", vue.mergeProps({
3364
3393
  "class": bem$1z("description", {
3365
3394
  clickable: props2.descriptionClickable
3366
3395
  }),
@@ -3372,7 +3401,7 @@ var stdin_default$1M = vue.defineComponent({
3372
3401
  event.stopPropagation();
3373
3402
  emit("click-description", event);
3374
3403
  }
3375
- }, [slots.description ? slots.description() : props2.description]);
3404
+ }, longPressEvents("description", props2.description)), [slots.description ? slots.description() : props2.description]);
3376
3405
  }
3377
3406
  };
3378
3407
  const renderMultiLineNotes = () => {
@@ -3417,7 +3446,9 @@ var stdin_default$1M = vue.defineComponent({
3417
3446
  "class": bem$1z("title-collapse-icon", {
3418
3447
  collapsed: multiLineNotesCollapsed.value
3419
3448
  })
3420
- }, null)]), slots.title ? slots.title() : vue.createVNode("span", null, [props2.title]), renderTitleTag(), renderTags(), renderTitleIcon()]), renderWrapTags(), renderLabel(), props2.threeLine && renderDescription(), !multiLineNotesCollapsed.value && renderMultiLineNotes()]);
3449
+ }, null)]), vue.createVNode("span", vue.mergeProps({
3450
+ "class": bem$1z("title-content")
3451
+ }, longPressEvents("title", props2.title)), [slots.title ? slots.title() : props2.title]), renderTitleTag(), renderTags(), renderTitleIcon()]), renderWrapTags(), renderLabel(), props2.threeLine && renderDescription(), !multiLineNotesCollapsed.value && renderMultiLineNotes()]);
3421
3452
  }
3422
3453
  };
3423
3454
  const renderValue = () => {
@@ -3429,7 +3460,7 @@ var stdin_default$1M = vue.defineComponent({
3429
3460
  "class": [bem$1z("value", {
3430
3461
  alone: !hasTitle
3431
3462
  }), props2.valueClass]
3432
- }, [slot ? slot() : vue.createVNode("span", null, [props2.value])]);
3463
+ }, [slot ? slot() : vue.createVNode("span", longPressEvents("value", props2.value), [props2.value])]);
3433
3464
  }
3434
3465
  };
3435
3466
  const renderLeftIcon = () => {
@@ -3702,6 +3733,7 @@ var stdin_default$1M = vue.defineComponent({
3702
3733
  clickable,
3703
3734
  borderless: !border,
3704
3735
  "three-line": threeLine,
3736
+ "three-line-ellipsis": threeLine && props2.threeLineEllipsis,
3705
3737
  "multi-line-notes": hasMultiLineNotes
3706
3738
  };
3707
3739
  if (cellSize) {
@@ -19136,6 +19168,7 @@ const treeSelectPanelProps = {
19136
19168
  showSelectLevels: Array,
19137
19169
  searchable: truthProp,
19138
19170
  searchPlaceholder: String,
19171
+ showSearchParentPath: truthProp,
19139
19172
  lazy: Boolean,
19140
19173
  loading: Boolean,
19141
19174
  finished: Boolean,
@@ -19148,11 +19181,15 @@ const treeSelectPanelProps = {
19148
19181
  clearSelectedText: makeStringProp("清空已选"),
19149
19182
  confirmText: makeStringProp("确定")
19150
19183
  };
19151
- const findMatchingLeaves = (items, keyword) => items.flatMap((item) => {
19184
+ const findMatchingLeaves = (items, keyword, parentPath = []) => items.flatMap((item) => {
19152
19185
  var _a;
19153
- if ((_a = item.children) == null ? void 0 : _a.length)
19154
- return findMatchingLeaves(item.children, keyword);
19155
- return item.text.toLocaleLowerCase().includes(keyword) ? [item] : [];
19186
+ if ((_a = item.children) == null ? void 0 : _a.length) {
19187
+ return findMatchingLeaves(item.children, keyword, [...parentPath, item.text]);
19188
+ }
19189
+ return item.text.toLocaleLowerCase().includes(keyword) ? [{
19190
+ item,
19191
+ parentPath
19192
+ }] : [];
19156
19193
  });
19157
19194
  const flattenItems = (items) => items.flatMap((item) => [item, ...item.children ? flattenItems(item.children) : []]);
19158
19195
  var stdin_default$9 = vue.defineComponent({
@@ -19165,7 +19202,10 @@ var stdin_default$9 = vue.defineComponent({
19165
19202
  const keyword = vue.ref("");
19166
19203
  const expandedSelected = vue.ref(false);
19167
19204
  const normalizedKeyword = vue.computed(() => keyword.value.trim().toLocaleLowerCase());
19168
- const filteredItems = vue.computed(() => normalizedKeyword.value ? findMatchingLeaves(props2.items, normalizedKeyword.value) : props2.items);
19205
+ const searchResults = vue.computed(() => normalizedKeyword.value ? findMatchingLeaves(props2.items, normalizedKeyword.value) : []);
19206
+ const filteredItems = vue.computed(() => normalizedKeyword.value ? searchResults.value.map(({
19207
+ item
19208
+ }) => item) : props2.items);
19169
19209
  const selectedItems = vue.computed(() => flattenItems(props2.items).filter((item) => props2.modelValue.includes(item.id)));
19170
19210
  const close = () => emit("update:show", false);
19171
19211
  const updateSelected = (value) => {
@@ -19220,7 +19260,17 @@ var stdin_default$9 = vue.defineComponent({
19220
19260
  title: ({
19221
19261
  item,
19222
19262
  hasChildren
19223
- }) => hasChildren ? item.text : renderHighlightedTitle(item.text)
19263
+ }) => {
19264
+ if (hasChildren || !normalizedKeyword.value)
19265
+ return item.text;
19266
+ const result = searchResults.value.find((result2) => result2.item.id === item.id);
19267
+ if (!result || !props2.showSearchParentPath || !result.parentPath.length) {
19268
+ return renderHighlightedTitle(item.text);
19269
+ }
19270
+ return vue.createVNode(vue.Fragment, null, [result.parentPath.join("/"), vue.createVNode("span", {
19271
+ "class": bem$4("path-separator")
19272
+ }, [vue.createTextVNode("/")]), renderHighlightedTitle(item.text)]);
19273
+ }
19224
19274
  })]);
19225
19275
  };
19226
19276
  return () => vue.createVNode(ActionSheet, {
@@ -21790,7 +21840,7 @@ const Lazyload = {
21790
21840
  });
21791
21841
  }
21792
21842
  };
21793
- const version = "0.0.46";
21843
+ const version = "0.0.47";
21794
21844
  function install(app) {
21795
21845
  const components = [
21796
21846
  ActionBar,
package/lib/vant.es.js CHANGED
@@ -3176,6 +3176,7 @@ const cellSharedProps = {
3176
3176
  showTitleCollapseIcon: Boolean,
3177
3177
  defaultMultiLineNotesCollapsed: Boolean,
3178
3178
  threeLine: Boolean,
3179
+ threeLineEllipsis: Boolean,
3179
3180
  labelSize: numericProp,
3180
3181
  avatar: String,
3181
3182
  showAvatar: {
@@ -3278,13 +3279,39 @@ const cellProps = extend({}, cellSharedProps, routeProps);
3278
3279
  var stdin_default$1M = defineComponent({
3279
3280
  name: name$1D,
3280
3281
  props: cellProps,
3281
- emits: ["click", "click-label", "click-description", "click-note", "click-title-icon", "update:leftSelect", "update:rightSelect", "update:multiLineNotesCollapsed"],
3282
+ emits: ["click", "click-label", "click-description", "click-note", "click-title-icon", "long-press", "update:leftSelect", "update:rightSelect", "update:multiLineNotesCollapsed"],
3282
3283
  setup(props2, {
3283
3284
  slots,
3284
3285
  emit
3285
3286
  }) {
3286
3287
  var _a, _b;
3288
+ let longPressTimer;
3287
3289
  const config = inject(CONFIG_PROVIDER_KEY, null);
3290
+ const clearLongPress = () => {
3291
+ if (longPressTimer !== void 0) {
3292
+ clearTimeout(longPressTimer);
3293
+ longPressTimer = void 0;
3294
+ }
3295
+ };
3296
+ const startLongPress = (target, text) => {
3297
+ if (!props2.threeLine || !props2.threeLineEllipsis || !isDef(text))
3298
+ return;
3299
+ clearLongPress();
3300
+ longPressTimer = setTimeout(() => {
3301
+ longPressTimer = void 0;
3302
+ const payload = {
3303
+ target,
3304
+ text: String(text)
3305
+ };
3306
+ emit("long-press", payload);
3307
+ }, 500);
3308
+ };
3309
+ const longPressEvents = (target, text) => ({
3310
+ onPointerdown: () => startLongPress(target, text),
3311
+ onPointerup: clearLongPress,
3312
+ onPointercancel: clearLongPress,
3313
+ onPointerleave: clearLongPress
3314
+ });
3288
3315
  const route2 = useRoute();
3289
3316
  const vm = getCurrentInstance().proxy;
3290
3317
  const leftSelectState = ref((_a = props2.leftSelect) != null ? _a : false);
@@ -3331,7 +3358,7 @@ var stdin_default$1M = defineComponent({
3331
3358
  const showLabel = slots.label || isDef(props2.label);
3332
3359
  const showLabelIcon = (_a2 = props2.showLabelIcon) != null ? _a2 : !!(slots["label-icon"] || props2.labelIcon);
3333
3360
  if (showLabel) {
3334
- return createVNode("div", {
3361
+ return createVNode("div", mergeProps({
3335
3362
  "class": [bem$1z("label", {
3336
3363
  clickable: props2.labelClickable
3337
3364
  }), props2.labelClass],
@@ -3346,19 +3373,21 @@ var stdin_default$1M = defineComponent({
3346
3373
  event.stopPropagation();
3347
3374
  emit("click-label", event);
3348
3375
  }
3349
- }, [showLabelIcon && slots["label-icon"] ? createVNode("span", {
3376
+ }, longPressEvents("label", props2.label)), [showLabelIcon && slots["label-icon"] ? createVNode("span", {
3350
3377
  "class": bem$1z("label-icon")
3351
3378
  }, [slots["label-icon"]()]) : showLabelIcon ? createVNode(Icon, {
3352
3379
  "name": props2.labelIcon || "location-o",
3353
3380
  "class": bem$1z("label-icon"),
3354
3381
  "classPrefix": props2.iconPrefix
3355
- }, null) : null, createVNode("span", null, [slots.label ? slots.label() : props2.label])]);
3382
+ }, null) : null, createVNode("span", {
3383
+ "class": bem$1z("label-content")
3384
+ }, [slots.label ? slots.label() : props2.label])]);
3356
3385
  }
3357
3386
  };
3358
3387
  const renderDescription = () => {
3359
3388
  const showDescription = slots.description || isDef(props2.description);
3360
3389
  if (showDescription) {
3361
- return createVNode("div", {
3390
+ return createVNode("div", mergeProps({
3362
3391
  "class": bem$1z("description", {
3363
3392
  clickable: props2.descriptionClickable
3364
3393
  }),
@@ -3370,7 +3399,7 @@ var stdin_default$1M = defineComponent({
3370
3399
  event.stopPropagation();
3371
3400
  emit("click-description", event);
3372
3401
  }
3373
- }, [slots.description ? slots.description() : props2.description]);
3402
+ }, longPressEvents("description", props2.description)), [slots.description ? slots.description() : props2.description]);
3374
3403
  }
3375
3404
  };
3376
3405
  const renderMultiLineNotes = () => {
@@ -3415,7 +3444,9 @@ var stdin_default$1M = defineComponent({
3415
3444
  "class": bem$1z("title-collapse-icon", {
3416
3445
  collapsed: multiLineNotesCollapsed.value
3417
3446
  })
3418
- }, null)]), slots.title ? slots.title() : createVNode("span", null, [props2.title]), renderTitleTag(), renderTags(), renderTitleIcon()]), renderWrapTags(), renderLabel(), props2.threeLine && renderDescription(), !multiLineNotesCollapsed.value && renderMultiLineNotes()]);
3447
+ }, null)]), createVNode("span", mergeProps({
3448
+ "class": bem$1z("title-content")
3449
+ }, longPressEvents("title", props2.title)), [slots.title ? slots.title() : props2.title]), renderTitleTag(), renderTags(), renderTitleIcon()]), renderWrapTags(), renderLabel(), props2.threeLine && renderDescription(), !multiLineNotesCollapsed.value && renderMultiLineNotes()]);
3419
3450
  }
3420
3451
  };
3421
3452
  const renderValue = () => {
@@ -3427,7 +3458,7 @@ var stdin_default$1M = defineComponent({
3427
3458
  "class": [bem$1z("value", {
3428
3459
  alone: !hasTitle
3429
3460
  }), props2.valueClass]
3430
- }, [slot ? slot() : createVNode("span", null, [props2.value])]);
3461
+ }, [slot ? slot() : createVNode("span", longPressEvents("value", props2.value), [props2.value])]);
3431
3462
  }
3432
3463
  };
3433
3464
  const renderLeftIcon = () => {
@@ -3700,6 +3731,7 @@ var stdin_default$1M = defineComponent({
3700
3731
  clickable,
3701
3732
  borderless: !border,
3702
3733
  "three-line": threeLine,
3734
+ "three-line-ellipsis": threeLine && props2.threeLineEllipsis,
3703
3735
  "multi-line-notes": hasMultiLineNotes
3704
3736
  };
3705
3737
  if (cellSize) {
@@ -19134,6 +19166,7 @@ const treeSelectPanelProps = {
19134
19166
  showSelectLevels: Array,
19135
19167
  searchable: truthProp,
19136
19168
  searchPlaceholder: String,
19169
+ showSearchParentPath: truthProp,
19137
19170
  lazy: Boolean,
19138
19171
  loading: Boolean,
19139
19172
  finished: Boolean,
@@ -19146,11 +19179,15 @@ const treeSelectPanelProps = {
19146
19179
  clearSelectedText: makeStringProp("清空已选"),
19147
19180
  confirmText: makeStringProp("确定")
19148
19181
  };
19149
- const findMatchingLeaves = (items, keyword) => items.flatMap((item) => {
19182
+ const findMatchingLeaves = (items, keyword, parentPath = []) => items.flatMap((item) => {
19150
19183
  var _a;
19151
- if ((_a = item.children) == null ? void 0 : _a.length)
19152
- return findMatchingLeaves(item.children, keyword);
19153
- return item.text.toLocaleLowerCase().includes(keyword) ? [item] : [];
19184
+ if ((_a = item.children) == null ? void 0 : _a.length) {
19185
+ return findMatchingLeaves(item.children, keyword, [...parentPath, item.text]);
19186
+ }
19187
+ return item.text.toLocaleLowerCase().includes(keyword) ? [{
19188
+ item,
19189
+ parentPath
19190
+ }] : [];
19154
19191
  });
19155
19192
  const flattenItems = (items) => items.flatMap((item) => [item, ...item.children ? flattenItems(item.children) : []]);
19156
19193
  var stdin_default$9 = defineComponent({
@@ -19163,7 +19200,10 @@ var stdin_default$9 = defineComponent({
19163
19200
  const keyword = ref("");
19164
19201
  const expandedSelected = ref(false);
19165
19202
  const normalizedKeyword = computed(() => keyword.value.trim().toLocaleLowerCase());
19166
- const filteredItems = computed(() => normalizedKeyword.value ? findMatchingLeaves(props2.items, normalizedKeyword.value) : props2.items);
19203
+ const searchResults = computed(() => normalizedKeyword.value ? findMatchingLeaves(props2.items, normalizedKeyword.value) : []);
19204
+ const filteredItems = computed(() => normalizedKeyword.value ? searchResults.value.map(({
19205
+ item
19206
+ }) => item) : props2.items);
19167
19207
  const selectedItems = computed(() => flattenItems(props2.items).filter((item) => props2.modelValue.includes(item.id)));
19168
19208
  const close = () => emit("update:show", false);
19169
19209
  const updateSelected = (value) => {
@@ -19218,7 +19258,17 @@ var stdin_default$9 = defineComponent({
19218
19258
  title: ({
19219
19259
  item,
19220
19260
  hasChildren
19221
- }) => hasChildren ? item.text : renderHighlightedTitle(item.text)
19261
+ }) => {
19262
+ if (hasChildren || !normalizedKeyword.value)
19263
+ return item.text;
19264
+ const result = searchResults.value.find((result2) => result2.item.id === item.id);
19265
+ if (!result || !props2.showSearchParentPath || !result.parentPath.length) {
19266
+ return renderHighlightedTitle(item.text);
19267
+ }
19268
+ return createVNode(Fragment, null, [result.parentPath.join("/"), createVNode("span", {
19269
+ "class": bem$4("path-separator")
19270
+ }, [createTextVNode("/")]), renderHighlightedTitle(item.text)]);
19271
+ }
19222
19272
  })]);
19223
19273
  };
19224
19274
  return () => createVNode(ActionSheet, {
@@ -21788,7 +21838,7 @@ const Lazyload = {
21788
21838
  });
21789
21839
  }
21790
21840
  };
21791
- const version = "0.0.46";
21841
+ const version = "0.0.47";
21792
21842
  function install(app) {
21793
21843
  const components = [
21794
21844
  ActionBar,