@vueuse/components 6.3.1 → 6.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.cjs CHANGED
@@ -8,6 +8,7 @@ var shared = require('@vueuse/shared');
8
8
 
9
9
  const OnClickOutside = vueDemi.defineComponent({
10
10
  name: 'OnClickOutside',
11
+ props: ['as'],
11
12
  emits: ['trigger'],
12
13
  setup(props, { slots, emit }) {
13
14
  const target = vueDemi.ref();
@@ -16,7 +17,7 @@ const OnClickOutside = vueDemi.defineComponent({
16
17
  });
17
18
  return () => {
18
19
  if (slots.default)
19
- return vueDemi.h('div', { ref: target }, slots.default());
20
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default());
20
21
  };
21
22
  },
22
23
  });
@@ -216,6 +217,7 @@ const UseDraggable = vueDemi.defineComponent({
216
217
  'exact',
217
218
  'preventDefault',
218
219
  'pointerTypes',
220
+ 'as',
219
221
  ],
220
222
  setup(props, { slots }) {
221
223
  const target = vueDemi.ref();
@@ -225,20 +227,20 @@ const UseDraggable = vueDemi.defineComponent({
225
227
  const data = vueDemi.reactive(core.useDraggable(target, Object.assign(Object.assign({}, props), { initialValue })));
226
228
  return () => {
227
229
  if (slots.default)
228
- return vueDemi.h('div', { ref: target, style: data.style }, slots.default(data));
230
+ return vueDemi.h(props.as || 'div', { ref: target, style: `touch-action:none;${data.style}` }, slots.default(data));
229
231
  };
230
232
  },
231
233
  });
232
234
 
233
235
  const UseElementBounding = vueDemi.defineComponent({
234
236
  name: 'UseElementBounding',
235
- props: ['box'],
237
+ props: ['box', 'as'],
236
238
  setup(props, { slots }) {
237
239
  const target = vueDemi.ref();
238
- const data = vueDemi.reactive(core.useElementBounding(target, props));
240
+ const data = vueDemi.reactive(core.useElementBounding(target, { box: props.box, window: props.window }));
239
241
  return () => {
240
242
  if (slots.default)
241
- return vueDemi.h('div', { ref: target }, slots.default(data));
243
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
242
244
  };
243
245
  },
244
246
  });
@@ -251,13 +253,14 @@ const UseElementSize = vueDemi.defineComponent({
251
253
  const data = vueDemi.reactive(core.useElementSize(target, { width: props.width, height: props.height }, { box: props.box }));
252
254
  return () => {
253
255
  if (slots.default)
254
- return vueDemi.h('div', { ref: target }, slots.default(data));
256
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
255
257
  };
256
258
  },
257
259
  });
258
260
 
