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/vant.js CHANGED
@@ -4419,6 +4419,7 @@
4419
4419
  showTitleCollapseIcon: Boolean,
4420
4420
  defaultMultiLineNotesCollapsed: Boolean,
4421
4421
  threeLine: Boolean,
4422
+ threeLineEllipsis: Boolean,
4422
4423
  labelSize: numericProp,
4423
4424
  avatar: String,
4424
4425
  showAvatar: {
@@ -4521,13 +4522,39 @@
4521
4522
  var stdin_default$1M = vue.defineComponent({
4522
4523
  name: name$1D,
4523
4524
  props: cellProps,
4524
- emits: ["click", "click-label", "click-description", "click-note", "click-title-icon", "update:leftSelect", "update:rightSelect", "update:multiLineNotesCollapsed"],
4525
+ emits: ["click", "click-label", "click-description", "click-note", "click-title-icon", "long-press", "update:leftSelect", "update:rightSelect", "update:multiLineNotesCollapsed"],
4525
4526
  setup(props2, {
4526
4527
  slots,
4527
4528
  emit
4528
4529
  }) {
4529
4530
  var _a, _b;
4531
+ let longPressTimer;
4530
4532
  const config = vue.inject(CONFIG_PROVIDER_KEY, null);
4533
+ const clearLongPress = () => {
4534
+ if (longPressTimer !== void 0) {
4535
+ clearTimeout(longPressTimer);
4536
+ longPressTimer = void 0;
4537
+ }
4538
+ };
4539
+ const startLongPress = (target, text) => {
4540
+ if (!props2.threeLine || !props2.threeLineEllipsis || !isDef(text))
4541
+ return;
4542
+ clearLongPress();
4543
+ longPressTimer = setTimeout(() => {
4544
+ longPressTimer = void 0;
4545
+ const payload = {
4546
+ target,
4547
+ text: String(text)
4548
+ };
4549
+ emit("long-press", payload);
4550
+ }, 500);
4551
+ };
4552
+ const longPressEvents = (target, text) => ({
4553
+ onPointerdown: () => startLongPress(target, text),
4554
+ onPointerup: clearLongPress,
4555
+ onPointercancel: clearLongPress,
4556
+ onPointerleave: clearLongPress
4557
+ });
4531
4558
  const route2 = useRoute();
4532
4559
  const vm = vue.getCurrentInstance().proxy;
4533
4560
  const leftSelectState = vue.ref((_a = props2.leftSelect) != null ? _a : false);
@@ -4574,7 +4601,7 @@
4574
4601
  const showLabel = slots.label || isDef(props2.label);
4575
4602
  const showLabelIcon = (_a2 = props2.showLabelIcon) != null ? _a2 : !!(slots["label-icon"] || props2.labelIcon);
4576
4603
  if (showLabel) {
4577
- return vue.createVNode("div", {
4604
+ return vue.createVNode("div", vue.mergeProps({
4578
4605
  "class": [bem$1z("label", {
4579
4606
  clickable: props2.labelClickable
4580
4607
  }), props2.labelClass],
@@ -4589,19 +4616,21 @@
4589
4616
  event.stopPropagation();
4590
4617
  emit("click-label", event);
4591
4618
  }
4592
- }, [showLabelIcon && slots["label-icon"] ? vue.createVNode("span", {
4619
+ }, longPressEvents("label", props2.label)), [showLabelIcon && slots["label-icon"] ? vue.createVNode("span", {
4593
4620
  "class": bem$1z("label-icon")
4594
4621
  }, [slots["label-icon"]()]) : showLabelIcon ? vue.createVNode(Icon, {
4595
4622
  "name": props2.labelIcon || "location-o",
4596
4623
  "class": bem$1z("label-icon"),
4597
4624
  "classPrefix": props2.iconPrefix
4598
- }, null) : null, vue.createVNode("span", null, [slots.label ? slots.label() : props2.label])]);
4625
+ }, null) : null, vue.createVNode("span", {
4626
+ "class": bem$1z("label-content")
4627
+ }, [slots.label ? slots.label() : props2.label])]);
4599
4628
  }
4600
4629
  };
4601
4630
  const renderDescription = () => {
4602
4631
  const showDescription = slots.description || isDef(props2.description);
4603
4632
  if (showDescription) {
4604
- return vue.createVNode("div", {
4633
+ return vue.createVNode("div", vue.mergeProps({
4605
4634
  "class": bem$1z("description", {
4606
4635
  clickable: props2.descriptionClickable
4607
4636
  }),
@@ -4613,7 +4642,7 @@
4613
4642
  event.stopPropagation();
4614
4643
  emit("click-description", event);
4615
4644
  }
4616
- }, [slots.description ? slots.description() : props2.description]);
4645
+ }, longPressEvents("description", props2.description)), [slots.description ? slots.description() : props2.description]);
4617
4646
  }
4618
4647
  };
4619
4648
  const renderMultiLineNotes = () => {
@@ -4658,7 +4687,9 @@
4658
4687
  "class": bem$1z("title-collapse-icon", {
4659
4688
  collapsed: multiLineNotesCollapsed.value
4660
4689
  })
4661
- }, null)]), slots.title ? slots.title() : vue.createVNode("span", null, [props2.title]), renderTitleTag(), renderTags(), renderTitleIcon()]), renderWrapTags(), renderLabel(), props2.threeLine && renderDescription(), !multiLineNotesCollapsed.value && renderMultiLineNotes()]);
4690
+ }, null)]), vue.createVNode("span", vue.mergeProps({
4691
+ "class": bem$1z("title-content")
4692
+ }, longPressEvents("title", props2.title)), [slots.title ? slots.title() : props2.title]), renderTitleTag(), renderTags(), renderTitleIcon()]), renderWrapTags(), renderLabel(), props2.threeLine && renderDescription(), !multiLineNotesCollapsed.value && renderMultiLineNotes()]);
4662
4693
  }
