diff --git a/packages/core/onClickOutside/component.ts b/packages/core/onClickOutside/component.ts index acd72d59fd1..1a0cd6f9ad1 100644 --- a/packages/core/onClickOutside/component.ts +++ b/packages/core/onClickOutside/component.ts @@ -1,17 +1,20 @@ -import type { RenderableComponent } from '../types' -import type { OnClickOutsideOptions } from './index' +import type { OnClickOutsideOptions, RenderableComponent } from '@vueuse/core' import { onClickOutside } from '@vueuse/core' import { defineComponent, h, shallowRef } from 'vue' export interface OnClickOutsideProps extends RenderableComponent { options?: Omit } +// eslint-disable-next-line ts/consistent-type-definitions +export type OnClickOutsideEmits = { + trigger: (event: Event) => void +} -export const OnClickOutside = /* #__PURE__ */ defineComponent({ - name: 'OnClickOutside', - props: ['as', 'options'] as unknown as undefined, - emits: ['trigger'], - setup(props, { slots, emit }) { +export const OnClickOutside = /* #__PURE__ */ defineComponent< + OnClickOutsideProps, + OnClickOutsideEmits +>( + (props, { slots, emit }) => { const target = shallowRef() onClickOutside(target, (e) => { emit('trigger', e) @@ -22,4 +25,9 @@ export const OnClickOutside = /* #__PURE__ */ defineComponent void } diff --git a/packages/core/onKeyStroke/directive.ts b/packages/core/onKeyStroke/directive.ts index 01841939b87..69cee50f536 100644 --- a/packages/core/onKeyStroke/directive.ts +++ b/packages/core/onKeyStroke/directive.ts @@ -1,6 +1,6 @@ +import type { OnKeyStrokeOptions } from '@vueuse/core' import type { ObjectDirective } from 'vue' -import type { OnKeyStrokeOptions } from './index' -import { onKeyStroke } from './index' +import { onKeyStroke } from '@vueuse/core' type BindingValueFunction = (event: KeyboardEvent) => void diff --git a/packages/core/onLongPress/component.ts b/packages/core/onLongPress/component.ts index 561528bfed4..09fdc1e2312 100644 --- a/packages/core/onLongPress/component.ts +++ b/packages/core/onLongPress/component.ts @@ -1,28 +1,44 @@ -import type { RenderableComponent } from '../types' -import type { OnLongPressOptions } from './index' +import type { OnLongPressOptions, RenderableComponent, UseOnLongPressReturn } from '@vueuse/core' +import type { SlotsType } from 'vue' +import { onLongPress } from '@vueuse/core' import { defineComponent, h, shallowRef } from 'vue' -import { onLongPress } from './index' export interface OnLongPressProps extends RenderableComponent { options?: OnLongPressOptions } +// eslint-disable-next-line ts/consistent-type-definitions +export type OnLongPressEmits = { + trigger: (event: PointerEvent) => void +} + +interface OnLongPressSlots { + default: (data: UseOnLongPressReturn) => any +} -export const OnLongPress = /* #__PURE__ */ defineComponent({ - name: 'OnLongPress', - props: ['as', 'options'] as unknown as undefined, - emits: ['trigger'], - setup(props, { slots, emit }) { +export const OnLongPress = /* #__PURE__ */ defineComponent< + OnLongPressProps, + OnLongPressEmits, + string, + SlotsType +>( + (props, { slots, emit }) => { const target = shallowRef() - onLongPress( + const data = onLongPress( target, (e) => { emit('trigger', e) }, props.options, ) + return () => { if (slots.default) - return h(props.as || 'div', { ref: target }, slots.default()) + return h(props.as || 'div', { ref: target }, slots.default(data)) } }, -}) + { + name: 'OnLongPress', + props: ['as', 'options'], + emits: ['trigger'], + }, +) diff --git a/packages/core/onLongPress/directive.ts b/packages/core/onLongPress/directive.ts index 1a47b763113..543f46193ec 100644 --- a/packages/core/onLongPress/directive.ts +++ b/packages/core/onLongPress/directive.ts @@ -1,7 +1,6 @@ +import type { OnLongPressOptions } from '@vueuse/core' import type { ObjectDirective } from 'vue' -import type { OnLongPressOptions } from './index' - -import { onLongPress } from './index' +import { onLongPress } from '@vueuse/core' type BindingValueFunction = (evt: PointerEvent) => void diff --git a/packages/core/onLongPress/index.ts b/packages/core/onLongPress/index.ts index d7e2c4c1b5f..b9168882691 100644 --- a/packages/core/onLongPress/index.ts +++ b/packages/core/onLongPress/index.ts @@ -147,3 +147,5 @@ export function onLongPress( return stop } + +export type UseOnLongPressReturn = ReturnType diff --git a/packages/core/useActiveElement/component.ts b/packages/core/useActiveElement/component.ts index 0399dd8626b..0ddaeb74576 100644 --- a/packages/core/useActiveElement/component.ts +++ b/packages/core/useActiveElement/component.ts @@ -1,11 +1,22 @@ +import type { UseActiveElementOptions, UseActiveElementReturn } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' import { useActiveElement } from '@vueuse/core' import { defineComponent, reactive } from 'vue' -export const UseActiveElement = /* #__PURE__ */ defineComponent({ - name: 'UseActiveElement', - setup(props, { slots }) { +export interface UseActiveElementProps extends UseActiveElementOptions {} +interface UseActiveElementSlots { + default: (data: Reactive<{ element: UseActiveElementReturn }>) => any +} + +export const UseActiveElement = /* #__PURE__ */ defineComponent< + UseActiveElementProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { const data = reactive({ - element: useActiveElement(), + element: useActiveElement(props), }) return () => { @@ -13,4 +24,13 @@ export const UseActiveElement = /* #__PURE__ */ defineComponent({ return slots.default(data) } }, -}) + { + name: 'UseActiveElement', + props: [ + 'deep', + 'triggerOnRemoval', + 'window', + 'document', + ], + }, +) diff --git a/packages/core/useActiveElement/index.md b/packages/core/useActiveElement/index.md index e102e2a2d8d..8b3bc3b73e0 100644 --- a/packages/core/useActiveElement/index.md +++ b/packages/core/useActiveElement/index.md @@ -26,7 +26,7 @@ watch(activeElement, (el) => { ```vue ``` diff --git a/packages/core/useActiveElement/index.ts b/packages/core/useActiveElement/index.ts index d2a1d990ea9..93ce1a44d50 100644 --- a/packages/core/useActiveElement/index.ts +++ b/packages/core/useActiveElement/index.ts @@ -83,3 +83,5 @@ export function useActiveElement( return activeElement } + +export type UseActiveElementReturn = ReturnType diff --git a/packages/core/useBattery/component.ts b/packages/core/useBattery/component.ts index beaadb602ef..89818629a1c 100644 --- a/packages/core/useBattery/component.ts +++ b/packages/core/useBattery/component.ts @@ -1,9 +1,20 @@ +import type { ConfigurableNavigator, UseBatteryReturn } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' import { useBattery } from '@vueuse/core' import { defineComponent, reactive } from 'vue' -export const UseBattery = /* #__PURE__ */ defineComponent({ - name: 'UseBattery', - setup(props, { slots }) { +export interface UseBatteryProps extends ConfigurableNavigator {} +interface UseBatterySlots { + default: (data: Reactive) => any +} + +export const UseBattery = /* #__PURE__ */ defineComponent< + UseBatteryProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { const data = reactive(useBattery(props)) return () => { @@ -11,4 +22,8 @@ export const UseBattery = /* #__PURE__ */ defineComponent({ return slots.default(data) } }, -}) + { + name: 'UseBattery', + props: ['navigator'], + }, +) diff --git a/packages/core/useBrowserLocation/component.ts b/packages/core/useBrowserLocation/component.ts index 3c62a8a70f5..8eb8cb3a700 100644 --- a/packages/core/useBrowserLocation/component.ts +++ b/packages/core/useBrowserLocation/component.ts @@ -1,14 +1,29 @@ +import type { ConfigurableWindow, UseBrowserLocationReturn } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' import { useBrowserLocation } from '@vueuse/core' import { defineComponent, reactive } from 'vue' -export const UseBrowserLocation = /* #__PURE__ */ defineComponent({ - name: 'UseBrowserLocation', - setup(props, { slots }) { - const data = reactive(useBrowserLocation()) +interface UseBrowserLocationProps extends ConfigurableWindow {} +interface UseBrowserLocationSlots { + default: (data: Reactive) => any +} + +export const UseBrowserLocation = /* #__PURE__ */ defineComponent< + UseBrowserLocationProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { + const data = reactive(useBrowserLocation(props)) return () => { if (slots.default) return slots.default(data) } }, -}) + { + name: 'UseBrowserLocation', + props: ['window'], + }, +) diff --git a/packages/core/useBrowserLocation/index.md b/packages/core/useBrowserLocation/index.md index d4adf7e257b..f5bd15c2dad 100644 --- a/packages/core/useBrowserLocation/index.md +++ b/packages/core/useBrowserLocation/index.md @@ -19,7 +19,7 @@ const location = useBrowserLocation() ## Component Usage ```vue - + Browser Location: {{ location }} ``` diff --git a/packages/core/useClipboard/component.ts b/packages/core/useClipboard/component.ts index fc00627da54..dcf086c489f 100644 --- a/packages/core/useClipboard/component.ts +++ b/packages/core/useClipboard/component.ts @@ -1,22 +1,35 @@ -import type { UseClipboardOptions } from '@vueuse/core' +import type { UseClipboardOptions, UseClipboardReturn } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' import { useClipboard } from '@vueuse/core' import { defineComponent, reactive } from 'vue' -interface UseClipboardProps extends UseClipboardOptions {} +export interface UseClipboardProps extends UseClipboardOptions {} +interface UseClipboardSlots { + default: (data: Reactive>) => any +} -export const UseClipboard = /* #__PURE__ */ defineComponent({ - name: 'UseClipboard', - props: [ - 'source', - 'read', - 'navigator', - 'copiedDuring', - 'legacy', - ] as unknown as undefined, - - setup(props, { slots }) { +export const UseClipboard = /* #__PURE__ */ defineComponent< + UseClipboardProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { const data = reactive(useClipboard(props)) - return () => slots.default?.(data) + return () => { + if (slots.default) + return slots.default(data) + } + }, + { + name: 'UseClipboard', + props: [ + 'source', + 'read', + 'navigator', + 'copiedDuring', + 'legacy', + ], }, -}) +) diff --git a/packages/core/useColorMode/component.ts b/packages/core/useColorMode/component.ts index d1d18a98be3..f2f277a91f0 100644 --- a/packages/core/useColorMode/component.ts +++ b/packages/core/useColorMode/component.ts @@ -1,11 +1,24 @@ -import type { UseColorModeOptions } from './index' +import type { BasicColorMode, UseColorModeOptions, UseColorModeReturn } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' +import { useColorMode } from '@vueuse/core' import { defineComponent, reactive } from 'vue' -import { useColorMode } from './index' -export const UseColorMode = /* #__PURE__ */ defineComponent({ - name: 'UseColorMode', - props: ['selector', 'attribute', 'modes', 'onChanged', 'storageKey', 'storage', 'emitAuto'] as unknown as undefined, - setup(props, { slots }) { +export interface UseColorModeProps extends UseColorModeOptions {} +interface UseColorModeSlots { + default: (data: Reactive<{ + mode: UseColorModeReturn + system: UseColorModeReturn['system'] + store: UseColorModeReturn['store'] + }>) => any +} + +export const UseColorMode = /* #__PURE__ */ defineComponent< + UseColorModeProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { const mode = useColorMode(props) const data = reactive({ mode, @@ -18,4 +31,30 @@ export const UseColorMode = /* #__PURE__ */ defineComponent return slots.default(data) } }, -}) + { + name: 'UseColorMode', + props: [ + 'attribute', + 'deep', + 'disableTransition', + 'emitAuto', + 'eventFilter', + 'flush', + 'initOnMounted', + 'initialValue', + 'listenToStorageChanges', + 'mergeDefaults', + 'modes', + 'onChanged', + 'onError', + 'selector', + 'serializer', + 'shallow', + 'storage', + 'storageKey', + 'storageRef', + 'window', + 'writeDefaults', + ], + }, +) diff --git a/packages/core/useColorMode/index.md b/packages/core/useColorMode/index.md index 38c56283cbc..ef7845f5e5c 100644 --- a/packages/core/useColorMode/index.md +++ b/packages/core/useColorMode/index.md @@ -66,9 +66,9 @@ const myColorMode = computed(() => store.value === 'auto' ? system.value : store ```vue diff --git a/packages/core/useDark/component.ts b/packages/core/useDark/component.ts index fb822f6e966..b18a219217c 100644 --- a/packages/core/useDark/component.ts +++ b/packages/core/useDark/component.ts @@ -1,12 +1,25 @@ -import type { UseDarkOptions } from '@vueuse/core' +import type { UseDarkOptions, UseDarkReturn } from '@vueuse/core' +import type { ToggleFn } from '@vueuse/shared' +import type { Reactive, SlotsType } from 'vue' import { useDark } from '@vueuse/core' import { useToggle } from '@vueuse/shared' import { defineComponent, reactive } from 'vue' -export const UseDark = /* #__PURE__ */ defineComponent({ - name: 'UseDark', - props: ['selector', 'attribute', 'valueDark', 'valueLight', 'onChanged', 'storageKey', 'storage'] as unknown as undefined, - setup(props, { slots }) { +export interface UseDarkProps extends UseDarkOptions {} +interface UseDarkSlots { + default: (data: Reactive<{ + isDark: UseDarkReturn + toggleDark: ToggleFn + }>) => any +} + +export const UseDark = /* #__PURE__ */ defineComponent< + UseDarkProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { const isDark = useDark(props) const data = reactive({ isDark, @@ -18,4 +31,31 @@ export const UseDark = /* #__PURE__ */ defineComponent({ return slots.default(data) } }, -}) + { + name: 'UseDark', + props: [ + 'attribute', + 'deep', + 'disableTransition', + 'emitAuto', + 'eventFilter', + 'flush', + 'initOnMounted', + 'initialValue', + 'listenToStorageChanges', + 'mergeDefaults', + 'onChanged', + 'onError', + 'selector', + 'serializer', + 'shallow', + 'storage', + 'storageKey', + 'storageRef', + 'valueDark', + 'valueLight', + 'window', + 'writeDefaults', + ], + }, +) diff --git a/packages/core/useDark/index.ts b/packages/core/useDark/index.ts index 3539825f301..6e2e60f4acf 100644 --- a/packages/core/useDark/index.ts +++ b/packages/core/useDark/index.ts @@ -69,3 +69,5 @@ export function useDark(options: UseDarkOptions = {}) { return isDark } + +export type UseDarkReturn = ReturnType diff --git a/packages/core/useDeviceMotion/component.ts b/packages/core/useDeviceMotion/component.ts index 1d7adc8455c..30c8b3b794f 100644 --- a/packages/core/useDeviceMotion/component.ts +++ b/packages/core/useDeviceMotion/component.ts @@ -1,14 +1,33 @@ +import type { DeviceMotionOptions, UseDeviceMotionReturn } from '@vueuse/core' +import type { SlotsType } from 'vue' import { useDeviceMotion } from '@vueuse/core' import { defineComponent } from 'vue' -export const UseDeviceMotion = /* #__PURE__ */ defineComponent({ - name: 'UseDeviceMotion', - setup(props, { slots }) { - const data = useDeviceMotion() +export interface UseDeviceMotionProps extends DeviceMotionOptions {} +interface UseDeviceMotionSlots { + default: (data: UseDeviceMotionReturn) => any +} + +export const UseDeviceMotion = /* #__PURE__ */ defineComponent< + UseDeviceMotionProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { + const data = useDeviceMotion(props) return () => { if (slots.default) return slots.default(data) } }, -}) + { + name: 'UseDeviceMotion', + props: [ + 'eventFilter', + 'requestPermissions', + 'window', + ], + }, +) diff --git a/packages/core/useDeviceOrientation/component.ts b/packages/core/useDeviceOrientation/component.ts index 5ccf58622e6..58b52cb8fc1 100644 --- a/packages/core/useDeviceOrientation/component.ts +++ b/packages/core/useDeviceOrientation/component.ts @@ -1,14 +1,29 @@ +import type { ConfigurableWindow, UseDeviceOrientationReturn } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' import { useDeviceOrientation } from '@vueuse/core' import { defineComponent, reactive } from 'vue' -export const UseDeviceOrientation = /* #__PURE__ */ defineComponent({ - name: 'UseDeviceOrientation', - setup(props, { slots }) { - const data = reactive(useDeviceOrientation()) +export interface UseDeviceOrientationProps extends ConfigurableWindow {} +interface UseDeviceOrientationSlots { + default: (data: Reactive) => any +} + +export const UseDeviceOrientation = /* #__PURE__ */ defineComponent< + UseDeviceOrientationProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { + const data = reactive(useDeviceOrientation(props)) return () => { if (slots.default) return slots.default(data) } }, -}) + { + name: 'UseDeviceOrientation', + props: ['window'], + }, +) diff --git a/packages/core/useDevicePixelRatio/component.ts b/packages/core/useDevicePixelRatio/component.ts index 51114a08a14..c5c22f0dfe5 100644 --- a/packages/core/useDevicePixelRatio/component.ts +++ b/packages/core/useDevicePixelRatio/component.ts @@ -1,16 +1,29 @@ +import type { ConfigurableWindow, UseDevicePixelRatioReturn } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' import { useDevicePixelRatio } from '@vueuse/core' import { defineComponent, reactive } from 'vue' -export const UseDevicePixelRatio = /* #__PURE__ */ defineComponent({ - name: 'UseDevicePixelRatio', - setup(props, { slots }) { - const data = reactive({ - pixelRatio: useDevicePixelRatio(), - }) +export interface UseDevicePixelRatioProps extends ConfigurableWindow {} +interface UseDevicePixelRatioSlots { + default: (data: Reactive) => any +} + +export const UseDevicePixelRatio = /* #__PURE__ */ defineComponent< + UseDevicePixelRatioProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { + const data = reactive(useDevicePixelRatio(props)) return () => { if (slots.default) return slots.default(data) } }, -}) + { + name: 'UseDevicePixelRatio', + props: ['window'], + }, +) diff --git a/packages/core/useDevicesList/component.ts b/packages/core/useDevicesList/component.ts index da449e9c48a..ac0667df128 100644 --- a/packages/core/useDevicesList/component.ts +++ b/packages/core/useDevicesList/component.ts @@ -1,11 +1,20 @@ -import type { UseDevicesListOptions } from '@vueuse/core' +import type { UseDevicesListOptions, UseDevicesListReturn } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' import { useDevicesList } from '@vueuse/core' import { defineComponent, reactive } from 'vue' -export const UseDevicesList = /* #__PURE__ */ defineComponent({ - name: 'UseDevicesList', - props: ['onUpdated', 'requestPermissions', 'constraints'] as unknown as undefined, - setup(props, { slots }) { +export interface UseDevicesListProps extends UseDevicesListOptions {} +interface UseDevicesListSlots { + default: (data: Reactive) => any +} + +export const UseDevicesList = /* #__PURE__ */ defineComponent< + UseDevicesListProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { const data = reactive(useDevicesList(props)) return () => { @@ -13,4 +22,13 @@ export const UseDevicesList = /* #__PURE__ */ defineComponent) => any +} + +export const UseDocumentVisibility = /* #__PURE__ */ defineComponent< + UseDocumentVisibilityProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { const data = reactive({ - visibility: useDocumentVisibility(), + visibility: useDocumentVisibility(props), }) return () => { @@ -13,4 +26,8 @@ export const UseDocumentVisibility = /* #__PURE__ */ defineComponent({ return slots.default(data) } }, -}) + { + name: 'UseDocumentVisibility', + props: ['document'], + }, +) diff --git a/packages/core/useDocumentVisibility/index.ts b/packages/core/useDocumentVisibility/index.ts index 0171ebfab72..fa3fa450d73 100644 --- a/packages/core/useDocumentVisibility/index.ts +++ b/packages/core/useDocumentVisibility/index.ts @@ -1,4 +1,3 @@ -import type { ShallowRef } from 'vue' import type { ConfigurableDocument } from '../_configurable' import { shallowRef } from 'vue' import { defaultDocument } from '../_configurable' @@ -11,7 +10,7 @@ import { useEventListener } from '../useEventListener' * * @__NO_SIDE_EFFECTS__ */ -export function useDocumentVisibility(options: ConfigurableDocument = {}): ShallowRef { +export function useDocumentVisibility(options: ConfigurableDocument = {}) { const { document = defaultDocument } = options if (!document) return shallowRef('visible') @@ -24,3 +23,5 @@ export function useDocumentVisibility(options: ConfigurableDocument = {}): Shall return visibility } + +export type UseDocumentVisibilityReturn = ReturnType diff --git a/packages/core/useDraggable/component.ts b/packages/core/useDraggable/component.ts index bd68a2a312a..983d1669662 100644 --- a/packages/core/useDraggable/component.ts +++ b/packages/core/useDraggable/component.ts @@ -1,5 +1,5 @@ -import type { UseDraggableOptions } from '@vueuse/core' -import type { Position, RenderableComponent } from '../types' +import type { Position, RenderableComponent, UseDraggableOptions } from '@vueuse/core' +import type { SlotsType } from 'vue' import { isClient, useDraggable, useStorage } from '@vueuse/core' import { computed, defineComponent, h, reactive, shallowRef, toValue } from 'vue' @@ -17,28 +17,13 @@ export interface UseDraggableProps extends UseDraggableOptions, RenderableCompon storageType?: 'local' | 'session' } -export const UseDraggable = /* #__PURE__ */ defineComponent({ - name: 'UseDraggable', - props: [ - 'storageKey', - 'storageType', - 'initialValue', - 'exact', - 'preventDefault', - 'stopPropagation', - 'pointerTypes', - 'as', - 'handle', - 'axis', - 'onStart', - 'onMove', - 'onEnd', - 'disabled', - 'buttons', - 'containerElement', - 'capture', - ] as unknown as undefined, - setup(props, { slots }) { +export const UseDraggable = /* #__PURE__ */ defineComponent< + UseDraggableProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { const target = shallowRef() const handle = computed(() => toValue(props.handle) ?? target.value) const containerElement = computed(() => props.containerElement as (HTMLElement | SVGElement | null | undefined) ?? undefined) @@ -75,4 +60,27 @@ export const UseDraggable = /* #__PURE__ */ defineComponent({ return h(props.as || 'div', { ref: target, style: `touch-action:none;${data.style}` }, slots.default(data)) } }, -}) + { + name: 'UseDraggable', + props: [ + 'storageKey', + 'storageType', + 'initialValue', + 'exact', + 'preventDefault', + 'stopPropagation', + 'pointerTypes', + 'as', + 'handle', + 'axis', + 'onStart', + 'onMove', + 'onEnd', + 'disabled', + 'buttons', + 'containerElement', + 'capture', + 'draggingElement', + ], + }, +) diff --git a/packages/core/useElementBounding/component.ts b/packages/core/useElementBounding/component.ts index 6451b141036..b2a046e9520 100644 --- a/packages/core/useElementBounding/component.ts +++ b/packages/core/useElementBounding/component.ts @@ -1,18 +1,37 @@ -import type { RenderableComponent } from '../types' -import type { UseResizeObserverOptions } from '../useResizeObserver' +import type { RenderableComponent, UseElementBoundingOptions, UseElementBoundingReturn } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' import { useElementBounding } from '@vueuse/core' import { defineComponent, h, reactive, shallowRef } from 'vue' -export const UseElementBounding = /* #__PURE__ */ defineComponent({ - name: 'UseElementBounding', - props: ['box', 'as'] as unknown as undefined, - setup(props, { slots }) { +export interface UseElementBoundingProps extends UseElementBoundingOptions, RenderableComponent {} +interface UseElementBoundingSlots { + default: (data: Reactive) => any +} + +export const UseElementBounding = /* #__PURE__ */ defineComponent< + UseElementBoundingProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { const target = shallowRef() - const data = reactive(useElementBounding(target)) + const data = reactive(useElementBounding(target, props)) return () => { if (slots.default) return h(props.as || 'div', { ref: target }, slots.default(data)) } }, -}) + { + name: 'UseElementBounding', + props: [ + 'as', + 'immediate', + 'reset', + 'updateTiming', + 'windowResize', + 'windowScroll', + ], + }, +) diff --git a/packages/core/useElementBounding/directive.ts b/packages/core/useElementBounding/directive.ts index c1c36d5f064..96c7d5c4ade 100644 --- a/packages/core/useElementBounding/directive.ts +++ b/packages/core/useElementBounding/directive.ts @@ -1,7 +1,7 @@ +import type { UseElementBoundingOptions, UseElementBoundingReturn } from '@vueuse/core' import type { ObjectDirective } from 'vue' -import type { UseElementBoundingOptions, UseElementBoundingReturn } from './index' +import { useElementBounding } from '@vueuse/core' import { watch } from 'vue' -import { useElementBounding } from './index' type ElementBounding = Omit type BindingValueFunction = (bounding: ElementBounding) => void diff --git a/packages/core/useElementHover/directive.ts b/packages/core/useElementHover/directive.ts index d6121f6a699..b14d079f4c3 100644 --- a/packages/core/useElementHover/directive.ts +++ b/packages/core/useElementHover/directive.ts @@ -1,7 +1,7 @@ +import type { UseElementHoverOptions } from '@vueuse/core' import type { ObjectDirective } from 'vue' -import type { UseElementHoverOptions } from './index' +import { useElementHover } from '@vueuse/core' import { watch } from 'vue' -import { useElementHover } from './index' type BindingValueFunction = (state: boolean) => void diff --git a/packages/core/useElementSize/component.ts b/packages/core/useElementSize/component.ts index f7aa05dff3c..4bf051cd86c 100644 --- a/packages/core/useElementSize/component.ts +++ b/packages/core/useElementSize/component.ts @@ -1,19 +1,40 @@ -import type { ElementSize } from '@vueuse/core' -import type { RenderableComponent } from '../types' -import type { UseResizeObserverOptions } from '../useResizeObserver' +import type { ElementSize, RenderableComponent, UseElementSizeReturn, UseResizeObserverOptions } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' import { useElementSize } from '@vueuse/core' -import { defineComponent, h, reactive, shallowRef } from 'vue' +import { defineComponent, h, reactive, shallowRef, toRefs, toValue } from 'vue' -export const UseElementSize = /* #__PURE__ */ defineComponent & UseResizeObserverOptions & RenderableComponent>({ - name: 'UseElementSize', - props: ['width', 'height', 'box', 'as'] as unknown as undefined, - setup(props, { slots }) { +export interface UseElementSizeProps extends Partial, UseResizeObserverOptions, RenderableComponent {} +interface UseElementSizeSlots { + default: (data: Reactive) => any +} + +export const UseElementSize = /* #__PURE__ */ defineComponent< + UseElementSizeProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { const target = shallowRef() - const data = reactive(useElementSize(target, { width: props.width ?? 0, height: props.height ?? 0 }, { box: props.box })) + const { width, height } = toRefs(props) + const data = reactive(useElementSize(target, { width: toValue(width) ?? 0, height: toValue(height) ?? 0 }, { + box: props.box, + window: props.window, + })) return () => { if (slots.default) return h(props.as || 'div', { ref: target }, slots.default(data)) } }, -}) + { + name: 'UseElementSize', + props: [ + 'as', + 'box', + 'height', + 'width', + 'window', + ], + }, +) diff --git a/packages/core/useElementSize/directive.ts b/packages/core/useElementSize/directive.ts index 632782df53e..a9a369dffa8 100644 --- a/packages/core/useElementSize/directive.ts +++ b/packages/core/useElementSize/directive.ts @@ -1,7 +1,7 @@ +import type { ElementSize } from '@vueuse/core' import type { ObjectDirective } from 'vue' -import type { ElementSize } from './index' +import { useElementSize } from '@vueuse/core' import { watch } from 'vue' -import { useElementSize } from './index' type RemoveFirstFromTuple = T['length'] extends 0 ? undefined diff --git a/packages/core/useElementVisibility/component.ts b/packages/core/useElementVisibility/component.ts index be0691dcc83..e023ecc3baa 100644 --- a/packages/core/useElementVisibility/component.ts +++ b/packages/core/useElementVisibility/component.ts @@ -1,14 +1,25 @@ -import type { RenderableComponent } from '../types' +import type { RenderableComponent, UseElementVisibilityOptions, UseElementVisibilityReturn } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' import { useElementVisibility } from '@vueuse/core' import { defineComponent, h, reactive, shallowRef } from 'vue' -export const UseElementVisibility = /* #__PURE__ */ defineComponent({ - name: 'UseElementVisibility', - props: ['as'] as unknown as undefined, - setup(props, { slots }) { +export interface UseElementVisibilityProps extends UseElementVisibilityOptions, RenderableComponent {} +interface UseElementVisibilitySlots { + default: (data: Reactive<{ + isVisible: UseElementVisibilityReturn + }>) => any +} + +export const UseElementVisibility = /* #__PURE__ */ defineComponent< + UseElementVisibilityProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { const target = shallowRef() const data = reactive({ - isVisible: useElementVisibility(target), + isVisible: useElementVisibility(target, props), }) return () => { @@ -16,4 +27,15 @@ export const UseElementVisibility = /* #__PURE__ */ defineComponent void diff --git a/packages/core/useElementVisibility/index.ts b/packages/core/useElementVisibility/index.ts index d840fa03367..984f374805a 100644 --- a/packages/core/useElementVisibility/index.ts +++ b/packages/core/useElementVisibility/index.ts @@ -73,3 +73,5 @@ export function useElementVisibility( return elementIsVisible } + +export type UseElementVisibilityReturn = ReturnType diff --git a/packages/core/useEyeDropper/component.ts b/packages/core/useEyeDropper/component.ts index 45d78a3daa7..14fc288fa02 100644 --- a/packages/core/useEyeDropper/component.ts +++ b/packages/core/useEyeDropper/component.ts @@ -1,17 +1,29 @@ +import type { UseEyeDropperOptions, UseEyeDropperReturn } from '@vueuse/core' +import type { Reactive, SlotsType } from 'vue' import { useEyeDropper } from '@vueuse/core' import { defineComponent, reactive } from 'vue' -export const UseEyeDropper = /* #__PURE__ */ defineComponent({ - name: 'UseEyeDropper', - props: { - sRGBHex: String, - }, - setup(props, { slots }) { - const data = reactive(useEyeDropper()) +export interface UseEyeDropperProps extends UseEyeDropperOptions {} +interface UseEyeDropperSlots { + default: (data: Reactive) => any +} + +export const UseEyeDropper = /* #__PURE__ */ defineComponent< + UseEyeDropperProps, + Record, + string, + SlotsType +>( + (props, { slots }) => { + const data = reactive(useEyeDropper(props)) return () => { if (slots.default) return slots.default(data) } }, -}) + { + name: 'UseEyeDropper', + props: ['initialValue'], + }, +) diff --git a/packages/core/useEyeDropper/index.md b/packages/core/useEyeDropper/index.md index 1dfacc4823d..e4ea52c4e2d 100644 --- a/packages/core/useEyeDropper/index.md +++ b/packages/core/useEyeDropper/index.md @@ -19,7 +19,7 @@ const { isSupported, open, sRGBHex } = useEyeDropper() ```vue