259
261
  const UseElementVisibility = vueDemi.defineComponent({
260
262
  name: 'UseElementVisibility',
263
+ as: ['as'],
261
264
  setup(props, { slots }) {
262
265
  const target = vueDemi.ref();
263
266
  const data = vueDemi.reactive({
@@ -265,19 +268,20 @@ const UseElementVisibility = vueDemi.defineComponent({
265
268
  });
266
269
  return () => {
267
270
  if (slots.default)
268
- return vueDemi.h('div', { ref: target }, slots.default(data));
271
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
269
272
  };
270
273
  },
271
274
  });
272
275
 
273
276
  const UseFullscreen = vueDemi.defineComponent({
274
277
  name: 'UseFullscreen',
278
+ props: ['as'],
275
279
  setup(props, { slots }) {
276
280
  const target = vueDemi.ref();
277
281
  const data = vueDemi.reactive(core.useFullscreen(target));
278
282
  return () => {
279
283
  if (slots.default)
280
- return vueDemi.h('div', { ref: target }, slots.default(data));
284
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
281
285
  };
282
286
  },
283
287
  });
@@ -320,26 +324,26 @@ const UseMouse = vueDemi.defineComponent({
320
324
 
321
325
  const UseMouseInElement = vueDemi.defineComponent({
322
326
  name: 'UseMouseElement',
323
- props: ['handleOutside'],
327
+ props: ['handleOutside', 'as'],
324
328
  setup(props, { slots }) {
325
329
  const target = vueDemi.ref();
326
330
  const data = vueDemi.reactive(core.useMouseInElement(target, props));
327
331
  return () => {
328
332
  if (slots.default)
329
- return vueDemi.h('div', { ref: target }, slots.default(data));
333
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
330
334
  };
331
335
  },
332
336
  });
333
337
 
334
338
  const UseMousePressed = vueDemi.defineComponent({
335
339
  name: 'UseMousePressed',
336
- props: ['touch', 'initialValue'],
340
+ props: ['touch', 'initialValue', 'as'],
337
341
  setup(props, { slots }) {
338
342
  const target = vueDemi.ref();
339
343
  const data = vueDemi.reactive(core.useMousePressed(Object.assign(Object.assign({}, props), { target })));
340
344
  return () => {
341
345
  if (slots.default)
342
- return vueDemi.h('div', { ref: target }, slots.default(data));
346
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
343
347
  };
344
348
  },
345
349
  });
@@ -398,12 +402,14 @@ const UsePointer = vueDemi.defineComponent({
398
402
  props: [
399
403
  'pointerTypes',
400
404
  'initialValue',
405
+ 'target',
401
406
  ],
402
407
  setup(props, { slots }) {
403
- const data = vueDemi.reactive(core.usePointer(props));
408
+ const el = vueDemi.ref(null);
409
+ const data = vueDemi.reactive(core.usePointer(Object.assign(Object.assign({}, props), { target: props.target === 'self' ? el : defaultWindow })));
404
410
  return () => {
405
411
  if (slots.default)
406
- return slots.default(data);
412
+ return slots.default(data, { ref: el });
407
413
  };
408
414
  },
409
415
  });
@@ -472,6 +478,22 @@ const UseTimestamp = vueDemi.defineComponent({
472
478
  },
473
479
  });
474
480
 
481
+ const UseVirtualList = vueDemi.defineComponent({
482
+ name: 'UseVirtualList',
483
+ props: [
484
+ 'list',
485
+ 'options',
486
+ 'height',
487
+ ],
488
+ setup(props, { slots }) {
489
+ const { list, containerProps, wrapperProps } = core.useVirtualList(props.list, props.options);
490
+ containerProps.style.height = props.height || '300px';
491
+ return () => vueDemi.h('div', Object.assign({}, containerProps), [
492
+ vueDemi.h('div', Object.assign({}, wrapperProps.value), list.value.map((item) => vueDemi.h('div', { style: { overFlow: 'hidden', height: item.height } }, slots.default ? slots.default(item) : 'Please set content!'))),
493
+ ]);
494
+ },
495
+ });
496
+
475
497
  const UseWindowFocus = vueDemi.defineComponent({
476
498
  name: 'UseWindowFocus',
477
499
  setup(props, { slots }) {
@@ -527,6 +549,7 @@ exports.UsePreferredDark = UsePreferredDark;
527
549
  exports.UsePreferredLanguages = UsePreferredLanguages;
528
550
  exports.UseTimeAgo = UseTimeAgo;
529
551
  exports.UseTimestamp = UseTimestamp;
552
+ exports.UseVirtualList = UseVirtualList;
530
553
  exports.UseWindowFocus = UseWindowFocus;
531
554
  exports.UseWindowSize = UseWindowSize;
532
555
  exports.VOnClickOutside = VOnClickOutside;
package/index.d.ts CHANGED
@@ -1,25 +1,28 @@
1
1
  import * as vue_demi from 'vue-demi';
2
2
  import { FunctionDirective } from 'vue-demi';
3
3
  import * as _vueuse_core from '@vueuse/core';
4
- import { UseDarkOptions, UseDevicesListOptions, UseDraggableOptions, ElementSize, GeolocationOptions, IdleOptions, MouseOptions, MouseInElementOptions, MousePressedOptions, UseNowOptions, UsePointerOptions, TimeAgoOptions, TimestampOptions, WindowSizeOptions } from '@vueuse/core';
4
+ import { UseDarkOptions, UseDevicesListOptions, UseDraggableOptions, ElementSize, GeolocationOptions, IdleOptions, MouseOptions, MouseInElementOptions, MousePressedOptions, UseNowOptions, UsePointerOptions, TimeAgoOptions, TimestampOptions, UseVirtualListOptions, WindowSizeOptions } from '@vueuse/core';
5
5
  import { MaybeRef } from '@vueuse/shared';
6
6
 
7
- declare const OnClickOutside: vue_demi.DefineComponent<{}, () => vue_demi.VNode<vue_demi.RendererNode, vue_demi.RendererElement, {
8
- [key: string]: any;
9
- }> | undefined, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, "trigger"[], "trigger", vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{} & {} & {}> & {
10
- onTrigger?: ((...args: any[]) => any) | undefined;
11
- }, {}>;
7
+ interface RenderableComponent {
8
+ /**
9
+ * The elment that the component should be rendered as
10
+ *
11
+ * @default 'div'
12
+ */
13
+ as?: Object | string;
14
+ }
15
+
16
+ declare const OnClickOutside: vue_demi.DefineComponent<RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
17
+ as?: unknown;
18
+ } & {} & {
19
+ as?: string | Object | undefined;
20
+ }>, {}>;
12
21
 
13
22
  interface ConfigurableWindow {
14
23
  window?: Window;
15
24
  }
16
25
 
17
- interface Position {
18
- x: number;
19
- y: number;
20
- }
21
- declare type PointerType = 'mouse' | 'touch' | 'pen';
22
-
23
26
  interface ResizeObserverOptions extends ConfigurableWindow {
24
27
  /**
25
28
  * Sets which box model the observer will observe changes to. Possible values
@@ -68,9 +71,9 @@ declare const UseDark: vue_demi.DefineComponent<UseDarkOptions, {}, {}, {}, {},
68
71
  flush?: "pre" | "post" | "sync" | undefined;
69
72
  eventFilter?: _vueuse_core.EventFilter<any[], any> | undefined;
70
73
  deep?: boolean | undefined;
74
+ onError?: ((error: unknown) => void) | undefined;
71
75
  storage?: _vueuse_core.StorageLike | undefined;
72
76
  window?: Window | undefined;
73
- onError?: ((error: unknown) => void) | undefined;
74
77
  listenToStorageChanges?: boolean | undefined;
75
78
  serializer?: _vueuse_core.Serializer<_vueuse_core.ColorSchemes> | undefined;
76
79
  selector?: string | undefined;
@@ -107,7 +110,7 @@ declare const UseDocumentVisibility: vue_demi.DefineComponent<{}, () => vue_demi
107
110
  [key: string]: any;
108
111
  }>[] | undefined, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{} & {} & {}>, {}>;
109
112
 
110
- interface UseDraggableProps extends UseDraggableOptions {
113
+ interface UseDraggableProps extends UseDraggableOptions, RenderableComponent {
111
114
  /**
112
115
  * When provided, use `useStorage` to preserve element's position
113
116
  */
@@ -129,48 +132,55 @@ declare const UseDraggable: vue_demi.DefineComponent<UseDraggableProps, {}, {},
129
132
  initialValue?: unknown;
130
133
  onStart?: unknown;
131
134
  onMove?: unknown;
132
- } & {
133
- draggingElement: any;
134
- } & {
135
- initialValue?: _vueuse_core.MaybeRef<Position> | undefined;
135
+ as?: unknown;
136
+ } & {} & {
137
+ initialValue?: _vueuse_core.MaybeRef<_vueuse_core.Position> | undefined;
136
138
  storageKey?: string | undefined;
137
- pointerTypes?: PointerType[] | undefined;
139
+ pointerTypes?: _vueuse_core.PointerType[] | undefined;
138
140
  preventDefault?: _vueuse_core.MaybeRef<boolean> | undefined;
141
+ as?: string | Object | undefined;
139
142
  storageType?: "local" | "session" | undefined;
140
143
  exact?: _vueuse_core.MaybeRef<boolean> | undefined;
141
- onStart?: ((position: Position, event: PointerEvent) => false | void) | undefined;
142
- onMove?: ((position: Position, event: PointerEvent) => void) | undefined;
143
- }>, {
144
- draggingElement: any;
145
- }>;
144
+ draggingElement?: _vueuse_core.MaybeRef<Window | Document | HTMLElement | SVGElement | null> | undefined;
145
+ onStart?: ((position: _vueuse_core.Position, event: PointerEvent) => false | void) | undefined;
146
+ onMove?: ((position: _vueuse_core.Position, event: PointerEvent) => void) | undefined;
147
+ }>, {}>;
146
148
 
147
- declare const UseElementBounding: vue_demi.DefineComponent<ResizeObserverOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
149
+ declare const UseElementBounding: vue_demi.DefineComponent<ResizeObserverOptions & RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
148
150
  box?: unknown;
149
151
  window?: unknown;
152
+ as?: unknown;
150
153
  } & {} & {
151
154
  window?: Window | undefined;
152
155
  box?: "content-box" | "border-box" | undefined;
156
+ as?: string | Object | undefined;
153
157
  }>, {}>;
154
158
 
155
- declare const UseElementSize: vue_demi.DefineComponent<ElementSize & ResizeObserverOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
159
+ declare const UseElementSize: vue_demi.DefineComponent<ElementSize & ResizeObserverOptions & RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
156
160
  width?: unknown;
157
161
  height?: unknown;
158
162
  box?: unknown;
159
163
  window?: unknown;
164
+ as?: unknown;
160
165
  } & {} & {
161
166
  window?: Window | undefined;
162
167
  box?: "content-box" | "border-box" | undefined;
163
168
  width?: number | undefined;
164
169
  height?: number | undefined;
170
+ as?: string | Object | undefined;
165
171
  }>, {}>;
166
172
 
167
- declare const UseElementVisibility: vue_demi.DefineComponent<{}, () => vue_demi.VNode<vue_demi.RendererNode, vue_demi.RendererElement, {
168
- [key: string]: any;
169
- }> | undefined, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{} & {} & {}>, {}>;
173
+ declare const UseElementVisibility: vue_demi.DefineComponent<RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
174
+ as?: unknown;
175
+ } & {} & {
176
+ as?: string | Object | undefined;
177
+ }>, {}>;
170
178
 
171
- declare const UseFullscreen: vue_demi.DefineComponent<{}, () => vue_demi.VNode<vue_demi.RendererNode, vue_demi.RendererElement, {
172
- [key: string]: any;
173
- }> | undefined, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{} & {} & {}>, {}>;
179
+ declare const UseFullscreen: vue_demi.DefineComponent<RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
180
+ as?: unknown;
181
+ } & {} & {
182
+ as?: string | Object | undefined;
183
+ }>, {}>;
174
184
 
175
185
  declare const UseGeolocation: vue_demi.DefineComponent<GeolocationOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
176
186
  enableHighAccuracy?: unknown;
@@ -208,36 +218,40 @@ declare const UseMouse: vue_demi.DefineComponent<MouseOptions, {}, {}, {}, {}, v
208
218
  initialValue?: unknown;
