Есть ли простой способ изменить значение по умолчанию для реквизита, «обрисованного в общих чертах» для всех «v-текстовых полей» во введенном проекте?
Набор Vuetify по умолчанию для всех v-текстовых полей
Ответы:
Нет необходимости в нестандартном компоненте
По умолчанию v-text-field
использует основной цвет вашего приложения.
Изменить цвет контура одного v-текстового поля
Если вы хотите изменить цвет контура одного v-text-field
, когда он сфокусирован, вы можете просто использовать color
опору.
<v-text-field
outlined
color="red"
/>
Измените основной цвет вашего приложения
Это изменит цвет всех v-text-field
, когда они сфокусированы:
import Vue from 'vue'
import Vuetify from 'vuetify/lib/framework'
Vue.use(Vuetify)
export default new Vuetify({
theme: {
options: {
customProperties: true
},
themes: {
light: {
primary: '#5E72E4'
}
}
}
})
Изменить цвет всего v-текстового поля (сфокусировано или нет)
Теперь, если вы хотите изменить цвет контура, даже если элемент не сфокусирован, вы можете использовать API переменных SASS.
Если вы установили Vuetify через Vue CLI, создайте файл src/scss/variables.scss
:
$material-light: ( 'text-fields': (
'filled': rgba(0, 0, 0, 0.06),
'filled-hover': rgba(0, 0, 0, 0.12),
'outlined': rgba(0, 0, 0, 0.2),
'outlined-disabled': rgba(0, 0, 0, 0.1),
'outlined-hover': rgba(0, 0, 0, 0.4)
));
$text-field-outlined-fieldset-border: 1px solid currentColor;
Таким образом, у вас будет полный контроль как над сфокусированным, так и над исходным состоянием. В приведенном выше примере контуры становятся светлее, а ширина сфокусированного контура уменьшается до 1 пикселя;
Вы можете создать компонент-оболочку и extends
из VTextField
(см. treehaking) и настройте значения по умолчанию.
import Vue from 'vue';
import { VTextField } from 'vuetify/lib';
Vue.component('TextFieldOutlined', {
extends: VTextField,
props: {
outlined: {
type: Boolean,
default: true
}
}
})
Используя это как:
<text-field-outlined
label="Some label"
clearable
dense>
</text-field-outlined>
FWIW, расширение компонента означает, что все свойства базового компонента передаются и, следовательно, могут использоваться в равной степени.