- κ°μ
- μ€μΉ
- λΈλΌμ°μ μ§μ λ²μ(IE >= 11)
- API λ§μ΄κ·Έλ μ΄μ
preactλ₯Ό μ΄μ©ν΄ λ ν¨μ¨μ μΌλ‘ μΊλ¦°λλ₯Ό λ λλ§νλ TOAST UI Calendar v2.0μ΄ μΆμλμλ€. v2μμλ λ²λ€ ν¬κΈ° κ°μ λ° λͺ¨λ κ°λ° νκ²½μΌλ‘ μ κ·Έλ μ΄λνμ¬ λ€λ₯Έ κΈ°λ₯λ€μ μΆκ°νκΈ° μ©μ΄νκ² λ§λ€κΈ° μν κΈ°λ°μ λ§λ ¨νλ€. μ΄λ₯Ό μ΄μ©ν΄ μΊλ¦°λλ₯Ό μ¬μ©νλ μ¬μ©μλ€μ μ΄ν΄λ₯Ό λμΌ μ μλλ‘ λ§μ΄κ·Έλ μ΄μ μ κ°μ΄λλ‘ μ 곡νκ³ μλ€.
ν¨ν€μ§λͺ
μ΄ tui-calendar
μμ @toast-ui/calendar
λ‘ λ³κ²½λμλ€.
# v1
npm install tui-calendar@<version> # 1.x νΉμ λ²μ
# v2
npm install @toast-ui/calendar # μ΅μ λ²μ
npm install @toast-ui/calendar@<version> # 2.0 μ΄ν νΉμ λ²μ
νμΌλͺ
λν tui-calendar
μμ toastui-calendar
λ‘ λ³κ²½λμλ€.
/* Node.js νκ²½μμ ES6 λͺ¨λ */
// v1
import Calendar from 'tui-calendar';
import "tui-calendar/dist/tui-calendar.min.css";
// v2
import Calendar from '@toast-ui/calendar';
import '@toast-ui/calendar/dist/toastui-calendar.min.css';
<!-- CDN -->
<!-- v1 -->
<link rel="stylesheet" href="https://uicdn.toast.com/tui-calendar/latest/tui-calendar.min.css" />
<script src="https://uicdn.toast.com/tui-calendar/latest/tui-calendar.min.js"></script>
<!-- v2 -->
<link rel="stylesheet" href="https://uicdn.toast.com/calendar/latest/toastui-calendar.min.css" />
<script src="https://uicdn.toast.com/calendar/latest/toastui-calendar.min.js"></script>
CDNμ λλ ν 리 ꡬ쑰μ λ²λ€ νμΌ μ΄λ¦μ΄ λ³κ²½λμλ€. v1μμλ https://uicdn.toast.com/tui-calendar/latest/tui-calendar.js
μ κ°μ΄ tui-calendar
λΌλ ν΄λ λ΄μ tui-calendar
λΌλ νμΌμ΄ μ‘΄μ¬νλ€. νμ§λ§ v2μμλ https://uicdn.toast.com/calendar/latest/toastui-calendar.js
μ²λΌ calendar
ν΄λ λ΄μ toastui-calendar
λΌλ νμΌμ΄ μ‘΄μ¬νλ€.
v1μμ μ¬μ©νλ CDN μ£Όμλ μ μ§λμ§λ§, /tui-calendar/latest/
λ΄λΆ νμΌμ TOAST UI Calendarμ μ΅μ λ²μ μ΄ μλλΌ v1μ μ΅μ λ²μ μ΄λ€. μ΅μ λ²μ μ μ¬μ©νκ³ μΆλ€λ©΄ /calendar/latest/
λ΄λΆ νμΌμ μ¬μ©ν΄μΌ νλ€.
- uicdn.toast.com/
ββ tui-calendar/ # v1
β ββ latest # v1μ μ΅μ λ²μ
β β ββ tui-calendar.css
β β ββ tui-calendar.js
β β ββ tui-calendar.min.css
β β ββ tui-calendar.min.js
β ββ v1.0.0/ # v1μ νΉμ λ²μ
β β ββ ...
ββ calendar/ # v2 μ΄μ
β ββ latest # μ΅μ λ²μ
β β ββ toastui-calendar.css
β β ββ toastui-calendar.js
β β ββ toastui-calendar.min.css
β β ββ toastui-calendar.min.js
β β ββ toastui-calendar.ie11.js
β β ββ toastui-calendar.ie11.min.js
β β β toastui-calendar.mjs
β ββ v2.0.0/ # v2 μ΄μ νΉμ λ²μ
β β ββ ...
v2λΆν° μ§μνλ λΈλΌμ°μ λ²μκ° μΈν°λ· μ΅μ€νλ‘λ¬ 11 μ΄μμΌλ‘ λ³κ²½λλ€. v1μμλ μΈν°λ· μ΅μ€νλ‘λ¬ 9 μ΄μμ λΈλΌμ°μ λ₯Ό μ§μνμ§λ§ μ΅μ κ°λ° νκ²½ λ° preact X(10 λ²μ )μ μ¬μ©μ μν΄ μ§μ λ²μλ₯Ό λ³κ²½νκ² λμλ€.
κΈ°λ³Έ λ²λ€μ λͺ¨λ λΈλΌμ°μ μ μ΅μ 2κ° λ²μ μ μμ μ μΌλ‘ μ§μνλ€. νμ§λ§ κΈ°λ³Έ λ²λ€μ IE 11μ μν ν΄λ¦¬νμ΄ ν¬ν¨λμ΄μμ§ μμΌλ―λ‘ IE 11 νΉμ μΌμ μμ€ μ΄νμ λ κ±°μ λΈλΌμ°μ λ₯Ό μ§μνκΈ° μν΄μλ λ€μκ³Ό κ°μ΄ ν΄λ¦¬νμ΄ ν¬ν¨λ IE 11 λ²λ€μ μΆκ°ν΄μΌ νλ€. IE 11μ λ²λ€ ν¬κΈ°λ κΈ°λ³Έ λ²λ€λ³΄λ€ 30% κ°λ ν¬κΈ° λλ¬Έμ λ°λμ μ§μ λ²μλ₯Ό μ κ³ λ €νμ¬ λΆνμνκ² λ²λ€ ν¬κΈ°λ₯Ό λλ¦¬μ§ μλλ‘ μ μν΄μΌ νλ€.
import Calendar from '@toast-ui/calendar/ie11';
v2λ₯Ό μ¬μ©νκΈ° μν΄ API λ§μ΄κ·Έλ μ΄μ μ΄ νμν APIλ λ€μκ³Ό κ°λ€.
λ§μ΄κ·Έλ μ΄μ μ§ν λ¨μλ ν¬κ² κΈ°λ₯ κ°μ , λ³κ²½, μ κ±° λ‘ κ΅¬λΆλλ€.
- κΈ°λ₯ κ°μ : κΈ°λ₯μ΄ κ°μ λκ±°λ μλ‘ μΆκ°λ API
- λ³κ²½: κΈ°λ₯μ μ μ§λλ μ΄λ¦, νμ λ±μ΄ λ³κ²½λ API
- μ κ±°: λΆνμνκ±°λ μ€ν μμμΌλ‘ μ κ±°λ API
v2μμλ λ μ§λ μκ°μ μ νν λμ μμμ λνλ΄λ creationGuide
λ gridSelection
μΌλ‘ λ³κ²½λμλ€. κ° ν¨λμ μ‘°μ νλ vpanelSplitter
λ panelResizer
λ‘ μ©μ΄κ° λ³κ²½λμλ€.
daygrid
λ dayGridSchedule
μ²λΌ ν΅μΌλμ§ μμ μ©μ΄λ€μ dayGrid
λ timeGrid
μ²λΌ ν΅μΌλμλ€.
v2μμλ μΌμ μ΄λΌλ μλ―Έμ λ§κ² κΈ°μ‘΄ schedule
μμ event
λ‘ λ€μ΄λ°μ΄ λ³κ²½λμλ€. λ¨μν λ³μλͺ
λΏλ§ μλλΌ schedule
μ΄ ν¬ν¨λ μΈμ€ν΄μ€ λ©μλ, μΈμ€ν΄μ€ μ΄λ²€νΈ λ±μ κ΄λ ¨λ API λͺ¨λκ° event
λ‘ λ³κ²½λμλ€.
v1μμλ νμ¬ μκ°μ μ λνλ΄λ μ©μ΄λ‘ currentTimeIndicator
κ³Ό currentTimeLine
μ΄ νΌμ©λμλ€. v2μμλ μ΄λ₯Ό nowIndicator
λ‘ ν΅μΌνλ€.
v1μμλ μΊλ¦°λμ λ λλ§μ μ§μ μ μΈ DOM μ‘°μμΌλ‘ μ²λ¦¬νλ€. μ΄μ λ°λΌ μΊλ¦°λλ₯Ό μ‘°μν λλ§λ€ λΆνμν λ λλ§μ΄ μΌμ΄λ μ μμλ€.
v2μμλ κ°μ DOMμ μ΄μ©ν΄ λΆνμν λ λλ§μ μ€μ¬ λ λλ§ μλλ₯Ό κ°μ νκ³ μΆν μλ² μ¬μ΄λ λ λλ§(SSR)μ μ§μνκΈ° μν΄ preactλ₯Ό λμ
νμλ€. μ΄μ λ°λΌ μΈμ€ν΄μ€ λ©μλ μ¬μ© μ λ λλ§μ μ μ΄νλ force
, silent
λ±μ νλΌλ―Έν°κ° μ κ±°λμκ³ μΊλ¦°λ λ΄λΆμ μνμ λ°λΌ λ λλ§μ΄ μ μ΄λμ΄ μΈμ€ν΄μ€ λ©μλλ₯Ό μ¬μ©ν λ λ λλ§μ μ μ΄ν μ μκ² λμλ€.
ν
λ§κ° κ°μ λμλ€. .
μΌλ‘ μ°κ²°λ λ¬Έμμ΄ ν€ κ°μΌλ‘ ν
λ§λ₯Ό μ§μ νλ λ°©μμμ μ€μ²© κ°μ²΄λ₯Ό μ΄μ©ν λ°©μμΌλ‘ κ°μ λμλ€. μ΄μ λ°λΌ setTheme
λ©μλλ μ€μ²© κ°μ²΄λ₯Ό νλΌλ―Έν°λ‘ λ°μ μ²λ¦¬νλ λ°©μμΌλ‘ κ°μ λμλ€. μμΈν μ¬νμ ν
λ§μμ νμΈν μ μλ€.
// v1
calendar.setTheme({
'common.dayName.color': '#333',
});
// v2
calendar.setTheme({
common: {
dayName: {
color: '#333',
},
},
});
v1μμ μ¬μ©νλ λ€μ νλ‘νΌν°λ€μ΄ ν λ§μμ μ κ±°λκ±°λ μ΄λ¦μ΄ λ³κ²½λμλ€. κ°μ’ μμ κ°λ€κ³Ό μ£Όκ°/μΌκ°λ·°μ κ° ν¨λμ μΌμͺ½ μμμ λλΉλ₯Ό μ μΈν ν λ§ κ°λ€μ μ λΆ μ κ±°λμλ€.
month.dayname.height
month.dayname.paddingLeft
month.dayname.paddingRight
month.dayname.fontSize
month.dayname.fontWeight
month.dayname.textAlign
month.day.fontSize
month.schedule
μ 체month.moreView.paddingBottom
month.moreViewTitle.height
month.moreViewTitle.marginBottom
month.moreViewTitle.borderBottom
month.moreViewTitle.padding
month.moreViewList.padding
week.dayname.height
week.dayname.paddingLeft
week.dayname.textAlign
week.vpanelSplitter.height
week.vpanelSplitter.border
->week.panelResizer.border
week.daygridLeft.paddingRight
week.timegridLeft.fontSize
week.timegridLeftTimezoneLabel.height
week.timegridOneHour.height
week.timegridHalfHour.height
week.timegridHalfHour.borderBottom
->week.timeGridHalfHourLine.borderBottm
week.timegridHorizontalLine.borderBottom
->week.timeGridHourLine.borderBottom
week.timegrid.paddingRight
week.timegridSchedule
μ 체week.currentTime
->week.nowIndicatorLabel
week.currentTime.fontSize
week.currentTime.fontWeight
week.currentTimeLinePast
->week.nowIndicatorPast
week.currentTimeLineBullet
->week.nowIndicatorBullet
week.currentTimeLineToday
->week.nowIndicatorToday
week.currentTimeLineFuture
->week.nowIndicatorFuture
week.pastTime.fontWeight
week.futureTime.fontWeight
week.creationGuide.fontSize
week.creationGuide.fontWeight
week.dayGridSchedule
μ 체
μ κ±°λ ν λ§ κ°μ λμ CSSλ₯Ό νμ©ν΄ μμ±μ μ μ©ν μ μλ€. λ€μμ μ κ±°λ ν λ§ κ°μ μ°κ΄λ CSS νμΌμ΄λ€.
μ κ±°λ ν λ§ κ° | μ°κ΄ νμΌ μμΉ |
---|---|
month.dayname κ΄λ ¨ |
dayNames.css |
month.shedule κ΄λ ¨ |
dayGrid.css |
month.moreView κ΄λ ¨ |
seeMore.css |
week.dayname κ΄λ ¨ |
dayNames.css |
week.dayGridLeft κ΄λ ¨ |
allday.css |
week.timeGridLeft κ΄λ ¨ |
timeColumn.css |
week.timeGridSchedule κ΄λ ¨ |
time.css |
week.gridSelection (v1μ creationGuide) κ΄λ ¨ |
column.css |
week.dayGridSchedule κ΄λ ¨ |
dayGrid.css |
viewμ κ΄λ ¨λ μΈμ€ν΄μ€ λ©μλμ νλΌλ―Έν° λ° λ°ν νμ
μ΄ μ’ λ λͺ
νν λμ€κ² λμλ€. μΊλ¦°λμμ μ¬μ©νλ λ·°μ μ’
λ₯λ μκ°λ·°, μ£Όκ°λ·° λ° μΌκ°λ·°μ 3κ°μ§ λ·°λ‘ λλ μ§λ©° μ΄λ μΊλ¦°λμμ 'month'
, 'week'
, 'day'
μ νμ
μ κ°μ§λλ‘ νμ
μ λͺ
νν νμλ€.
λ©μλλͺ | λ³κ²½μ¬ν |
---|---|
changeView |
λ³κ²½νλ €λ λ·° μ΄λ¦ νλΌλ―Έν°μ νμ κ°μ |
getViewName |
λ°νλλ λ·° μ΄λ¦μ νμ κ°μ |
μ£Όκ°/μΌκ°λ·°μμ milestone
, task
ν¨λμ νμν μ§ μ¬λΆλ₯Ό λνλ΄λ taskView
μ΅μ
κ³Ό allday
, time
ν¨λμ νμν μ§ μ¬λΆλ₯Ό λνλ΄λ eventView
μ΅μ
μ νμ
μ΄ λͺ
ννκ² λ³κ²½λμλ€.
const calendar = new Calendar('#calendar', {
week: {
taskView: ['task'],
eventView: ['time'],
},
});
μλμ μ΅μ μ΄ μ΅μ κ°μ²΄ λ΄μμ μμΉκ° μ΄λνκ±°λ ν λ§λ‘ μ΄λλμλ€.
μ΅μ | λ³κ²½μ¬ν | μΆκ° μ€λͺ |
---|---|---|
options.taskView | options.week.taskView | |
options.eventView | options.week.eventView | |
options.disableDblClick | options.gridSelection.enableDblClick | κΈ°λ³Έκ°μ΄ false μμ true λ‘ λ³κ²½λ¨ |
options.disableClick | options.gridSelection.enableClick | κΈ°λ³Έκ°μ΄ false μμ true λ‘ λ³κ²½λ¨ |
options.timezone.offsetCalculator | options.timezone.customOffsetCalculator | |
options.month.grid | ν λ§λ‘ μ΄λ | |
options.month.moreLayerSize | ν λ§λ‘ μ΄λ | |
options.month.isAlways6Week | options.month.isAlways6Weeks λ‘ λ³κ²½ |
|
options.month.daynames | options.month.dayNames λ‘ λ³κ²½ |
|
options.week.daynames | options.week.dayNames λ‘ λ³κ²½ |
v1μ creation popup
μ΄λΌλ λͺ
μΉμ΄ v2μμ form popup
μ΄λΌλ λͺ
μΉμΌλ‘ λ³κ²½λ¨μ λ°λΌ νμ
μ λμ°λ μΈμ€ν΄μ€ λ©μλ openCreationPopup
λ openFormPopup
μΌλ‘ λ³κ²½λμλ€.
// v1
calendar.openCreationPopup(schedule);
// v2
calendar.openFormPopup(event);
νΉμ μΊλ¦°λ IDλ₯Ό κ°μ§ μΌμ λ€μ 보μ΄μ§ μκ² νκ±°λ 보μ΄κ² νλ v1μ toggleSchedules
μΈμ€ν΄μ€ λ©μλλ λ³΄λ€ μ νν μλ―Έλ₯Ό μ§λ setCalendarVisibility
λ‘ λ³κ²½λμλ€. λ€μμ μΊλ¦°λ idκ° '1'
μΈ μΌμ λ€μ 보μ΄μ§ μκ² νλ μμ λ€.
// v1
calendar.toggleSchedules('1', true);
// v2
calendar.setCalendarVisibility('1', false);
v1μ clickMore
μΈμ€ν΄μ€ μ΄λ²€νΈκ° μ’ λ λͺ
νν μλ―Έλ₯Ό κ°μ§ clickMoreEventsBtn
μΌλ‘ λ³κ²½λμλ€.
// v1
calendar.on('clickMore', (event) => {
console.log(event.date, event.target);
});
// v2
calendar.on('clickMoreEventsBtn', (event) => {
console.log(event.date, event.target);
});
v1μ timegridCurrentTime
μ΄ timegridNowIndicatorLabel
λ‘ μ΄λ¦μ΄ λ³κ²½λμλ€.
v2μμλ bowerμ λν μ§μκ³Ό jquery plugin
μ λν μ§μμ μ€λ¨νλ€.
λ€μ μΈμ€ν΄μ€ λ©μλλ€μ force
, silent
λλ immediately
νλΌλ―Έν°κ° μ κ±°λμλ€. v2μμλ preactλ₯Ό ν΅ν λ λλ§ λ°©μμ μ¬μ©νλ―λ‘ μΈμμ μΌλ‘ λ λλ§μ μ‘°μ ν μ μλ ν΄λΉ νλΌλ―Έν°λ€μ μ κ±°λμλ€.
changeView
clear
createEvents
(v1μcreateSchedules
)deleteEvent
(v1μdeleteSchedule
)render
setCalendarColor
setOptions
updateEvent