feat: init
This commit is contained in:
75
node_modules/nuxt/dist/app/components/nuxt-loading-indicator.js
generated
vendored
Normal file
75
node_modules/nuxt/dist/app/components/nuxt-loading-indicator.js
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
import { defineComponent, h } from "vue";
|
||||
import { useLoadingIndicator } from "../composables/loading-indicator.js";
|
||||
export default defineComponent({
|
||||
name: "NuxtLoadingIndicator",
|
||||
props: {
|
||||
throttle: {
|
||||
type: Number,
|
||||
default: 200
|
||||
},
|
||||
duration: {
|
||||
type: Number,
|
||||
default: 2e3
|
||||
},
|
||||
hideDelay: {
|
||||
type: Number,
|
||||
default: 500
|
||||
},
|
||||
resetDelay: {
|
||||
type: Number,
|
||||
default: 400
|
||||
},
|
||||
height: {
|
||||
type: Number,
|
||||
default: 3
|
||||
},
|
||||
color: {
|
||||
type: [String, Boolean],
|
||||
default: "repeating-linear-gradient(to right,#00dc82 0%,#34cdfe 50%,#0047e1 100%)"
|
||||
},
|
||||
errorColor: {
|
||||
type: String,
|
||||
default: "repeating-linear-gradient(to right,#f87171 0%,#ef4444 100%)"
|
||||
},
|
||||
estimatedProgress: {
|
||||
type: Function,
|
||||
required: false
|
||||
}
|
||||
},
|
||||
setup(props, { slots, expose }) {
|
||||
const { progress, isLoading, error, start, finish, clear } = useLoadingIndicator({
|
||||
duration: props.duration,
|
||||
throttle: props.throttle,
|
||||
hideDelay: props.hideDelay,
|
||||
resetDelay: props.resetDelay,
|
||||
estimatedProgress: props.estimatedProgress
|
||||
});
|
||||
expose({
|
||||
progress,
|
||||
isLoading,
|
||||
error,
|
||||
start,
|
||||
finish,
|
||||
clear
|
||||
});
|
||||
return () => h("div", {
|
||||
class: "nuxt-loading-indicator",
|
||||
style: {
|
||||
position: "fixed",
|
||||
top: 0,
|
||||
right: 0,
|
||||
left: 0,
|
||||
pointerEvents: "none",
|
||||
width: "auto",
|
||||
height: `${props.height}px`,
|
||||
opacity: isLoading.value ? 1 : 0,
|
||||
background: error.value ? props.errorColor : props.color || void 0,
|
||||
backgroundSize: `${progress.value > 0 ? 100 / progress.value * 100 : 0}% auto`,
|
||||
transform: `scaleX(${progress.value}%)`,
|
||||
transformOrigin: "left",
|
||||
transition: "transform 0.1s, height 0.4s, opacity 0.4s",
|
||||
zIndex: 999999
|
||||
}
|
||||
}, slots);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user