Files
directus/src/compositions
dependabot-preview[bot] 2fe5fa0500 Bump @vue/composition-api from 0.3.4 to 0.4.0 (#137)
* Bump @vue/composition-api from 0.3.4 to 0.4.0

Bumps [@vue/composition-api](https://github.com/vuejs/composition-api) from 0.3.4 to 0.4.0.
- [Release notes](https://github.com/vuejs/composition-api/releases)
- [Changelog](https://github.com/vuejs/composition-api/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/composition-api/compare/v0.3.4...v0.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Replace createComponent with defineComponent

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2020-03-03 13:16:05 -05:00
..
2020-02-13 16:37:58 -05:00

Compositions

Compositions are reusable pieces of logic that can be used inside Vue components (Composition API required).

Table of Contents

Event Listener

The event listener composition allows you to bound event listeners to global elements.

Note: You should rely on Vue's event handlers like @click whenever possible. This composition acts as an escape hatch for triggering things based on out-of-component events.

The composition removes the event handler whenever the component is unmounted.

Usage

import { defineComponent } from '@vue/composition-api';
import useEventListener from '@/compositions/event-listener';

export default defineComponent({
	setup() {
		useEventListener(window, 'scroll', onScroll);

		function onScroll(event) {
			console.log(event);
		}
	}
});

Size Class

Shared size class prop handler for base components. Adds x-small, small, large, and x-large props to the component, and converts the prop into a string that can be added to classes.

Usage

import { defineComponent } from '@vue/composition-api';
import useSizeClass, { sizeProps } from '@/compositions/size-class';

export default defineComponent({
	props: {
		...sizeProps
	},
	setup(props) {
		const sizeClass = useSizeClass(props);
	}
});

Time from Now

Returns ref string time from current datetime based on date-fns formatDistance.

Usage

import { defineComponent } from '@vue/composition-api';
import useTimeFromNow from '@/compositions/time-from-now';

export default defineComponent({
	setup() {
		const date = new Date('2020-01-01T13:55');
		const timeFromNow = useTimeFromNow(date);
	}
});

The composition accepts an optional second parameter that controls how often the value is update. You can set this to 0 if you don't want the value to update at all.


Window Size

Returns a ref of width and height of the current window size. Updates the value on window resizes.

Usage

import { defineComponent } from '@vue/composition-api';
import useWindowSize from '@/compositions/window-size';

export default defineComponent({
	setup() {
		const { width, height } = useWindowSize();
	}
});