cosmos-explorer/src/@core/utils/utils.js
2021-07-21 22:07:38 +08:00

74 lines
2.2 KiB
JavaScript

import router from '@/router'
// eslint-disable-next-line object-curly-newline
import { reactive, getCurrentInstance, watch, toRefs } from '@vue/composition-api'
export const isObject = obj => typeof obj === 'object' && obj !== null
export const isToday = date => {
const today = new Date()
return (
/* eslint-disable operator-linebreak */
date.getDate() === today.getDate() &&
date.getMonth() === today.getMonth() &&
date.getFullYear() === today.getFullYear()
/* eslint-enable */
)
}
const getRandomFromArray = array => array[Math.floor(Math.random() * array.length)]
// ? Light and Dark variant is not included
// prettier-ignore
export const getRandomBsVariant = () => getRandomFromArray(['primary', 'secondary', 'success', 'warning', 'danger', 'info'])
export const isDynamicRouteActive = route => {
const { route: resolvedRoute } = router.resolve(route)
return resolvedRoute.path === router.currentRoute.path
}
// Thanks: https://medium.com/better-programming/reactive-vue-routes-with-the-composition-api-18c1abd878d1
export const useRouter = () => {
const vm = getCurrentInstance().proxy
const state = reactive({
route: vm.$route,
})
watch(
() => vm.$route,
r => {
state.route = r
},
)
return { ...toRefs(state), router: vm.$router }
}
/**
* This is just enhancement over Object.extend [Gives deep extend]
* @param {target} a Object which contains values to be overridden
* @param {source} b Object which contains values to override
*/
// export const objectExtend = (a, b) => {
// // Don't touch 'null' or 'undefined' objects.
// if (a == null || b == null) {
// return a
// }
// Object.keys(b).forEach(key => {
// if (Object.prototype.toString.call(b[key]) === '[object Object]') {
// if (Object.prototype.toString.call(a[key]) !== '[object Object]') {
// // eslint-disable-next-line no-param-reassign
// a[key] = b[key]
// } else {
// // eslint-disable-next-line no-param-reassign
// a[key] = objectExtend(a[key], b[key])
// }
// } else {
// // eslint-disable-next-line no-param-reassign
// a[key] = b[key]
// }
// })
// return a
// }