-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathvuetify.js
More file actions
124 lines (118 loc) · 3.24 KB
/
Copy pathvuetify.js
File metadata and controls
124 lines (118 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/**
* Copyright (C) Earth Sciences New Zealand & British Crown (Met Office) & Contributors.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { computed } from 'vue'
import { aliases, mdi } from 'vuetify/iconsets/mdi-svg'
import { VAutocomplete } from 'vuetify/components/VAutocomplete'
import { VCombobox } from 'vuetify/components/VCombobox'
import { VSelect } from 'vuetify/components/VSelect'
import { VTextarea } from 'vuetify/components/VTextarea'
import { VTextField } from 'vuetify/components/VTextField'
import { VCardActions } from 'vuetify/components/VCard'
import { VEmptyState } from 'vuetify/components/VEmptyState'
import colors from 'vuetify/util/colors'
import { mdiClose } from '@mdi/js'
import { useReducedAnimation } from '@/composables/localStorage'
import { merge } from 'lodash-es'
export const inputComponents = [
VAutocomplete,
VCombobox,
VSelect,
VTextarea,
VTextField,
].map(({ name }) => name)
const inputDefaults = Object.fromEntries(
inputComponents.map((name) => [
name,
{
density: 'compact',
variant: 'outlined',
clearIcon: mdiClose,
hideDetails: 'auto',
}
])
)
/**
* @type {import('vuetify').VuetifyOptions}
*/
export const vuetifyOptions = {
theme: {
defaultTheme: 'light',
themes: {
light: {
dark: false,
colors: {
primary: colors.lightBlue.accent4,
'primary-darken-1': colors.lightBlue.darken4,
secondary: colors.teal.accent4,
'secondary-darken-1': colors.teal.darken3
}
}
}
},
display: {
mobileBreakpoint: 991
},
icons: {
defaultSet: 'mdi',
aliases,
sets: {
mdi
}
},
aliases: {
VSelectActions: VCardActions,
VFilterEmptyState: VEmptyState,
},
defaults: {
VTooltip: {
activator: 'parent',
location: 'bottom',
},
VList: {
slim: true,
},
VSelectActions: {
class: 'mt-n2'
},
VFilterEmptyState: {
title: 'No results',
text: 'Try adjusting your filters above',
class: 'text-medium-emphasis',
},
...inputDefaults
},
}
/**
* Composable that provides Vuetify defaults that can change at runtime, as opposed to
* the static defaults provided in `createVuetify(vuetifyOptions)`.
*
* For use with a v-defaults-provider.
*
* @param {Object=} other - Additional defaults to provide.
*/
export function useDynamicVuetifyDefaults (other = {}) {
const reducedAnimation = useReducedAnimation()
return computed(() => merge(
{
global: {
transition: reducedAnimation.value ? 'no' : undefined,
ripple: reducedAnimation.value ? false : undefined,
},
},
other
))
}