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 +9 -0
- package/components/datetime-picker-input/datetime-picker-input.vue +16 -1
- package/components/datetime-range-picker-input/datetime-range-picker-input.vue +1 -0
- package/components/picker-input/picker-input.vue +1 -0
- package/components/popout/common.d.ts +1 -0
- package/components/popout/popout.vue +3 -1
- package/components/popup/common.d.ts +1 -0
- package/components/popup/index.scss +24 -4
- package/components/popup/popup.vue +13 -5
- package/package.json +1 -1
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
|
});
|
|
@@ -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 }) {
|
|
@@ -76,19 +76,39 @@
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
// slide
|
|
79
|
-
@include m(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
});
|