sard 1.0.4 → 1.0.6

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 (76) hide show
  1. package/components/action-sheet/action-sheet-item.js +6 -4
  2. package/components/avatar/index.css +1 -1
  3. package/components/badge/index.css +1 -1
  4. package/components/button/index.css +1 -1
  5. package/components/cascader/cascader.js +2 -2
  6. package/components/cascader/common.d.ts +1 -1
  7. package/components/cascader/common.js +4 -4
  8. package/components/cascader/useCascaderTree.d.ts +1 -1
  9. package/components/cascader/useCascaderTree.js +1 -1
  10. package/components/cascader-input/cascader-input.js +3 -3
  11. package/components/compact/compact.js +1 -1
  12. package/components/cool-icon/cool-icon.js +1 -1
  13. package/components/descriptions/descriptions-item.js +1 -1
  14. package/components/divider/divider.js +1 -1
  15. package/components/divider/index.css +1 -1
  16. package/components/dnd/dnd-handle.js +1 -1
  17. package/components/dnd/dnd-item.js +1 -1
  18. package/components/fab/fab-item.js +1 -1
  19. package/components/form/form-item.js +1 -1
  20. package/components/form/form.js +1 -1
  21. package/components/image/image.js +1 -1
  22. package/components/infinite-list/index.css +1 -1
  23. package/components/infinite-list/infinite-list.js +3 -3
  24. package/components/input/input.js +13 -13
  25. package/components/keyboard/keyboard.js +3 -3
  26. package/components/load-more/useLoadMore.d.ts +1 -1
  27. package/components/load-more/useLoadMore.js +2 -2
  28. package/components/loading/index.css +1 -1
  29. package/components/loading/loading.js +2 -2
  30. package/components/notify/notify.js +6 -6
  31. package/components/picker/common.d.ts +4 -4
  32. package/components/picker/common.js +12 -12
  33. package/components/picker/picker.js +22 -47
  34. package/components/picker-input/picker-input.js +3 -3
  35. package/components/picker-popout/picker-popout.js +2 -2
  36. package/components/picker-view/common.d.ts +0 -1
  37. package/components/picker-view/picker-view-column.js +38 -36
  38. package/components/picker-view/picker-view.js +3 -13
  39. package/components/preview-image/preview-image.js +1 -1
  40. package/components/pull-down-refresh/pull-down-refresh.js +1 -1
  41. package/components/puzzle-verify/puzzle-verify.js +1 -1
  42. package/components/rate/index.css +1 -1
  43. package/components/read-more/read-more.js +1 -1
  44. package/components/rotate-verify/rotate-verify.js +1 -1
  45. package/components/segmented/segmented-item.js +1 -1
  46. package/components/segmented/segmented.js +1 -1
  47. package/components/select/common.d.ts +2 -0
  48. package/components/select/select-option.js +1 -1
  49. package/components/select/select.d.ts +3 -0
  50. package/components/select/select.js +11 -2
  51. package/components/select-input/select-input.d.ts +1 -0
  52. package/components/select-input/select-input.js +4 -0
  53. package/components/select-popout/select-popout.d.ts +1 -0
  54. package/components/select-popout/select-popout.js +4 -0
  55. package/components/share-sheet/index.css +1 -1
  56. package/components/slide-verify/slide-verify.js +1 -1
  57. package/components/status-bar/common.d.ts +0 -1
  58. package/components/status-bar/status-bar.d.ts +1 -3
  59. package/components/status-bar/status-bar.js +3 -9
  60. package/components/steps/step.js +1 -1
  61. package/components/style/index.css +1 -1
  62. package/components/swipe-action/swipe-action.js +1 -3
  63. package/components/tabbar-pit/tabbar-pit.js +1 -1
  64. package/components/toast/toast.js +6 -6
  65. package/components/tree/tree.js +3 -3
  66. package/components/upload/upload.js +1 -1
  67. package/components/waterfall/waterfall-item.js +1 -1
  68. package/components/waterfall/waterfall-load.js +1 -1
  69. package/components/waterfall/waterfall.js +4 -4
  70. package/components/watermark/watermark.js +1 -1
  71. package/index.css +1 -1
  72. package/package.json +1 -1
  73. package/use/useResizeObserver.js +3 -3
  74. package/utils/scroller/Scroll.js +2 -2
  75. package/utils/scroller/useScroller.d.ts +4 -20
  76. package/utils/scroller/useScroller.js +24 -84
@@ -1,13 +1,11 @@
1
1
  import { createBem } from "../../utils/bem.js";
2
- import { isEmptyArray } from "../../utils/is.js";
3
- import { isEmptyBinding } from "../../utils/utils.js";
4
2
  import { nestedToMulti } from "../../utils/object.js";
5
3
  import { arrayEqual, toArray } from "../../utils/array.js";
6
4
  import { useOptionKeys } from "../../use/useOptionKeys.js";
7
5
  import { defaultPickerProps, getCascaderValidIndexes, getColumnsType, getIndexesByValue, getMaySingleValueByOptions, getOptionsByIndexes } from "./common.js";
8
6
  import picker_view_default from "../picker-view/picker-view.js";
9
7
  import picker_view_column_default from "../picker-view/picker-view-column.js";
10
- import { Fragment, computed, createBlock, createElementBlock, createTextVNode, createVNode, defineComponent, mergeDefaults, nextTick, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useSlots, watch, withCtx } from "vue";
8
+ import { Fragment, computed, createBlock, createElementBlock, createTextVNode, createVNode, defineComponent, mergeDefaults, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useSlots, watch, withCtx } from "vue";
11
9
  //#region packages/sard/components/picker/picker.vue