209
219
  window?: unknown;
210
220
  } & {} & {
211
- initialValue?: Position | undefined;
221
+ initialValue?: _vueuse_core.Position | undefined;
212
222
  window?: Window | undefined;
213
223
  touch?: boolean | undefined;
214
224
  resetOnTouchEnds?: boolean | undefined;
215
225
  }>, {}>;
216
226
 
217
- declare const UseMouseInElement: vue_demi.DefineComponent<MouseInElementOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
227
+ declare const UseMouseInElement: vue_demi.DefineComponent<MouseInElementOptions & RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
218
228
  handleOutside?: unknown;
219
229
  touch?: unknown;
220
230
  resetOnTouchEnds?: unknown;
221
231
  initialValue?: unknown;
222
232
  window?: unknown;
233
+ as?: unknown;
223
234
  } & {} & {
224
- initialValue?: Position | undefined;
235
+ initialValue?: _vueuse_core.Position | undefined;
225
236
  window?: Window | undefined;
226
237
  touch?: boolean | undefined;
227
238
  resetOnTouchEnds?: boolean | undefined;
228
239
  handleOutside?: boolean | undefined;
240
+ as?: string | Object | undefined;
229
241
  }>, {}>;
230
242
 
231
- declare const UseMousePressed: vue_demi.DefineComponent<Omit<MousePressedOptions, "target">, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
243
+ declare const UseMousePressed: vue_demi.DefineComponent<Omit<MousePressedOptions, "target"> & RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
232
244
  initialValue?: unknown;
233
245
  drag?: unknown;
234
246
  window?: unknown;
235
247
  touch?: unknown;
248
+ as?: unknown;
236
249
  } & {} & {
237
250
  initialValue?: boolean | undefined;
238
251
  drag?: boolean | undefined;
239
252
  window?: Window | undefined;
240
253
  touch?: boolean | undefined;
254
+ as?: string | Object | undefined;
241
255
  }>, {}>;
242
256
 
243
257
  declare const UseNetwork: vue_demi.DefineComponent<{}, () => vue_demi.VNode<vue_demi.RendererNode, vue_demi.RendererElement, {
@@ -258,14 +272,18 @@ declare const UsePageLeave: vue_demi.DefineComponent<{}, () => vue_demi.VNode<vu
258
272
  [key: string]: any;
259
273
  }>[] | undefined, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{} & {} & {}>, {}>;
260
274
 
261
- declare const UsePointer: vue_demi.DefineComponent<UsePointerOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
262
- pointerTypes?: unknown;
275
+ declare const UsePointer: vue_demi.DefineComponent<Omit<UsePointerOptions, "target"> & {
276
+ target: 'window' | 'self';
277
+ }, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
263
278
  initialValue?: unknown;
264
279
  window?: unknown;
280
+ pointerTypes?: unknown;
281
+ target?: unknown;
265
282
  } & {} & {
283
+ target?: "window" | "self" | undefined;
266
284
  initialValue?: _vueuse_core.MaybeRef<Partial<_vueuse_core.UsePointerState>> | undefined;
267
285
  window?: Window | undefined;
268
- pointerTypes?: PointerType[] | undefined;
286
+ pointerTypes?: _vueuse_core.PointerType[] | undefined;
269
287
  }>, {}>;
270
288
 
271
289
  declare const UsePreferredColorScheme: vue_demi.DefineComponent<{}, () => vue_demi.VNode<vue_demi.RendererNode, vue_demi.RendererElement, {
@@ -305,6 +323,36 @@ declare const UseTimestamp: vue_demi.DefineComponent<Omit<TimestampOptions<true>
305
323
  offset?: number | undefined;
306
324
  }>, {}>;
307
325
 
326
+ interface UseVirtualListProps {
327
+ /**
328
+ * data of scrollable list
329
+ *
330
+ * @default []
331
+ */
332
+ list: Array<any>;
333
+ /**
334
+ * useVirtualList's options
335
+ *
336
+ * @default {}
337
+ */
338
+ options: UseVirtualListOptions;
339
+ /**
340
+ * virtualList's height
341
+ *
342
+ * @default 300px
343
+ */
344
+ height: string;
345
+ }
346
+ declare const UseVirtualList: vue_demi.DefineComponent<UseVirtualListProps, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{
347
+ list?: unknown;
348
+ options?: unknown;
349
+ height?: unknown;
350
+ } & {} & {
351
+ options?: UseVirtualListOptions | undefined;
352
+ height?: string | undefined;
353
+ list?: any;
354
+ }>, {}>;
355
+
308
356
  declare const UseWindowFocus: vue_demi.DefineComponent<{}, () => vue_demi.VNode<vue_demi.RendererNode, vue_demi.RendererElement, {
309
357
  [key: string]: any;
310
358
  }>[] | undefined, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{} & {} & {}>, {}>;
@@ -319,4 +367,4 @@ declare const UseWindowSize: vue_demi.DefineComponent<WindowSizeOptions, {}, {},
319
367
  initialHeight?: number | undefined;
320
368
  }>, {}>;
321
369
 
322
- export { OnClickOutside, UseActiveElement, UseBattery, UseBrowserLocation, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseDraggableProps, UseElementBounding, UseElementSize, UseElementVisibility, UseFullscreen, UseGeolocation, UseIdle, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseOnline, UsePageLeave, UsePointer, UsePreferredColorScheme, UsePreferredDark, UsePreferredLanguages, UseTimeAgo, UseTimestamp, UseWindowFocus, UseWindowSize, VOnClickOutside };
370
+ export { OnClickOutside, UseActiveElement, UseBattery, UseBrowserLocation, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseDraggableProps, UseElementBounding, UseElementSize, UseElementVisibility, UseFullscreen, UseGeolocation, UseIdle, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseOnline, UsePageLeave, UsePointer, UsePreferredColorScheme, UsePreferredDark, UsePreferredLanguages, UseTimeAgo, UseTimestamp, UseVirtualList, UseVirtualListProps, UseWindowFocus, UseWindowSize, VOnClickOutside };
package/index.iife.js CHANGED
@@ -64,6 +64,7 @@
64
64
 
65
65
  const OnClickOutside = vueDemi.defineComponent({
66
66
  name: 'OnClickOutside',
67
+ props: ['as'],
67
68
  emits: ['trigger'],
68
69
  setup(props, { slots, emit }) {
69
70
  const target = vueDemi.ref();
@@ -72,7 +73,7 @@
72
73
  });
73
74
  return () => {
74
75
  if (slots.default)
75
- return vueDemi.h('div', { ref: target }, slots.default());
76
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default());
76
77
  };
77
78
  },
78
79
  });
@@ -272,6 +273,7 @@
272
273
  'exact',
273
274
  'preventDefault',
274
275
  'pointerTypes',
276
+ 'as',
275
277
  ],
276
278
  setup(props, { slots }) {
277
279
  const target = vueDemi.ref();
@@ -281,20 +283,20 @@
281
283
  const data = vueDemi.reactive(core.useDraggable(target, Object.assign(Object.assign({}, props), { initialValue })));
282
284
  return () => {
283
285
  if (slots.default)
284
- return vueDemi.h('div', { ref: target, style: data.style }, slots.default(data));
286
+ return vueDemi.h(props.as || 'div', { ref: target, style: `touch-action:none;${data.style}` }, slots.default(data));
285
287
  };
286
288
  },
287
289
  });
288
290
 
