mirror of
https://github.com/MrXujiang/h5-Dooring.git
synced 2026-04-08 05:30:13 +00:00
60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
import React, { useState, memo, useEffect, useRef } from 'react';
|
|
import { Calendar } from 'zarm';
|
|
import styles from './index.less';
|
|
import { ICalendarConfig } from './schema';
|
|
import logo from '@/assets/calend.png';
|
|
|
|
const CalendarCp = memo((props: ICalendarConfig & { isTpl: boolean }) => {
|
|
const { time, range, color, selectedColor, round, isTpl } = props;
|
|
|
|
const realRange = range.split('-');
|
|
|
|
const [value, setValue] = useState<Date[] | undefined>([
|
|
new Date(`${time}-${realRange[0]}`),
|
|
new Date(`${time}-${realRange[1]}`),
|
|
]);
|
|
const [min] = useState(new Date(`${time}-01`));
|
|
const [max] = useState(new Date(`${time}-31`));
|
|
|
|
const boxRef = useRef<any>(null);
|
|
|
|
useEffect(() => {
|
|
if (boxRef.current) {
|
|
boxRef.current.style.setProperty('--color', color);
|
|
boxRef.current.style.setProperty('--selectColor', selectedColor);
|
|
boxRef.current.style.setProperty('--selectBgColor', selectedColor);
|
|
}
|
|
}, []);
|
|
|
|
const isEditorPage = window.location.pathname.indexOf('editor') > -1;
|
|
|
|
return (
|
|
<>
|
|
{isTpl ? (
|
|
<div>
|
|
<img src={logo} style={{ width: '100%' }} alt="h5-dooring日历组件"></img>
|
|
</div>
|
|
) : (
|
|
<div
|
|
className={styles.calenderWrap}
|
|
style={{ borderRadius: round + 'px', pointerEvents: isEditorPage ? 'none' : 'initial' }}
|
|
ref={boxRef}
|
|
>
|
|
<Calendar
|
|
multiple={!!range}
|
|
value={value}
|
|
min={min}
|
|
max={new Date(max)}
|
|
disabledDate={(date: any) => /(0|6)/.test(date.getDay())}
|
|
onChange={(value: Date[] | undefined) => {
|
|
setValue(value);
|
|
}}
|
|
/>
|
|
</div>
|
|
)}
|
|
</>
|
|
);
|
|
});
|
|
|
|
export default CalendarCp;
|