mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
chore: adjust callInterceptor params (#9674)
* chore: adjust callInterceptor params * chore: upd
This commit is contained in:
parent
2bd6bc48c2
commit
66cf1dabba
@ -74,10 +74,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
const close = (action: DialogAction) => {
|
const close = (action: DialogAction) => {
|
||||||
updateShow(false);
|
updateShow(false);
|
||||||
|
props.callback?.(action);
|
||||||
if (props.callback) {
|
|
||||||
props.callback(action);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const getActionHandler = (action: DialogAction) => () => {
|
const getActionHandler = (action: DialogAction) => () => {
|
||||||
@ -90,8 +87,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
if (props.beforeClose) {
|
if (props.beforeClose) {
|
||||||
loading[action] = true;
|
loading[action] = true;
|
||||||
callInterceptor({
|
callInterceptor(props.beforeClose, {
|
||||||
interceptor: props.beforeClose,
|
|
||||||
args: [action],
|
args: [action],
|
||||||
done() {
|
done() {
|
||||||
close(action);
|
close(action);
|
||||||
|
@ -49,7 +49,7 @@ Dialog.defaultOptions = {
|
|||||||
className: '',
|
className: '',
|
||||||
allowHtml: false,
|
allowHtml: false,
|
||||||
lockScroll: true,
|
lockScroll: true,
|
||||||
transition: 'van-dialog-bounce',
|
transition: undefined,
|
||||||
beforeClose: null,
|
beforeClose: null,
|
||||||
overlayClass: '',
|
overlayClass: '',
|
||||||
overlayStyle: undefined,
|
overlayStyle: undefined,
|
||||||
|
@ -100,8 +100,7 @@ export default defineComponent({
|
|||||||
const updateShow = (show: boolean) => emit('update:show', show);
|
const updateShow = (show: boolean) => emit('update:show', show);
|
||||||
|
|
||||||
const emitClose = () => {
|
const emitClose = () => {
|
||||||
callInterceptor({
|
callInterceptor(props.beforeClose, {
|
||||||
interceptor: props.beforeClose,
|
|
||||||
args: [state.active],
|
args: [state.active],
|
||||||
done: () => updateShow(false),
|
done: () => updateShow(false),
|
||||||
});
|
});
|
||||||
|
@ -113,8 +113,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
const close = () => {
|
const close = () => {
|
||||||
if (opened) {
|
if (opened) {
|
||||||
callInterceptor({
|
callInterceptor(props.beforeClose, {
|
||||||
interceptor: props.beforeClose,
|
|
||||||
done() {
|
done() {
|
||||||
opened = false;
|
opened = false;
|
||||||
emit('close');
|
emit('close');
|
||||||
|
@ -128,9 +128,8 @@ export default defineComponent({
|
|||||||
|
|
||||||
const setValue = (value: string | number) => {
|
const setValue = (value: string | number) => {
|
||||||
if (props.beforeChange) {
|
if (props.beforeChange) {
|
||||||
callInterceptor({
|
callInterceptor(props.beforeChange, {
|
||||||
args: [value],
|
args: [value],
|
||||||
interceptor: props.beforeChange,
|
|
||||||
done() {
|
done() {
|
||||||
current.value = value;
|
current.value = value;
|
||||||
},
|
},
|
||||||
|
@ -162,8 +162,7 @@ export default defineComponent({
|
|||||||
emit('click', position);
|
emit('click', position);
|
||||||
|
|
||||||
if (opened && !lockClick) {
|
if (opened && !lockClick) {
|
||||||
callInterceptor({
|
callInterceptor(props.beforeClose, {
|
||||||
interceptor: props.beforeClose,
|
|
||||||
args: [
|
args: [
|
||||||
{
|
{
|
||||||
name: props.name,
|
name: props.name,
|
||||||
|
@ -83,8 +83,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
const setActive = (active: number | string) => {
|
const setActive = (active: number | string) => {
|
||||||
if (active !== props.modelValue) {
|
if (active !== props.modelValue) {
|
||||||
callInterceptor({
|
callInterceptor(props.beforeChange, {
|
||||||
interceptor: props.beforeChange,
|
|
||||||
args: [active],
|
args: [active],
|
||||||
done() {
|
done() {
|
||||||
emit('update:modelValue', active);
|
emit('update:modelValue', active);
|
||||||
|
@ -307,8 +307,7 @@ export default defineComponent({
|
|||||||
// should be removed in next major version
|
// should be removed in next major version
|
||||||
emit('disabled', name, title);
|
emit('disabled', name, title);
|
||||||
} else {
|
} else {
|
||||||
callInterceptor({
|
callInterceptor(props.beforeChange, {
|
||||||
interceptor: props.beforeChange,
|
|
||||||
args: [name],
|
args: [name],
|
||||||
done: () => {
|
done: () => {
|
||||||
setCurrentIndex(index);
|
setCurrentIndex(index);
|
||||||
|
@ -60,8 +60,7 @@ export default defineComponent({
|
|||||||
const onDelete = (event: MouseEvent) => {
|
const onDelete = (event: MouseEvent) => {
|
||||||
const { name, item, index, beforeDelete } = props;
|
const { name, item, index, beforeDelete } = props;
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
callInterceptor({
|
callInterceptor(beforeDelete, {
|
||||||
interceptor: beforeDelete,
|
|
||||||
args: [item, { name, index }],
|
args: [item, { name, index }],
|
||||||
done: () => emit('delete'),
|
done: () => emit('delete'),
|
||||||
});
|
});
|
||||||
|
@ -3,17 +3,21 @@ import { isPromise } from './validate';
|
|||||||
|
|
||||||
export type Interceptor = (...args: any[]) => Promise<boolean> | boolean;
|
export type Interceptor = (...args: any[]) => Promise<boolean> | boolean;
|
||||||
|
|
||||||
export function callInterceptor(options: {
|
export function callInterceptor(
|
||||||
interceptor?: Interceptor;
|
interceptor: Interceptor | undefined,
|
||||||
args?: any[];
|
{
|
||||||
done: () => void;
|
args = [],
|
||||||
canceled?: () => void;
|
done,
|
||||||
}) {
|
canceled,
|
||||||
const { interceptor, args, done, canceled } = options;
|
}: {
|
||||||
|
args?: any[];
|
||||||
|
done: () => void;
|
||||||
|
canceled?: () => void;
|
||||||
|
}
|
||||||
|
) {
|
||||||
if (interceptor) {
|
if (interceptor) {
|
||||||
// eslint-disable-next-line prefer-spread
|
// eslint-disable-next-line prefer-spread
|
||||||
const returnVal = interceptor.apply(null, args || []);
|
const returnVal = interceptor.apply(null, args);
|
||||||
|
|
||||||
if (isPromise(returnVal)) {
|
if (isPromise(returnVal)) {
|
||||||
returnVal
|
returnVal
|
||||||
|
@ -3,50 +3,47 @@ import { callInterceptor } from '../interceptor';
|
|||||||
|
|
||||||
test('callInterceptor', async () => {
|
test('callInterceptor', async () => {
|
||||||
const done = jest.fn();
|
const done = jest.fn();
|
||||||
callInterceptor({ done });
|
callInterceptor(undefined, { done });
|
||||||
expect(done).toHaveBeenCalledTimes(1);
|
expect(done).toHaveBeenCalledTimes(1);
|
||||||
|
|
||||||
callInterceptor({
|
callInterceptor(() => false, {
|
||||||
interceptor: () => false,
|
|
||||||
done,
|
done,
|
||||||
});
|
});
|
||||||
expect(done).toHaveBeenCalledTimes(1);
|
expect(done).toHaveBeenCalledTimes(1);
|
||||||
|
|
||||||
callInterceptor({
|
callInterceptor(() => true, {
|
||||||
interceptor: () => true,
|
|
||||||
done,
|
done,
|
||||||
});
|
});
|
||||||
expect(done).toHaveBeenCalledTimes(2);
|
expect(done).toHaveBeenCalledTimes(2);
|
||||||
|
|
||||||
callInterceptor({
|
callInterceptor(() => Promise.resolve(false), {
|
||||||
interceptor: () => Promise.resolve(false),
|
|
||||||
done,
|
done,
|
||||||
});
|
});
|
||||||
await later();
|
await later();
|
||||||
expect(done).toHaveBeenCalledTimes(2);
|
expect(done).toHaveBeenCalledTimes(2);
|
||||||
|
|
||||||
callInterceptor({
|
callInterceptor(() => Promise.resolve(true), {
|
||||||
interceptor: () => Promise.resolve(true),
|
|
||||||
done,
|
done,
|
||||||
});
|
});
|
||||||
await later();
|
await later();
|
||||||
expect(done).toHaveBeenCalledTimes(3);
|
expect(done).toHaveBeenCalledTimes(3);
|
||||||
|
|
||||||
callInterceptor({
|
callInterceptor(() => Promise.reject(), {
|
||||||
interceptor: () => Promise.reject(),
|
|
||||||
done,
|
done,
|
||||||
});
|
});
|
||||||
await later();
|
await later();
|
||||||
expect(done).toHaveBeenCalledTimes(3);
|
expect(done).toHaveBeenCalledTimes(3);
|
||||||
|
|
||||||
callInterceptor({
|
callInterceptor(
|
||||||
interceptor: (...args) => {
|
(...args) => {
|
||||||
expect(args).toEqual(['foo']);
|
expect(args).toEqual(['foo']);
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
args: ['foo'],
|
{
|
||||||
done,
|
args: ['foo'],
|
||||||
});
|
done,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
expect(done).toHaveBeenCalledTimes(3);
|
expect(done).toHaveBeenCalledTimes(3);
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user