init component
This commit is contained in:
50
node_modules/buetify/lib/composables/theme/useTheme.js
generated
vendored
Executable file
50
node_modules/buetify/lib/composables/theme/useTheme.js
generated
vendored
Executable file
@@ -0,0 +1,50 @@
|
||||
import { isSome } from 'fp-ts/lib/Option';
|
||||
import { inject, computed } from 'vue';
|
||||
import { constant } from 'fp-ts/lib/function';
|
||||
import { DEFAULT_THEME_INJECTION, THEME_INJECTION_SYMBOL } from './provideTheme';
|
||||
export const DEFAULT_THEME_COLOR_MAP = {
|
||||
dark: 'is-black-ter',
|
||||
light: ''
|
||||
};
|
||||
export function useThemePropsDefinition(themeMap, defaultIsThemeable = true) {
|
||||
return {
|
||||
themeMap: {
|
||||
type: Object,
|
||||
required: false,
|
||||
default: constant(themeMap)
|
||||
},
|
||||
isThemeable: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: defaultIsThemeable
|
||||
}
|
||||
};
|
||||
}
|
||||
export const DefaultThemePropsDefinition = useThemePropsDefinition(DEFAULT_THEME_COLOR_MAP, true);
|
||||
export function getThemeClasses(themeMap, themeInjection) {
|
||||
if (themeInjection.isThemeable.value && isSome(themeInjection.currentTheme.value)) {
|
||||
const classes = themeMap[themeInjection.currentTheme.value.value];
|
||||
return Array.isArray(classes) ? classes : [classes];
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
export function useTheme(props) {
|
||||
const themeInjection = inject(THEME_INJECTION_SYMBOL, DEFAULT_THEME_INJECTION);
|
||||
const themeClasses = computed(() => props ? getThemeClasses(props.themeMap, themeInjection) : []);
|
||||
return {
|
||||
currentTheme: themeInjection.currentTheme,
|
||||
setTheme: themeInjection.setTheme,
|
||||
toggleTheme: () => {
|
||||
if (isSome(themeInjection.currentTheme.value)) {
|
||||
if (themeInjection.currentTheme.value.value === 'light') {
|
||||
themeInjection.setTheme('dark');
|
||||
} else {
|
||||
themeInjection.setTheme('light');
|
||||
}
|
||||
}
|
||||
},
|
||||
themeClasses
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=useTheme.js.map
|
||||
Reference in New Issue
Block a user