UNPKG

@tarojs/components

Version:
334 lines (319 loc) 18.7 kB
/** * vue tsx @tarojs/components 类型提示文件 * * ## 如何使用? * 请在醒目全局的类型文件中写入以下代码,覆盖默认的组件类型提示 * ```typescript * export declare module '@tarojs/components' { * export * from '@tarojs/components/types/index.vue3' * } * ``` */ import * as CSS from 'csstype' import { DefineComponent, VNodeRef } from 'vue' import { AdProps } from './Ad' import { AdCustomProps } from './AdCustom' import { AudioProps } from './Audio' import { ButtonProps } from './Button' import { CameraProps } from './Camera' import { CanvasProps } from './Canvas' import { ChannelLiveProps } from './ChannelLive' import { ChannelVideoProps } from './ChannelVideo' import { CheckboxProps } from './Checkbox' import { CheckboxGroupProps } from './CheckboxGroup' import { StandardProps } from './common' import { CoverImageProps } from './CoverImage' import { CoverViewProps } from './CoverView' import { CustomWrapperProps } from './CustomWrapper' import { EditorProps } from './Editor' import { FormProps } from './Form' import { FunctionalPageNavigatorProps } from './FunctionalPageNavigator' import { GridViewProps } from './GridView' import { IconProps } from './Icon' import { ImageProps } from './Image' import { InputProps } from './Input' import { KeyboardAccessoryProps } from './KeyboardAccessory' import { LabelProps } from './Label' import { ListViewProps } from './ListView' import { LivePlayerProps } from './LivePlayer' import { LivePusherProps } from './LivePusher' import { MapProps } from './Map' import { MatchMediaProps } from './MatchMedia' import { MovableAreaProps } from './MovableArea' import { MovableViewProps } from './MovableView' import { NativeSlotProps } from './NativeSlot' import { NavigationBarProps } from './NavigationBar' import { NavigatorProps } from './Navigator' import { OfficialAccountProps } from './OfficialAccount' import { OpenDataProps } from './OpenData' import { PageContainerProps } from './PageContainer' import { PageMetaProps } from './PageMeta' import { PickerDateProps, PickerMultiSelectorProps, PickerRegionProps, PickerSelectorProps, PickerTimeProps } from './Picker' import { PickerViewProps } from './PickerView' import { PickerViewColumnProps } from './PickerViewColumn' import { ProgressProps } from './Progress' import { RadioProps } from './Radio' import { RadioGroupProps } from './RadioGroup' import { RichTextProps } from './RichText' import { RootPortalProps } from './RootPortal' import { ScrollViewProps } from './ScrollView' import { ShareElementProps } from './ShareElement' import { SliderProps } from './Slider' import { SlotProps } from './Slot' import { SnapshotProps } from './SnapShot' import { SpanProps } from './Span' import { StickyHeaderProps } from './StickyHeader' import { StickySectionProps } from './StickySection' import { SwiperProps } from './Swiper' import { SwiperItemProps } from './SwiperItem' import { SwitchProps } from './Switch' import { TextProps } from './Text' import { TextareaProps } from './Textarea' import { VideoProps } from './Video' import { ViewProps } from './View' import { VoipRoomProps } from './VoipRoom' import { WebViewProps } from './WebView' /** 因为react的事件是CamelCase而vue得是Camelcase, 所以需要转换 */ type OnCamelCaseToOnCamelcase<T extends string> = T extends `on${infer Rest}` ? `on${Capitalize<Lowercase<Rest>>}` : T; type TransformCamelCase<T extends Record<string, any>> = { [key in keyof T as OnCamelCaseToOnCamelcase<key>]: T[key] } /** 联合类型不能用omit(比如picker) */ type DistributiveOmit<T, K extends keyof T> = T extends unknown ? TransformCamelCase<Omit<T, K>> : never interface SlimProps { class?: any style?: CSS.Properties<string | number> innerHTML?: string } /** 转换 react 的类型到 vue */ export type RemoveReactAttribute = 'className' | 'style' | 'key' | 'ref' | 'dangerouslySetInnerHTML' export type TransformReact2VueType<P extends StandardProps = Record<string, never>> = DistributiveOmit<P, RemoveReactAttribute> & SlimProps export type VueComponentType<P = Record<string, never>> = DefineComponent<TransformReact2VueType<P>> export * from './common' export * from './event' export * from './props' /** 视图容器 */ export declare const Block: VueComponentType<StandardProps> export declare const CoverImage: VueComponentType<CoverImageProps> export declare const CoverView: VueComponentType<CoverViewProps> export declare const MatchMedia: VueComponentType<MatchMediaProps> export declare const MovableArea: VueComponentType<MovableAreaProps> export declare const MovableView: VueComponentType<MovableViewProps> export declare const PageContainer: VueComponentType<PageContainerProps> export declare const RootPortal: VueComponentType<RootPortalProps> export declare const ScrollView: VueComponentType<ScrollViewProps> export declare const Swiper: VueComponentType<SwiperProps> export declare const SwiperItem: VueComponentType<SwiperItemProps> export declare const View: VueComponentType<ViewProps> /** 基础内容 */ export declare const Icon: VueComponentType<IconProps> export declare const Progress: VueComponentType<ProgressProps> export declare const RichText: VueComponentType<RichTextProps> export declare const Text: VueComponentType<TextProps> /** 表单组件 */ export declare const Button: VueComponentType<ButtonProps> export declare const Checkbox: VueComponentType<CheckboxProps> export declare const CheckboxGroup: VueComponentType<CheckboxGroupProps> export declare const Editor: VueComponentType<EditorProps> export declare const Form: VueComponentType<FormProps> export declare const Input: VueComponentType<InputProps> export declare const KeyboardAccessory: VueComponentType<KeyboardAccessoryProps> export declare const Label: VueComponentType<LabelProps> export declare const Picker: VueComponentType<PickerMultiSelectorProps | PickerTimeProps | PickerDateProps | PickerRegionProps | PickerSelectorProps> export declare const PickerView: VueComponentType<PickerViewProps> export declare const PickerViewColumn: VueComponentType<PickerViewColumnProps> export declare const Radio: VueComponentType<RadioProps> export declare const RadioGroup: VueComponentType<RadioGroupProps> export declare const Slider: VueComponentType<SliderProps> export declare const Switch: VueComponentType<SwitchProps> export declare const Textarea: VueComponentType<TextareaProps> /** Skyline */ export declare const GridView: VueComponentType<GridViewProps> export declare const ListView: VueComponentType<ListViewProps> export declare const Snapshot: VueComponentType<SnapshotProps> export declare const Span: VueComponentType<SpanProps> export declare const ShareElement: VueComponentType<ShareElementProps> export declare const StickyHeader: VueComponentType<StickyHeaderProps> export declare const StickySection: VueComponentType<StickySectionProps> /** 导航 */ export declare const FunctionalPageNavigator: VueComponentType<FunctionalPageNavigatorProps> export declare const Navigator: VueComponentType<NavigatorProps> export declare const NavigationBar: VueComponentType<NavigationBarProps> /** 媒体组件 */ export declare const Audio: VueComponentType<AudioProps> export declare const Camera: VueComponentType<CameraProps> export declare const ChannelLive: VueComponentType<ChannelLiveProps> export declare const ChannelVideo: VueComponentType<ChannelVideoProps> export declare const Image: VueComponentType<ImageProps> export declare const LivePlayer: VueComponentType<LivePlayerProps> export declare const LivePusher: VueComponentType<LivePusherProps> export declare const Video: VueComponentType<VideoProps> export declare const VoipRoom: VueComponentType<VoipRoomProps> /** 地图 */ export declare const Map: VueComponentType<MapProps> /** 画布 */ export declare const Canvas: VueComponentType<CanvasProps> /** 开放能力 */ export declare const Ad: VueComponentType<AdProps> export declare const AdCustom: VueComponentType<AdCustomProps> export declare const OfficialAccount: VueComponentType<OfficialAccountProps> export declare const OpenData: VueComponentType<OpenDataProps> export declare const WebView: VueComponentType<WebViewProps> /** 配置节点 */ export declare const PageMeta: VueComponentType<PageMetaProps> export declare const CustomWrapper: VueComponentType<CustomWrapperProps> export declare const Slot: VueComponentType<SlotProps> export declare const NativeSlot: VueComponentType<NativeSlotProps> export type ReservedProps = { key?: string | number | symbol ref?: VNodeRef ref_for?: boolean ref_key?: string } export type ElementAttrs<T> = T & ReservedProps declare global { namespace JSX { interface IntrinsicElements { /** 视图容器 */ block: ElementAttrs<TransformReact2VueType<StandardProps>> 'taro-block-core': ElementAttrs<TransformReact2VueType<StandardProps>> 'cover-image': ElementAttrs<TransformReact2VueType<CoverImageProps>> 'taro-cover-image-core': ElementAttrs<TransformReact2VueType<CoverImageProps>> 'cover-view': ElementAttrs<TransformReact2VueType<CoverViewProps>> 'taro-cover-view-core': ElementAttrs<TransformReact2VueType<CoverViewProps>> 'match-media': ElementAttrs<TransformReact2VueType<MatchMediaProps>> 'taro-match-media-core': ElementAttrs<TransformReact2VueType<MatchMediaProps>> 'movable-area': ElementAttrs<TransformReact2VueType<MovableAreaProps>> 'taro-movable-area-core': ElementAttrs<TransformReact2VueType<MovableAreaProps>> 'movable-view': ElementAttrs<TransformReact2VueType<MovableViewProps>> 'taro-movable-view-core': ElementAttrs<TransformReact2VueType<MovableViewProps>> 'page-container': ElementAttrs<TransformReact2VueType<PageContainerProps>> 'taro-page-container-core': ElementAttrs<TransformReact2VueType<PageContainerProps>> 'root-portal': ElementAttrs<TransformReact2VueType<RootPortalProps>> 'taro-root-portal-core': ElementAttrs<TransformReact2VueType<RootPortalProps>> 'scroll-view': ElementAttrs<TransformReact2VueType<ScrollViewProps>> 'taro-scroll-view-core': ElementAttrs<TransformReact2VueType<ScrollViewProps>> swiper: ElementAttrs<TransformReact2VueType<SwiperProps>> 'taro-swiper-core': ElementAttrs<TransformReact2VueType<SwiperProps>> 'swiper-item': ElementAttrs<TransformReact2VueType<SwiperItemProps>> 'taro-swiper-item-core': ElementAttrs<TransformReact2VueType<SwiperItemProps>> view: ElementAttrs<TransformReact2VueType<ViewProps>> 'taro-view-core': ElementAttrs<TransformReact2VueType<ViewProps>> /** 基础内容 */ icon: ElementAttrs<TransformReact2VueType<IconProps>> 'taro-icon-core': ElementAttrs<TransformReact2VueType<IconProps>> progress: ElementAttrs<TransformReact2VueType<ProgressProps>> 'taro-progress-core': ElementAttrs<TransformReact2VueType<ProgressProps>> 'rich-text': ElementAttrs<TransformReact2VueType<RichTextProps>> 'taro-rich-text-core': ElementAttrs<TransformReact2VueType<RichTextProps>> text: ElementAttrs<TransformReact2VueType<TextProps>> 'taro-text-core': ElementAttrs<TransformReact2VueType<TextProps>> /** 表单组件 */ button: ElementAttrs<TransformReact2VueType<ButtonProps>> 'taro-button-core': ElementAttrs<TransformReact2VueType<ButtonProps>> checkbox: ElementAttrs<TransformReact2VueType<CheckboxProps>> 'taro-checkbox-core': ElementAttrs<TransformReact2VueType<CheckboxProps>> 'checkbox-group': ElementAttrs<TransformReact2VueType<CheckboxGroupProps>> 'taro-checkbox-group-core': ElementAttrs<TransformReact2VueType<CheckboxGroupProps>> editor: ElementAttrs<TransformReact2VueType<EditorProps>> 'taro-editor-core': ElementAttrs<TransformReact2VueType<EditorProps>> form: ElementAttrs<TransformReact2VueType<FormProps>> 'taro-form-core': ElementAttrs<TransformReact2VueType<FormProps>> input: ElementAttrs<TransformReact2VueType<InputProps>> 'taro-input-core': ElementAttrs<TransformReact2VueType<InputProps>> 'keyboard-accessory': ElementAttrs<TransformReact2VueType<KeyboardAccessoryProps>> 'taro-keyboard-accessory-core': ElementAttrs<TransformReact2VueType<KeyboardAccessoryProps>> label: ElementAttrs<TransformReact2VueType<LabelProps>> 'taro-label-core': ElementAttrs<TransformReact2VueType<LabelProps>> picker: ElementAttrs<TransformReact2VueType<PickerMultiSelectorProps | PickerTimeProps | PickerDateProps | PickerRegionProps | PickerSelectorProps>> 'taro-picker-core': ElementAttrs<TransformReact2VueType<PickerMultiSelectorProps | PickerTimeProps | PickerDateProps | PickerRegionProps | PickerSelectorProps>> 'picker-view': ElementAttrs<TransformReact2VueType<PickerViewProps>> 'taro-picker-view-core': ElementAttrs<TransformReact2VueType<PickerViewProps>> 'picker-view-column': ElementAttrs<TransformReact2VueType<PickerViewColumnProps>> 'taro-picker-view-column-core': ElementAttrs<TransformReact2VueType<PickerViewColumnProps>> radio: ElementAttrs<TransformReact2VueType<RadioProps>> 'taro-radio-core': ElementAttrs<TransformReact2VueType<RadioProps>> 'radio-group': ElementAttrs<TransformReact2VueType<RadioGroupProps>> 'taro-radio-group-core': ElementAttrs<TransformReact2VueType<RadioGroupProps>> slider: ElementAttrs<TransformReact2VueType<SliderProps>> 'taro-slider-core': ElementAttrs<TransformReact2VueType<SliderProps>> switch: ElementAttrs<TransformReact2VueType<SwitchProps>> 'taro-switch-core': ElementAttrs<TransformReact2VueType<SwitchProps>> textarea: ElementAttrs<TransformReact2VueType<TextareaProps>> 'taro-textarea-core': ElementAttrs<TransformReact2VueType<TextareaProps>> /** Skyline */ 'grid-view': ElementAttrs<TransformReact2VueType<GridViewProps>> 'taro-grid-view-core': ElementAttrs<TransformReact2VueType<GridViewProps>> 'list-view': ElementAttrs<TransformReact2VueType<ListViewProps>> 'taro-list-view-core': ElementAttrs<TransformReact2VueType<ListViewProps>> 'share-element': ElementAttrs<TransformReact2VueType<ShareElementProps>> 'taro-share-element-core': ElementAttrs<TransformReact2VueType<ShareElementProps>> 'snapshot': ElementAttrs<TransformReact2VueType<SnapshotProps>> 'taro-snapshot-core': ElementAttrs<TransformReact2VueType<SnapshotProps>> 'span': ElementAttrs<TransformReact2VueType<SpanProps>> 'taro-span-core': ElementAttrs<TransformReact2VueType<SpanProps>> 'sticky-header': ElementAttrs<TransformReact2VueType<StickyHeaderProps>> 'taro-sticky-header-core': ElementAttrs<TransformReact2VueType<StickyHeaderProps>> 'sticky-section': ElementAttrs<TransformReact2VueType<StickySectionProps>> 'taro-sticky-section-core': ElementAttrs<TransformReact2VueType<StickySectionProps>> /** 导航 */ 'functional-page-navigator': ElementAttrs<TransformReact2VueType<FunctionalPageNavigatorProps>> 'taro-functional-page-navigator-core': ElementAttrs<TransformReact2VueType<FunctionalPageNavigatorProps>> navigator: ElementAttrs<TransformReact2VueType<NavigatorProps>> 'taro-navigator-core': ElementAttrs<TransformReact2VueType<NavigatorProps>> 'navigation-bar': ElementAttrs<TransformReact2VueType<NavigationBarProps>> 'taro-navigation-bar-core': ElementAttrs<TransformReact2VueType<NavigationBarProps>> /** 媒体组件 */ audio: ElementAttrs<TransformReact2VueType<AudioProps>> 'taro-audio-core': ElementAttrs<TransformReact2VueType<AudioProps>> camera: ElementAttrs<TransformReact2VueType<CameraProps>> 'taro-camera-core': ElementAttrs<TransformReact2VueType<CameraProps>> 'channel-live': ElementAttrs<TransformReact2VueType<ChannelLiveProps>> 'taro-channel-live-core': ElementAttrs<TransformReact2VueType<ChannelLiveProps>> 'channel-video': ElementAttrs<TransformReact2VueType<ChannelVideoProps>> 'taro-channel-video-core': ElementAttrs<TransformReact2VueType<ChannelVideoProps>> image: ElementAttrs<TransformReact2VueType<ImageProps>> 'taro-image-core': ElementAttrs<TransformReact2VueType<ImageProps>> 'live-player': ElementAttrs<TransformReact2VueType<LivePlayerProps>> 'taro-live-player-core': ElementAttrs<TransformReact2VueType<LivePlayerProps>> 'live-pusher': ElementAttrs<TransformReact2VueType<LivePusherProps>> 'taro-live-pusher-core': ElementAttrs<TransformReact2VueType<LivePusherProps>> video: ElementAttrs<TransformReact2VueType<VideoProps>> 'taro-video-core': ElementAttrs<TransformReact2VueType<VideoProps>> 'voip-room': ElementAttrs<TransformReact2VueType<VoipRoomProps>> 'taro-voip-room-core': ElementAttrs<TransformReact2VueType<VoipRoomProps>> /** 地图 */ map: ElementAttrs<TransformReact2VueType<MapProps>> 'taro-map-core': ElementAttrs<TransformReact2VueType<MapProps>> /** 画布 */ canvas: ElementAttrs<TransformReact2VueType<CanvasProps>> 'taro-canvas-core': ElementAttrs<TransformReact2VueType<CanvasProps>> /** 开放能力 */ ad: ElementAttrs<TransformReact2VueType<AdProps>> 'taro-ad-core': ElementAttrs<TransformReact2VueType<AdProps>> 'ad-custom': ElementAttrs<TransformReact2VueType<AdCustomProps>> 'taro-ad-custom-core': ElementAttrs<TransformReact2VueType<AdCustomProps>> 'official-account': ElementAttrs<TransformReact2VueType<OfficialAccountProps>> 'taro-official-account-core': ElementAttrs<TransformReact2VueType<OfficialAccountProps>> 'open-data': ElementAttrs<TransformReact2VueType<OpenDataProps>> 'taro-open-data-core': ElementAttrs<TransformReact2VueType<OpenDataProps>> 'web-view': ElementAttrs<TransformReact2VueType<WebViewProps>> 'taro-web-view-core': ElementAttrs<TransformReact2VueType<WebViewProps>> /** 配置节点 */ 'page-meta': ElementAttrs<TransformReact2VueType<PageMetaProps>> 'taro-page-meta-core': ElementAttrs<TransformReact2VueType<PageMetaProps>> 'custom-wrapper': ElementAttrs<TransformReact2VueType<CustomWrapperProps>> 'taro-custom-wrapper-core': ElementAttrs<TransformReact2VueType<CustomWrapperProps>> /** 为了不与vue3模板默认的slot冲突,增加 Record<string, any> */ 'slot': ElementAttrs<TransformReact2VueType<SlotProps>> & Record<string, any> 'taro-slot-core': ElementAttrs<TransformReact2VueType<SlotProps>> 'native-slot': ElementAttrs<TransformReact2VueType<NativeSlotProps>> 'taro-native-slot-core': ElementAttrs<TransformReact2VueType<NativeSlotProps>> } } }