4663
4694
  };
4664
4695
  const renderValue = () => {
@@ -4670,7 +4701,7 @@
4670
4701
  "class": [bem$1z("value", {
4671
4702
  alone: !hasTitle
4672
4703
  }), props2.valueClass]
4673
- }, [slot ? slot() : vue.createVNode("span", null, [props2.value])]);
4704
+ }, [slot ? slot() : vue.createVNode("span", longPressEvents("value", props2.value), [props2.value])]);
4674
4705
  }
4675
4706
  };
4676
4707
  const renderLeftIcon = () => {
@@ -4943,6 +4974,7 @@
4943
4974
  clickable,
4944
4975
  borderless: !border,
4945
4976
  "three-line": threeLine,
4977
+ "three-line-ellipsis": threeLine && props2.threeLineEllipsis,
4946
4978
  "multi-line-notes": hasMultiLineNotes
4947
4979
  };
4948
4980
  if (cellSize) {
@@ -20323,6 +20355,7 @@
20323
20355
  showSelectLevels: Array,
20324
20356
  searchable: truthProp,
20325
20357
  searchPlaceholder: String,
20358
+ showSearchParentPath: truthProp,
20326
20359
  lazy: Boolean,
20327
20360
  loading: Boolean,
20328
20361
  finished: Boolean,
@@ -20335,11 +20368,15 @@
20335
20368
  clearSelectedText: makeStringProp("清空已选"),
20336
20369
  confirmText: makeStringProp("确定")
20337
20370
  };
20338
- const findMatchingLeaves = (items, keyword) => items.flatMap((item) => {
20371
+ const findMatchingLeaves = (items, keyword, parentPath = []) => items.flatMap((item) => {
20339
20372
  var _a;
20340
- if ((_a = item.children) == null ? void 0 : _a.length)
20341
- return findMatchingLeaves(item.children, keyword);
20342
- return item.text.toLocaleLowerCase().includes(keyword) ? [item] : [];
20373
+ if ((_a = item.children) == null ? void 0 : _a.length) {
20374
+ return findMatchingLeaves(item.children, keyword, [...parentPath, item.text]);
20375
+ }
20376
+ return item.text.toLocaleLowerCase().includes(keyword) ? [{
20377
+ item,
20378
+ parentPath
20379
+ }] : [];
20343
20380
  });
20344
20381
  const flattenItems = (items) => items.flatMap((item) => [item, ...item.children ? flattenItems(item.children) : []]);
20345
20382
  var stdin_default$9 = vue.defineComponent({
@@ -20352,7 +20389,10 @@
20352
20389
  const keyword = vue.ref("");
20353
20390
  const expandedSelected = vue.ref(false);
20354
20391
  const normalizedKeyword = vue.computed(() => keyword.value.trim().toLocaleLowerCase());
20355
- const filteredItems = vue.computed(() => normalizedKeyword.value ? findMatchingLeaves(props2.items, normalizedKeyword.value) : props2.items);
20392
+ const searchResults = vue.computed(() => normalizedKeyword.value ? findMatchingLeaves(props2.items, normalizedKeyword.value) : []);
20393
+ const filteredItems = vue.computed(() => normalizedKeyword.value ? searchResults.value.map(({
20394
+ item
20395
+ }) => item) : props2.items);
20356
20396
  const selectedItems = vue.computed(() => flattenItems(props2.items).filter((item) => props2.modelValue.includes(item.id)));
20357
20397
  const close = () => emit("update:show", false);
20358
20398
  const updateSelected = (value) => {
@@ -20407,7 +20447,17 @@
20407
20447
  title: ({
20408
20448
  item,
20409
20449
  hasChildren
20410
- }) => hasChildren ? item.text : renderHighlightedTitle(item.text)
20450
+ }) => {
20451
+ if (hasChildren || !normalizedKeyword.value)
20452
+ return item.text;
20453
+ const result = searchResults.value.find((result2) => result2.item.id === item.id);
20454
+ if (!result || !props2.showSearchParentPath || !result.parentPath.length) {
20455
+ return renderHighlightedTitle(item.text);
20456
+ }
20457
+ return vue.createVNode(vue.Fragment, null, [result.parentPath.join("/"), vue.createVNode("span", {
20458
+ "class": bem$4("path-separator")
20459
+ }, [vue.createTextVNode("/")]), renderHighlightedTitle(item.text)]);
20460
+ }
20411
20461
  })]);
20412
20462
  };
20413
20463
  return () => vue.createVNode(ActionSheet, {
@@ -25377,7 +25427,7 @@
25377
25427
  });
25378
25428
  }
25379
25429
  };
25380
- const version = "0.0.46";
25430
+ const version = "0.0.47";
25381
25431
  function install(app) {
25382
25432
  const components = [
25383
25433
  ActionBar,