12
10
  var picker_default = /*@__PURE__*/ defineComponent({
13
11
  __name: "picker",
@@ -31,37 +29,34 @@ var picker_default = /*@__PURE__*/ defineComponent({
31
29
  useSlots();
32
30
  const emit = __emit;
33
31
  const bem = createBem("picker");
34
- const useOptionKeysReturn = useOptionKeys(props);
35
- const { aliasProps, getLabel } = useOptionKeysReturn;
36
- const columnsType = computed(() => {
37
- return getColumnsType(props.columns, useOptionKeysReturn);
38
- });
32
+ const optionKeys = useOptionKeys(props);
39
33
  const innerValue = ref(props.modelValue);
40
34
  watch(() => props.modelValue, () => {
41
35
  innerValue.value = props.modelValue;
42
36
  });
37
+ const columnsType = computed(() => {
38
+ return getColumnsType(props.columns, optionKeys);
39
+ });
43
40
  const columnIndexes = ref([]);
44
- const updateColumnIndexes = () => {
45
- const indexes = getIndexesByValue(toArray(innerValue.value), props.columns, useOptionKeysReturn);
46
- if (!arrayEqual(indexes, columnIndexes.value)) columnIndexes.value = indexes;
47
- };
48
- updateColumnIndexes();
49
41
  watch([
50
42
  innerValue,
51
43
  () => props.columns,
52
- aliasProps
44
+ optionKeys.aliasProps
53
45
  ], () => {
54
- if (!isEmptyBinding(innerValue.value) && !isEmptyArray(innerValue.value)) updateColumnIndexes();
46
+ const indexes = getIndexesByValue(toArray(innerValue.value), props.columns, optionKeys);
47
+ if (!arrayEqual(indexes, columnIndexes.value)) columnIndexes.value = indexes;
48
+ }, { immediate: true });
49
+ const renderedColumns = computed(() => {
50
+ switch (columnsType.value) {
51
+ case "single": return [props.columns];
52
+ case "multi": return props.columns;
53
+ case "cascader": return nestedToMulti(props.columns, toArray(innerValue.value), optionKeys);
54
+ default: return [];
55
+ }
55
56
  });
56
57
  const onChange = (value) => {
57
58
  if (!props.columns || props.columns.length === 0) return;
58
59
  let indexes = value;
59
- if (indexes.some((index) => index === Infinity)) {
60
- nextTick(() => {
61
- columnIndexes.value = isEmptyBinding(innerValue.value) || isEmptyArray(innerValue.value) ? columnIndexes.value.map(() => 0) : [...columnIndexes.value];
62
- });
63
- return;
64
- }
65
60
  indexes = renderedColumns.value.map((_, index) => indexes[index] || 0);
66
61
  if (columnsType.value === "cascader") {
67
62
  let startIndex = -1;
@@ -72,42 +67,22 @@ var picker_default = /*@__PURE__*/ defineComponent({
72
67
  }
73
68
  indexes = nextIndexes;
74
69
  {
75
- const validIndexes = getCascaderValidIndexes(indexes, props.columns, useOptionKeysReturn);
70
+ const validIndexes = getCascaderValidIndexes(indexes, props.columns, optionKeys);
76
71
  if (!arrayEqual(indexes, validIndexes)) indexes = validIndexes;
77
72
  }
78
73
  }
79
- const selectedOptions = getOptionsByIndexes(indexes, props.columns, useOptionKeysReturn);
74
+ const selectedOptions = getOptionsByIndexes(indexes, props.columns, optionKeys);
80
75
  if (!arrayEqual(indexes, columnIndexes.value)) columnIndexes.value = indexes;
81
- const nextValue = getMaySingleValueByOptions(selectedOptions, useOptionKeysReturn, props.columns);
76
+ const nextValue = getMaySingleValueByOptions(selectedOptions, optionKeys, props.columns);
82
77
  innerValue.value = nextValue;
83
78
  emit("update:modelValue", nextValue, selectedOptions, indexes);
84
79
  emit("change", nextValue, selectedOptions, indexes);
85
80
  };
86
- const getRenderedColumns = () => {
87
- switch (columnsType.value) {
88
- case "single": return [props.columns];
89
- case "multi": return props.columns;
90
- case "cascader": return nestedToMulti(props.columns, toArray(innerValue.value), useOptionKeysReturn);
91
- default: return [];
92
- }
93
- };
94
- const renderedColumns = ref(getRenderedColumns());
95
- const updateRenderedColumns = () => {
96
- renderedColumns.value = getRenderedColumns();
97
- };
98
- watch([() => props.columns, innerValue], ([newColumns, newValue], [oldColumns, oldValue]) => {
99
- if (newColumns !== oldColumns || newValue !== oldValue && columnsType.value === "cascader" && !isEmptyBinding(newValue) && !isEmptyArray(newValue)) updateRenderedColumns();
100
- });
101
- watch(() => props.modelValue, () => {
102
- if (isEmptyBinding(props.modelValue) || isEmptyArray(props.modelValue)) {
103
- updateColumnIndexes();
104
- updateRenderedColumns();
105
- }
106
- });
81
+ const pickerClass = bem.b();
107
82
  const pickerViewClass = bem.e("picker-view");
108
83
  const indicatorClass = bem.e("indicator");
109
84
  return (_ctx, _cache) => {
110
- return openBlock(), createElementBlock("div", { class: normalizeClass(unref(bem).b()) }, [createVNode(unref(picker_view_default), {
85
+ return openBlock(), createElementBlock("div", { class: normalizeClass(unref(pickerClass)) }, [createVNode(unref(picker_view_default), {
111
86
  class: normalizeClass(unref(pickerViewClass)),
112
87
  "indicator-class": unref(indicatorClass),
113
88
  value: columnIndexes.value,
@@ -123,7 +98,7 @@ var picker_default = /*@__PURE__*/ defineComponent({
123
98
  option,
124
99
  rowIndex: j,
125
100
  columnIndex: i
126
- }, () => [createTextVNode(toDisplayString(unref(getLabel)(option)), 1)])], 2);
101
+ }, () => [createTextVNode(toDisplayString(unref(optionKeys).getLabel(option)), 1)])], 2);
127
102
  }), 128))]),
128
103
  _: 2
129
104
  }, 1024);
