34 lines
1.0 KiB
JavaScript
34 lines
1.0 KiB
JavaScript
import { createVNode as _createVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode } from "vue";
|
|
// Components
|
|
import { VProgressLinear } from "../components/VProgressLinear/index.js"; // Utilities
|
|
import { toRef } from 'vue';
|
|
import { getCurrentInstanceName, propsFactory } from "../util/index.js"; // Types
|
|
// Composables
|
|
export const makeLoaderProps = propsFactory({
|
|
loading: [Boolean, String]
|
|
}, 'loader');
|
|
export function useLoader(props, name = getCurrentInstanceName()) {
|
|
const loaderClasses = toRef(() => ({
|
|
[`${name}--loading`]: props.loading
|
|
}));
|
|
return {
|
|
loaderClasses
|
|
};
|
|
}
|
|
export function LoaderSlot(props, {
|
|
slots
|
|
}) {
|
|
return _createElementVNode("div", {
|
|
"class": _normalizeClass(`${props.name}__loader`)
|
|
}, [slots.default?.({
|
|
color: props.color,
|
|
isActive: props.active
|
|
}) || _createVNode(VProgressLinear, {
|
|
"absolute": props.absolute,
|
|
"active": props.active,
|
|
"color": props.color,
|
|
"height": "2",
|
|
"indeterminate": true
|
|
}, null)]);
|
|
}
|
|
//# sourceMappingURL=loader.js.map
|