sard-uniapp 1.11.0 → 1.11.1

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## [1.11.1](https://github.com/sutras/sard-uniapp/compare/v1.11.0...v1.11.1) (2025-03-06)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * 修复日期时间选择器min, max联动问题 ([81d9256](https://github.com/sutras/sard-uniapp/commit/81d9256c872b5711664abf1e8ff75de3b146f3da))
7
+
8
+
9
+
1
10
  # [1.11.0](https://github.com/sutras/sard-uniapp/compare/v1.10.4...v1.11.0) (2025-03-04)
2
11
 
3
12
 
@@ -12,6 +12,7 @@
12
12
  <sar-popout
13
13
  :root-class="rootClass"
14
14
  :root-style="rootStyle"
15
+ keep-render
15
16
  :visible="innerVisible"
16
17
  @update:visible="onVisible"
17
18
  :title="title ?? placeholder"
@@ -116,6 +117,20 @@ export default _defineComponent({
116
117
  const maxDate2 = toDate(props.max || getMaxDate());
117
118
  return maxDate2 < minDate.value ? new Date(minDate.value) : maxDate2;
118
119
  });
120
+ const normalizeValue = (value) => {
121
+ const date = value ? toDate(value, props.valueFormat) : new Date();
122
+ return date < minDate.value ? new Date(minDate.value) : date > maxDate.value ? new Date(maxDate.value) : date;
123
+ };
124
+ watch([minDate, maxDate], () => {
125
+ if (innerValue.value) {
126
+ const oldDate = toDate(innerValue.value, props.valueFormat);
127
+ const value = normalizeValue(innerValue.value);
128
+ if (value.getTime() !== oldDate.getTime()) {
129
+ popoutValue.value = value;
130
+ onConfirm();
131
+ }
132
+ }
133
+ });
119
134
  const onConfirm = () => {
120
135
  if (!popoutValue.value) {
121
136
  const initialValue = getInitialValue(minDate.value, maxDate.value);
@@ -175,7 +190,7 @@ export default _defineComponent({
175
190
  innerVisible.value = true;
176
191
  emit("update:visible", true);
177
192
  };
178
- const __returned__ = { props, emit, formItemContext, innerValue, popoutValue, onChange, onVisibleHook, minDate, maxDate, onConfirm, inputValue, getOutletText, getInputValue, onClear, innerVisible, onVisible, onInputClick, SarPopoutInput, SarPopout, SarDatetimePicker };
193
+ const __returned__ = { props, emit, formItemContext, innerValue, popoutValue, onChange, onVisibleHook, minDate, maxDate, normalizeValue, onConfirm, inputValue, getOutletText, getInputValue, onClear, innerVisible, onVisible, onInputClick, SarPopoutInput, SarPopout, SarDatetimePicker };
179
194
  return __returned__;
180
195
  }
181
196
  });
@@ -12,6 +12,7 @@
12
12
  <sar-popout
13
13
  :root-class="rootClass"
14
14
  :root-style="rootStyle"
15
+ keep-render
15
16
  :visible="innerVisible"
16
17
  @update:visible="onVisible"
17
18
  :title="title ?? placeholder"
@@ -12,6 +12,7 @@
12
12
  <sar-popout
13
13
  :root-class="rootClass"
14
14
  :root-style="rootStyle"
15
+ keep-render
15
16
  :visible="innerVisible"
16
17
  @update:visible="onVisible"
17
18
  :title="title ?? placeholder"
@@ -16,6 +16,7 @@ export interface PopoutProps {
16
16
  showFooter?: boolean;
17
17
  overlayClosable?: boolean;
18
18
  beforeClose?: (type: 'close' | 'cancel' | 'confirm') => boolean | undefined | Promise<any>;
19
+ keepRender?: boolean;
19
20
  }