@@ -96,15 +96,15 @@ var picker_input_default = /*@__PURE__*/ defineComponent({
96
96
  const props = __props;
97
97
  const slots = useSlots();
98
98
  const emit = __emit;
99
- const useOptionKeysReturn = useOptionKeys(props);
99
+ const optionKeys = useOptionKeys(props);
100
100
  const partitionedProps = partitionPopoutInputProps(props);
101
101
  const { innerVisible, innerValue, inputValue, show, onChange, onClear, onVisibleHook } = usePopoutInput(props, emit);
102
- const { getLabel } = useOptionKeysReturn;
102
+ const { getLabel } = optionKeys;
103
103
  const onClick = () => {
104
104
  if (props.columns && props.columns.length > 0) show();
105
105
  };
106
106
  function getOutletText(columns, value) {
107
- return getOptionsByIndexes(getIndexesByValue(toArray(value), columns || [], useOptionKeysReturn), columns || [], useOptionKeysReturn).map((option) => getLabel(option)).join("/");
107
+ return getOptionsByIndexes(getIndexesByValue(toArray(value), columns || [], optionKeys), columns || [], optionKeys).map((option) => getLabel(option)).join("/");
108
108
  }
109
109
  function getInputValue() {
110
110
  if (isEmptyBinding(innerValue.value) || isEmptyArray(innerValue.value)) return "";
@@ -63,11 +63,11 @@ var picker_popout_default = /*@__PURE__*/ defineComponent({
63
63
  const props = __props;
64
64
  const slots = useSlots();
65
65
  const emit = __emit;
66
- const useOptionKeysReturn = useOptionKeys(props);
66
+ const optionKeys = useOptionKeys(props);
67
67
  const omittedProps = omitFormPopoutProps(props);
68
68
  const { innerVisible, innerValue, draftValue, onChange, onConfirm, onVisibleHook } = useFormPopout(props, emit, { onConfirmBefore() {
69
69
  if (isEmptyBinding(draftValue.value) || isEmptyArray(draftValue.value)) {
70
- const [initialValue, selectedOptions] = getInitialValue(props.columns, useOptionKeysReturn);
70
+ const [initialValue, selectedOptions] = getInitialValue(props.columns, optionKeys);
71
71
  draftValue.value = initialValue;
72
72
  return [selectedOptions];
73
73
  }
@@ -46,7 +46,6 @@ export interface PickerViewContext {
46
46
  maskClass: any;
47
47
  indicatorClass: any;
48
48
  indicatorStyle: any;
49
- height: number;
50
49
  getColumnValue: (ins: ComponentInternalInstance) => WritableComputedRef<number>;
51
50
  }
52
51
  export declare const pickerViewContextKey: InjectionKey<PickerViewContext>;
@@ -7,26 +7,26 @@ import { usePointerDown } from "../../use/usePointerDown.js";
7
7
  import { useResizeObserver } from "../../use/useResizeObserver.js";
8
8
  import { useScroller } from "../../utils/scroller/useScroller.js";
9
9
  import { pickerViewContextKey } from "./common.js";
10
- import { computed, createVNode, getCurrentInstance, inject, nextTick, onMounted, ref, useTemplateRef, watch } from "vue";
10
+ import { computed, createVNode, getCurrentInstance, inject, ref, watch, watchPostEffect } from "vue";
11
11
  //#region packages/sard/components/picker-view/picker-view-column.tsx
12
12
  var picker_view_column_default = defineSetupFnComponent((_props, { slots }) => {
13
13
  const bem = createBem("picker-view-column");
14
+ const instance = getCurrentInstance();
14
15
  const rootRef = ref(null);
15
16
  const contentRef = ref(null);
16
- const instance = getCurrentInstance();
17
+ const indicatorRef = ref(null);
17
18
  const context = inject(pickerViewContextKey);
18
19
  const columnValue = context.getColumnValue(instance);
19
20
  const itemCount = ref(0);
20
- const indicatorHeight = ref(48);
21
- useResizeObserver(useTemplateRef("indicator"), (size) => {
22
- if (size.height > 0) indicatorHeight.value = size.height;
21
+ const rootSize = useResizeObserver(rootRef);
22
+ const contentSize = useResizeObserver(contentRef);
23
+ const indicatorSize = useResizeObserver(indicatorRef);
24
+ const maskSize = computed(() => (rootSize.height - indicatorSize.height) / 2);
25
+ const contentHeight = computed(() => {
26
+ return contentSize.height + maskSize.value * 2;
23
27
  });
24
- const maskSize = computed(() => (context.height - indicatorHeight.value) / 2);
25
- const { update, scrollTo, isIdle, handleTouchStart, handleTouchMove, handleTouchEnd } = useScroller(contentRef, {
26
- enableY: true,
27
- enableX: false,
28
- enableSnap: true,
29
- itemSize: indicatorHeight.value,
28
+ const { position, update, scrollTo, isIdle, handleTouchStart, handleTouchMove, handleTouchEnd } = useScroller({
29
+ itemSize: indicatorSize.height,
30
30
  friction: new Friction(1e-4),
31
31
  spring: new Spring(2, 90, 20),
32
32
  onSnap: (index) => {
@@ -36,27 +36,29 @@ var picker_view_column_default = defineSetupFnComponent((_props, { slots }) => {
36
36
  handleTap(event);
37
37
  }
38
38
  });
39
- let updatesScrollerRequest;
40
- function updatesScroller() {
41
- if (!updatesScrollerRequest && indicatorHeight.value) {
42
- updatesScrollerRequest = true;
43
- nextTick(() => {
44
- updatesScrollerRequest = false;
45
- const current = Math.max(Math.min(columnValue.value, itemCount.value - 1), 0);
46
- update(current * indicatorHeight.value, void 0, indicatorHeight.value);
47
- });
48
- }
49
- }
39
+ let updatePending = false;
50
40
  watch([
51
- indicatorHeight,
41
+ () => indicatorSize.height,
42
+ columnValue,
52
43
  itemCount,
53
- () => context.height,
54
- columnValue
44
+ () => rootSize.height,
45
+ contentHeight
55
46
  ], () => {
56
- updatesScroller();
57
- });
58
- onMounted(() => {
59
- updatesScroller();
47
+ if (updatePending) return;
48
+ updatePending = true;
49
+ setTimeout(() => {
50
+ updatePending = false;
51
+ if (indicatorSize.height) {
52
+ const current = Math.max(Math.min(columnValue.value, itemCount.value - 1), 0);
53
+ update(current * indicatorSize.height, indicatorSize.height, rootSize.height, contentHeight.value);
54
+ }
55
+ });
56
+ }, { flush: "post" });
57
+ watchPostEffect(() => {
58
+ const el = contentRef.value;
59
+ if (!el) return;
60
+ const transform = "translateY(" + position.value + "px) translateZ(0)";
61
+ el.style.transform = transform;
60
62
  });
61
63
  let oldDeltaY = 0;
62
64
  function handleWheel(event) {
@@ -65,21 +67,21 @@ var picker_view_column_default = defineSetupFnComponent((_props, { slots }) => {
65
67
  oldDeltaY = 0;
66
68
  let current = Math.min(columnValue.value + (deltaY < 0 ? -1 : 1), itemCount.value - 1);
67
69
  columnValue.value = current = Math.max(current, 0);
68
- scrollTo(current * indicatorHeight.value);
70
+ scrollTo(current * indicatorSize.height);
69
71
  } else oldDeltaY = deltaY;
70
72
  event.preventDefault();
71
73
  }
72
74
  function handleTap({ changedTouches: [{ clientY }] }) {
73
75
  const el = rootRef.value;
74
76
  if (isIdle()) {
75
- const r = clientY - el.getBoundingClientRect().top - context.height / 2;
76
- const o = indicatorHeight.value / 2;
77
+ const r = clientY - el.getBoundingClientRect().top - rootSize.height / 2;
78
+ const o = indicatorSize.height / 2;
77
79
  if (!(Math.abs(r) <= o)) {
78
- const a = Math.ceil((Math.abs(r) - o) / indicatorHeight.value);
80
+ const a = Math.ceil((Math.abs(r) - o) / indicatorSize.height);
79
81
  const s = r < 0 ? -a : a;
80
82
  let current = Math.min(columnValue.value + s, itemCount.value - 1);
81
83
  columnValue.value = current = Math.max(current, 0);
82
- scrollTo(current * indicatorHeight.value);
84
+ scrollTo(current * indicatorSize.height);
83
85
  }
84
86
  }
85
87
  }
@@ -115,7 +117,7 @@ var picker_view_column_default = defineSetupFnComponent((_props, { slots }) => {
115
117
  "style": [`background-size: 100% ${maskSize.value}px;`, context.maskStyle]
116
118
  }, null),
117
119
  createVNode("div", {
118
- "ref": "indicator",
120
+ "ref": indicatorRef,
119
121
  "class": [bem.e("indicator"), context.indicatorClass],
120
122
  "style": context.indicatorStyle
121
123
  }, null),
@@ -124,7 +126,7 @@ var picker_view_column_default = defineSetupFnComponent((_props, { slots }) => {
124
126
  "class": [bem.e("content")],
125
127
  "style": {
126
128
  padding,
127
- "--picker-view-indicator-height": `${indicatorHeight.value}px`
129
+ "--picker-view-indicator-height": `${indicatorSize.height}px`
128
130
  }
129
131
  }, [defaultSlots])
130
132
  ])]);
@@ -1,13 +1,11 @@
1
1
  import { createBem } from "../../utils/bem.js";
2
2
  import { flatVNode } from "../../utils/vnode.js";
3
3
  import { defineSetupFnComponent } from "../../utils/component.js";
4
- import { useResizeObserver } from "../../use/useResizeObserver.js";
5
4
  import { pickerViewContextKey, pickerViewProps } from "./common.js";
6
- import { computed, createVNode, provide, reactive, ref, toRef, useTemplateRef, watch } from "vue";
5
+ import { computed, createVNode, provide, reactive, ref, toRef, watch } from "vue";
7
6
  //#region packages/sard/components/picker-view/picker-view.tsx
8
7
  var picker_view_default = defineSetupFnComponent((props, { slots, emit }) => {
9
8
  const bem = createBem("picker-view");
10
- const rootRef = useTemplateRef("root");
11
9
  const innerValue = reactive([...props.value]);
12
10
  watch(() => props.value, (value) => {
13
11
  innerValue.length = value.length;
@@ -30,32 +28,24 @@ var picker_view_default = defineSetupFnComponent((props, { slots, emit }) => {
30
28
  if (index < 0) return;
31
29
  if (innerValue[index] !== current) {
32
30
  innerValue[index] = current;
33
- const value = innerValue.map((val) => val);
31
+ const value = [...innerValue];
34
32
  emit("update:value", value);
35
33
  emit("change", value);
36
34
  }
37
35
  }
38
36
  });
39
37
  };
40
- const height = ref(48);
41
- useResizeObserver(rootRef, (size) => {
42
- height.value = size.height;
43
- });
44
38
  provide(pickerViewContextKey, reactive({
45
39
  maskStyle: toRef(() => props.maskStyle),
46
40
  maskClass: toRef(() => props.maskClass),
47
41
  indicatorClass: toRef(() => props.indicatorClass),
48
42
  indicatorStyle: toRef(() => props.indicatorStyle),
49
- height,
50
43
  getColumnValue
51
44
  }));
52
45
  return () => {
53
46
  const defaultSlots = slots.default && slots.default();
54
47
  columnsRef.value = flatVNode(defaultSlots);
55
- return createVNode("div", {
56
- "ref": "root",
57
- "class": bem.b()
58
- }, [createVNode("div", { "class": bem.e("wrapper") }, [defaultSlots])]);
48
+ return createVNode("div", { "class": bem.b() }, [createVNode("div", { "class": bem.e("wrapper") }, [defaultSlots])]);
59
49
  };
60
50
  }, {
61
51
  name: "PickerView",
@@ -52,7 +52,6 @@ var preview_image_default = /*@__PURE__*/ defineComponent({
52
52
  setup(__props, { expose: __expose, emit: __emit }) {
53
53
  const props = __props;
54
54
  const emit = __emit;
55
- __expose({});
56
55
  const bem = createBem("preview-image");
57
56
  const innerVisible = useModel(props, "visible");
58
57
  const visibleTimer = useTimeout();
@@ -132,6 +131,7 @@ var preview_image_default = /*@__PURE__*/ defineComponent({
132
131
  };
133
132
  });
134
133
  const current = useModel(props, "current");
134
+ __expose({});
135
135
  return (_ctx, _cache) => {
136
136
  return openBlock(), createBlock(popup_default, {
137
137
  effect: "full-fade",
@@ -115,7 +115,6 @@ var pull_down_refresh_default = /*@__PURE__*/ defineComponent({
115
115
  const enableToRefresh = (can) => {
116
116
  canRefresh.value = can;
117
117
  };
118
- __expose({ enableToRefresh });
119
118
  const pullDownRefreshStyle = computed(() => {
120
119
  return {
121
120
  transform: `translate3d(0,${translateY.value}px,0)`,
@@ -125,6 +124,7 @@ var pull_down_refresh_default = /*@__PURE__*/ defineComponent({
125
124
  const headerStyle = computed(() => {
126
125
  return { height: props.headerHeight + "px" };
127
126
  });
127
+ __expose({ enableToRefresh });
128
128
  return (_ctx, _cache) => {
129
129
  return openBlock(), createElementBlock("div", {
130
130
  class: normalizeClass(unref(bem).b()),
@@ -89,7 +89,6 @@ var puzzle_verify_default = /*@__PURE__*/ defineComponent({
89
89
  emit("end", event);
90
90
  isDown.value = false;
91
91
  };
92
- __expose({ reset });
93
92
  const puzzleVerifyClass = computed(() => {
94
93
  return [bem.b(), bem.m("down", isDown.value)];
95
94
  });
@@ -101,6 +100,7 @@ var puzzle_verify_default = /*@__PURE__*/ defineComponent({
101
100
  "--padding-top": 1 / aspectRatio.value * 100 + "%"
102
101
  };
103
102
  });
103
+ __expose({ reset });
104
104
  return (_ctx, _cache) => {
105
105
  return openBlock(), createElementBlock("div", {
106
106
  class: normalizeClass(puzzleVerifyClass.value),
@@ -1 +1 @@
1
- :root{--s-rate-gap:var(--s-size-xs);--s-rate-star-font-size:var(--s-size-lg);--s-rate-void-star-color:var(--s-text-color-fourth);--s-rate-star-color:var(--s-color-warning)}.s-rate{display:inline-flex;-webkit-user-select:none;user-select:none}.s-rate__content{display:flex;gap:var(--s-rate-gap);touch-action:pan-y}.s-rate__item{position:relative;font-size:var(--s-rate-star-font-size);line-height:var(--s-line-height-none);cursor:pointer}.s-rate__item svg{flex:none}.s-rate__void-star{color:var(--s-rate-void-star-color)}.s-rate__star{position:absolute;top:0;inset-inline-start:0;display:flex;align-items:flex-start;width:0;overflow:hidden;color:var(--s-rate-star-color)}.s-rate--readonly,.s-rate--disabled{touch-action:auto}.s-rate--readonly .s-rate__item{cursor:unset}.s-rate--disabled .s-rate__void-star{color:var(--s-border-color-disabled)}.s-rate--disabled .s-rate__star{color:var(--s-text-color-disabled)}.s-rate--disabled .s-rate__item{cursor:not-allowed}
1
+ :root{--s-rate-gap:var(--s-size-xs);--s-rate-star-font-size:var(--s-size-lg);--s-rate-void-star-color:var(--s-text-color-fourth);--s-rate-star-color:var(--s-color-warning)}.s-rate{display:inline-flex;-webkit-user-select:none;user-select:none}.s-rate__content{display:flex;gap:var(--s-rate-gap);touch-action:pan-y}.s-rate__item{position:relative;font-size:var(--s-rate-star-font-size);line-height:var(--s-line-height-none);cursor:pointer}.s-rate__item svg{flex:none}.s-rate__void-star{color:var(--s-rate-void-star-color)}.s-rate__star{position:absolute;top:0;inset-inline-start:0;display:flex;align-items:flex-start;width:0;overflow:hidden;color:var(--s-rate-star-color)}.s-rate--readonly,.s-rate--disabled{touch-action:auto}.s-rate--readonly .s-rate__item{cursor:unset}.s-rate--disabled .s-rate__void-star{color:var(--s-border-color-dark)}.s-rate--disabled .s-rate__star{color:var(--s-text-color-disabled)}.s-rate--disabled .s-rate__item{cursor:not-allowed}
@@ -86,13 +86,13 @@ var read_more_default = /*@__PURE__*/ defineComponent({
86
86
  behavior: "instant"
87
87
  });
88
88
  };
89
- __expose({});
90
89
  const readMoreClass = computed(() => {
91
90
  return [bem.b(), bem.m("close", !innerVisible.value)];
92
91
  });
93
92
  const contentStyle = computed(() => {
94
93
  return { maxHeight: innerVisible.value ? "none" : props.maxHeight + "px" };
95
94
  });
95
+ __expose({});
96
96
  return (_ctx, _cache) => {
97
97
  return openBlock(), createElementBlock("div", { class: normalizeClass(readMoreClass.value) }, [createElementVNode("div", {
98
98
  ref: "content",
@@ -65,10 +65,10 @@ var rotate_verify_default = /*@__PURE__*/ defineComponent({
65
65
  const reset = () => {
66
66
  slideVerifyRef.value?.reset();
67
67
  };
68
- __expose({ reset });
69
68
  const imageStyle = computed(() => {
70
69
  return { transform: `rotate(${targetDegree.value}deg) rotate(${-slideDegree.value}deg)` };
71
70
  });
71
+ __expose({ reset });
72
72
  return (_ctx, _cache) => {
73
73
  return openBlock(), createElementBlock("div", { class: normalizeClass(unref(bem).b()) }, [createElementVNode("img", {
74
74
  class: normalizeClass(unref(bem).e("image")),
@@ -48,7 +48,6 @@ var segmented_item_default = /*@__PURE__*/ defineComponent({
48
48
  if (!isDisabled.value && !isReadonly.value) context.toggle(props.value);
49
49
  emit("click", event);
50
50
  };
51
- __expose({});
52
51
  const segmentedItemClass = computed(() => {
53
52
  return [
54
53
  bem.b(),
@@ -60,6 +59,7 @@ var segmented_item_default = /*@__PURE__*/ defineComponent({
60
59
  bem.m(context.shape)
61
60
  ];
62
61
  });
62
+ __expose({});
63
63
  return (_ctx, _cache) => {
64
64
  return openBlock(), createElementBlock("div", {
65
65
  class: normalizeClass(segmentedItemClass.value),
@@ -94,7 +94,6 @@ var segmented_default = /*@__PURE__*/ defineComponent({
94
94
  value: innerValue,
95
95
  toggle
96
96
  }));
97
- __expose({});
98
97
  const segmentedClass = computed(() => {
99
98
  return [
100
99
  bem.b(),
@@ -109,6 +108,7 @@ var segmented_default = /*@__PURE__*/ defineComponent({
109
108
  "--offset": `${currentIndex.value * 100}%`
110
109
  };
111
110
  });
111
+ __expose({});
112
112
  return (_ctx, _cache) => {
113
113
  return openBlock(), createElementBlock("div", { class: normalizeClass(segmentedClass.value) }, [createElementVNode("div", { class: normalizeClass(unref(bem).e("wrapper")) }, [createElementVNode("div", {
114
114
  class: normalizeClass(unref(bem).e("pointer")),
@@ -8,6 +8,7 @@ export interface SelectProps {
8
8
  filterable?: boolean;
9
9
  filterPlaceholder?: string;
10
10
  filterMethod?: (query: string) => void;
11
+ filterValue?: string;
11
12
  remote?: boolean;
12
13
  remoteMethod?: (query: string, page: number, isRefresh: boolean) => Promise<boolean>;
13
14
  threshold?: number;
@@ -36,6 +37,7 @@ export interface SelectEmits {
36
37
  (e: 'update:modelValue', value: any): void;
37
38
  (e: 'change', value: any): void;
38
39
  (e: 'select', value: any): void;
40
+ (e: 'update:filter-value', value: string): void;
39
41
  }
40
42
  export interface SelectExpose {
41
43
  }
@@ -59,7 +59,6 @@ var select_option_default = /*@__PURE__*/ defineComponent({
59
59
  onUnmounted(() => {
60
60
  removeMember(member);
61
61
  });
62
- __expose({});
63
62
  const selectOptionClass = computed(() => {
64
63
  return [
65
64
  bem.b(),
@@ -68,6 +67,7 @@ var select_option_default = /*@__PURE__*/ defineComponent({
68
67
  bem.is("plain", props.plain)
69
68
  ];
70
69
  });
70
+ __expose({});
71
71
  return (_ctx, _cache) => {
72
72
  return openBlock(), createElementBlock("div", {
73
73
  ref: "option",
@@ -4,10 +4,12 @@ declare const __VLS_base: import("vue").DefineComponent<SelectProps, SelectExpos
4
4
  select: (value: any) => any;
5
5
  change: (value: any) => any;
6
6
  "update:modelValue": (value: any) => any;
7
+ "update:filter-value": (value: string) => any;
7
8
  }, string, import("vue").PublicProps, Readonly<SelectProps> & Readonly<{
8
9
  onSelect?: ((value: any) => any) | undefined;
9
10
  onChange?: ((value: any) => any) | undefined;
10
11
  "onUpdate:modelValue"?: ((value: any) => any) | undefined;
12
+ "onUpdate:filter-value"?: ((value: string) => any) | undefined;
11
13
  }>, {
12
14
  multiple: boolean;
13
15
  options: any[];
@@ -18,6 +20,7 @@ declare const __VLS_base: import("vue").DefineComponent<SelectProps, SelectExpos
18
20
  multipleLimit: number;
19
21
  filterable: boolean;
20
22
  filterMethod: (query: string) => void;
23
+ filterValue: string;
21
24
  remote: boolean;
22
25
  remoteMethod: (query: string, page: number, isRefresh: boolean) => Promise<boolean>;
23
26
  showToolbar: boolean;
@@ -49,6 +49,10 @@ var select_default = /*@__PURE__*/ defineComponent({
49
49
  type: Function,
50
50
  required: false
51
51
  },
52
+ filterValue: {
53
+ type: String,
54
+ required: false
55
+ },
52
56
  remote: {
53
57
  type: Boolean,
54
58
  required: false
@@ -81,7 +85,8 @@ var select_default = /*@__PURE__*/ defineComponent({
81
85
  emits: [
82
86
  "update:modelValue",
83
87
  "change",
84
- "select"
88
+ "select",
89
+ "update:filter-value"
85
90
  ],
86
91
  setup(__props, { expose: __expose, emit: __emit }) {
87
92
  const props = __props;
@@ -113,9 +118,13 @@ var select_default = /*@__PURE__*/ defineComponent({
113
118
  const scrollRef = useTemplateRef("scroll");
114
119
  const scrollSide = useScrollSide(scrollRef, { direction: "vertical" });
115
120
  const searchValue = ref("");
121
+ watch(() => props.filterValue, () => {
122
+ searchValue.value = String(props.filterValue ?? "");
123
+ });
116
124
  watch(searchValue, () => {
117
125
  props.filterMethod?.(searchValue.value);
118
126
  debouncedRefresh();
127
+ if (searchValue.value !== props.filterValue) emit("update:filter-value", searchValue.value);
119
128
  });
120
129
  const { status, isLoading, onLoadMore, onReload, refresh } = useLoadMore({
121
130
  root: scrollRef,
@@ -157,13 +166,13 @@ var select_default = /*@__PURE__*/ defineComponent({
157
166
  usePopupEnter(() => {
158
167
  scrollIntoView();
159
168
  });
160
- __expose({});
161
169
  const containerClass = computed(() => {
162
170
  return [bem.e("container"), bem.em("container", scrollSide.vertical)];
163
171
  });
164
172
  const scrollClass = computed(() => {
165
173
  return [bem.e("scroll"), bem.em("scroll", "filterable", props.filterable)];
166
174
  });
175
+ __expose({});
167
176
  return (_ctx, _cache) => {
168
177
  return openBlock(), createElementBlock("div", { class: normalizeClass(unref(bem).b()) }, [
169
178
  __props.filterable ? (openBlock(), createElementBlock("div", {
@@ -51,6 +51,7 @@ declare const __VLS_base: import("vue").DefineComponent<SelectInputProps, Select
51
51
  multipleLimit: number;
52
52
  filterable: boolean;
53
53
  filterMethod: (query: string) => void;
54
+ filterValue: string;
54
55
  remote: boolean;
55
56
  remoteMethod: (query: string, page: number, isRefresh: boolean) => Promise<boolean>;
56
57
  showToolbar: boolean;
@@ -62,6 +62,10 @@ var select_input_default = /*@__PURE__*/ defineComponent({
62
62
  type: Function,
63
63
  required: false
64
64
  },
65
+ filterValue: {
66
+ type: String,
67
+ required: false
68
+ },
65
69
  remote: {
66
70
  type: Boolean,
67
71
  required: false
@@ -43,6 +43,7 @@ declare const __VLS_base: import("vue").DefineComponent<SelectPopoutProps, Selec
43
43
  multipleLimit: number;
44
44
  filterable: boolean;
45
45
  filterMethod: (query: string) => void;
46
+ filterValue: string;
46
47
  remote: boolean;
47
48
  remoteMethod: (query: string, page: number, isRefresh: boolean) => Promise<boolean>;
48
49
  showToolbar: boolean;
@@ -51,6 +51,10 @@ var select_popout_default = /*@__PURE__*/ defineComponent({
51
51
  type: Function,
52
52
  required: false
53
53
  },
54
+ filterValue: {
55
+ type: String,
56
+ required: false
57
+ },
54
58
  remote: {
55
59
  type: Boolean,
56
60
  required: false
@@ -1 +1 @@
1
- :root{--s-share-sheet-border-radius:var(--s-border-radius-xl);--s-share-sheet-border-color:var(--s-border-color);--s-share-sheet-bg:var(--s-bg-color-elevated);--s-share-sheet-header-padding:var(--s-size);--s-share-sheet-title-font-size:var(--s-font-size-lg);--s-share-sheet-description-font-size:var(--s-font-size);--s-share-sheet-description-color:var(--s-text-color-tertiary);--s-share-sheet-row-padding-y:var(--s-size);--s-share-sheet-row-padding-x:var(--s-size-xs);--s-share-sheet-item-width:80px;--s-share-sheet-item-opacity-active:var(--s-opacity-active);--s-share-sheet-icon-size:var(--s-size-4xl);--s-share-sheet-icon-radius:var(--s-border-radius-full);--s-share-sheet-icon-font-size:var(--s-size-xl);--s-share-sheet-icon-color:var(--s-text-color-tertiary);--s-share-sheet-icon-bg:var(--s-fill-color);--s-share-sheet-label-margin-top:var(--s-size-xs);--s-share-sheet-label-padding-x:var(--s-size-2xs);--s-share-sheet-label-font-size:var(--s-font-size);--s-share-sheet-label-color:var(--s-text-color-tertiary);--s-share-sheet-item-description-margin-top:0;--s-share-sheet-item-description-padding-x:var(--s-size-2xs);--s-share-sheet-item-description-font-size:var(--s-font-size-sm);--s-share-sheet-item-description-color:var(--s-text-color-fourth);--s-share-sheet-gap-bg:var(--s-fill-color-tertiary);--s-share-sheet-gap-height:var(--s-size-xs);--s-share-sheet-cancel-min-height:var(--s-content-height-lg);--s-share-sheet-cancel-padding:var(--s-size-xs) var(--s-size);--s-share-sheet-cancel-font-size:var(--s-font-size-lg);--s-share-sheet-cancel-bg-active:var(--s-bg-color-active)}.s-share-sheet{padding-bottom:var(--s-safe-bottom);border-top-left-radius:var(--s-share-sheet-border-radius);border-top-right-radius:var(--s-share-sheet-border-radius);background:var(--s-share-sheet-bg);touch-action:pan-x}.s-share-sheet__header{position:relative;display:flex;flex-direction:column;gap:var(--s-size-2xs);padding:var(--s-share-sheet-header-padding)}.s-share-sheet__header::after{position:absolute;z-index:1;pointer-events:none;touch-action:none;opacity:1;content:"";left:0;right:0;transform:scaleY(0.5);bottom:0;border-bottom:var(--s-border-width) var(--s-border-style) var(--s-share-sheet-border-color);transform-origin:bottom center}.s-share-sheet__title{font-size:var(--s-share-sheet-title-font-size);font-weight:var(--s-font-weight-bold);text-align:center}.s-share-sheet__description{font-size:var(--s-share-sheet-description-font-size);text-align:center;color:var(--s-share-sheet-description-color)}.s-share-sheet__gap{height:var(--s-share-sheet-gap-height);background:var(--s-share-sheet-gap-bg)}.s-share-sheet__cancel{display:flex;justify-content:center;align-items:center;min-height:var(--s-share-sheet-cancel-min-height);padding:var(--s-share-sheet-cancel-padding);font-size:var(--s-share-sheet-cancel-font-size);cursor:pointer}.s-share-sheet__cancel:active{background:var(--s-share-sheet-cancel-bg-active)}.s-share-sheet-item{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;width:var(--s-share-sheet-item-width);flex:none;cursor:pointer}.s-share-sheet-item:not(.is-disabled):active{opacity:var(--s-share-sheet-item-opacity-active)}.s-share-sheet-item:is(.is-disabled){opacity:var(--s-opacity-disabled);cursor:var(--s-cursor-disabled);filter:var(--s-filter-disabled)}.s-share-sheet-item__label{margin-top:var(--s-share-sheet-label-margin-top);padding:0 var(--s-share-sheet-label-padding-x);font-size:var(--s-share-sheet-label-font-size);color:var(--s-share-sheet-label-color)}.s-share-sheet-item__description{margin-top:var(--s-share-sheet-item-description-margin-top);padding:0 var(--s-share-sheet-item-description-padding-x);font-size:var(--s-share-sheet-item-description-font-size);color:var(--s-share-sheet-item-description-color)}.s-share-sheet-row{position:relative}.s-share-sheet-row:not(:first-child)::before{position:absolute;z-index:1;pointer-events:none;touch-action:none;opacity:1;content:"";left:0;right:0;transform:scaleY(0.5);top:0;border-top:var(--s-border-width) var(--s-border-style) var(--s-share-sheet-border-color);transform-origin:top center}.s-share-sheet-row__scroll{display:flex;padding:var(--s-share-sheet-row-padding-y) var(--s-share-sheet-row-padding-x);overflow-x:auto;overflow-y:hidden}.s-share-sheet-icon{display:flex;justify-content:center;align-items:center;width:var(--s-share-sheet-icon-size);height:var(--s-share-sheet-icon-size);border-radius:var(--s-share-sheet-icon-radius);font-size:var(--s-share-sheet-icon-font-size);color:var(--s-share-sheet-icon-color);background:var(--s-share-sheet-icon-bg)}.s-share-sheet-icon__image{width:100%;height:100%;object-fit:cover;border-radius:var(--s-share-sheet-icon-radius)}
1
+ :root{--s-share-sheet-border-radius:var(--s-border-radius-xl);--s-share-sheet-border-color:var(--s-border-color);--s-share-sheet-bg:var(--s-bg-color-elevated);--s-share-sheet-header-padding:var(--s-size);--s-share-sheet-title-font-size:var(--s-font-size-lg);--s-share-sheet-description-font-size:var(--s-font-size);--s-share-sheet-description-color:var(--s-text-color-tertiary);--s-share-sheet-row-padding-y:var(--s-size);--s-share-sheet-row-padding-x:var(--s-size-xs);--s-share-sheet-item-width:80px;--s-share-sheet-item-opacity-active:var(--s-opacity-active);--s-share-sheet-icon-size:var(--s-size-4xl);--s-share-sheet-icon-radius:var(--s-border-radius-full);--s-share-sheet-icon-font-size:var(--s-size-xl);--s-share-sheet-icon-color:var(--s-text-color-tertiary);--s-share-sheet-icon-bg:var(--s-fill-color);--s-share-sheet-label-margin-top:var(--s-size-xs);--s-share-sheet-label-padding-x:var(--s-size-2xs);--s-share-sheet-label-font-size:var(--s-font-size);--s-share-sheet-label-color:var(--s-text-color-tertiary);--s-share-sheet-item-description-margin-top:0;--s-share-sheet-item-description-padding-x:var(--s-size-2xs);--s-share-sheet-item-description-font-size:var(--s-font-size-sm);--s-share-sheet-item-description-color:var(--s-text-color-fourth);--s-share-sheet-gap-bg:var(--s-fill-color-fourth);--s-share-sheet-gap-height:var(--s-size-xs);--s-share-sheet-cancel-min-height:var(--s-content-height-lg);--s-share-sheet-cancel-padding:var(--s-size-xs) var(--s-size);--s-share-sheet-cancel-font-size:var(--s-font-size-lg);--s-share-sheet-cancel-bg-active:var(--s-bg-color-active)}.s-share-sheet{padding-bottom:var(--s-safe-bottom);border-top-left-radius:var(--s-share-sheet-border-radius);border-top-right-radius:var(--s-share-sheet-border-radius);background:var(--s-share-sheet-bg);touch-action:pan-x}.s-share-sheet__header{position:relative;display:flex;flex-direction:column;gap:var(--s-size-2xs);padding:var(--s-share-sheet-header-padding)}.s-share-sheet__header::after{position:absolute;z-index:1;pointer-events:none;touch-action:none;opacity:1;content:"";left:0;right:0;transform:scaleY(0.5);bottom:0;border-bottom:var(--s-border-width) var(--s-border-style) var(--s-share-sheet-border-color);transform-origin:bottom center}.s-share-sheet__title{font-size:var(--s-share-sheet-title-font-size);font-weight:var(--s-font-weight-bold);text-align:center}.s-share-sheet__description{font-size:var(--s-share-sheet-description-font-size);text-align:center;color:var(--s-share-sheet-description-color)}.s-share-sheet__gap{height:var(--s-share-sheet-gap-height);background:var(--s-share-sheet-gap-bg)}.s-share-sheet__cancel{display:flex;justify-content:center;align-items:center;min-height:var(--s-share-sheet-cancel-min-height);padding:var(--s-share-sheet-cancel-padding);font-size:var(--s-share-sheet-cancel-font-size);cursor:pointer}.s-share-sheet__cancel:active{background:var(--s-share-sheet-cancel-bg-active)}.s-share-sheet-item{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;width:var(--s-share-sheet-item-width);flex:none;cursor:pointer}.s-share-sheet-item:not(.is-disabled):active{opacity:var(--s-share-sheet-item-opacity-active)}.s-share-sheet-item:is(.is-disabled){opacity:var(--s-opacity-disabled);cursor:var(--s-cursor-disabled);filter:var(--s-filter-disabled)}.s-share-sheet-item__label{margin-top:var(--s-share-sheet-label-margin-top);padding:0 var(--s-share-sheet-label-padding-x);font-size:var(--s-share-sheet-label-font-size);color:var(--s-share-sheet-label-color)}.s-share-sheet-item__description{margin-top:var(--s-share-sheet-item-description-margin-top);padding:0 var(--s-share-sheet-item-description-padding-x);font-size:var(--s-share-sheet-item-description-font-size);color:var(--s-share-sheet-item-description-color)}.s-share-sheet-row{position:relative}.s-share-sheet-row:not(:first-child)::before{position:absolute;z-index:1;pointer-events:none;touch-action:none;opacity:1;content:"";left:0;right:0;transform:scaleY(0.5);top:0;border-top:var(--s-border-width) var(--s-border-style) var(--s-share-sheet-border-color);transform-origin:top center}.s-share-sheet-row__scroll{display:flex;padding:var(--s-share-sheet-row-padding-y) var(--s-share-sheet-row-padding-x);overflow-x:auto;overflow-y:hidden}.s-share-sheet-icon{display:flex;justify-content:center;align-items:center;width:var(--s-share-sheet-icon-size);height:var(--s-share-sheet-icon-size);border-radius:var(--s-share-sheet-icon-radius);font-size:var(--s-share-sheet-icon-font-size);color:var(--s-share-sheet-icon-color);background:var(--s-share-sheet-icon-bg)}.s-share-sheet-icon__image{width:100%;height:100%;object-fit:cover;border-radius:var(--s-share-sheet-icon-radius)}