persagy-vant 0.0.45 → 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 (67) hide show
  1. package/es/blue-mark/BlueMarkHeader.d.ts +3 -12
  2. package/es/blue-mark/BlueMarkHeader.mjs +2 -2
  3. package/es/blue-mark/index.d.ts +2 -8
  4. package/es/cell/Cell.d.ts +12 -1
  5. package/es/cell/Cell.mjs +41 -9
  6. package/es/cell/index.css +1 -1
  7. package/es/cell/index.d.ts +5 -1
  8. package/es/cell/index.less +34 -0
  9. package/es/collapse-item/CollapseItem.d.ts +4 -0
  10. package/es/collapse-item/index.d.ts +3 -0
  11. package/es/field/Field.d.ts +4 -0
  12. package/es/field/index.d.ts +3 -0
  13. package/es/index.d.ts +1 -1
  14. package/es/index.mjs +1 -1
  15. package/es/label/Label.d.ts +2 -2
  16. package/es/label/index.d.ts +2 -2
  17. package/es/object-select/ObjectSelect.mjs +2 -1
  18. package/es/tree-select-panel/TreeSelectPanel.d.ts +13 -0
  19. package/es/tree-select-panel/TreeSelectPanel.mjs +25 -7
  20. package/es/tree-select-panel/index.css +1 -1
  21. package/es/tree-select-panel/index.d.ts +9 -0
  22. package/es/tree-select-panel/index.less +2 -0
  23. package/es/video-preview/VideoPreview.mjs +30 -15
  24. package/es/video-preview/index.css +1 -1
  25. package/es/video-preview/index.less +21 -0
  26. package/lib/blue-mark/BlueMarkHeader.d.ts +3 -12
  27. package/lib/blue-mark/BlueMarkHeader.js +1 -1
  28. package/lib/blue-mark/index.d.ts +2 -8
  29. package/lib/cell/Cell.d.ts +12 -1
  30. package/lib/cell/Cell.js +40 -8
  31. package/lib/cell/index.css +1 -1
  32. package/lib/cell/index.d.ts +5 -1
  33. package/lib/cell/index.less +34 -0
  34. package/lib/collapse-item/CollapseItem.d.ts +4 -0
  35. package/lib/collapse-item/index.d.ts +3 -0
  36. package/lib/field/Field.d.ts +4 -0
  37. package/lib/field/index.d.ts +3 -0
  38. package/lib/index.css +1 -1
  39. package/lib/index.d.ts +1 -1
  40. package/lib/index.js +1 -1
  41. package/lib/label/Label.d.ts +2 -2
  42. package/lib/label/index.d.ts +2 -2
  43. package/lib/object-select/ObjectSelect.js +2 -1
  44. package/lib/tree-select-panel/TreeSelectPanel.d.ts +13 -0
  45. package/lib/tree-select-panel/TreeSelectPanel.js +24 -6
  46. package/lib/tree-select-panel/index.css +1 -1
  47. package/lib/tree-select-panel/index.d.ts +9 -0
  48. package/lib/tree-select-panel/index.less +2 -0
  49. package/lib/vant.cjs.js +98 -32
  50. package/lib/vant.es.js +98 -32
  51. package/lib/vant.js +98 -32
  52. package/lib/vant.min.js +1 -1
  53. package/lib/video-preview/VideoPreview.js +30 -15
  54. package/lib/video-preview/index.css +1 -1
  55. package/lib/video-preview/index.less +21 -0
  56. package/lib/web-types.json +1 -1
  57. package/package.json +1 -1
  58. package/skills/use-persagy-vant/SKILL.md +6 -0
  59. package/skills/use-persagy-vant/references/business-component-catalog.md +3 -0
  60. package/skills/use-persagy-vant/references/component-catalog.md +4 -3
  61. package/skills/use-persagy-vant/references/component-variant-selection.md +9 -4
  62. package/skills/use-persagy-vant/references/design-interaction-baseline.md +1 -1
  63. package/skills/use-persagy-vant/references/dynamic-panel-policy.md +46 -0
  64. package/skills/use-persagy-vant/references/element-component-matching.md +3 -1
  65. package/skills/use-persagy-vant/references/page-recipes.md +3 -3
  66. package/skills/use-persagy-vant/references/reuse-policy.md +5 -1
  67. package/skills/use-persagy-vant/references/usage-patterns.md +2 -2
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.45";
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.45";
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;
@@ -683,7 +683,8 @@ var stdin_default = (0, import_vue.defineComponent)({
683
683
  "showAction": true
684
684
  }, null) : (0, import_vue.createVNode)(import_vue.Fragment, null, [(0, import_vue.createVNode)(import_nav_bar.NavBar, {
685
685
  "title": props.title,
686
- "class": bem("nav")
686
+ "class": bem("nav"),
687
+ "border": false
687
688
  }, {
688
689
  left: () => (0, import_vue.createVNode)(import_icon.Icon, {
689
690
  "name": "cross",
@@ -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) {
@@ -5551,7 +5583,7 @@ const blueMarkHeaderProps = {
5551
5583
  required: Boolean,
5552
5584
  actionText: String,
5553
5585
  expandable: Boolean,
5554
- showExpandIcon: truthProp,
5586
+ showExpandIcon: Boolean,
5555
5587
  modelValue: Boolean,
5556
5588
  expandText: String,
5557
5589
  collapseText: String
@@ -16705,7 +16737,8 @@ var stdin_default$t = vue.defineComponent({
16705
16737
  "showAction": true
16706
16738
  }, null) : vue.createVNode(vue.Fragment, null, [vue.createVNode(NavBar, {
16707
16739
  "title": props2.title,
16708
- "class": bem$o("nav")
16740
+ "class": bem$o("nav"),
16741
+ "border": false
16709
16742
  }, {
16710
16743
  left: () => vue.createVNode(Icon, {
16711
16744
  "name": "cross",
@@ -19135,6 +19168,7 @@ const treeSelectPanelProps = {
19135
19168
  showSelectLevels: Array,
19136
19169
  searchable: truthProp,
19137
19170
  searchPlaceholder: String,
19171
+ showSearchParentPath: truthProp,
19138
19172
  lazy: Boolean,
19139
19173
  loading: Boolean,
19140
19174
  finished: Boolean,
@@ -19147,11 +19181,15 @@ const treeSelectPanelProps = {
19147
19181
  clearSelectedText: makeStringProp("清空已选"),
19148
19182
  confirmText: makeStringProp("确定")
19149
19183
  };
19150
- const findMatchingLeaves = (items, keyword) => items.flatMap((item) => {
19184
+ const findMatchingLeaves = (items, keyword, parentPath = []) => items.flatMap((item) => {
19151
19185
  var _a;
19152
- if ((_a = item.children) == null ? void 0 : _a.length)
19153
- return findMatchingLeaves(item.children, keyword);
19154
- 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
+ }] : [];
19155
19193
  });
19156
19194
  const flattenItems = (items) => items.flatMap((item) => [item, ...item.children ? flattenItems(item.children) : []]);
19157
19195
  var stdin_default$9 = vue.defineComponent({
@@ -19164,7 +19202,10 @@ var stdin_default$9 = vue.defineComponent({
19164
19202
  const keyword = vue.ref("");
19165
19203
  const expandedSelected = vue.ref(false);
19166
19204
  const normalizedKeyword = vue.computed(() => keyword.value.trim().toLocaleLowerCase());
19167
- 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);
19168
19209
  const selectedItems = vue.computed(() => flattenItems(props2.items).filter((item) => props2.modelValue.includes(item.id)));
19169
19210
  const close = () => emit("update:show", false);
19170
19211
  const updateSelected = (value) => {
@@ -19219,7 +19260,17 @@ var stdin_default$9 = vue.defineComponent({
19219
19260
  title: ({
19220
19261
  item,
19221
19262
  hasChildren
19222
- }) => 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
+ }
19223
19274
  })]);
19224
19275
  };
19225
19276
  return () => vue.createVNode(ActionSheet, {
@@ -19949,24 +20000,37 @@ var stdin_default$6 = vue.defineComponent({
19949
20000
  setup(props2, {
19950
20001
  emit
19951
20002
  }) {
19952
- const videoRef = vue.ref();
20003
+ const playerHost = vue.ref();
20004
+ let video;
19953
20005
  const mediaEvents = ["play", "pause", "ended", "timeupdate", "error"];
19954
20006
  let player;
19955
20007
  const updateShow = (show) => emit("update:show", show);
19956
20008
  const close = () => updateShow(false);
19957
20009
  const emitMediaEvent = (event) => emit(event.type, event);
19958
20010
  const destroyPlayer = () => {
19959
- const video = videoRef.value;
20011
+ var _a;
19960
20012
  if (video) {
19961
- mediaEvents.forEach((event) => video.removeEventListener(event, emitMediaEvent));
20013
+ mediaEvents.forEach((event) => video == null ? void 0 : video.removeEventListener(event, emitMediaEvent));
19962
20014
  }
19963
20015
  player == null ? void 0 : player.destroy();
19964
20016
  player = void 0;
20017
+ video = void 0;
20018
+ (_a = playerHost.value) == null ? void 0 : _a.replaceChildren();
19965
20019
  };
19966
20020
  const createPlayer = () => {
19967
- const video = videoRef.value;
19968
- if (!video || player)
20021
+ const host = playerHost.value;
20022
+ if (!host || player || !props2.show)
19969
20023
  return;
20024
+ video = document.createElement("video");
20025
+ video.className = `${name$2}__video ${name$2}__video--${props2.fit}`;
20026
+ video.src = props2.src;
20027
+ if (props2.poster)
20028
+ video.poster = props2.poster;
20029
+ video.autoplay = props2.autoplay;
20030
+ video.muted = props2.muted;
20031
+ video.loop = props2.loop;
20032
+ video.playsInline = true;
20033
+ host.replaceChildren(video);
19970
20034
  player = new Plyr(video, {
19971
20035
  controls: props2.controls ? ["play", "progress", "current-time", "mute", "volume", "settings", "fullscreen"] : [],
19972
20036
  settings: ["speed"],
@@ -19980,7 +20044,7 @@ var stdin_default$6 = vue.defineComponent({
19980
20044
  active: props2.loop
19981
20045
  }
19982
20046
  });
19983
- mediaEvents.forEach((event) => video.addEventListener(event, emitMediaEvent));
20047
+ mediaEvents.forEach((event) => video == null ? void 0 : video.addEventListener(event, emitMediaEvent));
19984
20048
  };
19985
20049
  const play = () => player == null ? void 0 : player.play();
19986
20050
  const pause = () => player == null ? void 0 : player.pause();
@@ -19991,6 +20055,12 @@ var stdin_default$6 = vue.defineComponent({
19991
20055
  close,
19992
20056
  toggleFullscreen
19993
20057
  });
20058
+ vue.watch(playerHost, () => {
20059
+ destroyPlayer();
20060
+ createPlayer();
20061
+ }, {
20062
+ flush: "post"
20063
+ });
19994
20064
  vue.watch(() => props2.show, (show) => __async(this, null, function* () {
19995
20065
  if (show) {
19996
20066
  yield vue.nextTick();
@@ -20024,15 +20094,11 @@ var stdin_default$6 = vue.defineComponent({
20024
20094
  default: () => [vue.createVNode("div", {
20025
20095
  "class": bem$2("backdrop"),
20026
20096
  "onClick": close
20027
- }, null), vue.createVNode("video", {
20028
- "ref": videoRef,
20029
- "class": bem$2("video", props2.fit),
20030
- "src": props2.src,
20031
- "poster": props2.poster,
20032
- "autoplay": props2.autoplay,
20033
- "muted": props2.muted,
20034
- "loop": props2.loop,
20035
- "playsinline": true
20097
+ }, null), vue.createVNode("div", {
20098
+ "ref": playerHost,
20099
+ "style": {
20100
+ width: "100%"
20101
+ }
20036
20102
  }, null)]
20037
20103
  });
20038
20104
  }
@@ -21774,7 +21840,7 @@ const Lazyload = {
21774
21840
  });
21775
21841
  }
21776
21842
  };
21777
- const version = "0.0.45";
21843
+ const version = "0.0.47";
21778
21844
  function install(app) {
21779
21845
  const components = [
21780
21846
  ActionBar,