2021. 12. 28. 23:12ใWEB Dev/ToyProject
๐ท CloneTodo โ - Todomate Clone Project | Team CloneMate
CloneTodo : ๋ง์ ์ฌ๋๋ค์ด ์ฌ๋ํ๋ ํฌ๋๋ฉ์ดํธ๋ฅผ ํด๋ก ํ์ฌ ์น ์๋น์ค๋ฅผ ๋ฐฐํฌํด๋ณด๋ ํ๋ก์ ํธ
์ค๋์ ํ ์ผ์ Explore์ ๋ฌ๋ ฅ๋ถ๋ถ์ ๋ง๋๋ ์ผ์ด๋ค.
๋ฌ๋ ฅ์ ๊ฒฝ์ฐ NHN TOAST์์ ์ ๊ณตํ๋ Calendar UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค.
๊ทธ๋์ TOAST์ ๊ณต์๋ฌธ์์์ ์ ์ฉ๋ฐฉ๋ฒ์ ๋ฐ๋ผํด๋ณธ๋ค.
1. ์ค์น
npm ์ด๋ bower, CDN์ ํตํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ ์ ์๋ค.
๋ฆฌ์กํธ ํ๋ก์ ํธ์ด๊ธฐ ๋๋ฌธ์ ๊ฐํธํ CDN ๋ณด๋ค๋ npm์ ํตํด ํจํค์ง๋ฅผ ์ค์นํ์.
npm install --save @toast-ui/react-calendar
2. Calendar ํจํค์ง์ CSS๋ฅผ import ํด์จ๋ค.
import Calendar from '@toast-ui/react-calendar';
import 'tui-calendar/dist/tui-calendar.css';
3. ์ ์ฉํ๊ธฐ
๊ณต์๋ฌธ์๋ ํจ์ํ์ด ์๋ ํด๋์คํ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๊ณ ์๋ค.
์ ๋ชจ๋ฅด๊ฒ ์ผ๋ ์ผ๋จ ๋ค ๋๋ ค๋๊ณ ๋ณธ๋ค.
import React from 'react';
import Box from '@mui/material/Box';
import Calendar from '@toast-ui/react-calendar';
import 'tui-calendar/dist/tui-calendar.css';
const calendarOptions = {
// sort of option properties.
};
class CalendarBox extends React.Component {
calendarRef = React.createRef();
handleClickNextButton = () => {
const calendarInstance = this.calendarRef.current.getInstance();
calendarInstance.next();
};
handleClickButton = () => {
this.calendarRef.current.getRootElement().classList.add('calendar-root');
};
handleClickDayname = (ev) => {
// view : week, day
console.group('onClickDayname');
console.log(ev.date);
console.groupEnd();
};
render() {
return (
<>
<Calendar
ref={this.calendarRef}
{...calendarOptions}
onClickDayname={this.handleClickDayname}
/>
<button onClick={this.handleClickNextButton}>Go next!</button>
</>
);
}
}
export default CalendarBox;
์ด๋ ๊ฒ ๋ฃ์ด๋๊ณ ๋๋... ์ฐ๋ฆฌ์ ๊ณํ๋ณด๋ค ๋ ๋ฌด๊ฒ๊ณ ํ๋ คํ๊ณ "์ด๋ ค์ด" ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๊ฐ ์ถ๋ค.
์ฐจ๋ผ๋ฆฌ ๊ทธ๋ฅ ๋ฌ๋ ฅ๋ชจ์๋ง ๋ํ๋๋๊ฒ ๋ ๋ซ์ง ์์๊น ใ ใ
๊ทธ๋์ MUI์ Date Picker ์ค์ Landscape Orientation์ ์ ์ฉํด๋ณธ๋ค.
1. MUI์ ๋ฌ๋ ฅ, ์๊ฐ ๋ฑ์ ์ด์ฉํ๊ธฐ ์ํ ํจํค์ง ์ค์น
npm์ ์ด์ฉํด ์๋ ์๊ฐ, ๋ ์ง ๊ด๋ จ ํจํค์ง๋ฅผ ์ค์นํด์ค๋ค.
๋ญ.. ์ค์นํด๋ ์๊ด์ ์๋ ๊ฒ ๊ฐ๋ค.
// date-fns
npm install @date-io/date-fns
// or for Day.js
npm install -s @date-io/dayjs
// or for Luxon
npm install -s @date-io/luxon
// or for Moment.js
npm install @date-io/moment
2. dateAdapter ํจํค์ง๋ฅผ import ํด์จ๋ค.
// date-fns
import DateAdapter from '@mui/lab/AdapterDateFns';
// or for Day.js
import DateAdapter from '@mui/lab/AdapterDayjs';
// or for Luxon
import DateAdapter from '@mui/lab/AdapterLuxon';
// or for Moment.js
import DateAdapter from '@mui/lab/AdapterMoment';
์ฌ๊ธฐ๊น์ง ํ๊ณ ํ๋จ์ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ
Can't resolve '@mui/lab/AdapterDateFns' in ํ์ผ๊ฒฝ๋ก ์ค๋ฅ๊ฐ ๋ด๋ค.
์คํ์ค๋ฒํ๋ก์ฐ์ ์ฐพ์๋ณด๋ ์ด๊ฒ๋ ๋ฒ์ ๋ฌธ์ ์ธ๊ฑฐ ๊ฐ์๋ฐ (์ ๋ฐ! ํธํ ์ข!)
์๋ @mui/lab์ ์ค์นํด์ค์ผ ํ๋ค.
npm i @mui/lab
์์ @mui/lab ๊ฐ์ง๊ณ ์๋๋ฉด
npm i @mui/material
npm i date-fns
๋ ์ค์นํด์ฃผ์.
๊ฒฐ๋ก
3. ๋๋จธ์ง ์ปดํฌ๋ํธ ๋ค์ import ํด์จ๋ค.
import isWeekend from 'date-fns/isWeekend';
import TextField from '@mui/material/TextField';
import AdapterDateFns from '@mui/lab/AdapterDateFns';
import LocalizationProvider from '@mui/lab/LocalizationProvider';
import StaticDatePicker from '@mui/lab/StaticDatePicker';
4. ๊ทธ๋ฆฌ๊ณ ์์์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์จ๋ค.
<LocalizationProvider dateAdapter={AdapterDateFns}>
<StaticDatePicker
orientation="landscape"
openTo="day"
value={value}
shouldDisableDate={isWeekend}
onChange={(newValue) => {
setValue(newValue);
}}
renderInput={(params) => <TextField {...params} />}
/>
</LocalizationProvider>
ํจ์ฌ ์์๋ค..!
'WEB Dev > ToyProject' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 21 (0) | 2022.01.04 |
---|---|
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 20 (0) | 2022.01.02 |
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 18 (0) | 2021.12.28 |
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 17 (0) | 2021.12.26 |
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 16 (0) | 2021.12.26 |