Стиль материала UI InputBase с выбором даты и времени
Я пытаюсь стилизовать один из вариантов выбора даты и времени, найденных в пользовательском интерфейсе материала. Я сделал стиль ввода, который мне понравился, и пытался использовать его как основу. Добавление type="datetime-local"
опоры к компоненту добавляет мне нужную функциональность, но я не могу найти способ стилизовать кнопку со значком и диалог.
Вот мой эксперимент в песочнице кода:
Код компонента выглядит так:
<Paper component="form" className={classes.paper} elevation={0}>
<InputBase
className={classes.input}
type="datetime-local"
defaultValue="2017-05-24T10:30"
/>
</Paper>
ClassNames обеспечивают стиль, который мне нравится для компонента:


Но мне нужно изменить цвет значка календаря справа и, если возможно, стиль средства выбора даты для темной темы.
Как я могу это сделать? Заранее спасибо.
Ответы
Чао, к сожалению, изменить цвет значка (на белый, если я правильно понял) нельзя. Я также пытался переопределить &.MuiInputBase-input
класс css, но единственное, чего я добился, - это изменить цвет текста.
Но вы можете сделать нечто большее (если хотите). Вы можете использовать DatePicker
из @material-ui/pickers
. Это, конечно, более настраиваемое (и я думаю, более крутое).
Что вам нужно?
- @ date-io / moment (обратите внимание на версию 1.x);
- @ material-ui / pickers;
- @ дата-ио / момент;
- момент;
Установив эти библиотеки, вы можете сделать что-то вроде этого:
Определите тему:
const Theme = { palette: { primary: { // primary color contrastText: "#FFFFFF", dark: "#000000", main: "#000000", // black light: "#000000" } } };
Создайте тему Mui:
const theme = createMuiTheme(Theme);
Используйте
DatePicker
:<DatePicker format={"DD-MM-YYYY"} // your date format label="my date" inputVariant="outlined" // if you want an outlined date input helperText="" size="small" value={myDate} onChange={setmyDate} />
Wrap
DatePicker
вThemeProvider
(перейтиTheme
кDatePicker
) и вMuiPickersUtilsProvider
(для управления датой сmoment
):<ThemeProvider theme={theme}> <MuiPickersUtilsProvider utils={MomentUtils}> <div className="App"> <DatePicker format={"DD-MM-YYYY"} label="my date" inputVariant="outlined" helperText="" size="small" value={myDate} onChange={setmyDate} /> </div> </MuiPickersUtilsProvider> </ThemeProvider>
И теперь, если вы нажмете на ввод даты, вы получите следующее:

DatePicker с темным стилем. Это диалоговое окно выбора даты, но вы также можете иметь встроенное средство выбора даты (с помощью KeyboardDatePicker
).
Здесь вы можете найти все версии выбора даты, предоставляемые MaterialUI.
Я знаю, что в первый раз это немного сложно (сколько вещей мне нужно сделать для простого выбора даты !!!), но результат графически красивее.
Вот пример codeandbox DatePicker
.