289
291
  const UseElementBounding = vueDemi.defineComponent({
290
292
  name: 'UseElementBounding',
291
- props: ['box'],
293
+ props: ['box', 'as'],
292
294
  setup(props, { slots }) {
293
295
  const target = vueDemi.ref();
294
- const data = vueDemi.reactive(core.useElementBounding(target, props));
296
+ const data = vueDemi.reactive(core.useElementBounding(target, { box: props.box, window: props.window }));
295
297
  return () => {
296
298
  if (slots.default)
297
- return vueDemi.h('div', { ref: target }, slots.default(data));
299
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
298
300
  };
299
301
  },
300
302
  });
@@ -307,13 +309,14 @@
307
309
  const data = vueDemi.reactive(core.useElementSize(target, { width: props.width, height: props.height }, { box: props.box }));
308
310
  return () => {
309
311
  if (slots.default)
310
- return vueDemi.h('div', { ref: target }, slots.default(data));
312
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
311
313
  };
312
314
  },
313
315
  });
314
316
 
315
317
  const UseElementVisibility = vueDemi.defineComponent({
316
318
  name: 'UseElementVisibility',
319
+ as: ['as'],
317
320
  setup(props, { slots }) {
318
321
  const target = vueDemi.ref();
319
322
  const data = vueDemi.reactive({
@@ -321,19 +324,20 @@
321
324
  });
322
325
  return () => {
323
326
  if (slots.default)
324
- return vueDemi.h('div', { ref: target }, slots.default(data));
327
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
325
328
  };
326
329
  },
327
330
  });
328
331
 
329
332
  const UseFullscreen = vueDemi.defineComponent({
330
333
  name: 'UseFullscreen',
334
+ props: ['as'],
331
335
  setup(props, { slots }) {
332
336
  const target = vueDemi.ref();
333
337
  const data = vueDemi.reactive(core.useFullscreen(target));
334
338
  return () => {
335
339
  if (slots.default)
336
- return vueDemi.h('div', { ref: target }, slots.default(data));
340
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
337
341
  };
338
342
  },
339
343
  });
@@ -376,26 +380,26 @@
376
380
 
377
381
  const UseMouseInElement = vueDemi.defineComponent({
378
382
  name: 'UseMouseElement',
379
- props: ['handleOutside'],
383
+ props: ['handleOutside', 'as'],
380
384
  setup(props, { slots }) {
381
385
  const target = vueDemi.ref();
382
386
  const data = vueDemi.reactive(core.useMouseInElement(target, props));
383
387
  return () => {
384
388
  if (slots.default)
385
- return vueDemi.h('div', { ref: target }, slots.default(data));
389
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
386
390
  };
387
391
  },
388
392
  });
389
393
 
390
394
  const UseMousePressed = vueDemi.defineComponent({
391
395
  name: 'UseMousePressed',
392
- props: ['touch', 'initialValue'],
396
+ props: ['touch', 'initialValue', 'as'],
393
397
  setup(props, { slots }) {
394
398
  const target = vueDemi.ref();
395
399
  const data = vueDemi.reactive(core.useMousePressed(Object.assign(Object.assign({}, props), { target })));
396
400
  return () => {
397
401
  if (slots.default)
398
- return vueDemi.h('div', { ref: target }, slots.default(data));
402
+ return vueDemi.h(props.as || 'div', { ref: target }, slots.default(data));
399
403
  };
400
404
  },
401
405
  });
@@ -454,12 +458,14 @@
454
458
  props: [
455
459
  'pointerTypes',
456
460
  'initialValue',
461
+ 'target',
457
462
  ],
458
463
  setup(props, { slots }) {
459
- const data = vueDemi.reactive(core.usePointer(props));
464
+ const el = vueDemi.ref(null);
465
+ const data = vueDemi.reactive(core.usePointer(Object.assign(Object.assign({}, props), { target: props.target === 'self' ? el : defaultWindow })));
460
466
  return () => {
461
467
  if (slots.default)
462
- return slots.default(data);
468
+ return slots.default(data, { ref: el });
463
469
  };
464
470
  },
465
471
  });
@@ -528,6 +534,22 @@
528
534
  },
529
535
  });
530
536
 
