vueless 0.0.400 → 0.0.402
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.js +10 -10
- package/package.json +2 -2
- package/ui.data-table/UTable.vue +3 -3
- package/ui.loader/ULoader.vue +1 -1
- package/ui.loader/useAttrs.js +5 -1
- package/ui.loader-overlay/ULoaderOverlay.vue +65 -0
- package/{ui.loader-rendering → ui.loader-overlay}/config.js +6 -6
- package/{ui.loader-rendering → ui.loader-overlay}/constants.js +1 -1
- package/{ui.loader-rendering → ui.loader-overlay}/storybook/Docs.mdx +8 -8
- package/ui.loader-overlay/storybook/stories.js +66 -0
- package/{ui.loader-top → ui.loader-overlay}/useAttrs.js +5 -1
- package/ui.loader-overlay/useLoaderOverlay.js +25 -0
- package/ui.loader-overlay/utilLoaderOverlay.js +7 -0
- package/{ui.loader-top/ULoaderTop.vue → ui.loader-progress/ULoaderProgress.vue} +15 -14
- package/{ui.loader-top → ui.loader-progress}/config.js +1 -2
- package/{ui.loader-top → ui.loader-progress}/constants.js +1 -1
- package/{ui.loader-top → ui.loader-progress}/storybook/Docs.mdx +10 -10
- package/ui.loader-progress/storybook/stories.js +85 -0
- package/{ui.loader-top/useLoaderTop.js → ui.loader-progress/useLoaderProgress.js} +9 -9
- package/{ui.loader-top/utilLoaderTop.js → ui.loader-progress/utilLoaderProgress.js} +6 -6
- package/web-types.json +14 -8
- package/assets/icons/add.svg +0 -1
- package/assets/icons/apps.svg +0 -1
- package/assets/icons/arrow_back.svg +0 -1
- package/assets/icons/attach_file.svg +0 -1
- package/assets/icons/check.svg +0 -1
- package/assets/icons/check_circle.svg +0 -1
- package/assets/icons/chevron_left.svg +0 -1
- package/assets/icons/chevron_right.svg +0 -1
- package/assets/icons/close.svg +0 -1
- package/assets/icons/close_small.svg +0 -1
- package/assets/icons/delete.svg +0 -1
- package/assets/icons/description.svg +0 -1
- package/assets/icons/drag_indicator.svg +0 -1
- package/assets/icons/edit.svg +0 -1
- package/assets/icons/edit_note.svg +0 -1
- package/assets/icons/emoji_food_beverage.svg +0 -1
- package/assets/icons/error.svg +0 -1
- package/assets/icons/expand_more.svg +0 -1
- package/assets/icons/first_page.svg +0 -1
- package/assets/icons/image.svg +0 -1
- package/assets/icons/keyboard_arrow_down.svg +0 -1
- package/assets/icons/keyboard_arrow_left.svg +0 -1
- package/assets/icons/keyboard_arrow_right.svg +0 -1
- package/assets/icons/label.svg +0 -1
- package/assets/icons/last_page.svg +0 -1
- package/assets/icons/remove.svg +0 -1
- package/assets/icons/search.svg +0 -1
- package/assets/icons/star-fill.svg +0 -1
- package/assets/icons/star.svg +0 -1
- package/assets/icons/title.svg +0 -1
- package/assets/icons/visibility-fill.svg +0 -1
- package/assets/icons/visibility_off-fill.svg +0 -1
- package/assets/icons/warning.svg +0 -1
- package/ui.loader-rendering/ULoaderRendering.vue +0 -62
- package/ui.loader-rendering/storybook/stories.js +0 -66
- package/ui.loader-rendering/useLoaderRendering.js +0 -25
- package/ui.loader-rendering/utilLoaderRedering.js +0 -7
- package/ui.loader-top/storybook/stories.js +0 -85
- /package/{ui.loader-rendering → ui.loader-progress}/useAttrs.js +0 -0
package/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable vue/max-len, prettier/prettier */
|
|
2
2
|
import { createLocale, LocaleSymbol } from "./composables/useLocale.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { createLoaderOverlay, LoaderOverlaySymbol } from "./ui.loader-overlay/useLoaderOverlay.js";
|
|
4
|
+
import { createLoaderProgress, LoaderProgressSymbol } from "./ui.loader-progress/useLoaderProgress.js";
|
|
5
5
|
import { themeInit } from "./utils/utilTheme.js";
|
|
6
6
|
|
|
7
7
|
export { setTitle } from "./utils/utilHelper.js";
|
|
@@ -9,10 +9,10 @@ export { setTheme } from "./utils/utilTheme.js";
|
|
|
9
9
|
export { default as createVueI18nAdapter } from "./adatper.locale/vue-i18n.js";
|
|
10
10
|
export { default as defaultEnLocale } from "./adatper.locale/locales/en.js";
|
|
11
11
|
export { useLocale } from "./composables/useLocale.js";
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
15
|
-
export {
|
|
12
|
+
export { useLoaderProgress } from "./ui.loader-progress/useLoaderProgress.js";
|
|
13
|
+
export { loaderProgressOn, loaderProgressOff } from "./ui.loader-progress/utilLoaderProgress.js";
|
|
14
|
+
export { useLoaderOverlay } from "./ui.loader-overlay/useLoaderOverlay.js";
|
|
15
|
+
export { loaderOverlayOn, loaderOverlayOff } from "./ui.loader-overlay/utilLoaderOverlay.js";
|
|
16
16
|
export {
|
|
17
17
|
notify,
|
|
18
18
|
notifySuccess,
|
|
@@ -26,13 +26,13 @@ export {
|
|
|
26
26
|
|
|
27
27
|
export function createVueless(options = {}) {
|
|
28
28
|
const i18n = createLocale(options.i18n);
|
|
29
|
-
const
|
|
30
|
-
const
|
|
29
|
+
const loaderOverlay = createLoaderOverlay();
|
|
30
|
+
const loaderProgress = createLoaderProgress();
|
|
31
31
|
|
|
32
32
|
const install = (app) => {
|
|
33
33
|
app.provide(LocaleSymbol, i18n);
|
|
34
|
-
app.provide(
|
|
35
|
-
app.provide(
|
|
34
|
+
app.provide(LoaderOverlaySymbol, loaderOverlay);
|
|
35
|
+
app.provide(LoaderProgressSymbol, loaderProgress);
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
themeInit();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vueless",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.402",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Vue Styleless UI Component Library, powered by Tailwind CSS.",
|
|
6
6
|
"keywords": [
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@release-it/bumper": "^6.0.1",
|
|
54
54
|
"@vitejs/plugin-vue": "^5.0.5",
|
|
55
55
|
"@vue/eslint-config-prettier": "^9.0.0",
|
|
56
|
-
"@vueless/plugin-vite": "^0.0.
|
|
56
|
+
"@vueless/plugin-vite": "^0.0.65",
|
|
57
57
|
"@vueless/storybook": "^0.0.34",
|
|
58
58
|
"@vueless/web-types": "^0.0.15",
|
|
59
59
|
"autoprefixer": "^10.4.19",
|
package/ui.data-table/UTable.vue
CHANGED
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
</div>
|
|
78
78
|
</template>
|
|
79
79
|
|
|
80
|
-
<
|
|
80
|
+
<ULoaderProgress
|
|
81
81
|
v-if="resource && isHeaderSticky"
|
|
82
82
|
:resources="resource"
|
|
83
83
|
v-bind="stickyHeaderLoaderAttrs"
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
</th>
|
|
151
151
|
</tr>
|
|
152
152
|
|
|
153
|
-
<
|
|
153
|
+
<ULoaderProgress v-if="resource" :resources="resource" v-bind="headerLoaderAttrs" />
|
|
154
154
|
</thead>
|
|
155
155
|
|
|
156
156
|
<tbody v-if="tableRows.length" v-bind="bodyAttrs">
|
|
@@ -277,7 +277,7 @@ import { merge } from "lodash-es";
|
|
|
277
277
|
import UEmpty from "../ui.text-empty/UEmpty.vue";
|
|
278
278
|
import UDivider from "../ui.container-divider/UDivider.vue";
|
|
279
279
|
import UCheckbox from "../ui.form-checkbox/UCheckbox.vue";
|
|
280
|
-
import
|
|
280
|
+
import ULoaderProgress from "../ui.loader-progress/ULoaderProgress.vue";
|
|
281
281
|
import UTableRow from "./UTableRow.vue";
|
|
282
282
|
|
|
283
283
|
import { getDefault, cx } from "../utils/utilUI.js";
|
package/ui.loader/ULoader.vue
CHANGED
package/ui.loader/useAttrs.js
CHANGED
|
@@ -4,7 +4,11 @@ import useUI from "../composables/useUI.js";
|
|
|
4
4
|
import defaultConfig from "./config.js";
|
|
5
5
|
|
|
6
6
|
export default function useAttrs(props) {
|
|
7
|
-
const { config, getKeysAttrs, hasSlotContent } = useUI(
|
|
7
|
+
const { config, getKeysAttrs, hasSlotContent } = useUI(
|
|
8
|
+
defaultConfig,
|
|
9
|
+
() => props.config,
|
|
10
|
+
"loader",
|
|
11
|
+
);
|
|
8
12
|
|
|
9
13
|
const keysAttrs = getKeysAttrs({}, [], {
|
|
10
14
|
ellipse: {
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<Transition v-bind="config.transition">
|
|
3
|
+
<div v-if="showLoader" v-bind="overlayAttrs">
|
|
4
|
+
<!-- @slot Use it to add something instead of the default loader. -->
|
|
5
|
+
<slot>
|
|
6
|
+
<ULoader
|
|
7
|
+
:loading="showLoader"
|
|
8
|
+
size="lg"
|
|
9
|
+
:color="color === 'white' ? 'grayscale' : 'white'"
|
|
10
|
+
v-bind="nestedLoaderAttrs"
|
|
11
|
+
/>
|
|
12
|
+
</slot>
|
|
13
|
+
</div>
|
|
14
|
+
</Transition>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script setup>
|
|
18
|
+
import { computed, onMounted, onUnmounted } from "vue";
|
|
19
|
+
import { getDefault } from "../utils/utilUI.js";
|
|
20
|
+
|
|
21
|
+
import ULoader from "../ui.loader/ULoader.vue";
|
|
22
|
+
|
|
23
|
+
import { ULoaderOverlay } from "./constants.js";
|
|
24
|
+
import defaultConfig from "./config.js";
|
|
25
|
+
import useAttrs from "./useAttrs.js";
|
|
26
|
+
import { useLoaderOverlay } from "./useLoaderOverlay.js";
|
|
27
|
+
|
|
28
|
+
defineOptions({ inheritAttrs: false });
|
|
29
|
+
|
|
30
|
+
const props = defineProps({
|
|
31
|
+
/**
|
|
32
|
+
* Loader state (shown / hidden).
|
|
33
|
+
*/
|
|
34
|
+
loading: {
|
|
35
|
+
type: Boolean,
|
|
36
|
+
default: getDefault(defaultConfig, ULoaderOverlay).loading,
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Loader color.
|
|
41
|
+
* @values brand, grayscale, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, white
|
|
42
|
+
*/
|
|
43
|
+
color: {
|
|
44
|
+
type: String,
|
|
45
|
+
default: getDefault(defaultConfig, ULoaderOverlay).color,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const { overlayAttrs, nestedLoaderAttrs, config } = useAttrs(props);
|
|
50
|
+
const { isLoading, loaderOverlayOn, loaderOverlayOff } = useLoaderOverlay();
|
|
51
|
+
|
|
52
|
+
onMounted(() => {
|
|
53
|
+
window.addEventListener("loaderOverlayOn", loaderOverlayOn);
|
|
54
|
+
window.addEventListener("loaderOverlayOff", loaderOverlayOff);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
onUnmounted(() => {
|
|
58
|
+
window.removeEventListener("loaderOverlayOn", loaderOverlayOn);
|
|
59
|
+
window.removeEventListener("loaderOverlayOff", loaderOverlayOff);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
const showLoader = computed(() => {
|
|
63
|
+
return props.loading === undefined ? isLoading.value : props.loading;
|
|
64
|
+
});
|
|
65
|
+
</script>
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export default /*tw*/ {
|
|
2
|
-
|
|
2
|
+
transition: {
|
|
3
|
+
enterFromClass: "scale-110 transform",
|
|
4
|
+
leaveActiveClass: "scale-110 transform",
|
|
5
|
+
},
|
|
6
|
+
overlay: {
|
|
3
7
|
base: `
|
|
4
8
|
bg-{color}-600
|
|
5
9
|
h-screen w-screen
|
|
@@ -14,11 +18,7 @@ export default /*tw*/ {
|
|
|
14
18
|
},
|
|
15
19
|
},
|
|
16
20
|
},
|
|
17
|
-
|
|
18
|
-
transition: {
|
|
19
|
-
enterFromClass: "scale-110 transform",
|
|
20
|
-
leaveActiveClass: "scale-110 transform",
|
|
21
|
-
},
|
|
21
|
+
nestedLoader: "{ULoader}",
|
|
22
22
|
defaults: {
|
|
23
23
|
color: "brand",
|
|
24
24
|
loading: undefined,
|
|
@@ -13,34 +13,34 @@ import defaultConfig from "../config.js?raw"
|
|
|
13
13
|
<Stories of={stories} />
|
|
14
14
|
|
|
15
15
|
## Using loader
|
|
16
|
-
To control the loader state in Vue components use `
|
|
16
|
+
To control the loader state in Vue components use `useLoaderOverlay` composable.
|
|
17
17
|
|
|
18
18
|
<Source code={`
|
|
19
|
-
import {
|
|
19
|
+
import { useLoaderOverlay } from "vueless";
|
|
20
20
|
|
|
21
|
-
const { isLoading,
|
|
21
|
+
const { isLoading, loaderOverlayOn, loaderOverlayOff } = useLoaderOverlay();
|
|
22
22
|
|
|
23
23
|
// get loader state
|
|
24
24
|
console.log(isLoading.value);
|
|
25
25
|
|
|
26
26
|
// show loader
|
|
27
|
-
|
|
27
|
+
loaderOverlayOn();
|
|
28
28
|
|
|
29
29
|
// hide loader
|
|
30
|
-
|
|
30
|
+
loaderOverlayOff();
|
|
31
31
|
`} language="jsx" dark />
|
|
32
32
|
|
|
33
33
|
## Using loader outside Vue components
|
|
34
34
|
To control the loader state outside Vue components, use the following methods.
|
|
35
35
|
|
|
36
36
|
<Source code={`
|
|
37
|
-
import {
|
|
37
|
+
import { loaderOverlayOn, loaderOverlayOff } from "vueless";
|
|
38
38
|
|
|
39
39
|
// show loader
|
|
40
|
-
|
|
40
|
+
loaderOverlayOn();
|
|
41
41
|
|
|
42
42
|
// hide loader
|
|
43
|
-
|
|
43
|
+
loaderOverlayOff();
|
|
44
44
|
`} language="jsx" dark />
|
|
45
45
|
|
|
46
46
|
## Default config
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { getArgTypes, getSlotNames, getSlotsFragment } from "../../utils/utilStorybook.js";
|
|
2
|
+
|
|
3
|
+
import ULoaderOverlay from "../ULoaderOverlay.vue";
|
|
4
|
+
import UButton from "../../ui.button/UButton.vue";
|
|
5
|
+
import UCol from "../../ui.container-col/UCol.vue";
|
|
6
|
+
|
|
7
|
+
import { useLoaderOverlay } from "../useLoaderOverlay.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The `ULoaderOverlay` component. | [View on GitHub](https://github.com/vuelessjs/vueless/tree/main/src/ui.loader-overlay)
|
|
11
|
+
*/
|
|
12
|
+
export default {
|
|
13
|
+
id: "9030",
|
|
14
|
+
title: "Loaders and Skeletons / Loader Overlay",
|
|
15
|
+
component: ULoaderOverlay,
|
|
16
|
+
argTypes: {
|
|
17
|
+
...getArgTypes(ULoaderOverlay.__name),
|
|
18
|
+
},
|
|
19
|
+
parameters: {
|
|
20
|
+
docs: {
|
|
21
|
+
story: {
|
|
22
|
+
height: "420px",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const DefaultTemplate = (args) => ({
|
|
29
|
+
components: { ULoaderOverlay },
|
|
30
|
+
setup() {
|
|
31
|
+
const slots = getSlotNames(ULoaderOverlay.__name);
|
|
32
|
+
|
|
33
|
+
return { args, slots };
|
|
34
|
+
},
|
|
35
|
+
template: `
|
|
36
|
+
<ULoaderOverlay v-bind="args" class="w-full h-full">
|
|
37
|
+
${args.slotTemplate || getSlotsFragment()}
|
|
38
|
+
</ULoaderOverlay>
|
|
39
|
+
`,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const LoadingTemplate = (args) => ({
|
|
43
|
+
components: { ULoaderOverlay, UButton, UCol },
|
|
44
|
+
setup() {
|
|
45
|
+
const { loaderOverlayOn, loaderOverlayOff, isLoading } = useLoaderOverlay();
|
|
46
|
+
|
|
47
|
+
function toggleLoading() {
|
|
48
|
+
isLoading.value ? loaderOverlayOff() : loaderOverlayOn();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return { args, loaderOverlayOn, loaderOverlayOff, isLoading, toggleLoading };
|
|
52
|
+
},
|
|
53
|
+
template: `
|
|
54
|
+
<UCol align="center" class="pb-4">
|
|
55
|
+
<UButton label="Toggle loading" size="sm" @click="toggleLoading"/>
|
|
56
|
+
</UCol>
|
|
57
|
+
|
|
58
|
+
<ULoaderOverlay v-bind="args" class="!static w-full h-96" />
|
|
59
|
+
`,
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
export const Default = DefaultTemplate.bind({});
|
|
63
|
+
Default.args = {};
|
|
64
|
+
|
|
65
|
+
export const LoadingToggling = LoadingTemplate.bind({});
|
|
66
|
+
LoadingToggling.args = {};
|
|
@@ -3,7 +3,11 @@ import useUI from "../composables/useUI.js";
|
|
|
3
3
|
import defaultConfig from "./config.js";
|
|
4
4
|
|
|
5
5
|
export default function useAttrs(props) {
|
|
6
|
-
const { config, getKeysAttrs, hasSlotContent } = useUI(
|
|
6
|
+
const { config, getKeysAttrs, hasSlotContent } = useUI(
|
|
7
|
+
defaultConfig,
|
|
8
|
+
() => props.config,
|
|
9
|
+
"overlay",
|
|
10
|
+
);
|
|
7
11
|
|
|
8
12
|
const keysAttrs = getKeysAttrs();
|
|
9
13
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { inject, readonly, ref } from "vue";
|
|
2
|
+
|
|
3
|
+
export const LoaderOverlaySymbol = Symbol.for("vueless:loader-overlay");
|
|
4
|
+
|
|
5
|
+
const isLoading = ref(true);
|
|
6
|
+
|
|
7
|
+
function loaderOverlayOn() {
|
|
8
|
+
isLoading.value = true;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function loaderOverlayOff() {
|
|
12
|
+
isLoading.value = false;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function createLoaderOverlay() {
|
|
16
|
+
return {
|
|
17
|
+
isLoading: readonly(isLoading),
|
|
18
|
+
loaderOverlayOn,
|
|
19
|
+
loaderOverlayOff,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function useLoaderOverlay() {
|
|
24
|
+
return inject(LoaderOverlaySymbol);
|
|
25
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<Transition :css="false" @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter">
|
|
3
|
-
<div v-if="show" v-bind="
|
|
3
|
+
<div v-if="show" v-bind="stripeAttrs" :style="barStyle" />
|
|
4
4
|
</Transition>
|
|
5
5
|
</template>
|
|
6
6
|
|
|
@@ -9,10 +9,10 @@ import { computed, onBeforeUnmount, watch, ref, onMounted, onUnmounted } from "v
|
|
|
9
9
|
|
|
10
10
|
import { getDefault } from "../utils/utilUI.js";
|
|
11
11
|
import { isMobileApp } from "../utils/utilPlatform.js";
|
|
12
|
-
import { clamp, queue, getRequestWithoutQuery } from "./
|
|
13
|
-
import {
|
|
12
|
+
import { clamp, queue, getRequestWithoutQuery } from "./utilLoaderProgress.js";
|
|
13
|
+
import { useLoaderProgress } from "./useLoaderProgress.js";
|
|
14
14
|
|
|
15
|
-
import {
|
|
15
|
+
import { ULoaderProgress, MAXIMUM, SPEED } from "./constants.js";
|
|
16
16
|
import defaultConfig from "./config.js";
|
|
17
17
|
import useAttrs from "./useAttrs.js";
|
|
18
18
|
|
|
@@ -20,12 +20,12 @@ defineOptions({ inheritAttrs: false });
|
|
|
20
20
|
|
|
21
21
|
const props = defineProps({
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Loader stripe color.
|
|
24
24
|
* @values brand, grayscale, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, white
|
|
25
25
|
*/
|
|
26
26
|
color: {
|
|
27
27
|
type: String,
|
|
28
|
-
default: getDefault(defaultConfig,
|
|
28
|
+
default: getDefault(defaultConfig, ULoaderProgress).color,
|
|
29
29
|
},
|
|
30
30
|
|
|
31
31
|
/**
|
|
@@ -43,8 +43,9 @@ const progress = ref(0);
|
|
|
43
43
|
const opacity = ref(1);
|
|
44
44
|
const status = ref(null);
|
|
45
45
|
|
|
46
|
-
const { requestQueue, removeRequestUrl, isLoading,
|
|
47
|
-
|
|
46
|
+
const { requestQueue, removeRequestUrl, isLoading, loaderProgressOff, loaderProgressOn } =
|
|
47
|
+
useLoaderProgress();
|
|
48
|
+
const { stripeAttrs } = useAttrs(props, { error, isMobileApp });
|
|
48
49
|
|
|
49
50
|
const isStarted = computed(() => {
|
|
50
51
|
return typeof status.value === "number";
|
|
@@ -67,8 +68,8 @@ watch(() => requestQueue.value.length, onChangeRequestsQueue);
|
|
|
67
68
|
watch(isLoading, onChangeLoadingState);
|
|
68
69
|
|
|
69
70
|
onMounted(() => {
|
|
70
|
-
window.addEventListener("
|
|
71
|
-
window.addEventListener("
|
|
71
|
+
window.addEventListener("loaderProgressOn", setLoaderOnHandler);
|
|
72
|
+
window.addEventListener("loaderProgressOff", setLoaderOffHandler);
|
|
72
73
|
|
|
73
74
|
if (props.resources) {
|
|
74
75
|
onChangeRequestsQueue();
|
|
@@ -80,16 +81,16 @@ onBeforeUnmount(() => {
|
|
|
80
81
|
});
|
|
81
82
|
|
|
82
83
|
onUnmounted(() => {
|
|
83
|
-
window.removeEventListener("
|
|
84
|
-
window.removeEventListener("
|
|
84
|
+
window.removeEventListener("loaderProgressOn", setLoaderOnHandler);
|
|
85
|
+
window.removeEventListener("loaderProgressOff", setLoaderOffHandler);
|
|
85
86
|
});
|
|
86
87
|
|
|
87
88
|
function setLoaderOnHandler(event) {
|
|
88
|
-
|
|
89
|
+
loaderProgressOn(event.detail.resource);
|
|
89
90
|
}
|
|
90
91
|
|
|
91
92
|
function setLoaderOffHandler(event) {
|
|
92
|
-
|
|
93
|
+
loaderProgressOff(event.detail.resource);
|
|
93
94
|
}
|
|
94
95
|
|
|
95
96
|
function onChangeLoadingState() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export default /*tw*/ {
|
|
2
|
-
|
|
2
|
+
stripe: {
|
|
3
3
|
base: "top-0 left-0 right-0 fixed h-[3px] transition-all ease-linear bg-{color}-600",
|
|
4
4
|
variants: {
|
|
5
5
|
color: {
|
|
@@ -11,7 +11,6 @@ export default /*tw*/ {
|
|
|
11
11
|
},
|
|
12
12
|
},
|
|
13
13
|
},
|
|
14
|
-
progressMobile: "mt-safe-top mx-3 rounded max-w-[calc(100%-1.5rem)]",
|
|
15
14
|
defaults: {
|
|
16
15
|
color: "brand",
|
|
17
16
|
},
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
This const is needed to prevent the issue in script setup:
|
|
3
3
|
`defineProps` is referencing locally declared variables. (vue/valid-define-props)
|
|
4
4
|
*/
|
|
5
|
-
export const
|
|
5
|
+
export const ULoaderProgress = "ULoaderProgress";
|
|
6
6
|
|
|
7
7
|
export const MAXIMUM = 99;
|
|
8
8
|
export const SPEED = 150;
|
|
@@ -13,30 +13,30 @@ import defaultConfig from "../config.js?raw"
|
|
|
13
13
|
<Stories of={stories} />
|
|
14
14
|
|
|
15
15
|
## Using loader
|
|
16
|
-
To control the loader state in Vue components use `
|
|
16
|
+
To control the loader state in Vue components use `useLoaderProgress` composable.
|
|
17
17
|
|
|
18
18
|
The loader uses queue of resources and will be shown until at least one item is present in a queue.
|
|
19
19
|
|
|
20
20
|
<Source code={`
|
|
21
|
-
import {
|
|
21
|
+
import { useLoaderProgress } from "vueless";
|
|
22
22
|
|
|
23
23
|
const {
|
|
24
24
|
isLoading,
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
loaderProgressOn,
|
|
26
|
+
loaderProgressOff,
|
|
27
27
|
requestQueue,
|
|
28
28
|
addRequestUrl
|
|
29
29
|
removeRequestUrl
|
|
30
|
-
} =
|
|
30
|
+
} = useLoaderProgress();
|
|
31
31
|
|
|
32
32
|
// get loader state
|
|
33
33
|
console.log(isLoading.value);
|
|
34
34
|
|
|
35
35
|
// show loader (add resource into queue)
|
|
36
|
-
|
|
36
|
+
loaderProgressOn("/transactions");
|
|
37
37
|
|
|
38
38
|
// hide loader (remove resource from queue)
|
|
39
|
-
|
|
39
|
+
loaderProgressOff("/transactions");
|
|
40
40
|
|
|
41
41
|
// get current resource array
|
|
42
42
|
console.log(requestQueue.value);
|
|
@@ -54,13 +54,13 @@ removeRequestUrl(["/transactions", "/products"]);
|
|
|
54
54
|
To control the loader state outside Vue components, use the following methods.
|
|
55
55
|
|
|
56
56
|
<Source code={`
|
|
57
|
-
import {
|
|
57
|
+
import { loaderProgressOn, loaderProgressOff } from "vueless";
|
|
58
58
|
|
|
59
59
|
// show loader
|
|
60
|
-
|
|
60
|
+
loaderProgressOn("/transactions");
|
|
61
61
|
|
|
62
62
|
// hide loader
|
|
63
|
-
|
|
63
|
+
loaderProgressOff("/transactions");
|
|
64
64
|
`} language="jsx" dark />
|
|
65
65
|
|
|
66
66
|
## Default config
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { getArgTypes, getSlotNames } from "../../utils/utilStorybook.js";
|
|
2
|
+
|
|
3
|
+
import ULoaderProgress from "../ULoaderProgress.vue";
|
|
4
|
+
import UButton from "../../ui.button/UButton.vue";
|
|
5
|
+
import URow from "../../ui.container-row/URow.vue";
|
|
6
|
+
import UCol from "../../ui.container-col/UCol.vue";
|
|
7
|
+
import UBadge from "../../ui.text-badge/UBadge.vue";
|
|
8
|
+
|
|
9
|
+
import { useLoaderProgress } from "../useLoaderProgress.js";
|
|
10
|
+
import { loaderProgressOff, loaderProgressOn } from "../utilLoaderProgress.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The `ULoaderProgress` component. | [View on GitHub](https://github.com/vuelessjs/vueless/tree/main/src/ui.loader-progress)
|
|
14
|
+
*/
|
|
15
|
+
export default {
|
|
16
|
+
id: "9020",
|
|
17
|
+
title: "Loaders and Skeletons / Loader Progress",
|
|
18
|
+
component: ULoaderProgress,
|
|
19
|
+
argTypes: {
|
|
20
|
+
...getArgTypes(ULoaderProgress.__name),
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const DefaultTemplate = (args) => ({
|
|
25
|
+
components: { ULoaderProgress, UButton, URow },
|
|
26
|
+
setup() {
|
|
27
|
+
const { loaderProgressOn, loaderProgressOff } = useLoaderProgress();
|
|
28
|
+
|
|
29
|
+
const slots = getSlotNames(ULoaderProgress.__name);
|
|
30
|
+
|
|
31
|
+
return { args, slots, loaderProgressOn, loaderProgressOff };
|
|
32
|
+
},
|
|
33
|
+
template: `
|
|
34
|
+
<ULoaderProgress v-bind="args" resources="https://api.publicapis.org/entries"/>
|
|
35
|
+
|
|
36
|
+
<URow gap="sm">
|
|
37
|
+
<UButton label="On" size="sm" @click="loaderProgressOn('https://api.publicapis.org/entries')" />
|
|
38
|
+
<UButton label="Off" size="sm" @click="loaderProgressOff('https://api.publicapis.org/entries')" />
|
|
39
|
+
</URow>
|
|
40
|
+
`,
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const EnumVariantTemplate = (args, { argTypes } = {}) => ({
|
|
44
|
+
components: { ULoaderProgress, UButton, UCol, URow, UBadge },
|
|
45
|
+
setup() {
|
|
46
|
+
return {
|
|
47
|
+
args,
|
|
48
|
+
loaderProgressOff,
|
|
49
|
+
loaderProgressOn,
|
|
50
|
+
options: argTypes[args.enum].options,
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
template: `
|
|
54
|
+
<UCol>
|
|
55
|
+
<URow gap="sm" class="pb-4">
|
|
56
|
+
<UButton label="On" size="sm" @click="loaderProgressOn('https://api.publicapis.org/images')" />
|
|
57
|
+
<UButton label="Off" size="sm" @click="loaderProgressOff('https://api.publicapis.org/images')" />
|
|
58
|
+
</URow>
|
|
59
|
+
|
|
60
|
+
<URow
|
|
61
|
+
align="center"
|
|
62
|
+
v-for="(option, index) in options"
|
|
63
|
+
:key="index"
|
|
64
|
+
>
|
|
65
|
+
<UBadge
|
|
66
|
+
:label="option"
|
|
67
|
+
:[args.enum]="option"
|
|
68
|
+
/>
|
|
69
|
+
<ULoaderProgress
|
|
70
|
+
resources="https://api.publicapis.org/images"
|
|
71
|
+
class="static"
|
|
72
|
+
:[args.enum]="option"
|
|
73
|
+
v-bind="args"
|
|
74
|
+
/>
|
|
75
|
+
</URow>
|
|
76
|
+
|
|
77
|
+
</UCol>
|
|
78
|
+
`,
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
export const Default = DefaultTemplate.bind({});
|
|
82
|
+
Default.args = {};
|
|
83
|
+
|
|
84
|
+
export const Color = EnumVariantTemplate.bind({});
|
|
85
|
+
Color.args = { enum: "color" };
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { inject, readonly, ref } from "vue";
|
|
2
2
|
|
|
3
|
-
import { getRequestWithoutQuery } from "./
|
|
3
|
+
import { getRequestWithoutQuery } from "./utilLoaderProgress.js";
|
|
4
4
|
|
|
5
|
-
export const
|
|
5
|
+
export const LoaderProgressSymbol = Symbol.for("vueless:loader-progress");
|
|
6
6
|
|
|
7
7
|
const isLoading = ref(false);
|
|
8
8
|
const requestQueue = ref([]);
|
|
9
9
|
const requestTimeout = ref(0);
|
|
10
10
|
|
|
11
|
-
function
|
|
11
|
+
function loaderProgressOn(url) {
|
|
12
12
|
addRequestUrl(url);
|
|
13
13
|
|
|
14
14
|
isLoading.value = true;
|
|
@@ -16,7 +16,7 @@ function loaderTopOn(url) {
|
|
|
16
16
|
clearTimeout(requestTimeout.value);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
function
|
|
19
|
+
function loaderProgressOff(url) {
|
|
20
20
|
requestQueue.value = url
|
|
21
21
|
? requestQueue.value.filter((item) => item !== getRequestWithoutQuery(url))
|
|
22
22
|
: [];
|
|
@@ -44,17 +44,17 @@ function removeRequestUrl(url) {
|
|
|
44
44
|
requestQueue.value = requestQueue.value.filter((item) => item !== getRequestWithoutQuery(url));
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
export function
|
|
47
|
+
export function createLoaderProgress() {
|
|
48
48
|
return {
|
|
49
49
|
isLoading: readonly(isLoading),
|
|
50
50
|
requestQueue: readonly(requestQueue),
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
loaderProgressOn,
|
|
52
|
+
loaderProgressOff,
|
|
53
53
|
addRequestUrl,
|
|
54
54
|
removeRequestUrl,
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
export function
|
|
59
|
-
return inject(
|
|
58
|
+
export function useLoaderProgress() {
|
|
59
|
+
return inject(LoaderProgressSymbol);
|
|
60
60
|
}
|
|
@@ -30,16 +30,16 @@ export const queue = (() => {
|
|
|
30
30
|
};
|
|
31
31
|
})();
|
|
32
32
|
|
|
33
|
-
export function
|
|
34
|
-
const
|
|
33
|
+
export function loaderProgressOn(resource) {
|
|
34
|
+
const loaderProgressOnEvent = new CustomEvent("loaderProgressOn", { detail: { resource } });
|
|
35
35
|
|
|
36
|
-
window.dispatchEvent(
|
|
36
|
+
window.dispatchEvent(loaderProgressOnEvent);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
export function
|
|
40
|
-
const
|
|
39
|
+
export function loaderProgressOff(resource) {
|
|
40
|
+
const loaderProgressOfEvent = new CustomEvent("loaderProgressOff", { detail: { resource } });
|
|
41
41
|
|
|
42
|
-
window.dispatchEvent(
|
|
42
|
+
window.dispatchEvent(loaderProgressOfEvent);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
export function getRequestWithoutQuery(request) {
|
package/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"framework": "vue",
|
|
3
3
|
"name": "vueless",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.402",
|
|
5
5
|
"contributions": {
|
|
6
6
|
"html": {
|
|
7
7
|
"description-markup": "markdown",
|
|
@@ -5825,7 +5825,7 @@
|
|
|
5825
5825
|
"attributes": [
|
|
5826
5826
|
{
|
|
5827
5827
|
"name": "loading",
|
|
5828
|
-
"description": "
|
|
5828
|
+
"description": "Loader state (shown / hidden).",
|
|
5829
5829
|
"value": {
|
|
5830
5830
|
"kind": "expression",
|
|
5831
5831
|
"type": "boolean"
|
|
@@ -5863,12 +5863,12 @@
|
|
|
5863
5863
|
}
|
|
5864
5864
|
},
|
|
5865
5865
|
{
|
|
5866
|
-
"name": "
|
|
5866
|
+
"name": "ULoaderOverlay",
|
|
5867
5867
|
"description": "",
|
|
5868
5868
|
"attributes": [
|
|
5869
5869
|
{
|
|
5870
5870
|
"name": "loading",
|
|
5871
|
-
"description": "
|
|
5871
|
+
"description": "Loader state (shown / hidden).",
|
|
5872
5872
|
"value": {
|
|
5873
5873
|
"kind": "expression",
|
|
5874
5874
|
"type": "boolean"
|
|
@@ -5884,18 +5884,24 @@
|
|
|
5884
5884
|
"default": "brand"
|
|
5885
5885
|
}
|
|
5886
5886
|
],
|
|
5887
|
+
"slots": [
|
|
5888
|
+
{
|
|
5889
|
+
"name": "default",
|
|
5890
|
+
"description": "Use it to add something instead of the default loader."
|
|
5891
|
+
}
|
|
5892
|
+
],
|
|
5887
5893
|
"source": {
|
|
5888
|
-
"module": "./src/ui.loader-
|
|
5894
|
+
"module": "./src/ui.loader-overlay/ULoaderOverlay.vue",
|
|
5889
5895
|
"symbol": "default"
|
|
5890
5896
|
}
|
|
5891
5897
|
},
|
|
5892
5898
|
{
|
|
5893
|
-
"name": "
|
|
5899
|
+
"name": "ULoaderProgress",
|
|
5894
5900
|
"description": "",
|
|
5895
5901
|
"attributes": [
|
|
5896
5902
|
{
|
|
5897
5903
|
"name": "color",
|
|
5898
|
-
"description": "
|
|
5904
|
+
"description": "Loader stripe color.",
|
|
5899
5905
|
"value": {
|
|
5900
5906
|
"kind": "expression",
|
|
5901
5907
|
"type": "'brand' | 'grayscale' | 'gray' | 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'emerald' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'white'"
|
|
@@ -5913,7 +5919,7 @@
|
|
|
5913
5919
|
}
|
|
5914
5920
|
],
|
|
5915
5921
|
"source": {
|
|
5916
|
-
"module": "./src/ui.loader-
|
|
5922
|
+
"module": "./src/ui.loader-progress/ULoaderProgress.vue",
|
|
5917
5923
|
"symbol": "default"
|
|
5918
5924
|
}
|
|
5919
5925
|
},
|
package/assets/icons/add.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M445.93-445.93H194.02v-68.14h251.91v-252.15h68.14v252.15h252.15v68.14H514.07v251.91h-68.14v-251.91Z"/></svg>
|
package/assets/icons/apps.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M223.29-154.5q-29.12 0-48.95-19.84-19.84-19.83-19.84-48.95 0-29.12 19.84-48.91 19.83-19.8 48.95-19.8 29.12 0 48.91 19.8 19.8 19.79 19.8 48.91 0 29.12-19.8 48.95-19.79 19.84-48.91 19.84Zm256.8 0q-29.05 0-48.88-19.84-19.84-19.83-19.84-48.95 0-29.12 19.75-48.91 19.74-19.8 48.79-19.8t48.88 19.8q19.84 19.79 19.84 48.91 0 29.12-19.75 48.95-19.74 19.84-48.79 19.84Zm256.62 0q-29.12 0-48.91-19.84-19.8-19.83-19.8-48.95 0-29.12 19.8-48.91 19.79-19.8 48.91-19.8 29.12 0 48.95 19.8 19.84 19.79 19.84 48.91 0 29.12-19.84 48.95-19.83 19.84-48.95 19.84ZM223.29-411.37q-29.12 0-48.95-19.75-19.84-19.74-19.84-48.79t19.84-48.88q19.83-19.84 48.95-19.84 29.12 0 48.91 19.75 19.8 19.74 19.8 48.79t-19.8 48.88q-19.79 19.84-48.91 19.84Zm256.8 0q-29.05 0-48.88-19.75-19.84-19.74-19.84-48.79t19.75-48.88q19.74-19.84 48.79-19.84t48.88 19.75q19.84 19.74 19.84 48.79t-19.75 48.88q-19.74 19.84-48.79 19.84Zm256.62 0q-29.12 0-48.91-19.75-19.8-19.74-19.8-48.79t19.8-48.88q19.79-19.84 48.91-19.84 29.12 0 48.95 19.75 19.84 19.74 19.84 48.79t-19.84 48.88q-19.83 19.84-48.95 19.84ZM223.29-668q-29.12 0-48.95-19.8-19.84-19.79-19.84-48.91 0-29.12 19.84-48.95 19.83-19.84 48.95-19.84 29.12 0 48.91 19.84 19.8 19.83 19.8 48.95 0 29.12-19.8 48.91-19.79 19.8-48.91 19.8Zm256.8 0q-29.05 0-48.88-19.8-19.84-19.79-19.84-48.91 0-29.12 19.75-48.95 19.74-19.84 48.79-19.84t48.88 19.84q19.84 19.83 19.84 48.95 0 29.12-19.75 48.91-19.74 19.8-48.79 19.8Zm256.62 0q-29.12 0-48.91-19.8-19.8-19.79-19.8-48.91 0-29.12 19.8-48.95 19.79-19.84 48.91-19.84 29.12 0 48.95 19.84 19.84 19.83 19.84 48.95 0 29.12-19.84 48.91-19.83 19.8-48.95 19.8Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="m283.8-445.93 244.18 244.17L480-154.02 154.02-480 480-806.22l47.98 47.98L283.8-514.07h522.42v68.14H283.8Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M737.33-324.39q0 105.46-74.69 177.91-74.69 72.46-180.26 72.46-105.58 0-180.35-72.46-74.77-72.45-74.77-177.85v-383.82q0-74.63 53.41-126.35 53.42-51.72 127.75-51.72 74.34 0 127.69 51.72 53.35 51.72 53.35 126.35v363.82q0 43.66-31.56 74.62-31.55 30.97-75.81 30.97-44.26 0-75.61-30.64t-31.35-74.95v-370h66.46v370q0 16.05 11.97 27.59t29.2 11.54q17.24 0 28.74-11.5 11.5-11.51 11.5-27.63v-363.58q.24-47.35-33.38-79.6-33.62-32.25-81.35-32.25-47.74 0-81.14 32.19-33.41 32.19-33.41 79.42v383.82q.24 77.83 55.57 130.96 55.33 53.13 133.62 53.13 77.86 0 133.03-53.16 55.17-53.17 54.93-130.93v-396.93h66.46v396.87Z"/></svg>
|
package/assets/icons/check.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M378-240.26 148.26-470l48.98-48.98L378-338.22l383.76-383.76L810.74-673 378-240.26Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="m420.52-294.41 285.63-285.63-50.78-50.03-234.85 234.85-117.85-117.85-49.78 50.03 167.63 168.63Zm59.51 220.39q-83.46 0-157.54-31.88-74.07-31.88-129.39-87.2-55.32-55.32-87.2-129.36-31.88-74.04-31.88-157.51 0-84.46 31.88-158.54 31.88-74.07 87.16-128.9 55.28-54.84 129.34-86.82 74.06-31.99 157.55-31.99 84.48 0 158.59 31.97 74.1 31.97 128.91 86.77 54.82 54.8 86.79 128.88 31.98 74.08 31.98 158.6 0 83.5-31.99 157.57-31.98 74.07-86.82 129.36-54.83 55.29-128.87 87.17-74.04 31.88-158.51 31.88Zm-.03-68.13q141.04 0 239.45-98.75 98.4-98.76 98.4-239.1 0-141.04-98.4-239.45-98.41-98.4-239.57-98.4-140.16 0-238.95 98.4-98.78 98.41-98.78 239.57 0 140.16 98.75 238.95 98.76 98.78 239.1 98.78ZM480-480Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M561-234.26 314.26-481 561-727.74 609.74-679l-198 198 198 198L561-234.26Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="m524.26-481-198-198L375-727.74 621.74-481 375-234.26 326.26-283l198-198Z"/></svg>
|
package/assets/icons/close.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M249-201.26 201.26-249l231-231-231-231L249-758.74l231 231 231-231L758.74-711l-231 231 231 231L711-201.26l-231-231-231 231Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="m305.02-257.28-47.74-47.74L432.02-480 257.28-653.98l47.74-47.74L480-526.98l173.98-174.74 47.74 47.74L526.98-480l174.74 174.98-47.74 47.74L480-432.02 305.02-257.28Z"/></svg>
|
package/assets/icons/delete.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M259.09-114.02q-28.45 0-48.41-19.89-19.96-19.89-19.96-48.24v-565.94h-45.07v-68.13h198.28v-34.3h271.9v34.3h198.52v68.13h-45.07v565.94q0 27.6-20.33 47.86-20.34 20.27-48.04 20.27H259.09Zm441.82-634.07H259.09v565.94h441.82v-565.94ZM363.89-266.24h64.07v-399h-64.07v399Zm168.15 0h64.31v-399h-64.31v399ZM259.09-748.09v565.94-565.94Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M319-249.52h322v-62.63H319v62.63Zm0-170h322v-62.63H319v62.63Zm-96.85 345.5q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-675.7q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34h361.48l222.59 222.59v521.48q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27h-515.7Zm326.7-557.83v-186h-326.7v675.7h515.7v-489.7h-189Zm-326.7-186v186-186 675.7-675.7Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M347.41-154.5q-30.1 0-51.51-21.43-21.4-21.44-21.4-51.54 0-30.1 21.43-51.31Q317.37-300 347.47-300q30.1 0 51.31 21.25Q420-257.51 420-227.41q0 30.1-21.25 51.51-21.24 21.4-51.34 21.4Zm265.34 0q-30.1 0-51.42-21.43Q540-197.37 540-227.47q0-30.1 21.39-51.31Q582.79-300 612.83-300q30.14 0 51.4 21.25 21.27 21.24 21.27 51.34 0 30.1-21.32 51.51-21.33 21.4-51.43 21.4ZM347.41-407.37q-30.1 0-51.51-21.39-21.4-21.4-21.4-51.44 0-30.23 21.43-51.33 21.44-21.1 51.54-21.1 30.1 0 51.31 21.19Q420-510.26 420-480.14q0 30.12-21.25 51.44-21.24 21.33-51.34 21.33Zm265.34 0q-30.1 0-51.42-21.39Q540-450.16 540-480.2q0-30.23 21.39-51.33 21.4-21.1 51.44-21.1 30.14 0 51.4 21.19 21.27 21.18 21.27 51.3 0 30.12-21.32 51.44-21.33 21.33-51.43 21.33ZM347.41-660q-30.1 0-51.51-21.39-21.4-21.4-21.4-51.44 0-30.14 21.43-51.4 21.44-21.27 51.54-21.27 30.1 0 51.31 21.32Q420-762.85 420-732.75t-21.25 51.42Q377.51-660 347.41-660Zm265.34 0q-30.1 0-51.42-21.39Q540-702.79 540-732.83q0-30.14 21.39-51.4 21.4-21.27 51.44-21.27 30.14 0 51.4 21.32 21.27 21.33 21.27 51.43t-21.32 51.42Q642.85-660 612.75-660Z"/></svg>
|
package/assets/icons/edit.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M181.91-182.15h44.24l459.81-458.81-43.76-44-460.29 459.05v43.76Zm-67.89 68.13V-253.5l574.52-573.76q8.24-8.48 19.81-13.22 11.56-4.74 24.11-4.74 11.47 0 22.95 4.74 11.48 4.74 21.2 12.98l51.89 51.17q9.24 9.72 13.48 21.32t4.24 23.31q0 11.72-4.74 23.7-4.74 11.98-12.98 20.46L253.74-114.02H114.02ZM775.17-732.7l-41.24-41.47 41.24 41.47ZM664.2-663.2l-22-21.76 43.76 44-21.76-22.24Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M154.02-396.85v-68.13h310.76v68.13H154.02Zm0-170.5v-68.13h478.13v68.13H154.02Zm0-170.5v-68.37h478.13v68.37H154.02Zm365.02 583.83v-128.02L741-503q9.51-9.63 21.13-13.91 11.62-4.29 23.5-4.29 12.48 0 24.21 4.86T831.02-502l37 37q9.44 9.48 13.82 21.12 4.38 11.63 4.38 23.27 0 11.96-4.86 24.06-4.86 12.09-14.25 21.57L647.07-154.02H519.04Zm303.59-266.59-37-37 37 37Zm-240 203h38l120.28-121.23-18-19.02-19-18.03-121.28 120.22v38.06Zm140.28-140.28-19-18 37 37-18-19Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M154.02-114.02v-68.13h652.2v68.13h-652.2ZM309.8-258.57q-65.17 0-110.48-44.93-45.3-44.93-45.3-109.85v-432.87h664.07q28.1 0 48.11 20.08 20.02 20.08 20.02 48.05v160q0 28.1-20.02 48.12-20.01 20.01-48.11 20.01h-92.66v136.61q0 64.92-45.47 109.85-45.48 44.93-110.55 44.93H309.8Zm.24-519.28H657.3 222.15h87.89Zm415.39 159.76h92.42v-160h-92.42v160ZM569.15-326.93q34.84 0 61.5-26.52 26.65-26.52 26.65-60.14v-364.26H399.15v37.31l71 58q1 1 9 18v150q0 9.6-7 16.8-7 7.2-18 7.2h-151q-11 0-18-7.2t-7-16.8v-150q0-4 9-18l72-58v-37.31h-137v364.26q0 33.62 26.98 60.14 26.97 26.52 60.91 26.52h259.11ZM355.57-777.85h40-40Z"/></svg>
|
package/assets/icons/error.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M479.93-274.02q16.46 0 27.4-10.74 10.93-10.75 10.93-27.21t-10.86-27.52q-10.86-11.05-27.33-11.05-16.46 0-27.4 11.03-10.93 11.04-10.93 27.5 0 16.47 10.86 27.23 10.86 10.76 27.33 10.76Zm-31-158.74h68.14v-257.07h-68.14v257.07ZM480.3-74.02q-84.2 0-158.04-31.88-73.84-31.88-129.16-87.2-55.32-55.32-87.2-129.2-31.88-73.88-31.88-158.17 0-84.28 31.88-158.2 31.88-73.91 87.16-128.74 55.28-54.84 129.18-86.82 73.9-31.99 158.21-31.99 84.3 0 158.25 31.97 73.94 31.97 128.75 86.77 54.82 54.8 86.79 128.88 31.98 74.08 31.98 158.33 0 84.24-31.99 158.07-31.98 73.84-86.82 128.95-54.83 55.1-128.87 87.17Q564.5-74.02 480.3-74.02Zm.2-68.13q140.54 0 238.95-98.75 98.4-98.76 98.4-239.6 0-140.54-98.22-238.95-98.21-98.4-239.75-98.4-140.16 0-238.95 98.22-98.78 98.21-98.78 239.75 0 140.16 98.75 238.95 98.76 98.78 239.6 98.78ZM480-480Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M480-339.5 234.26-585.24 283-633.98l197 198 197-197 48.74 48.74L480-339.5Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M235.93-234.26v-491.48h68.14v491.48h-68.14Zm451.07-3L447.26-477 687-716.74 735.74-668l-191 191 191 191L687-237.26Z"/></svg>
|
package/assets/icons/image.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M182.15-114.02q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-595.7q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34h595.7q27.7 0 48.03 20.34 20.34 20.33 20.34 48.03v595.7q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27h-595.7Zm0-68.13h595.7v-595.7h-595.7v595.7Zm50.74-92.7h495.22L578-476.59l-132 171-93-127-120.11 157.74Zm-50.74 92.7v-595.7 595.7Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M480-338.26 234.26-584 283-632.74l197 197 197-197L725.74-584 480-338.26Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M561-234.26 314.26-481 561-727.74 609.74-679l-198 198 198 198L561-234.26Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="m524.26-481-198-198L375-727.74 621.74-481 375-234.26 326.26-283l198-198Z"/></svg>
|
package/assets/icons/label.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M846.22-480 674.83-237.89q-14.2 19.67-33.86 31.77-19.67 12.1-43.36 12.1H182.15q-28.1 0-48.12-20.01-20.01-20.02-20.01-48.12v-435.7q0-28.2 20.01-48.28 20.02-20.09 48.12-20.09h415.46q23.69 0 43.36 12.34 19.67 12.34 33.86 31.77L846.22-480Zm-85.29 0L608.56-697.85H182.15v435.7h426.46L760.93-480Zm-578.78 0v217.85-435.7V-480Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M272-239.26 223.26-288l192-192-192-192L272-720.74 512.74-480 272-239.26Zm383.93 5v-491.48h68.14v491.48h-68.14Z"/></svg>
|
package/assets/icons/remove.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M194.02-445.93v-68.14h572.2v68.14h-572.2Z"/></svg>
|
package/assets/icons/search.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M795.76-114.3 531.33-378.5q-29.76 25.26-69.6 39.41-39.84 14.16-85.16 14.16-109.84 0-185.96-76.2Q114.5-477.33 114.5-585t76.2-183.87q76.19-76.2 184.37-76.2 108.17 0 183.86 76.2 75.7 76.2 75.7 184.02 0 43.33-13.64 82.97t-40.92 74.4L845.5-164.04l-49.74 49.74ZM375.65-393.07q79.73 0 135.29-56.24Q566.5-505.55 566.5-585q0-79.45-55.6-135.69-55.59-56.24-135.25-56.24-80.49 0-136.76 56.24-56.26 56.24-56.26 135.69 0 79.45 56.23 135.69 56.23 56.24 136.79 56.24Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="m224.15-107.56 67.39-291.29L65.41-594.78l298.52-25.72L480-895.3l116.07 274.8 298.52 25.72-226.13 195.93 67.63 291.29L480-262.3 224.15-107.56Z"/></svg>
|
package/assets/icons/star.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="m326.37-249.79 153.64-91.89 153.64 92.9-41.28-173.94L727.5-540.33l-178.17-15.52L480-720.02l-69.33 163.41-178.17 15.28 135.22 117.38-41.35 174.16ZM224.15-107.56l67.39-291.29L65.41-594.78l298.43-25.67L480-895.3l116.16 274.85 298.43 25.67-226.13 195.93 67.63 291.29L480-262.3 224.15-107.56ZM480-474.52Z"/></svg>
|
package/assets/icons/title.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M425.93-154.02v-544.07H194.02v-108.13h572.2v108.13H534.3v544.07H425.93Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M480.12-330q70.88 0 120.38-49.62t49.5-120.5q0-70.88-49.62-120.38T479.88-670Q409-670 359.5-620.38T310-499.88q0 70.88 49.62 120.38t120.5 49.5Zm-.3-61.83q-45.15 0-76.57-31.6-31.42-31.6-31.42-76.75t31.6-76.57q31.6-31.42 76.75-31.42t76.57 31.6q31.42 31.6 31.42 76.75t-31.6 76.57q-31.6 31.42-76.75 31.42ZM480-194.5q-147.91 0-267.35-84.67Q93.22-363.85 34.5-500q58.72-136.15 178.15-220.83Q332.09-805.5 480-805.5q147.91 0 267.35 84.67Q866.78-636.15 925.5-500q-58.72 136.15-178.15 220.83Q627.91-194.5 480-194.5Z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M813.85-61.85 649.2-223.74q-35 14-79.24 21.62-44.24 7.62-89.96 7.62-147.2 0-267.75-82.46Q91.7-359.41 34.5-500q19.52-51.76 55.38-101.86t86.38-95.81L50.98-822.48l43.91-45.15 759.87 759.87-40.91 45.91ZM480-330q13.28 0 28.45-2.5 15.16-2.5 25.44-7.26L319.28-553.89q-4.52 11.28-6.9 25.56Q310-514.04 310-500q0 72 50 121t120 49Zm283.74 41.91L629.96-422.11q9.52-15.04 14.78-36.18T650-500q0-71-49.5-120.5T480-670q-20.8 0-41.09 4.76-20.28 4.76-36.8 15.04L287.57-765.5q35-16 90.21-28 55.22-12 107.22-12 143.96 0 264.01 82.34Q869.07-640.83 925.5-500q-25.76 64.48-67.12 118.08-41.36 53.59-94.64 93.83ZM578.07-474l-125.5-125.5q25.17-10.28 52.82-5.1 27.65 5.19 48.5 24.56 20.61 20.61 28.53 46 7.93 25.39-4.35 60.04Z"/></svg>
|
package/assets/icons/warning.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 -960 960 960"><path d="M34.74-116.89 480-886.22l445.26 769.33H34.74Zm113.8-65.74h662.92L480-754.98 148.54-182.63Zm335.64-54.85q12.96 0 21.87-9.08 8.91-9.09 8.91-22.05t-9.09-21.75q-9.08-8.79-22.05-8.79-12.96 0-21.87 8.96-8.91 8.97-8.91 21.93 0 12.96 9.09 21.87 9.08 8.91 22.05 8.91ZM454-348h60v-222.09h-60V-348Zm26-120.8Z"/></svg>
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<Transition v-bind="config.transition">
|
|
3
|
-
<div v-if="showLoader" v-bind="wrapperAttrs">
|
|
4
|
-
<ULoader
|
|
5
|
-
:loading="showLoader"
|
|
6
|
-
size="lg"
|
|
7
|
-
:color="color === 'white' ? 'grayscale' : 'white'"
|
|
8
|
-
v-bind="loaderAttrs"
|
|
9
|
-
/>
|
|
10
|
-
</div>
|
|
11
|
-
</Transition>
|
|
12
|
-
</template>
|
|
13
|
-
|
|
14
|
-
<script setup>
|
|
15
|
-
import { computed, onMounted, onUnmounted } from "vue";
|
|
16
|
-
import { getDefault } from "../utils/utilUI.js";
|
|
17
|
-
|
|
18
|
-
import ULoader from "../ui.loader/ULoader.vue";
|
|
19
|
-
|
|
20
|
-
import { ULoaderRendering } from "./constants.js";
|
|
21
|
-
import defaultConfig from "./config.js";
|
|
22
|
-
import useAttrs from "./useAttrs.js";
|
|
23
|
-
import { useLoaderRendering } from "./useLoaderRendering.js";
|
|
24
|
-
|
|
25
|
-
defineOptions({ inheritAttrs: false });
|
|
26
|
-
|
|
27
|
-
const props = defineProps({
|
|
28
|
-
/**
|
|
29
|
-
* Set loader on.
|
|
30
|
-
*/
|
|
31
|
-
loading: {
|
|
32
|
-
type: Boolean,
|
|
33
|
-
default: getDefault(defaultConfig, ULoaderRendering).loading,
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Loader color.
|
|
38
|
-
* @values brand, grayscale, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, white
|
|
39
|
-
*/
|
|
40
|
-
color: {
|
|
41
|
-
type: String,
|
|
42
|
-
default: getDefault(defaultConfig, ULoaderRendering).color,
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
const { wrapperAttrs, loaderAttrs, config } = useAttrs(props);
|
|
47
|
-
const { isLoading, loaderRenderingOn, loaderRenderingOff } = useLoaderRendering();
|
|
48
|
-
|
|
49
|
-
onMounted(() => {
|
|
50
|
-
window.addEventListener("setRenderingStarted", loaderRenderingOn);
|
|
51
|
-
window.addEventListener("setRenderingFinished", loaderRenderingOff);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
onUnmounted(() => {
|
|
55
|
-
window.removeEventListener("setRenderingStarted", loaderRenderingOn);
|
|
56
|
-
window.removeEventListener("setRenderingFinished", loaderRenderingOff);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
const showLoader = computed(() => {
|
|
60
|
-
return props.loading === undefined ? isLoading.value : props.loading;
|
|
61
|
-
});
|
|
62
|
-
</script>
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { getArgTypes, getSlotNames, getSlotsFragment } from "../../utils/utilStorybook.js";
|
|
2
|
-
|
|
3
|
-
import ULoaderRendering from "../../ui.loader-rendering/ULoaderRendering.vue";
|
|
4
|
-
import UButton from "../../ui.button/UButton.vue";
|
|
5
|
-
import UCol from "../../ui.container-col/UCol.vue";
|
|
6
|
-
|
|
7
|
-
import { useLoaderRendering } from "../useLoaderRendering.js";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* The `ULoaderRendering` component. | [View on GitHub](https://github.com/vuelessjs/vueless/tree/main/src/ui.loader-rendering)
|
|
11
|
-
*/
|
|
12
|
-
export default {
|
|
13
|
-
id: "9030",
|
|
14
|
-
title: "Loaders and Skeletons / Loader Rendering",
|
|
15
|
-
component: ULoaderRendering,
|
|
16
|
-
argTypes: {
|
|
17
|
-
...getArgTypes(ULoaderRendering.__name),
|
|
18
|
-
},
|
|
19
|
-
parameters: {
|
|
20
|
-
docs: {
|
|
21
|
-
story: {
|
|
22
|
-
height: "420px",
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const DefaultTemplate = (args) => ({
|
|
29
|
-
components: { ULoaderRendering },
|
|
30
|
-
setup() {
|
|
31
|
-
const slots = getSlotNames(ULoaderRendering.__name);
|
|
32
|
-
|
|
33
|
-
return { args, slots };
|
|
34
|
-
},
|
|
35
|
-
template: `
|
|
36
|
-
<ULoaderRendering v-bind="args" class="w-full h-full">
|
|
37
|
-
${args.slotTemplate || getSlotsFragment()}
|
|
38
|
-
</ULoaderRendering>
|
|
39
|
-
`,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
const LoadingTemplate = (args) => ({
|
|
43
|
-
components: { ULoaderRendering, UButton, UCol },
|
|
44
|
-
setup() {
|
|
45
|
-
const { loaderRenderingOn, loaderRenderingOff, isLoading } = useLoaderRendering();
|
|
46
|
-
|
|
47
|
-
function toggleLoading() {
|
|
48
|
-
isLoading.value ? loaderRenderingOff() : loaderRenderingOn();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return { args, loaderRenderingOn, loaderRenderingOff, isLoading, toggleLoading };
|
|
52
|
-
},
|
|
53
|
-
template: `
|
|
54
|
-
<UCol align="center" class="pb-4">
|
|
55
|
-
<UButton label="Toggle loading" size="sm" @click="toggleLoading"/>
|
|
56
|
-
</UCol>
|
|
57
|
-
|
|
58
|
-
<ULoaderRendering v-bind="args" class="!static w-full h-96" />
|
|
59
|
-
`,
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
export const Default = DefaultTemplate.bind({});
|
|
63
|
-
Default.args = {};
|
|
64
|
-
|
|
65
|
-
export const LoadingOff = LoadingTemplate.bind({});
|
|
66
|
-
LoadingOff.args = { loading: false };
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { inject, readonly, ref } from "vue";
|
|
2
|
-
|
|
3
|
-
export const LoaderRenderingSymbol = Symbol.for("vueless:loader-rendering");
|
|
4
|
-
|
|
5
|
-
const isLoading = ref(true);
|
|
6
|
-
|
|
7
|
-
function loaderRenderingOn() {
|
|
8
|
-
isLoading.value = true;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
function loaderRenderingOff() {
|
|
12
|
-
isLoading.value = false;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export function createLoaderRendering() {
|
|
16
|
-
return {
|
|
17
|
-
isLoading: readonly(isLoading),
|
|
18
|
-
loaderRenderingOn,
|
|
19
|
-
loaderRenderingOff,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export function useLoaderRendering() {
|
|
24
|
-
return inject(LoaderRenderingSymbol);
|
|
25
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { getArgTypes, getSlotNames } from "../../utils/utilStorybook.js";
|
|
2
|
-
|
|
3
|
-
import ULoaderTop from "../../ui.loader-top/ULoaderTop.vue";
|
|
4
|
-
import UButton from "../../ui.button/UButton.vue";
|
|
5
|
-
import URow from "../../ui.container-row/URow.vue";
|
|
6
|
-
import UCol from "../../ui.container-col/UCol.vue";
|
|
7
|
-
import UBadge from "../../ui.text-badge/UBadge.vue";
|
|
8
|
-
|
|
9
|
-
import { useLoaderTop } from "../useLoaderTop.js";
|
|
10
|
-
import { loaderTopOff, loaderTopOn } from "../utilLoaderTop.js";
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* The `ULoaderTop` component. | [View on GitHub](https://github.com/vuelessjs/vueless/tree/main/src/ui.loader-top)
|
|
14
|
-
*/
|
|
15
|
-
export default {
|
|
16
|
-
id: "9020",
|
|
17
|
-
title: "Loaders and Skeletons / Loader Top",
|
|
18
|
-
component: ULoaderTop,
|
|
19
|
-
argTypes: {
|
|
20
|
-
...getArgTypes(ULoaderTop.__name),
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
const DefaultTemplate = (args) => ({
|
|
25
|
-
components: { ULoaderTop, UButton, URow },
|
|
26
|
-
setup() {
|
|
27
|
-
const { loaderTopOn, loaderTopOff } = useLoaderTop();
|
|
28
|
-
|
|
29
|
-
const slots = getSlotNames(ULoaderTop.__name);
|
|
30
|
-
|
|
31
|
-
return { args, slots, loaderTopOn, loaderTopOff };
|
|
32
|
-
},
|
|
33
|
-
template: `
|
|
34
|
-
<ULoaderTop v-bind="args" resources="https://api.publicapis.org/entries"/>
|
|
35
|
-
|
|
36
|
-
<URow gap="sm">
|
|
37
|
-
<UButton label="On" size="sm" @click="loaderTopOn('https://api.publicapis.org/entries')" />
|
|
38
|
-
<UButton label="Off" size="sm" @click="loaderTopOff('https://api.publicapis.org/entries')" />
|
|
39
|
-
</URow>
|
|
40
|
-
`,
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
const EnumVariantTemplate = (args, { argTypes } = {}) => ({
|
|
44
|
-
components: { ULoaderTop, UButton, UCol, URow, UBadge },
|
|
45
|
-
setup() {
|
|
46
|
-
return {
|
|
47
|
-
args,
|
|
48
|
-
loaderTopOff,
|
|
49
|
-
loaderTopOn,
|
|
50
|
-
options: argTypes[args.enum].options,
|
|
51
|
-
};
|
|
52
|
-
},
|
|
53
|
-
template: `
|
|
54
|
-
<UCol>
|
|
55
|
-
<URow gap="sm" class="pb-4">
|
|
56
|
-
<UButton label="On" size="sm" @click="loaderTopOn('https://api.publicapis.org/images')" />
|
|
57
|
-
<UButton label="Off" size="sm" @click="loaderTopOff('https://api.publicapis.org/images')" />
|
|
58
|
-
</URow>
|
|
59
|
-
|
|
60
|
-
<URow
|
|
61
|
-
align="center"
|
|
62
|
-
v-for="(option, index) in options"
|
|
63
|
-
:key="index"
|
|
64
|
-
>
|
|
65
|
-
<UBadge
|
|
66
|
-
:label="option"
|
|
67
|
-
:[args.enum]="option"
|
|
68
|
-
/>
|
|
69
|
-
<ULoaderTop
|
|
70
|
-
resources="https://api.publicapis.org/images"
|
|
71
|
-
class="static"
|
|
72
|
-
:[args.enum]="option"
|
|
73
|
-
v-bind="args"
|
|
74
|
-
/>
|
|
75
|
-
</URow>
|
|
76
|
-
|
|
77
|
-
</UCol>
|
|
78
|
-
`,
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
export const Default = DefaultTemplate.bind({});
|
|
82
|
-
Default.args = {};
|
|
83
|
-
|
|
84
|
-
export const Color = EnumVariantTemplate.bind({});
|
|
85
|
-
Color.args = { enum: "color" };
|
|
File without changes
|