1.3.0 • Published 1 year ago

@bardoui/vutils v1.3.0

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

vUtils

Utility for vue 3.

Installation

CDN

this package published as vUtils module in umd.

<script src="https://unpkg.com/@bardoui/vutils"></script>

NPM

npm i @bardoui/vutils

Helpers

isEmptySlot

check if slot not passed or empty.

import { isEmptySlot } from "@bardoui/vutils";
isEmptySlot($slots.header);

Composition Apis

Media

create reactive media query ref.

import { useMedia } from "@bardoui/vutils";
const isMobile = useMedia("(max-width: 767px)");

Timer

create a reactive timer from milliseconds.

import { ref } from "vue";
import { useTimer } from "@bardoui/vutils";
const amount = ref(60000);
const { startTimer, stopTimer, timer, timerAlive } = useTimer();

function start() {
  startTimer(amount.value);
}
function stop() {
  stopTimer();
}

Shortcut

Register keyboard shortcut handler in component. you must enter KeyboardEvent.Key as key.

import { useShortcut } from "@bardoui/vutils";
const { addShortcut } = useShortcut();
addShortcut({
  key: "Enter",
  callback: callbackA,
  prevent: true,
  stop: true
});
addShortcut({
  key: ["Escape", "-"],
  callback: callbackB,
  prevent: true,
  stop: true
});

Lister

Help to parse and generate list related requests (paginate, filters, etc).

Note: you can pass unique key to store parameters (limit, sort, order) in localStorage.

import {onMounted} from "vue;
import { useLister } from "@bardoui/vutils";
const { toggleFilterArr, onApply, filter, filterValue, filterExists, parseHash } = useLister(options, "admin-users");
const username = filter<string>("username");
const groups = filterValue<string[]>("groups");
const containsAdminGroup = filterExists("groups", "admin");

function toggleGroup(group: string) {
  toggleFilterArr("groups", group);
}

onApply((params, hash) => {
  makeCrudRequest(params); // get data from server
  setQueryString(hash); // update url
});

onMounted(() => parseHash(queryString)); // parse current data from url

Constructor Options

All options are optional and lister use default value if option not passed or invalid value passed.

OptionTypeDefaultDescription
triggersTrigger[] | "all"["page", "limit", "sort", "order"]auto apply on field change
storesStore[][]stored items in local storage
limitsnumber[][]valid limit list. if empty array passed all value allowed!
sortsstring[][]valid sort list. if empty array passed all value allowed!
pagenumber1init page
limitnumber25init limit
sortstring_idinit sort
order"asc" | "desc"ascinit order
searchstring""init search phrase
filtersRecord<string, any>{}init filters list

Trigger can be "page" | "limit" | "sort" | "order" | "search" | "filters".

Store can be "limit" | "sort" | "order".

Note: if field not listed in trigger list, you must apply field changes manually!

Note: you can apply staged change using apply() method. Apply method apply all staged changes by default but you can list items must applied as parameter (e.g. apply(["page", "order"])).

Note: reset() method follow apply() pattern.

Usage

Method/AttributeTypeDescription
pageref<number>reactive page field
limitref<number>reactive limit field
sortref<string>reactive sort field
orderref<OrderType>reactive order field. accept 'asc' and 'desc' only. this field automatically change on sort value change
searchref<string>reactive search field
clearSearch() => voidclear search field and fire apply(['search'])
removeFilter(key: string) => voidremove filter
toggleFilter(key: string, v: unknown) => voidtoggle filter item (remove item if undefined passed)
toggleFilterArr(key: string, v: unknown) => voidtoggle array filter item
filter<T = unknown>(key: string) => WritableComputedRef<T>reactive ref for filter item
filterValue<T = any>(k: string) => voidget a computed ref for filter item
filterExists(k: string, v: any) => ComputedRef<boolean>get a computed ref for filter item exists
clearFilters() => voidclear filters and fire apply(["filters"])
apply(items?: Trigger[] | "all") => voidapply staged changes
reset(items?: Trigger[] | "all") => voiddiscard staged (un-applied) changes
parseJson(raw: any) => voidparse json response
parseHash(hashed: string) => voidparse parameters from Base64 encoded string
onApply(callback: Callback) => Callbackregister a callback to call after request parameter changes
paramsComputedRef<{page,limit,sort,order,search,filters}>request parameters
responseComputedRef<Object>all response data
hashComputedRef<string>Base64 encoded params (can use as url query)
recordsComputedRef<any[]>response data field as array
isEmptyComputedRef<boolean>check if response has no records
totalComputedRef<number>response total field
fromComputedRef<number>response from field
toComputedRef<number>response to field
pagesComputedRef<number>response pages field

Event Hub

create event hub.

import { useEvent } from "@bardoui/vutils";

const eHub = useEvent();
eHub.onPass<number>("increment", v => console.log(`${v + 1}`));
eHub.onPass(["greet", "welcome"], v => console.log(`greeting ${v}`));
hub.onSuccess((m, v) => console.log(`${v} received from ${m} method!`)); // called if no receiver func registered for event

eHub.onFail("greet", v => console.error(`who are you`));
hub.onError((m, err) =>
  console.error(`${err} error received from ${m} method!`)
); // called if no error handler registered for event
1.3.0

1 year ago

1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.0

2 years ago

1.2.1

2 years ago

1.1.1

2 years ago

1.1.0

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.11

3 years ago

1.0.10

3 years ago

1.0.4

3 years ago

1.0.2

3 years ago

1.0.3

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago