mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
perf: add more prop type utils (#9641)
* perf: add more prop type utils * fix: slider type * chore: uod
This commit is contained in:
parent
78bcd368ae
commit
00bb1d2f1f
@ -16,6 +16,7 @@ import {
|
|||||||
isMobile,
|
isMobile,
|
||||||
truthProp,
|
truthProp,
|
||||||
numericProp,
|
numericProp,
|
||||||
|
makeArrayProp,
|
||||||
makeNumericProp,
|
makeNumericProp,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
@ -75,6 +76,7 @@ const props = {
|
|||||||
showSearchResult: Boolean,
|
showSearchResult: Boolean,
|
||||||
detailRows: makeNumericProp(1),
|
detailRows: makeNumericProp(1),
|
||||||
detailMaxlength: makeNumericProp(200),
|
detailMaxlength: makeNumericProp(200),
|
||||||
|
areaColumnsPlaceholder: makeArrayProp<string>(),
|
||||||
addressInfo: {
|
addressInfo: {
|
||||||
type: Object as PropType<Partial<AddressEditInfo>>,
|
type: Object as PropType<Partial<AddressEditInfo>>,
|
||||||
default: () => extend({}, DEFAULT_DATA),
|
default: () => extend({}, DEFAULT_DATA),
|
||||||
@ -87,10 +89,6 @@ const props = {
|
|||||||
type: Function as PropType<(val: string) => boolean>,
|
type: Function as PropType<(val: string) => boolean>,
|
||||||
default: isPostal,
|
default: isPostal,
|
||||||
},
|
},
|
||||||
areaColumnsPlaceholder: {
|
|
||||||
type: Array as PropType<string[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export type AddressEditProps = ExtractPropTypes<typeof props>;
|
export type AddressEditProps = ExtractPropTypes<typeof props>;
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
import { PropType, defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import { truthProp, numericProp, createNamespace } from '../utils';
|
import {
|
||||||
|
truthProp,
|
||||||
|
numericProp,
|
||||||
|
makeArrayProp,
|
||||||
|
createNamespace,
|
||||||
|
} from '../utils';
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import { Button } from '../button';
|
import { Button } from '../button';
|
||||||
@ -14,19 +19,13 @@ export default defineComponent({
|
|||||||
name,
|
name,
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
|
list: makeArrayProp<AddressListAddress>(),
|
||||||
modelValue: numericProp,
|
modelValue: numericProp,
|
||||||
switchable: truthProp,
|
switchable: truthProp,
|
||||||
disabledText: String,
|
disabledText: String,
|
||||||
|
disabledList: makeArrayProp<AddressListAddress>(),
|
||||||
addButtonText: String,
|
addButtonText: String,
|
||||||
defaultTagText: String,
|
defaultTagText: String,
|
||||||
list: {
|
|
||||||
type: Array as PropType<AddressListAddress[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
disabledList: {
|
|
||||||
type: Array as PropType<AddressListAddress[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: [
|
emits: [
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { PropType, defineComponent } from 'vue';
|
import { PropType, defineComponent } from 'vue';
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import { createNamespace, extend } from '../utils';
|
import { createNamespace, extend, makeRequiredProp } from '../utils';
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import { Tag } from '../tag';
|
import { Tag } from '../tag';
|
||||||
@ -23,13 +23,10 @@ export default defineComponent({
|
|||||||
name,
|
name,
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
|
address: makeRequiredProp<PropType<AddressListAddress>>(Object),
|
||||||
disabled: Boolean,
|
disabled: Boolean,
|
||||||
switchable: Boolean,
|
switchable: Boolean,
|
||||||
defaultTagText: String,
|
defaultTagText: String,
|
||||||
address: {
|
|
||||||
type: Object as PropType<AddressListAddress>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['edit', 'click', 'select'],
|
emits: ['edit', 'click', 'select'],
|
||||||
|
@ -12,7 +12,13 @@ import {
|
|||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import { deepClone } from '../utils/deep-clone';
|
import { deepClone } from '../utils/deep-clone';
|
||||||
import { pick, createNamespace, extend, makeNumericProp } from '../utils';
|
import {
|
||||||
|
pick,
|
||||||
|
extend,
|
||||||
|
makeArrayProp,
|
||||||
|
makeNumericProp,
|
||||||
|
createNamespace,
|
||||||
|
} from '../utils';
|
||||||
import { pickerProps } from '../picker/Picker';
|
import { pickerProps } from '../picker/Picker';
|
||||||
|
|
||||||
// Composables
|
// Composables
|
||||||
@ -51,6 +57,7 @@ const isOverseaCode = (code: string) => code[0] === '9';
|
|||||||
const props = extend({}, pickerProps, {
|
const props = extend({}, pickerProps, {
|
||||||
value: String,
|
value: String,
|
||||||
columnsNum: makeNumericProp(3),
|
columnsNum: makeNumericProp(3),
|
||||||
|
columnsPlaceholder: makeArrayProp<string>(),
|
||||||
areaList: {
|
areaList: {
|
||||||
type: Object as PropType<AreaList>,
|
type: Object as PropType<AreaList>,
|
||||||
default: () => ({}),
|
default: () => ({}),
|
||||||
@ -59,10 +66,6 @@ const props = extend({}, pickerProps, {
|
|||||||
type: Function as PropType<(code: string) => boolean>,
|
type: Function as PropType<(code: string) => boolean>,
|
||||||
default: isOverseaCode,
|
default: isOverseaCode,
|
||||||
},
|
},
|
||||||
columnsPlaceholder: {
|
|
||||||
type: Array as PropType<string[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export type AreaProps = ExtractPropTypes<typeof props>;
|
export type AreaProps = ExtractPropTypes<typeof props>;
|
||||||
|
@ -76,6 +76,7 @@ const props = {
|
|||||||
allowSameDay: Boolean,
|
allowSameDay: Boolean,
|
||||||
showSubtitle: truthProp,
|
showSubtitle: truthProp,
|
||||||
closeOnPopstate: truthProp,
|
closeOnPopstate: truthProp,
|
||||||
|
showRangePrompt: truthProp,
|
||||||
confirmDisabledText: String,
|
confirmDisabledText: String,
|
||||||
closeOnClickOverlay: truthProp,
|
closeOnClickOverlay: truthProp,
|
||||||
safeAreaInsetBottom: truthProp,
|
safeAreaInsetBottom: truthProp,
|
||||||
@ -97,10 +98,6 @@ const props = {
|
|||||||
default: 0,
|
default: 0,
|
||||||
validator: (val: number) => val >= 0 && val <= 6,
|
validator: (val: number) => val >= 0 && val <= 6,
|
||||||
},
|
},
|
||||||
showRangePrompt: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export type CalendarProps = ExtractPropTypes<typeof props>;
|
export type CalendarProps = ExtractPropTypes<typeof props>;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { computed, CSSProperties, PropType, defineComponent } from 'vue';
|
import { computed, CSSProperties, PropType, defineComponent } from 'vue';
|
||||||
import { createNamespace } from '../utils';
|
import { makeNumberProp, createNamespace, makeRequiredProp } from '../utils';
|
||||||
import { bem } from './utils';
|
import { bem } from './utils';
|
||||||
import type { CalendarDayItem } from './types';
|
import type { CalendarDayItem } from './types';
|
||||||
|
|
||||||
@ -9,17 +9,11 @@ export default defineComponent({
|
|||||||
name,
|
name,
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
|
item: makeRequiredProp<PropType<CalendarDayItem>>(Object),
|
||||||
color: String,
|
color: String,
|
||||||
index: Number,
|
index: Number,
|
||||||
|
offset: makeNumberProp(0),
|
||||||
rowHeight: String,
|
rowHeight: String,
|
||||||
offset: {
|
|
||||||
type: Number,
|
|
||||||
default: 0,
|
|
||||||
},
|
|
||||||
item: {
|
|
||||||
type: Object as PropType<CalendarDayItem>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['click'],
|
emits: ['click'],
|
||||||
|
@ -13,6 +13,7 @@ import {
|
|||||||
numericProp,
|
numericProp,
|
||||||
setScrollTop,
|
setScrollTop,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
|
makeRequiredProp,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
import { getMonthEndDay } from '../datetime-picker/utils';
|
import { getMonthEndDay } from '../datetime-picker/utils';
|
||||||
import {
|
import {
|
||||||
@ -38,8 +39,11 @@ import type { CalendarType, CalendarDayItem, CalendarDayType } from './types';
|
|||||||
const [name] = createNamespace('calendar-month');
|
const [name] = createNamespace('calendar-month');
|
||||||
|
|
||||||
const props = {
|
const props = {
|
||||||
|
date: makeRequiredProp(Date),
|
||||||
type: String as PropType<CalendarType>,
|
type: String as PropType<CalendarType>,
|
||||||
color: String,
|
color: String,
|
||||||
|
minDate: makeRequiredProp(Date),
|
||||||
|
maxDate: makeRequiredProp(Date),
|
||||||
showMark: Boolean,
|
showMark: Boolean,
|
||||||
rowHeight: numericProp,
|
rowHeight: numericProp,
|
||||||
formatter: Function as PropType<(item: CalendarDayItem) => CalendarDayItem>,
|
formatter: Function as PropType<(item: CalendarDayItem) => CalendarDayItem>,
|
||||||
@ -49,18 +53,6 @@ const props = {
|
|||||||
showSubtitle: Boolean,
|
showSubtitle: Boolean,
|
||||||
showMonthTitle: Boolean,
|
showMonthTitle: Boolean,
|
||||||
firstDayOfWeek: Number,
|
firstDayOfWeek: Number,
|
||||||
date: {
|
|
||||||
type: Date,
|
|
||||||
required: true as const,
|
|
||||||
},
|
|
||||||
minDate: {
|
|
||||||
type: Date,
|
|
||||||
required: true as const,
|
|
||||||
},
|
|
||||||
maxDate: {
|
|
||||||
type: Date,
|
|
||||||
required: true as const,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export type CalendarMonthProps = ExtractPropTypes<typeof props>;
|
export type CalendarMonthProps = ExtractPropTypes<typeof props>;
|
||||||
|
@ -3,6 +3,7 @@ import {
|
|||||||
extend,
|
extend,
|
||||||
truthProp,
|
truthProp,
|
||||||
numericProp,
|
numericProp,
|
||||||
|
makeArrayProp,
|
||||||
makeStringProp,
|
makeStringProp,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
@ -25,7 +26,7 @@ export type CascaderOption = {
|
|||||||
children?: CascaderOption[];
|
children?: CascaderOption[];
|
||||||
className?: unknown;
|
className?: unknown;
|
||||||
// for custom filed names
|
// for custom filed names
|
||||||
[key: string]: any;
|
[key: PropertyKey]: any;
|
||||||
};
|
};
|
||||||
|
|
||||||
type CascaderTab = {
|
type CascaderTab = {
|
||||||
@ -44,6 +45,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
props: {
|
props: {
|
||||||
title: String,
|
title: String,
|
||||||
|
options: makeArrayProp<CascaderOption>(),
|
||||||
closeable: truthProp,
|
closeable: truthProp,
|
||||||
swipeable: truthProp,
|
swipeable: truthProp,
|
||||||
closeIcon: makeStringProp('cross'),
|
closeIcon: makeStringProp('cross'),
|
||||||
@ -51,10 +53,6 @@ export default defineComponent({
|
|||||||
fieldNames: Object as PropType<CascaderFieldNames>,
|
fieldNames: Object as PropType<CascaderFieldNames>,
|
||||||
placeholder: String,
|
placeholder: String,
|
||||||
activeColor: String,
|
activeColor: String,
|
||||||
options: {
|
|
||||||
type: Array as PropType<CascaderOption[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['close', 'change', 'finish', 'update:modelValue', 'click-tab'],
|
emits: ['close', 'change', 'finish', 'update:modelValue', 'click-tab'],
|
||||||
|
@ -7,7 +7,7 @@ import {
|
|||||||
} from 'vue';
|
} from 'vue';
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import { numericProp, createNamespace } from '../utils';
|
import { numericProp, createNamespace, makeArrayProp } from '../utils';
|
||||||
|
|
||||||
// Composables
|
// Composables
|
||||||
import { useChildren, useCustomFieldValue } from '@vant/use';
|
import { useChildren, useCustomFieldValue } from '@vant/use';
|
||||||
@ -26,13 +26,10 @@ const [name, bem] = createNamespace('checkbox-group');
|
|||||||
const props = {
|
const props = {
|
||||||
max: numericProp,
|
max: numericProp,
|
||||||
disabled: Boolean,
|
disabled: Boolean,
|
||||||
direction: String as PropType<CheckerDirection>,
|
|
||||||
iconSize: numericProp,
|
iconSize: numericProp,
|
||||||
|
direction: String as PropType<CheckerDirection>,
|
||||||
|
modelValue: makeArrayProp<unknown>(),
|
||||||
checkedColor: String,
|
checkedColor: String,
|
||||||
modelValue: {
|
|
||||||
type: Array as PropType<unknown[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export type CheckboxGroupProps = ExtractPropTypes<typeof props>;
|
export type CheckboxGroupProps = ExtractPropTypes<typeof props>;
|
||||||
|
@ -6,6 +6,7 @@ import {
|
|||||||
numericProp,
|
numericProp,
|
||||||
unknownProp,
|
unknownProp,
|
||||||
makeStringProp,
|
makeStringProp,
|
||||||
|
makeRequiredProp,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
import { Icon } from '../icon';
|
import { Icon } from '../icon';
|
||||||
|
|
||||||
@ -34,14 +35,11 @@ export const checkerProps = {
|
|||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
props: extend({}, checkerProps, {
|
props: extend({}, checkerProps, {
|
||||||
|
bem: makeRequiredProp(Function),
|
||||||
role: String,
|
role: String,
|
||||||
parent: Object as PropType<CheckerParent | null>,
|
parent: Object as PropType<CheckerParent | null>,
|
||||||
checked: Boolean,
|
checked: Boolean,
|
||||||
bindGroup: truthProp,
|
bindGroup: truthProp,
|
||||||
bem: {
|
|
||||||
type: Function,
|
|
||||||
required: true as const,
|
|
||||||
},
|
|
||||||
}),
|
}),
|
||||||
|
|
||||||
emits: ['click', 'toggle'],
|
emits: ['click', 'toggle'],
|
||||||
|
@ -6,6 +6,7 @@ import {
|
|||||||
numericProp,
|
numericProp,
|
||||||
getSizeStyle,
|
getSizeStyle,
|
||||||
makeStringProp,
|
makeStringProp,
|
||||||
|
makeNumberProp,
|
||||||
makeNumericProp,
|
makeNumericProp,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
@ -37,13 +38,10 @@ export default defineComponent({
|
|||||||
color: [String, Object] as PropType<string | Record<string, string>>,
|
color: [String, Object] as PropType<string | Record<string, string>>,
|
||||||
clockwise: truthProp,
|
clockwise: truthProp,
|
||||||
layerColor: String,
|
layerColor: String,
|
||||||
|
currentRate: makeNumberProp(0),
|
||||||
strokeWidth: makeNumericProp(40),
|
strokeWidth: makeNumericProp(40),
|
||||||
strokeLinecap: String as PropType<CanvasLineCap>,
|
strokeLinecap: String as PropType<CanvasLineCap>,
|
||||||
startPosition: makeStringProp<CircleStartPosition>('top'),
|
startPosition: makeStringProp<CircleStartPosition>('top'),
|
||||||
currentRate: {
|
|
||||||
type: Number,
|
|
||||||
default: 0,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['update:currentRate'],
|
emits: ['update:currentRate'],
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import { PropType, defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import {
|
import {
|
||||||
isDef,
|
isDef,
|
||||||
truthProp,
|
truthProp,
|
||||||
|
makeArrayProp,
|
||||||
makeStringProp,
|
makeStringProp,
|
||||||
makeNumericProp,
|
makeNumericProp,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
@ -46,12 +47,9 @@ export default defineComponent({
|
|||||||
title: String,
|
title: String,
|
||||||
border: truthProp,
|
border: truthProp,
|
||||||
editable: truthProp,
|
editable: truthProp,
|
||||||
|
coupons: makeArrayProp<CouponInfo>(),
|
||||||
currency: makeStringProp('¥'),
|
currency: makeStringProp('¥'),
|
||||||
chosenCoupon: makeNumericProp(-1),
|
chosenCoupon: makeNumericProp(-1),
|
||||||
coupons: {
|
|
||||||
type: Array as PropType<CouponInfo[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
setup(props) {
|
setup(props) {
|
||||||
|
@ -3,13 +3,18 @@ import {
|
|||||||
computed,
|
computed,
|
||||||
nextTick,
|
nextTick,
|
||||||
reactive,
|
reactive,
|
||||||
PropType,
|
|
||||||
onMounted,
|
onMounted,
|
||||||
defineComponent,
|
defineComponent,
|
||||||
} from 'vue';
|
} from 'vue';
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import { truthProp, makeStringProp, createNamespace } from '../utils';
|
import {
|
||||||
|
truthProp,
|
||||||
|
makeArrayProp,
|
||||||
|
makeStringProp,
|
||||||
|
makeNumberProp,
|
||||||
|
createNamespace,
|
||||||
|
} from '../utils';
|
||||||
|
|
||||||
// Composables
|
// Composables
|
||||||
import { useRefs } from '../composables/use-refs';
|
import { useRefs } from '../composables/use-refs';
|
||||||
@ -29,38 +34,23 @@ export default defineComponent({
|
|||||||
|
|
||||||
props: {
|
props: {
|
||||||
code: makeStringProp(''),
|
code: makeStringProp(''),
|
||||||
|
coupons: makeArrayProp<CouponInfo>(),
|
||||||
currency: makeStringProp('¥'),
|
currency: makeStringProp('¥'),
|
||||||
showCount: truthProp,
|
showCount: truthProp,
|
||||||
emptyImage: makeStringProp(EMPTY_IMAGE),
|
emptyImage: makeStringProp(EMPTY_IMAGE),
|
||||||
|
chosenCoupon: makeNumberProp(-1),
|
||||||
enabledTitle: String,
|
enabledTitle: String,
|
||||||
disabledTitle: String,
|
disabledTitle: String,
|
||||||
|
disabledCoupons: makeArrayProp<CouponInfo>(),
|
||||||
showExchangeBar: truthProp,
|
showExchangeBar: truthProp,
|
||||||
showCloseButton: truthProp,
|
showCloseButton: truthProp,
|
||||||
closeButtonText: String,
|
closeButtonText: String,
|
||||||
inputPlaceholder: String,
|
inputPlaceholder: String,
|
||||||
|
exchangeMinLength: makeNumberProp(1),
|
||||||
exchangeButtonText: String,
|
exchangeButtonText: String,
|
||||||
|
displayedCouponIndex: makeNumberProp(-1),
|
||||||
exchangeButtonLoading: Boolean,
|
exchangeButtonLoading: Boolean,
|
||||||
exchangeButtonDisabled: Boolean,
|
exchangeButtonDisabled: Boolean,
|
||||||
exchangeMinLength: {
|
|
||||||
type: Number,
|
|
||||||
default: 1,
|
|
||||||
},
|
|
||||||
chosenCoupon: {
|
|
||||||
type: Number,
|
|
||||||
default: -1,
|
|
||||||
},
|
|
||||||
coupons: {
|
|
||||||
type: Array as PropType<CouponInfo[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
disabledCoupons: {
|
|
||||||
type: Array as PropType<CouponInfo[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
displayedCouponIndex: {
|
|
||||||
type: Number,
|
|
||||||
default: -1,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['change', 'exchange', 'update:code'],
|
emits: ['change', 'exchange', 'update:code'],
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
import { computed, PropType, defineComponent } from 'vue';
|
import { computed, PropType, defineComponent } from 'vue';
|
||||||
import { padZero, makeStringProp, createNamespace } from '../utils';
|
import {
|
||||||
|
padZero,
|
||||||
|
makeStringProp,
|
||||||
|
createNamespace,
|
||||||
|
makeRequiredProp,
|
||||||
|
} from '../utils';
|
||||||
import { Checkbox } from '../checkbox';
|
import { Checkbox } from '../checkbox';
|
||||||
|
|
||||||
export type CouponInfo = {
|
export type CouponInfo = {
|
||||||
@ -38,12 +43,9 @@ export default defineComponent({
|
|||||||
|
|
||||||
props: {
|
props: {
|
||||||
chosen: Boolean,
|
chosen: Boolean,
|
||||||
|
coupon: makeRequiredProp<PropType<CouponInfo>>(Object),
|
||||||
disabled: Boolean,
|
disabled: Boolean,
|
||||||
currency: makeStringProp('¥'),
|
currency: makeStringProp('¥'),
|
||||||
coupon: {
|
|
||||||
type: Object as PropType<CouponInfo>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
setup(props) {
|
setup(props) {
|
||||||
|
@ -14,6 +14,7 @@ import {
|
|||||||
unknownProp,
|
unknownProp,
|
||||||
getZIndexStyle,
|
getZIndexStyle,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
|
makeArrayProp,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
import { DROPDOWN_KEY } from '../dropdown-menu/DropdownMenu';
|
import { DROPDOWN_KEY } from '../dropdown-menu/DropdownMenu';
|
||||||
|
|
||||||
@ -33,15 +34,12 @@ const [name, bem] = createNamespace('dropdown-item');
|
|||||||
|
|
||||||
const props = {
|
const props = {
|
||||||
title: String,
|
title: String,
|
||||||
|
options: makeArrayProp<DropdownItemOption>(),
|
||||||
disabled: Boolean,
|
disabled: Boolean,
|
||||||
teleport: [String, Object] as PropType<TeleportProps['to']>,
|
teleport: [String, Object] as PropType<TeleportProps['to']>,
|
||||||
lazyRender: truthProp,
|
lazyRender: truthProp,
|
||||||
modelValue: unknownProp,
|
modelValue: unknownProp,
|
||||||
titleClass: unknownProp,
|
titleClass: unknownProp,
|
||||||
options: {
|
|
||||||
type: Array as PropType<DropdownItemOption[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export type DropdownItemProps = ExtractPropTypes<typeof props>;
|
export type DropdownItemProps = ExtractPropTypes<typeof props>;
|
||||||
|
@ -16,6 +16,7 @@ import {
|
|||||||
truthProp,
|
truthProp,
|
||||||
unknownProp,
|
unknownProp,
|
||||||
Interceptor,
|
Interceptor,
|
||||||
|
makeArrayProp,
|
||||||
makeStringProp,
|
makeStringProp,
|
||||||
makeNumericProp,
|
makeNumericProp,
|
||||||
callInterceptor,
|
callInterceptor,
|
||||||
@ -40,6 +41,7 @@ const [name, bem] = createNamespace('image-preview');
|
|||||||
const props = {
|
const props = {
|
||||||
show: Boolean,
|
show: Boolean,
|
||||||
loop: truthProp,
|
loop: truthProp,
|
||||||
|
images: makeArrayProp<string>(),
|
||||||
minZoom: makeNumericProp(1 / 3),
|
minZoom: makeNumericProp(1 / 3),
|
||||||
maxZoom: makeNumericProp(3),
|
maxZoom: makeNumericProp(3),
|
||||||
overlay: truthProp,
|
overlay: truthProp,
|
||||||
@ -55,10 +57,6 @@ const props = {
|
|||||||
showIndicators: Boolean,
|
showIndicators: Boolean,
|
||||||
closeOnPopstate: truthProp,
|
closeOnPopstate: truthProp,
|
||||||
closeIconPosition: makeStringProp<PopupCloseIconPosition>('top-right'),
|
closeIconPosition: makeStringProp<PopupCloseIconPosition>('top-right'),
|
||||||
images: {
|
|
||||||
type: Array as PropType<string[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export type ImagePreviewProps = ExtractPropTypes<typeof props>;
|
export type ImagePreviewProps = ExtractPropTypes<typeof props>;
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
import { watch, computed, reactive, CSSProperties, defineComponent } from 'vue';
|
import { watch, computed, reactive, CSSProperties, defineComponent } from 'vue';
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import { clamp, preventDefault, numericProp, createNamespace } from '../utils';
|
import {
|
||||||
|
clamp,
|
||||||
|
numericProp,
|
||||||
|
preventDefault,
|
||||||
|
createNamespace,
|
||||||
|
makeRequiredProp,
|
||||||
|
} from '../utils';
|
||||||
|
|
||||||
// Composables
|
// Composables
|
||||||
import { useTouch } from '../composables/use-touch';
|
import { useTouch } from '../composables/use-touch';
|
||||||
@ -24,22 +30,10 @@ export default defineComponent({
|
|||||||
src: String,
|
src: String,
|
||||||
show: Boolean,
|
show: Boolean,
|
||||||
active: Number,
|
active: Number,
|
||||||
minZoom: {
|
minZoom: makeRequiredProp(numericProp),
|
||||||
type: numericProp,
|
maxZoom: makeRequiredProp(numericProp),
|
||||||
required: true,
|
rootWidth: makeRequiredProp(Number),
|
||||||
},
|
rootHeight: makeRequiredProp(Number),
|
||||||
maxZoom: {
|
|
||||||
type: numericProp,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
rootWidth: {
|
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
rootHeight: {
|
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['scale', 'close'],
|
emits: ['scale', 'close'],
|
||||||
|
@ -21,6 +21,7 @@ import {
|
|||||||
numericProp,
|
numericProp,
|
||||||
getScrollTop,
|
getScrollTop,
|
||||||
preventDefault,
|
preventDefault,
|
||||||
|
makeNumberProp,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
getRootScrollTop,
|
getRootScrollTop,
|
||||||
setRootScrollTop,
|
setRootScrollTop,
|
||||||
@ -55,10 +56,7 @@ const props = {
|
|||||||
zIndex: numericProp,
|
zIndex: numericProp,
|
||||||
teleport: [String, Object] as PropType<TeleportProps['to']>,
|
teleport: [String, Object] as PropType<TeleportProps['to']>,
|
||||||
highlightColor: String,
|
highlightColor: String,
|
||||||
stickyOffsetTop: {
|
stickyOffsetTop: makeNumberProp(0),
|
||||||
type: Number,
|
|
||||||
default: 0,
|
|
||||||
},
|
|
||||||
indexList: {
|
indexList: {
|
||||||
type: Array as PropType<string[]>,
|
type: Array as PropType<string[]>,
|
||||||
default: genAlphabet,
|
default: genAlphabet,
|
||||||
|
@ -2,6 +2,7 @@ import { computed, watch, defineComponent } from 'vue';
|
|||||||
import {
|
import {
|
||||||
BORDER,
|
BORDER,
|
||||||
makeStringProp,
|
makeStringProp,
|
||||||
|
makeNumberProp,
|
||||||
makeNumericProp,
|
makeNumericProp,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
@ -30,14 +31,11 @@ export default defineComponent({
|
|||||||
prevText: String,
|
prevText: String,
|
||||||
nextText: String,
|
nextText: String,
|
||||||
pageCount: makeNumericProp(0),
|
pageCount: makeNumericProp(0),
|
||||||
|
modelValue: makeNumberProp(0),
|
||||||
totalItems: makeNumericProp(0),
|
totalItems: makeNumericProp(0),
|
||||||
showPageSize: makeNumericProp(5),
|
showPageSize: makeNumericProp(5),
|
||||||
itemsPerPage: makeNumericProp(10),
|
itemsPerPage: makeNumericProp(10),
|
||||||
forceEllipses: Boolean,
|
forceEllipses: Boolean,
|
||||||
modelValue: {
|
|
||||||
type: Number,
|
|
||||||
default: 0,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['change', 'update:modelValue'],
|
emits: ['change', 'update:modelValue'],
|
||||||
|
@ -12,10 +12,11 @@ import {
|
|||||||
extend,
|
extend,
|
||||||
unitToPx,
|
unitToPx,
|
||||||
truthProp,
|
truthProp,
|
||||||
|
makeArrayProp,
|
||||||
preventDefault,
|
preventDefault,
|
||||||
makeStringProp,
|
makeStringProp,
|
||||||
createNamespace,
|
|
||||||
makeNumericProp,
|
makeNumericProp,
|
||||||
|
createNamespace,
|
||||||
BORDER_UNSET_TOP_BOTTOM,
|
BORDER_UNSET_TOP_BOTTOM,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
|
|
||||||
@ -58,16 +59,13 @@ export default defineComponent({
|
|||||||
name,
|
name,
|
||||||
|
|
||||||
props: extend({}, pickerProps, {
|
props: extend({}, pickerProps, {
|
||||||
|
columns: makeArrayProp<PickerOption | PickerColumn>(),
|
||||||
// @deprecated
|
// @deprecated
|
||||||
// should be removed in next major version
|
// should be removed in next major version
|
||||||
valueKey: String,
|
valueKey: String,
|
||||||
defaultIndex: makeNumericProp(0),
|
defaultIndex: makeNumericProp(0),
|
||||||
toolbarPosition: makeStringProp<PickerToolbarPosition>('top'),
|
toolbarPosition: makeStringProp<PickerToolbarPosition>('top'),
|
||||||
columnsFieldNames: Object as PropType<PickerFieldNames>,
|
columnsFieldNames: Object as PropType<PickerFieldNames>,
|
||||||
columns: {
|
|
||||||
type: Array as PropType<PickerOption[] | PickerColumn[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
}),
|
}),
|
||||||
|
|
||||||
emits: ['confirm', 'cancel', 'change'],
|
emits: ['confirm', 'cancel', 'change'],
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { ref, watch, reactive, PropType, defineComponent } from 'vue';
|
import { ref, watch, reactive, defineComponent } from 'vue';
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import { deepClone } from '../utils/deep-clone';
|
import { deepClone } from '../utils/deep-clone';
|
||||||
@ -7,8 +7,11 @@ import {
|
|||||||
isObject,
|
isObject,
|
||||||
unknownProp,
|
unknownProp,
|
||||||
numericProp,
|
numericProp,
|
||||||
|
makeArrayProp,
|
||||||
|
makeNumberProp,
|
||||||
preventDefault,
|
preventDefault,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
|
makeRequiredProp,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
|
|
||||||
// Composables
|
// Composables
|
||||||
@ -44,33 +47,15 @@ export default defineComponent({
|
|||||||
name,
|
name,
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
|
textKey: makeRequiredProp(String),
|
||||||
readonly: Boolean,
|
readonly: Boolean,
|
||||||
allowHtml: Boolean,
|
allowHtml: Boolean,
|
||||||
className: unknownProp,
|
className: unknownProp,
|
||||||
textKey: {
|
itemHeight: makeRequiredProp(Number),
|
||||||
type: String,
|
defaultIndex: makeNumberProp(0),
|
||||||
required: true,
|
swipeDuration: makeRequiredProp(numericProp),
|
||||||
},
|
initialOptions: makeArrayProp<PickerOption>(),
|
||||||
itemHeight: {
|
visibleItemCount: makeRequiredProp(numericProp),
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
swipeDuration: {
|
|
||||||
type: numericProp,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
visibleItemCount: {
|
|
||||||
type: numericProp,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
defaultIndex: {
|
|
||||||
type: Number,
|
|
||||||
default: 0,
|
|
||||||
},
|
|
||||||
initialOptions: {
|
|
||||||
type: Array as PropType<PickerOption[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['change'],
|
emits: ['change'],
|
||||||
|
@ -14,7 +14,7 @@ export type PickerObjectOption = {
|
|||||||
text?: string | number;
|
text?: string | number;
|
||||||
disabled?: boolean;
|
disabled?: boolean;
|
||||||
// for custom filed names
|
// for custom filed names
|
||||||
[key: string]: any;
|
[key: PropertyKey]: any;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type PickerOption = string | number | PickerObjectOption;
|
export type PickerOption = string | number | PickerObjectOption;
|
||||||
@ -25,7 +25,7 @@ export type PickerObjectColumn = {
|
|||||||
className?: unknown;
|
className?: unknown;
|
||||||
defaultIndex?: number;
|
defaultIndex?: number;
|
||||||
// for custom filed names
|
// for custom filed names
|
||||||
[key: string]: any;
|
[key: PropertyKey]: any;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type PickerColumn = PickerOption[] | PickerObjectColumn;
|
export type PickerColumn = PickerOption[] | PickerObjectColumn;
|
||||||
|
@ -22,6 +22,7 @@ import {
|
|||||||
makeStringProp,
|
makeStringProp,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
ComponentInstance,
|
ComponentInstance,
|
||||||
|
makeArrayProp,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
|
|
||||||
// Composables
|
// Composables
|
||||||
@ -75,8 +76,10 @@ export default defineComponent({
|
|||||||
show: Boolean,
|
show: Boolean,
|
||||||
theme: makeStringProp<PopoverTheme>('light'),
|
theme: makeStringProp<PopoverTheme>('light'),
|
||||||
overlay: Boolean,
|
overlay: Boolean,
|
||||||
|
actions: makeArrayProp<PopoverAction>(),
|
||||||
trigger: makeStringProp<PopoverTrigger>('click'),
|
trigger: makeStringProp<PopoverTrigger>('click'),
|
||||||
duration: numericProp,
|
duration: numericProp,
|
||||||
|
showArrow: truthProp,
|
||||||
placement: makeStringProp<PopoverPlacement>('bottom'),
|
placement: makeStringProp<PopoverPlacement>('bottom'),
|
||||||
iconPrefix: String,
|
iconPrefix: String,
|
||||||
overlayClass: unknownProp,
|
overlayClass: unknownProp,
|
||||||
@ -88,18 +91,10 @@ export default defineComponent({
|
|||||||
type: Array as unknown as PropType<[number, number]>,
|
type: Array as unknown as PropType<[number, number]>,
|
||||||
default: () => [0, 8],
|
default: () => [0, 8],
|
||||||
},
|
},
|
||||||
actions: {
|
|
||||||
type: Array as PropType<PopoverAction[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
teleport: {
|
teleport: {
|
||||||
type: [String, Object] as PropType<TeleportProps['to']>,
|
type: [String, Object] as PropType<TeleportProps['to']>,
|
||||||
default: 'body',
|
default: 'body',
|
||||||
},
|
},
|
||||||
showArrow: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['select', 'touchstart', 'update:show'],
|
emits: ['select', 'touchstart', 'update:show'],
|
||||||
|
@ -7,6 +7,7 @@ import {
|
|||||||
numericProp,
|
numericProp,
|
||||||
preventDefault,
|
preventDefault,
|
||||||
makeStringProp,
|
makeStringProp,
|
||||||
|
makeNumberProp,
|
||||||
makeNumericProp,
|
makeNumericProp,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
@ -69,11 +70,8 @@ export default defineComponent({
|
|||||||
voidColor: String,
|
voidColor: String,
|
||||||
touchable: truthProp,
|
touchable: truthProp,
|
||||||
iconPrefix: String,
|
iconPrefix: String,
|
||||||
|
modelValue: makeNumberProp(0),
|
||||||
disabledColor: String,
|
disabledColor: String,
|
||||||
modelValue: {
|
|
||||||
type: Number,
|
|
||||||
default: 0,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['change', 'update:modelValue'],
|
emits: ['change', 'update:modelValue'],
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
import { PropType, defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
import { truthProp, createNamespace, extend, pick } from '../utils';
|
import {
|
||||||
|
pick,
|
||||||
|
extend,
|
||||||
|
truthProp,
|
||||||
|
makeArrayProp,
|
||||||
|
createNamespace,
|
||||||
|
} from '../utils';
|
||||||
import { popupSharedProps, popupSharedPropKeys } from '../popup/shared';
|
import { popupSharedProps, popupSharedPropKeys } from '../popup/shared';
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
@ -47,14 +53,11 @@ export default defineComponent({
|
|||||||
|
|
||||||
props: extend({}, popupSharedProps, {
|
props: extend({}, popupSharedProps, {
|
||||||
title: String,
|
title: String,
|
||||||
|
options: makeArrayProp<ShareSheetOption | ShareSheetOption[]>(),
|
||||||
cancelText: String,
|
cancelText: String,
|
||||||
description: String,
|
description: String,
|
||||||
closeOnPopstate: truthProp,
|
closeOnPopstate: truthProp,
|
||||||
safeAreaInsetBottom: truthProp,
|
safeAreaInsetBottom: truthProp,
|
||||||
options: {
|
|
||||||
type: Array as PropType<ShareSheetOptions>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
}),
|
}),
|
||||||
|
|
||||||
emits: ['cancel', 'select', 'update:show'],
|
emits: ['cancel', 'select', 'update:show'],
|
||||||
|
@ -49,8 +49,8 @@ export default defineComponent({
|
|||||||
|
|
||||||
setup(props, { emit, slots }) {
|
setup(props, { emit, slots }) {
|
||||||
let buttonIndex: 0 | 1;
|
let buttonIndex: 0 | 1;
|
||||||
|
let current: SliderValue;
|
||||||
let startValue: SliderValue;
|
let startValue: SliderValue;
|
||||||
let currentValue: SliderValue;
|
|
||||||
|
|
||||||
const root = ref<HTMLElement>();
|
const root = ref<HTMLElement>();
|
||||||
const dragStatus = ref<'start' | 'dragging' | ''>();
|
const dragStatus = ref<'start' | 'dragging' | ''>();
|
||||||
@ -193,12 +193,12 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
touch.start(event);
|
touch.start(event);
|
||||||
currentValue = props.modelValue;
|
current = props.modelValue;
|
||||||
|
|
||||||
if (isRange(currentValue)) {
|
if (isRange(current)) {
|
||||||
startValue = currentValue.map(format) as NumberRange;
|
startValue = current.map(format) as NumberRange;
|
||||||
} else {
|
} else {
|
||||||
startValue = format(currentValue);
|
startValue = format(current);
|
||||||
}
|
}
|
||||||
|
|
||||||
dragStatus.value = 'start';
|
dragStatus.value = 'start';
|
||||||
@ -228,11 +228,11 @@ export default defineComponent({
|
|||||||
|
|
||||||
if (isRange(startValue)) {
|
if (isRange(startValue)) {
|
||||||
const index = props.reverse ? 1 - buttonIndex : buttonIndex;
|
const index = props.reverse ? 1 - buttonIndex : buttonIndex;
|
||||||
(currentValue as NumberRange)[index] = startValue[index] + diff;
|
(current as NumberRange)[index] = startValue[index] + diff;
|
||||||
} else {
|
} else {
|
||||||
currentValue = startValue + diff;
|
current = startValue + diff;
|
||||||
}
|
}
|
||||||
updateValue(currentValue);
|
updateValue(current);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onTouchEnd = (event: TouchEvent) => {
|
const onTouchEnd = (event: TouchEvent) => {
|
||||||
@ -241,7 +241,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (dragStatus.value === 'dragging') {
|
if (dragStatus.value === 'dragging') {
|
||||||
updateValue(currentValue, true);
|
updateValue(current, true);
|
||||||
emit('drag-end', event);
|
emit('drag-end', event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,7 +274,7 @@ export default defineComponent({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const renderButton = (index?: 0 | 1) => {
|
const renderButton = (index?: 0 | 1) => {
|
||||||
const currentValue =
|
const current =
|
||||||
typeof index === 'number'
|
typeof index === 'number'
|
||||||
? (props.modelValue as NumberRange)[index]
|
? (props.modelValue as NumberRange)[index]
|
||||||
: (props.modelValue as number);
|
: (props.modelValue as number);
|
||||||
@ -285,7 +285,7 @@ export default defineComponent({
|
|||||||
class={getButtonClassName(index)}
|
class={getButtonClassName(index)}
|
||||||
tabindex={props.disabled || props.readonly ? -1 : 0}
|
tabindex={props.disabled || props.readonly ? -1 : 0}
|
||||||
aria-valuemin={+props.min}
|
aria-valuemin={+props.min}
|
||||||
aria-valuenow={currentValue}
|
aria-valuenow={current}
|
||||||
aria-valuemax={+props.max}
|
aria-valuemax={+props.max}
|
||||||
aria-orientation={props.vertical ? 'vertical' : 'horizontal'}
|
aria-orientation={props.vertical ? 'vertical' : 'horizontal'}
|
||||||
onTouchstart={(event) => {
|
onTouchstart={(event) => {
|
||||||
@ -300,7 +300,7 @@ export default defineComponent({
|
|||||||
onTouchcancel={onTouchEnd}
|
onTouchcancel={onTouchEnd}
|
||||||
onClick={stopPropagation}
|
onClick={stopPropagation}
|
||||||
>
|
>
|
||||||
{renderButtonContent(currentValue, index)}
|
{renderButtonContent(current, index)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { ref, watch, onMounted, defineComponent } from 'vue';
|
import { ref, watch, onMounted, defineComponent } from 'vue';
|
||||||
import { numericProp, createNamespace } from '../utils';
|
import { numericProp, makeRequiredProp, createNamespace } from '../utils';
|
||||||
import { Swipe, SwipeInstance } from '../swipe';
|
import { Swipe, SwipeInstance } from '../swipe';
|
||||||
|
|
||||||
const [name, bem] = createNamespace('tabs');
|
const [name, bem] = createNamespace('tabs');
|
||||||
@ -8,22 +8,13 @@ export default defineComponent({
|
|||||||
name,
|
name,
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
|
count: makeRequiredProp(Number),
|
||||||
inited: Boolean,
|
inited: Boolean,
|
||||||
animated: Boolean,
|
animated: Boolean,
|
||||||
|
duration: makeRequiredProp(numericProp),
|
||||||
swipeable: Boolean,
|
swipeable: Boolean,
|
||||||
lazyRender: Boolean,
|
lazyRender: Boolean,
|
||||||
count: {
|
currentIndex: makeRequiredProp(Number),
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
duration: {
|
|
||||||
type: numericProp,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
currentIndex: {
|
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['change'],
|
emits: ['change'],
|
||||||
|
@ -13,6 +13,7 @@ import {
|
|||||||
unknownProp,
|
unknownProp,
|
||||||
numericProp,
|
numericProp,
|
||||||
makeStringProp,
|
makeStringProp,
|
||||||
|
makeNumberProp,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
import { lockClick } from './lock-click';
|
import { lockClick } from './lock-click';
|
||||||
@ -37,6 +38,7 @@ export default defineComponent({
|
|||||||
overlay: Boolean,
|
overlay: Boolean,
|
||||||
message: numericProp,
|
message: numericProp,
|
||||||
iconSize: numericProp,
|
iconSize: numericProp,
|
||||||
|
duration: makeNumberProp(2000),
|
||||||
position: makeStringProp<ToastPosition>('middle'),
|
position: makeStringProp<ToastPosition>('middle'),
|
||||||
className: unknownProp,
|
className: unknownProp,
|
||||||
iconPrefix: String,
|
iconPrefix: String,
|
||||||
@ -47,10 +49,6 @@ export default defineComponent({
|
|||||||
overlayStyle: Object as PropType<CSSProperties>,
|
overlayStyle: Object as PropType<CSSProperties>,
|
||||||
closeOnClick: Boolean,
|
closeOnClick: Boolean,
|
||||||
closeOnClickOverlay: Boolean,
|
closeOnClickOverlay: Boolean,
|
||||||
duration: {
|
|
||||||
type: Number,
|
|
||||||
default: 2000,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['update:show'],
|
emits: ['update:show'],
|
||||||
|
@ -3,6 +3,7 @@ import { PropType, defineComponent } from 'vue';
|
|||||||
// Utils
|
// Utils
|
||||||
import {
|
import {
|
||||||
addUnit,
|
addUnit,
|
||||||
|
makeArrayProp,
|
||||||
makeStringProp,
|
makeStringProp,
|
||||||
makeNumericProp,
|
makeNumericProp,
|
||||||
createNamespace,
|
createNamespace,
|
||||||
@ -35,13 +36,10 @@ export default defineComponent({
|
|||||||
|
|
||||||
props: {
|
props: {
|
||||||
max: makeNumericProp(Infinity),
|
max: makeNumericProp(Infinity),
|
||||||
|
items: makeArrayProp<TreeSelectItem>(),
|
||||||
height: makeNumericProp(300),
|
height: makeNumericProp(300),
|
||||||
selectedIcon: makeStringProp('success'),
|
selectedIcon: makeStringProp('success'),
|
||||||
mainActiveIndex: makeNumericProp(0),
|
mainActiveIndex: makeNumericProp(0),
|
||||||
items: {
|
|
||||||
type: Array as PropType<TreeSelectItem[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
activeId: {
|
activeId: {
|
||||||
type: [Number, String, Array] as PropType<
|
type: [Number, String, Array] as PropType<
|
||||||
number | string | Array<number | string>
|
number | string | Array<number | string>
|
||||||
|
@ -15,6 +15,7 @@ import {
|
|||||||
numericProp,
|
numericProp,
|
||||||
Interceptor,
|
Interceptor,
|
||||||
getSizeStyle,
|
getSizeStyle,
|
||||||
|
makeArrayProp,
|
||||||
makeStringProp,
|
makeStringProp,
|
||||||
makeNumericProp,
|
makeNumericProp,
|
||||||
ComponentInstance,
|
ComponentInstance,
|
||||||
@ -65,16 +66,13 @@ const props = {
|
|||||||
deletable: truthProp,
|
deletable: truthProp,
|
||||||
afterRead: Function as PropType<UploaderAfterRead>,
|
afterRead: Function as PropType<UploaderAfterRead>,
|
||||||
showUpload: truthProp,
|
showUpload: truthProp,
|
||||||
|
modelValue: makeArrayProp<UploaderFileListItem>(),
|
||||||
beforeRead: Function as PropType<UploaderBeforeRead>,
|
beforeRead: Function as PropType<UploaderBeforeRead>,
|
||||||
beforeDelete: Function as PropType<Interceptor>,
|
beforeDelete: Function as PropType<Interceptor>,
|
||||||
previewSize: numericProp,
|
previewSize: numericProp,
|
||||||
previewImage: truthProp,
|
previewImage: truthProp,
|
||||||
previewOptions: Object as PropType<ImagePreviewOptions>,
|
previewOptions: Object as PropType<ImagePreviewOptions>,
|
||||||
previewFullImage: truthProp,
|
previewFullImage: truthProp,
|
||||||
modelValue: {
|
|
||||||
type: Array as PropType<UploaderFileListItem[]>,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
maxSize: {
|
maxSize: {
|
||||||
type: [Number, String, Function] as PropType<UploaderMaxSize>,
|
type: [Number, String, Function] as PropType<UploaderMaxSize>,
|
||||||
default: Infinity,
|
default: Infinity,
|
||||||
|
@ -9,6 +9,7 @@ import {
|
|||||||
numericProp,
|
numericProp,
|
||||||
getSizeStyle,
|
getSizeStyle,
|
||||||
callInterceptor,
|
callInterceptor,
|
||||||
|
makeRequiredProp,
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
@ -22,16 +23,13 @@ import type { UploaderFileListItem } from './types';
|
|||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
props: {
|
props: {
|
||||||
name: numericProp,
|
name: numericProp,
|
||||||
|
item: makeRequiredProp<PropType<UploaderFileListItem>>(Object),
|
||||||
index: Number,
|
index: Number,
|
||||||
imageFit: String as PropType<ImageFit>,
|
imageFit: String as PropType<ImageFit>,
|
||||||
lazyLoad: Boolean,
|
lazyLoad: Boolean,
|
||||||
deletable: Boolean,
|
deletable: Boolean,
|
||||||
previewSize: numericProp,
|
previewSize: numericProp,
|
||||||
beforeDelete: Function as PropType<Interceptor>,
|
beforeDelete: Function as PropType<Interceptor>,
|
||||||
item: {
|
|
||||||
type: Object as PropType<UploaderFileListItem>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['delete', 'preview'],
|
emits: ['delete', 'preview'],
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { PropType, ComponentPublicInstance } from 'vue';
|
import type { ComponentPublicInstance } from 'vue';
|
||||||
|
|
||||||
export function noop() {}
|
export function noop() {}
|
||||||
|
|
||||||
@ -6,23 +6,6 @@ export const extend = Object.assign;
|
|||||||
|
|
||||||
export const inBrowser = typeof window !== 'undefined';
|
export const inBrowser = typeof window !== 'undefined';
|
||||||
|
|
||||||
// propType helpers
|
|
||||||
// help us to write less code, reduce bundle size
|
|
||||||
export const unknownProp = null as unknown as PropType<unknown>;
|
|
||||||
export const numericProp = [Number, String];
|
|
||||||
export const truthProp = {
|
|
||||||
type: Boolean,
|
|
||||||
default: true as const,
|
|
||||||
};
|
|
||||||
export const makeNumericProp = <T>(defaultVal: T) => ({
|
|
||||||
type: numericProp,
|
|
||||||
default: defaultVal,
|
|
||||||
});
|
|
||||||
export const makeStringProp = <T>(defaultVal: T) => ({
|
|
||||||
type: String as unknown as PropType<T>,
|
|
||||||
default: defaultVal,
|
|
||||||
});
|
|
||||||
|
|
||||||
// eslint-disable-next-line
|
// eslint-disable-next-line
|
||||||
export type ComponentInstance = ComponentPublicInstance<{}, any>;
|
export type ComponentInstance = ComponentPublicInstance<{}, any>;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
export * from './basic';
|
export * from './basic';
|
||||||
|
export * from './props';
|
||||||
export * from './dom';
|
export * from './dom';
|
||||||
export * from './create';
|
export * from './create';
|
||||||
export * from './format';
|
export * from './format';
|
||||||
|
39
packages/vant/src/utils/props.ts
Normal file
39
packages/vant/src/utils/props.ts
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/**
|
||||||
|
* prop type helpers
|
||||||
|
* help us to write less code and reduce bundle size
|
||||||
|
*/
|
||||||
|
import type { PropType } from 'vue';
|
||||||
|
|
||||||
|
export const unknownProp = null as unknown as PropType<unknown>;
|
||||||
|
|
||||||
|
export const numericProp = [Number, String];
|
||||||
|
|
||||||
|
export const truthProp = {
|
||||||
|
type: Boolean,
|
||||||
|
default: true as const,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const makeRequiredProp = <T>(type: T) => ({
|
||||||
|
type,
|
||||||
|
required: true as const,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const makeArrayProp = <T>() => ({
|
||||||
|
type: Array as PropType<T[]>,
|
||||||
|
default: () => [],
|
||||||
|
});
|
||||||
|
|
||||||
|
export const makeNumberProp = <T>(defaultVal: T) => ({
|
||||||
|
type: Number,
|
||||||
|
default: defaultVal,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const makeNumericProp = <T>(defaultVal: T) => ({
|
||||||
|
type: numericProp,
|
||||||
|
default: defaultVal,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const makeStringProp = <T>(defaultVal: T) => ({
|
||||||
|
type: String as unknown as PropType<T>,
|
||||||
|
default: defaultVal,
|
||||||
|
});
|
Loading…
x
Reference in New Issue
Block a user