20
21
  export declare const defaultPopoutProps: {
21
22
  type: PopoutProps["type"];
@@ -3,6 +3,7 @@
3
3
  effect="slide-bottom"
4
4
  :visible="visible"
5
5
  :duration="duration"
6
+ :keep-render="keepRender"
6
7
  @overlay-click="onOverlayClick"
7
8
  @before-enter="onBeforeEnter"
8
9
  @after-leave="onAfterLeave"
@@ -126,7 +127,8 @@ export default _defineComponent({
126
127
  showClose: { type: Boolean, required: false },
127
128
  showFooter: { type: Boolean, required: false },
128
129
  overlayClosable: { type: Boolean, required: false },
129
- beforeClose: { type: Function, required: false }
130
+ beforeClose: { type: Function, required: false },
131
+ keepRender: { type: Boolean, required: false }
130
132
  }, defaultPopoutProps),
131
133
  emits: ["update:visible", "close", "cancel", "confirm", "visible-hook"],
132
134
  setup(__props, { expose: __expose, emit: __emit }) {
@@ -11,6 +11,7 @@ export interface PopupProps {
11
11
  overlayStyle?: string;
12
12
  background?: string;
13
13
  transparent?: boolean;
14
+ keepRender?: boolean;
14
15
  }
15
16
  export declare const defaultPopupProps: {
16
17
  duration: number;
@@ -76,19 +76,39 @@
76
76
  }
77
77
 
78
78
  // slide
79
- @include m(slide-top-enter-from, slide-top-leave-to) {
79
+ @include m(
80
+ slide-top-enter-from,
81
+ slide-top-leave-to,
82
+ slide-top-keep,
83
+ slide-top-after-leave-keep
84
+ ) {
80
85
  transform: translate3d(0, -100%, 0);
81
86
  }
82
87
 
83
- @include m(slide-right-enter-from, slide-right-leave-to) {
88
+ @include m(
89
+ slide-right-enter-from,
90
+ slide-right-leave-to,
91
+ slide-right-keep,
92
+ slide-right-after-leave-keep
93
+ ) {
84
94
  transform: translate3d(100%, 0, 0);
85
95
  }
86
96
 
87
- @include m(slide-bottom-enter-from, slide-bottom-leave-to) {
97
+ @include m(
98
+ slide-bottom-enter-from,
99
+ slide-bottom-leave-to,
100
+ slide-bottom-keep,
101
+ slide-bottom-after-leave-keep
102
+ ) {
88
103
  transform: translate3d(0, 100%, 0);
89
104
  }
90
105
 
91
- @include m(slide-left-enter-from, slide-left-leave-to) {
106
+ @include m(
107
+ slide-left-enter-from,
108
+ slide-left-leave-to,
109
+ slide-left-keep,
110
+ slide-left-after-leave-keep
111
+ ) {
92
112
  transform: translate3d(-100%, 0, 0);
93
113
  }
94
114
 
@@ -21,7 +21,7 @@
21
21
 
22
22
  <script>
23
23
  import { mergeDefaults as _mergeDefaults, defineComponent as _defineComponent } from "vue";
24
- import { computed, reactive, toRef } from "vue";
24
+ import { computed, reactive, ref, toRef } from "vue";
25
25
  import { classNames, stringifyStyle, createBem } from "../../utils";
26
26
  import { useTransition, useZIndex } from "../../use";
27
27
  import SarOverlay from "../overlay/overlay.vue";
@@ -50,7 +50,8 @@ export default _defineComponent({
50
50
  overlayClass: { type: String, required: false },
51
51
  overlayStyle: { type: String, required: false },
52
52
  background: { type: String, required: false },
53
- transparent: { type: Boolean, required: false }
53
+ transparent: { type: Boolean, required: false },
54
+ keepRender: { type: Boolean, required: false }
54
55
  }, defaultPopupProps),
55
56
  emits: ["overlay-click", "before-enter", "enter", "after-enter", "enter-cancelled", "before-leave", "leave", "after-leave", "leave-cancelled", "visible-hook"],
56
57
  setup(__props, { expose: __expose, emit: __emit }) {
@@ -60,6 +61,9 @@ export default _defineComponent({
60
61
  const bem = createBem("popup");
61
62
  const [zIndex, increaseZIndex] = useZIndex();
62
63
  const callVisibleHook = usePopupVisibleHookProvide();
64
+ const keepRenderClass = ref(
65
+ props.keepRender ? bem.m(props.effect) + "-keep" : ""
66
+ );
63
67
  const onVisibleHook = (name) => {
64
68
  callVisibleHook(name);
65
69
  emit("visible-hook", name);
@@ -67,6 +71,9 @@ export default _defineComponent({
67
71
  if (name === "before-enter") {
68
72
  increaseZIndex();
69
73
  }
74
+ if (props.keepRender) {
75
+ keepRenderClass.value = name === "after-leave" ? bem.m(props.effect) + "-" + name + "-keep" : "";
76
+ }
70
77
  };
71
78
  const { realVisible, transitionClass, onTransitionEnd } = useTransition(
72
79
  reactive({
@@ -84,17 +91,18 @@ export default _defineComponent({
84
91
  bem.b(),
85
92
  bem.m(props.effect),
86
93
  props.rootClass,
87
- transitionClass.value
94
+ transitionClass.value,
95
+ keepRenderClass.value
88
96
  );
89
97
  });
90
98
  const popupStyle = computed(() => {
91
99
  return stringifyStyle(props.rootStyle, {
92
100
  zIndex: zIndex.value,
93
- display: realVisible.value ? "flex" : "none",
101
+ display: props.keepRender || realVisible.value ? "flex" : "none",
94
102
  transitionDuration: props.duration + "ms"
95
103
  });
96
104
  });
97
- const __returned__ = { props, emit, bem, zIndex, increaseZIndex, callVisibleHook, onVisibleHook, realVisible, transitionClass, onTransitionEnd, onOverlayClick, popupClass, popupStyle, SarOverlay };
105
+ const __returned__ = { props, emit, bem, zIndex, increaseZIndex, callVisibleHook, keepRenderClass, onVisibleHook, realVisible, transitionClass, onTransitionEnd, onOverlayClick, popupClass, popupStyle, SarOverlay };
98
106
  return __returned__;
99
107
  }
100
108
  });
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "id": "sard-uniapp",
3
3
  "name": "sard-uniapp",
4
4
  "displayName": "sard-uniapp",
5
- "version": "1.11.0",
5
+ "version": "1.11.1",
6
6
  "description": "sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库",
7
7
  "main": "index.js",
8
8
  "scripts": {