javascript - 是否可以显示所选周的连续周数?
问题描述
是否可以在选定的星期或工具栏中显示连续的星期数?
我尝试使用 ToolbarComponent,但它覆盖了所有标题。但我想让它保持不变,因为它只是添加有关选定周的信息
class CustomElements extends PureComponent {
renderWrappedWeekDay = (date, selectedDate, dayInCurrentMonth) => {
const { classes } = this.props;
let dateClone = date.clone();
let selectedDateClone = selectedDate.clone();
const start = selectedDateClone.startOf("week").toDate();
const end = selectedDateClone.endOf("week").toDate();
const dayIsBetween = dateClone.isBetween(start, end, null, []);
const isFirstDay = dateClone.isSame(start, "day");
const isLastDay = dateClone.isSame(end, "day");
const wrapperClassName = clsx({
[classes.highlight]: dayIsBetween,
[classes.firstHighlight]: isFirstDay,
[classes.endHighlight]: isLastDay
});
const dayClassName = clsx(classes.day, {
[classes.nonCurrentMonthDay]: !dayInCurrentMonth,
[classes.highlightNonCurrentMonthDay]: !dayInCurrentMonth && dayIsBetween
});
return (
<div className={wrapperClassName}>
<IconButton className={dayClassName}>
<span>{dateClone.format("DD")} </span>
</IconButton>
</div>
);
};
render() {
const { selectedDate } = this.state;
return (
<DatePicker
label="Week picker"
value={selectedDate}
onChange={this.handleWeekChange}
renderDay={this.renderWrappedWeekDay}
labelFunc={this.formatWeekSelectLabel}
/>
);
}
}
解决方案
这可能会对您有所帮助。
使用以下内容创建一个新组件“MyToolbar.js”:
import React from "react";
import { createStyles } from "@material-ui/styles";
import { withStyles, Toolbar, Button } from "@material-ui/core";
import moment from "moment";
export const styles = theme =>
createStyles({
toolbar: {
display: "flex",
flexDirection: "column",
alignItems: "flex-start",
justifyContent: "center",
height: 100,
backgroundColor:
theme.palette.type === "light"
? theme.palette.primary.main
: theme.palette.background.default
},
label: {
color:
theme.palette.type === "light"
? theme.palette.primary.contrastText
: theme.palette.background.default
}
});
const MyToolbar = ({ setOpenView, date }) => {
const today = moment(date);
var weeknumber = today.week();
var year = today.year();
var month = today.format("MMM");
const fromDate = today.startOf("week").date();
const toDate = today.endOf("week").date();
return (
<Toolbar className="MuiToolbar-root MuiToolbar-regular MuiPickersToolbar-toolbar MuiPickersDatePickerRoot-toolbar MuiToolbar-gutters">
<Button onClick={e => setOpenView("year")}>
<span className="MuiPickersToolbar-label">
<h6 className="MuiTypography-root MuiPickersToolbarText-toolbarTxt MuiTypography-subtitle1">
{year} Week {weeknumber}
</h6>
</span>
<span className="MuiTouchRipple-root" />
</Button>
<Button onClick={e => setOpenView("date")}>
<span className="MuiPickersToolbar-label">
<h4 className="MuiTypography-root MuiPickersToolbarText-toolbarTxt MuiPickersToolbarText-toolbarBtnSelected MuiTypography-h4 MuiTypography-alignCenter">
{month} {fromDate} to {toDate}
</h4>
</span>
<span className="MuiTouchRipple-root" />
</Button>
</Toolbar>
);
};
export default withStyles(styles, { name: "MuiPickersToolbar" })(MyToolbar);
在你的 weekPicker.js 中导入
import MyToolbar from "./MyToolbar";
并将其添加到您的 DatePicker
<DatePicker
label="Week picker"
value={selectedDate}
onChange={this.handleWeekChange}
renderDay={this.renderWrappedWeekDay}
labelFunc={this.formatWeekSelectLabel}
ToolbarComponent={MyToolbar}
/>
推荐阅读
- javascript - 我的获取请求被取消了,我不知道为什么
- java - Maven 依赖 - 从 postgres 到 Oracle
- html - 如何使用引导 css 连续显示 9 个相等的 div
- java - Java if else 在while循环中
- vba - 生成要添加到表的记录 - 循环还是记录集?
- javascript - 如何在页面加载时使用 jQuery 和 window.open 打开一个新选项卡
- c++ - C++ 静态数据成员初始化异常
- python - 网页抓取新闻网站时出现索引错误
- android - 如何在flutter中使用firebase登录谷歌时检查用户是新用户还是现有用户?
- testing - 如何在 Rails6 测试环境中专门运行“rails routes --expanded”?