537
+ const UseVirtualList = vueDemi.defineComponent({
538
+ name: 'UseVirtualList',
539
+ props: [
540
+ 'list',
541
+ 'options',
542
+ 'height',
543
+ ],
544
+ setup(props, { slots }) {
545
+ const { list, containerProps, wrapperProps } = core.useVirtualList(props.list, props.options);
546
+ containerProps.style.height = props.height || '300px';
547
+ return () => vueDemi.h('div', Object.assign({}, containerProps), [
548
+ vueDemi.h('div', Object.assign({}, wrapperProps.value), list.value.map((item) => vueDemi.h('div', { style: { overFlow: 'hidden', height: item.height } }, slots.default ? slots.default(item) : 'Please set content!'))),
549
+ ]);
550
+ },
551
+ });
552
+
531
553
  const UseWindowFocus = vueDemi.defineComponent({
532
554
  name: 'UseWindowFocus',
533
555
  setup(props, { slots }) {
@@ -583,6 +605,7 @@
583
605
  exports.UsePreferredLanguages = UsePreferredLanguages;
584
606
  exports.UseTimeAgo = UseTimeAgo;
585
607
  exports.UseTimestamp = UseTimestamp;
608
+ exports.UseVirtualList = UseVirtualList;
586
609
  exports.UseWindowFocus = UseWindowFocus;
587
610
  exports.UseWindowSize = UseWindowSize;
588
611
  exports.VOnClickOutside = VOnClickOutside;
package/index.iife.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){if(!e.VueDemi){var t={},n=e.Vue;if(n)if("2."===n.version.slice(0,2)){var s=e.VueCompositionAPI;if(s){for(var i in s)t[i]=s[i];t.isVue2=!0,t.isVue3=!1,t.install=function(){},t.Vue=n,t.Vue2=n,t.version=n.version}else console.error("[vue-demi] no VueCompositionAPI instance found, please be sure to import `@vue/composition-api` before `vue-demi`.")}else if("3."===n.version.slice(0,2)){for(var i in n)t[i]=n[i];t.isVue2=!1,t.isVue3=!0,t.install=function(){},t.Vue=n,t.Vue2=void 0,t.version=n.version,t.set=function(e,t,n){return Array.isArray(e)?(e.length=Math.max(e.length,t),e.splice(t,1,n),n):(e[t]=n,n)},t.del=function(e,t){Array.isArray(e)?e.splice(t,1):delete e[t]}}else console.error("[vue-demi] Vue version "+n.version+" is unsupported.");else console.error("[vue-demi] no Vue instance found, please be sure to import `vue` before `vue-demi`.");e.VueDemi=t}}(window),function(e,t,n,s){"use strict";const i=t.defineComponent({name:"OnClickOutside",emits:["trigger"],setup(e,{slots:s,emit:i}){const r=t.ref();return n.onClickOutside(r,(e=>{i("trigger",e)})),()=>{if(s.default)return t.h("div",{ref:r},s.default())}}});const r=s.isClient?window:void 0;function o(e,n,i={}){const{window:o=r,event:u="pointerdown"}=i;if(!o)return;return function(...e){let n,i,o,u;if(s.isString(e[0])?([i,o,u]=e,n=r):[n,i,o,u]=e,!n)return s.noop;let a=s.noop;const l=t.watch((()=>t.unref(n)),(e=>{a(),e&&(e.addEventListener(i,o,u),a=()=>{e.removeEventListener(i,o,u),a=s.noop})}),{immediate:!0,flush:"post"}),f=()=>{l(),a()};return s.tryOnScopeDispose(f),f}(o,u,(s=>{const i=function(e){var n,s;const i=t.unref(e);return null!==(s=null===(n=i)||void 0===n?void 0:n.$el)&&void 0!==s?s:i}(e);i&&(i===s.target||s.composedPath().includes(i)||n(s))}),{passive:!0})}const u=t.defineComponent({name:"UseActiveElement",setup(e,{slots:s}){const i=t.reactive({element:n.useActiveElement()});return()=>{if(s.default)return s.default(i)}}}),a=t.defineComponent({name:"UseBattery",setup(e,{slots:s}){const i=t.reactive(n.useBattery(e));return()=>{if(s.default)return s.default(i)}}}),l=t.defineComponent({name:"UseBrowserLocation",setup(e,{slots:s}){const i=t.reactive(n.useBrowserLocation());return()=>{if(s.default)return s.default(i)}}}),f=t.defineComponent({name:"UseDark",props:["selector","attribute","valueDark","valueLight","onChanged","storageKey","storage"],setup(e,{slots:i}){const r=n.useDark(e),o=t.reactive({isDark:r,toggleDark:s.useToggle(r)});return()=>{if(i.default)return i.default(o)}}}),d=t.defineComponent({name:"UseDeviceMotion",setup(e,{slots:s}){const i=t.reactive(n.useDeviceMotion());return()=>{if(s.default)return s.default(i)}}}),c=t.defineComponent({name:"UseDeviceOrientation",setup(e,{slots:s}){const i=t.reactive(n.useDeviceOrientation());return()=>{if(s.default)return s.default(i)}}}),p=t.defineComponent({name:"UseDevicePixelRatio",setup(e,{slots:s}){const i=t.reactive({pixelRatio:n.useDevicePixelRatio()});return()=>{if(s.default)return s.default(i)}}}),m=t.defineComponent({name:"UseDevicesList",props:["onUpdated","requestPermissions"],setup(e,{slots:s}){const i=t.reactive(n.useDevicesList(e));return()=>{if(s.default)return s.default(i)}}}),v=t.defineComponent({name:"UseDocumentVisibility",setup(e,{slots:s}){const i=t.reactive({visibility:n.useDocumentVisibility()});return()=>{if(s.default)return s.default(i)}}}),U=t.defineComponent({name:"UseDraggable",props:["storageKey","initialValue","exact","preventDefault","pointerTypes"],setup(e,{slots:s}){const i=t.ref(),r=e.storageKey?n.useStorage(e.storageKey,t.unref(e.initialValue)||{x:0,y:0},"session"===e.storageType?sessionStorage:localStorage):e.initialValue||{x:0,y:0},o=t.reactive(n.useDraggable(i,Object.assign(Object.assign({},e),{initialValue:r})));return()=>{if(s.default)return t.h("div",{ref:i,style:o.style},s.default(o))}}}),g=t.defineComponent({name:"UseElementBounding",props:["box"],setup(e,{slots:s}){const i=t.ref(),r=t.reactive(n.useElementBounding(i,e));return()=>{if(s.default)return t.h("div",{ref:i},s.default(r))}}}),C=t.defineComponent({name:"UseElementSize",props:["width","height","box"],setup(e,{slots:s}){const i=t.ref(),r=t.reactive(n.useElementSize(i,{width:e.width,height:e.height},{box:e.box}));return()=>{if(s.default)return t.h("div",{ref:i},s.default(r))}}}),h=t.defineComponent({name:"UseElementVisibility",setup(e,{slots:s}){const i=t.ref(),r=t.reactive({isVisible:n.useElementVisibility(i)});return()=>{if(s.default)return t.h("div",{ref:i},s.default(r))}}}),V=t.defineComponent({name:"UseFullscreen",setup(e,{slots:s}){const i=t.ref(),r=t.reactive(n.useFullscreen(i));return()=>{if(s.default)return t.h("div",{ref:i},s.default(r))}}}),D=t.defineComponent({name:"UseGeolocation",props:["enableHighAccuracy","maximumAge","timeout","navigator"],setup(e,{slots:s}){const i=t.reactive(n.useGeolocation(e));return()=>{if(s.default)return s.default(i)}}}),b=t.defineComponent({name:"UseIdle",props:["timeout","events","listenForVisibilityChange","initialState"],setup(e,{slots:s}){const i=t.reactive(n.useIdle(e.timeout,e));return()=>{if(s.default)return s.default(i)}}}),y=t.defineComponent({name:"UseMouse",props:["touch","resetOnTouchEnds","initialValue"],setup(e,{slots:s}){const i=t.reactive(n.useMouse(e));return()=>{if(s.default)return s.default(i)}}}),O=t.defineComponent({name:"UseMouseElement",props:["handleOutside"],setup(e,{slots:s}){const i=t.ref(),r=t.reactive(n.useMouseInElement(i,e));return()=>{if(s.default)return t.h("div",{ref:i},s.default(r))}}}),w=t.defineComponent({name:"UseMousePressed",props:["touch","initialValue"],setup(e,{slots:s}){const i=t.ref(),r=t.reactive(n.useMousePressed(Object.assign(Object.assign({},e),{target:i})));return()=>{if(s.default)return t.h("div",{ref:i},s.default(r))}}}),P=t.defineComponent({name:"UseNetwork",setup(e,{slots:s}){const i=t.reactive(n.useNetwork());return()=>{if(s.default)return s.default(i)}}}),E=t.defineComponent({name:"UseNow",props:["interval"],setup(e,{slots:s}){const i=t.reactive(n.useNow(Object.assign(Object.assign({},e),{controls:!0})));return()=>{if(s.default)return s.default(i)}}}),k=t.defineComponent({name:"UseOnline",setup(e,{slots:s}){const i=t.reactive({isOnline:n.useOnline()});return()=>{if(s.default)return s.default(i)}}}),L=t.defineComponent({name:"UsePageLeave",setup(e,{slots:s}){const i=t.reactive({isLeft:n.usePageLeave()});return()=>{if(s.default)return s.default(i)}}}),S=t.defineComponent({name:"UsePointer",props:["pointerTypes","initialValue"],setup(e,{slots:s}){const i=t.reactive(n.usePointer(e));return()=>{if(s.default)return s.default(i)}}}),x=t.defineComponent({name:"UsePreferredColorScheme",setup(e,{slots:s}){const i=t.reactive({colorScheme:n.usePreferredColorScheme()});return()=>{if(s.default)return s.default(i)}}}),A=t.defineComponent({name:"UsePreferredDark",setup(e,{slots:s}){const i=t.reactive({prefersDark:n.usePreferredDark()});return()=>{if(s.default)return s.default(i)}}}),M=t.defineComponent({name:"UsePreferredLanguages",setup(e,{slots:s}){const i=t.reactive({languages:n.usePreferredLanguages()});return()=>{if(s.default)return s.default(i)}}}),j=t.defineComponent({name:"UseTimeAgo",props:["time","updateInterval","max","fullDateFormatter","messages"],setup(e,{slots:s}){const{time:i}=t.toRefs(e),r=t.reactive(n.useTimeAgo(i,Object.assign(Object.assign({},e),{controls:!0})));return()=>{if(s.default)return s.default(r)}}}),T=t.defineComponent({name:"UseTimestamp",props:["interval","offset"],setup(e,{slots:s}){const i=t.reactive(n.useTimestamp(Object.assign(Object.assign({},e),{controls:!0})));return()=>{if(s.default)return s.default(i)}}}),B=t.defineComponent({name:"UseWindowFocus",setup(e,{slots:s}){const i=t.reactive({focused:n.useWindowFocus()});return()=>{if(s.default)return s.default(i)}}}),F=t.defineComponent({name:"UseWindowSize",props:["initialWidth","initialHeight"],setup(e,{slots:s}){const i=t.reactive(n.useWindowSize(e));return()=>{if(s.default)return s.default(i)}}});e.OnClickOutside=i,e.UseActiveElement=u,e.UseBattery=a,e.UseBrowserLocation=l,e.UseDark=f,e.UseDeviceMotion=d,e.UseDeviceOrientation=c,e.UseDevicePixelRatio=p,e.UseDevicesList=m,e.UseDocumentVisibility=v,e.UseDraggable=U,e.UseElementBounding=g,e.UseElementSize=C,e.UseElementVisibility=h,e.UseFullscreen=V,e.UseGeolocation=D,e.UseIdle=b,e.UseMouse=y,e.UseMouseInElement=O,e.UseMousePressed=w,e.UseNetwork=P,e.UseNow=E,e.UseOnline=k,e.UsePageLeave=L,e.UsePointer=S,e.UsePreferredColorScheme=x,e.UsePreferredDark=A,e.UsePreferredLanguages=M,e.UseTimeAgo=j,e.UseTimestamp=T,e.UseWindowFocus=B,e.UseWindowSize=F,e.VOnClickOutside=(e,t)=>{o(e,t.value)},Object.defineProperty(e,"__esModule",{value:!0})}(this.VueUse=this.VueUse||{},VueDemi,VueUse,VueUse);
1
+ !function(e){if(!e.VueDemi){var t={},s=e.Vue;if(s)if("2."===s.version.slice(0,2)){var n=e.VueCompositionAPI;if(n){for(var i in n)t[i]=n[i];t.isVue2=!0,t.isVue3=!1,t.install=function(){},t.Vue=s,t.Vue2=s,t.version=s.version}else console.error("[vue-demi] no VueCompositionAPI instance found, please be sure to import `@vue/composition-api` before `vue-demi`.")}else if("3."===s.version.slice(0,2)){for(var i in s)t[i]=s[i];t.isVue2=!1,t.isVue3=!0,t.install=function(){},t.Vue=s,t.Vue2=void 0,t.version=s.version,t.set=function(e,t,s){return Array.isArray(e)?(e.length=Math.max(e.length,t),e.splice(t,1,s),s):(e[t]=s,s)},t.del=function(e,t){Array.isArray(e)?e.splice(t,1):delete e[t]}}else console.error("[vue-demi] Vue version "+s.version+" is unsupported.");else console.error("[vue-demi] no Vue instance found, please be sure to import `vue` before `vue-demi`.");e.VueDemi=t}}(window),function(e,t,s,n){"use strict";const i=t.defineComponent({name:"OnClickOutside",props:["as"],emits:["trigger"],setup(e,{slots:n,emit:i}){const r=t.ref();return s.onClickOutside(r,(e=>{i("trigger",e)})),()=>{if(n.default)return t.h(e.as||"div",{ref:r},n.default())}}});const r=n.isClient?window:void 0;function o(e,s,i={}){const{window:o=r,event:u="pointerdown"}=i;if(!o)return;return function(...e){let s,i,o,u;if(n.isString(e[0])?([i,o,u]=e,s=r):[s,i,o,u]=e,!s)return n.noop;let a=n.noop;const l=t.watch((()=>t.unref(s)),(e=>{a(),e&&(e.addEventListener(i,o,u),a=()=>{e.removeEventListener(i,o,u),a=n.noop})}),{immediate:!0,flush:"post"}),f=()=>{l(),a()};return n.tryOnScopeDispose(f),f}(o,u,(n=>{const i=function(e){var s,n;const i=t.unref(e);return null!==(n=null===(s=i)||void 0===s?void 0:s.$el)&&void 0!==n?n:i}(e);i&&(i===n.target||n.composedPath().includes(i)||s(n))}),{passive:!0})}const u=t.defineComponent({name:"UseActiveElement",setup(e,{slots:n}){const i=t.reactive({element:s.useActiveElement()});return()=>{if(n.default)return n.default(i)}}}),a=t.defineComponent({name:"UseBattery",setup(e,{slots:n}){const i=t.reactive(s.useBattery(e));return()=>{if(n.default)return n.default(i)}}}),l=t.defineComponent({name:"UseBrowserLocation",setup(e,{slots:n}){const i=t.reactive(s.useBrowserLocation());return()=>{if(n.default)return n.default(i)}}}),f=t.defineComponent({name:"UseDark",props:["selector","attribute","valueDark","valueLight","onChanged","storageKey","storage"],setup(e,{slots:i}){const r=s.useDark(e),o=t.reactive({isDark:r,toggleDark:n.useToggle(r)});return()=>{if(i.default)return i.default(o)}}}),d=t.defineComponent({name:"UseDeviceMotion",setup(e,{slots:n}){const i=t.reactive(s.useDeviceMotion());return()=>{if(n.default)return n.default(i)}}}),c=t.defineComponent({name:"UseDeviceOrientation",setup(e,{slots:n}){const i=t.reactive(s.useDeviceOrientation());return()=>{if(n.default)return n.default(i)}}}),p=t.defineComponent({name:"UseDevicePixelRatio",setup(e,{slots:n}){const i=t.reactive({pixelRatio:s.useDevicePixelRatio()});return()=>{if(n.default)return n.default(i)}}}),m=t.defineComponent({name:"UseDevicesList",props:["onUpdated","requestPermissions"],setup(e,{slots:n}){const i=t.reactive(s.useDevicesList(e));return()=>{if(n.default)return n.default(i)}}}),v=t.defineComponent({name:"UseDocumentVisibility",setup(e,{slots:n}){const i=t.reactive({visibility:s.useDocumentVisibility()});return()=>{if(n.default)return n.default(i)}}}),g=t.defineComponent({name:"UseDraggable",props:["storageKey","initialValue","exact","preventDefault","pointerTypes","as"],setup(e,{slots:n}){const i=t.ref(),r=e.storageKey?s.useStorage(e.storageKey,t.unref(e.initialValue)||{x:0,y:0},"session"===e.storageType?sessionStorage:localStorage):e.initialValue||{x:0,y:0},o=t.reactive(s.useDraggable(i,Object.assign(Object.assign({},e),{initialValue:r})));return()=>{if(n.default)return t.h(e.as||"div",{ref:i,style:`touch-action:none;${o.style}`},n.default(o))}}}),U=t.defineComponent({name:"UseElementBounding",props:["box","as"],setup(e,{slots:n}){const i=t.ref(),r=t.reactive(s.useElementBounding(i,{box:e.box,window:e.window}));return()=>{if(n.default)return t.h(e.as||"div",{ref:i},n.default(r))}}}),h=t.defineComponent({name:"UseElementSize",props:["width","height","box"],setup(e,{slots:n}){const i=t.ref(),r=t.reactive(s.useElementSize(i,{width:e.width,height:e.height},{box:e.box}));return()=>{if(n.default)return t.h(e.as||"div",{ref:i},n.default(r))}}}),C=t.defineComponent({name:"UseElementVisibility",as:["as"],setup(e,{slots:n}){const i=t.ref(),r=t.reactive({isVisible:s.useElementVisibility(i)});return()=>{if(n.default)return t.h(e.as||"div",{ref:i},n.default(r))}}}),b=t.defineComponent({name:"UseFullscreen",props:["as"],setup(e,{slots:n}){const i=t.ref(),r=t.reactive(s.useFullscreen(i));return()=>{if(n.default)return t.h(e.as||"div",{ref:i},n.default(r))}}}),V=t.defineComponent({name:"UseGeolocation",props:["enableHighAccuracy","maximumAge","timeout","navigator"],setup(e,{slots:n}){const i=t.reactive(s.useGeolocation(e));return()=>{if(n.default)return n.default(i)}}}),D=t.defineComponent({name:"UseIdle",props:["timeout","events","listenForVisibilityChange","initialState"],setup(e,{slots:n}){const i=t.reactive(s.useIdle(e.timeout,e));return()=>{if(n.default)return n.default(i)}}}),w=t.defineComponent({name:"UseMouse",props:["touch","resetOnTouchEnds","initialValue"],setup(e,{slots:n}){const i=t.reactive(s.useMouse(e));return()=>{if(n.default)return n.default(i)}}}),O=t.defineComponent({name:"UseMouseElement",props:["handleOutside","as"],setup(e,{slots:n}){const i=t.ref(),r=t.reactive(s.useMouseInElement(i,e));return()=>{if(n.default)return t.h(e.as||"div",{ref:i},n.default(r))}}}),y=t.defineComponent({name:"UseMousePressed",props:["touch","initialValue","as"],setup(e,{slots:n}){const i=t.ref(),r=t.reactive(s.useMousePressed(Object.assign(Object.assign({},e),{target:i})));return()=>{if(n.default)return t.h(e.as||"div",{ref:i},n.default(r))}}}),P=t.defineComponent({name:"UseNetwork",setup(e,{slots:n}){const i=t.reactive(s.useNetwork());return()=>{if(n.default)return n.default(i)}}}),L=t.defineComponent({name:"UseNow",props:["interval"],setup(e,{slots:n}){const i=t.reactive(s.useNow(Object.assign(Object.assign({},e),{controls:!0})));return()=>{if(n.default)return n.default(i)}}}),E=t.defineComponent({name:"UseOnline",setup(e,{slots:n}){const i=t.reactive({isOnline:s.useOnline()});return()=>{if(n.default)return n.default(i)}}}),k=t.defineComponent({name:"UsePageLeave",setup(e,{slots:n}){const i=t.reactive({isLeft:s.usePageLeave()});return()=>{if(n.default)return n.default(i)}}}),x=t.defineComponent({name:"UsePointer",props:["pointerTypes","initialValue","target"],setup(e,{slots:n}){const i=t.ref(null),o=t.reactive(s.usePointer(Object.assign(Object.assign({},e),{target:"self"===e.target?i:r})));return()=>{if(n.default)return n.default(o,{ref:i})}}}),S=t.defineComponent({name:"UsePreferredColorScheme",setup(e,{slots:n}){const i=t.reactive({colorScheme:s.usePreferredColorScheme()});return()=>{if(n.default)return n.default(i)}}}),j=t.defineComponent({name:"UsePreferredDark",setup(e,{slots:n}){const i=t.reactive({prefersDark:s.usePreferredDark()});return()=>{if(n.default)return n.default(i)}}}),A=t.defineComponent({name:"UsePreferredLanguages",setup(e,{slots:n}){const i=t.reactive({languages:s.usePreferredLanguages()});return()=>{if(n.default)return n.default(i)}}}),M=t.defineComponent({name:"UseTimeAgo",props:["time","updateInterval","max","fullDateFormatter","messages"],setup(e,{slots:n}){const{time:i}=t.toRefs(e),r=t.reactive(s.useTimeAgo(i,Object.assign(Object.assign({},e),{controls:!0})));return()=>{if(n.default)return n.default(r)}}}),T=t.defineComponent({name:"UseTimestamp",props:["interval","offset"],setup(e,{slots:n}){const i=t.reactive(s.useTimestamp(Object.assign(Object.assign({},e),{controls:!0})));return()=>{if(n.default)return n.default(i)}}}),B=t.defineComponent({name:"UseVirtualList",props:["list","options","height"],setup(e,{slots:n}){const{list:i,containerProps:r,wrapperProps:o}=s.useVirtualList(e.list,e.options);return r.style.height=e.height||"300px",()=>t.h("div",Object.assign({},r),[t.h("div",Object.assign({},o.value),i.value.map((e=>t.h("div",{style:{overFlow:"hidden",height:e.height}},n.default?n.default(e):"Please set content!"))))])}}),F=t.defineComponent({name:"UseWindowFocus",setup(e,{slots:n}){const i=t.reactive({focused:s.useWindowFocus()});return()=>{if(n.default)return n.default(i)}}}),I=t.defineComponent({name:"UseWindowSize",props:["initialWidth","initialHeight"],setup(e,{slots:n}){const i=t.reactive(s.useWindowSize(e));return()=>{if(n.default)return n.default(i)}}});e.OnClickOutside=i,e.UseActiveElement=u,e.UseBattery=a,e.UseBrowserLocation=l,e.UseDark=f,e.UseDeviceMotion=d,e.UseDeviceOrientation=c,e.UseDevicePixelRatio=p,e.UseDevicesList=m,e.UseDocumentVisibility=v,e.UseDraggable=g,e.UseElementBounding=U,e.UseElementSize=h,e.UseElementVisibility=C,e.UseFullscreen=b,e.UseGeolocation=V,e.UseIdle=D,e.UseMouse=w,e.UseMouseInElement=O,e.UseMousePressed=y,e.UseNetwork=P,e.UseNow=L,e.UseOnline=E,e.UsePageLeave=k,e.UsePointer=x,e.UsePreferredColorScheme=S,e.UsePreferredDark=j,e.UsePreferredLanguages=A,e.UseTimeAgo=M,e.UseTimestamp=T,e.UseVirtualList=B,e.UseWindowFocus=F,e.UseWindowSize=I,e.VOnClickOutside=(e,t)=>{o(e,t.value)},Object.defineProperty(e,"__esModule",{value:!0})}(this.VueUse=this.VueUse||{},VueDemi,VueUse,VueUse);
package/index.mjs CHANGED
@@ -1,9 +1,10 @@
1
1
  import { defineComponent, ref, h, unref, watch, reactive, toRefs } from 'vue-demi';
2
- import { onClickOutside as onClickOutside$1, useActiveElement, useBattery, useBrowserLocation, useDark, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDocumentVisibility, useStorage, useDraggable, useElementBounding, useElementSize, useElementVisibility, useFullscreen, useGeolocation, useIdle, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useOnline, usePageLeave, usePointer, usePreferredColorScheme, usePreferredDark, usePreferredLanguages, useTimeAgo, useTimestamp, useWindowFocus, useWindowSize } from '@vueuse/core';
2
+ import { onClickOutside as onClickOutside$1, useActiveElement, useBattery, useBrowserLocation, useDark, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDocumentVisibility, useStorage, useDraggable, useElementBounding, useElementSize, useElementVisibility, useFullscreen, useGeolocation, useIdle, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useOnline, usePageLeave, usePointer, usePreferredColorScheme, usePreferredDark, usePreferredLanguages, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from '@vueuse/core';
3
3
  import { isClient, isString, noop, tryOnScopeDispose, useToggle } from '@vueuse/shared';
4
4
 
5
5
  const OnClickOutside = defineComponent({
6
6
  name: 'OnClickOutside',
7
+ props: ['as'],
7
8
  emits: ['trigger'],
8
9
  setup(props, { slots, emit }) {
9
10
  const target = ref();
@@ -12,7 +13,7 @@ const OnClickOutside = defineComponent({
12
13
  });
13
14
  return () => {
14
15
  if (slots.default)
15
- return h('div', { ref: target }, slots.default());
16
+ return h(props.as || 'div', { ref: target }, slots.default());
16
17
  };
17
18
  },
18
19
  });
@@ -212,6 +213,7 @@ const UseDraggable = defineComponent({
212
213
  'exact',
213
214
  'preventDefault',
214
215
  'pointerTypes',
216
+ 'as',
215
217
  ],
216
218
  setup(props, { slots }) {
217
219
  const target = ref();
@@ -221,20 +223,20 @@ const UseDraggable = defineComponent({
221
223
  const data = reactive(useDraggable(target, Object.assign(Object.assign({}, props), { initialValue })));
222
224
  return () => {
223
225
  if (slots.default)
224
- return h('div', { ref: target, style: data.style }, slots.default(data));
226
+ return h(props.as || 'div', { ref: target, style: `touch-action:none;${data.style}` }, slots.default(data));
225
227
  };
226
228
  },
227
229
  });
228
230
 
229
231
  const UseElementBounding = defineComponent({
230
232
  name: 'UseElementBounding',
231
- props: ['box'],
233
+ props: ['box', 'as'],
232
234
  setup(props, { slots }) {
233
235
  const target = ref();
234
- const data = reactive(useElementBounding(target, props));
236
+ const data = reactive(useElementBounding(target, { box: props.box, window: props.window }));
235
237
  return () => {
236
238
  if (slots.default)
237
- return h('div', { ref: target }, slots.default(data));
239
+ return h(props.as || 'div', { ref: target }, slots.default(data));
238
240
  };
239
241
  },
240
242
  });
@@ -247,13 +249,14 @@ const UseElementSize = defineComponent({
247
249
  const data = reactive(useElementSize(target, { width: props.width, height: props.height }, { box: props.box }));
248
250
  return () => {
249
251
  if (slots.default)
250
- return h('div', { ref: target }, slots.default(data));
252
+ return h(props.as || 'div', { ref: target }, slots.default(data));
251
253
  };
252
254
  },
253
255
  });
254
256
 
255
257
  const UseElementVisibility = defineComponent({
256
258
  name: 'UseElementVisibility',
259
+ as: ['as'],
257
260
  setup(props, { slots }) {
258
261
  const target = ref();
259
262
  const data = reactive({
@@ -261,19 +264,20 @@ const UseElementVisibility = defineComponent({
261
264
  });
262
265
  return () => {
263
266
  if (slots.default)
264
- return h('div', { ref: target }, slots.default(data));
267
+ return h(props.as || 'div', { ref: target }, slots.default(data));
265
268
  };
266
269
  },
267
270
  });
268
271
 
269
272
  const UseFullscreen = defineComponent({
270
273
  name: 'UseFullscreen',
274
+ props: ['as'],
271
275
  setup(props, { slots }) {
272
276
  const target = ref();
273
277
  const data = reactive(useFullscreen(target));
274
278
  return () => {
275
279
  if (slots.default)
276
- return h('div', { ref: target }, slots.default(data));
280
+ return h(props.as || 'div', { ref: target }, slots.default(data));
277
281
  };
278
282
  },
279
283
  });
@@ -316,26 +320,26 @@ const UseMouse = defineComponent({
316
320
 
317
321
  const UseMouseInElement = defineComponent({
318
322
  name: 'UseMouseElement',
319
- props: ['handleOutside'],
323
+ props: ['handleOutside', 'as'],
320
324
  setup(props, { slots }) {
321
325
  const target = ref();
322
326
  const data = reactive(useMouseInElement(target, props));
323
327
  return () => {
324
328
  if (slots.default)
325
- return h('div', { ref: target }, slots.default(data));
329
+ return h(props.as || 'div', { ref: target }, slots.default(data));
326
330
  };
327
331
  },
328
332
  });
329
333
 
330
334
  const UseMousePressed = defineComponent({
331
335
  name: 'UseMousePressed',
332
- props: ['touch', 'initialValue'],
336
+ props: ['touch', 'initialValue', 'as'],
333
337
  setup(props, { slots }) {
334
338
  const target = ref();
335
339
  const data = reactive(useMousePressed(Object.assign(Object.assign({}, props), { target })));
336
340
  return () => {
337
341
  if (slots.default)
338
- return h('div', { ref: target }, slots.default(data));
342
+ return h(props.as || 'div', { ref: target }, slots.default(data));
339
343
  };
340
344
  },
341
345
  });
@@ -394,12 +398,14 @@ const UsePointer = defineComponent({
394
398
  props: [
395
399
  'pointerTypes',
396
400
  'initialValue',
401
+ 'target',
397
402
  ],
398
403
  setup(props, { slots }) {
399
- const data = reactive(usePointer(props));
404
+ const el = ref(null);
405
+ const data = reactive(usePointer(Object.assign(Object.assign({}, props), { target: props.target === 'self' ? el : defaultWindow })));
400
406
  return () => {
401
407
  if (slots.default)
402
- return slots.default(data);
408
+ return slots.default(data, { ref: el });
403
409
  };
404
410
  },
405
411
  });
@@ -468,6 +474,22 @@ const UseTimestamp = defineComponent({
468
474
  },
469
475
  });
470
476
 
477
+ const UseVirtualList = defineComponent({
478
+ name: 'UseVirtualList',
479
+ props: [
480
+ 'list',
481
+ 'options',
482
+ 'height',
483
+ ],
484
+ setup(props, { slots }) {
485
+ const { list, containerProps, wrapperProps } = useVirtualList(props.list, props.options);
486
+ containerProps.style.height = props.height || '300px';
487
+ return () => h('div', Object.assign({}, containerProps), [
488
+ h('div', Object.assign({}, wrapperProps.value), list.value.map((item) => h('div', { style: { overFlow: 'hidden', height: item.height } }, slots.default ? slots.default(item) : 'Please set content!'))),
489
+ ]);
490
+ },
491
+ });
492
+
471
493
  const UseWindowFocus = defineComponent({
472
494
  name: 'UseWindowFocus',
473
495
  setup(props, { slots }) {
@@ -493,4 +515,4 @@ const UseWindowSize = defineComponent({
493
515
  },
494
516
  });
495
517
 
496
- export { OnClickOutside, UseActiveElement, UseBattery, UseBrowserLocation, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseElementBounding, UseElementSize, UseElementVisibility, UseFullscreen, UseGeolocation, UseIdle, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseOnline, UsePageLeave, UsePointer, UsePreferredColorScheme, UsePreferredDark, UsePreferredLanguages, UseTimeAgo, UseTimestamp, UseWindowFocus, UseWindowSize, VOnClickOutside };
518
+ export { OnClickOutside, UseActiveElement, UseBattery, UseBrowserLocation, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseElementBounding, UseElementSize, UseElementVisibility, UseFullscreen, UseGeolocation, UseIdle, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseOnline, UsePageLeave, UsePointer, UsePreferredColorScheme, UsePreferredDark, UsePreferredLanguages, UseTimeAgo, UseTimestamp, UseVirtualList, UseWindowFocus, UseWindowSize, VOnClickOutside };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vueuse/components",
3
- "version": "6.3.1",
3
+ "version": "6.4.1",
4
4
  "description": "Renderless components for VueUse",
5
5
  "keywords": [
6
6
  "vue",
@@ -31,8 +31,8 @@
31
31
  },
32
32
  "homepage": "https://github.com/vueuse/vueuse/tree/main/packages/components#readme",
33
33
  "dependencies": {
34
- "@vueuse/core": "6.3.1",
35
- "@vueuse/shared": "6.3.1",
34
+ "@vueuse/core": "6.4.1",
35
+ "@vueuse/shared": "6.4.1",
36
36
  "vue-demi": "*"
37
37
  }
38
38
  }