์บ๋ฆฐ๋ ๋ทฐ
DayFlow๋ ์๋ก ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก์ ์๊ตฌ์ ๋ง์ถฐ ์ต์ ํ๋ ๋ค์ฏ ๊ฐ์ง ๋ทฐ ํ์ ์ ์ ๊ณตํฉ๋๋ค. ์ฝ๋๋ก ๋ทฐ๋ฅผ ์ ํํ ์๋ ์๊ณ , ์ฌ์ฉ์๊ฐ ์ง์ ์ ํํ ์ ์๋ UI๋ฅผ ์ ๊ณตํ ์๋ ์์ต๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ทฐ
์ผ(Day) ๋ทฐ
์ผ ๋ทฐ๋ ํ๋ฃจ๋ฅผ ์ธ๋ฐํ ์๊ฐ ์ฌ๋กฏ์ผ๋ก ๋ณด์ฌ ์ฃผ๋ฏ๋ก, ํ๋ฃจ ์ผ์ ์ ๊ด๋ฆฌํ๊ธฐ์ ์ ํฉํฉ๋๋ค.
์ค์
| ์์ฑ | ํ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|---|
showAllDay | boolean | true | ์ข ์ผ ์ด๋ฒคํธ ํ์ ํ์ํ ์ง ์ฌ๋ถ์ ๋๋ค. |
scrollToCurrentTime | boolean | true | ์ฒ์ ๋ก๋ํ ๋ ํ์ฌ ์๊ฐ์ผ๋ก ์คํฌ๋กคํ ์ง ์ฌ๋ถ์ ๋๋ค. |
timeFormat | '12h' | '24h' | '24h' | ์๊ฐ ์ถ์ ์ฌ์ฉํ ์๊ฐ ํ์์ ๋๋ค. |
secondaryTimeZone | string | undefined | ์ผ ๋ทฐ์์๋ง ํ์๋๋ ๋ณด์กฐ ๊ธฐ์ค ํ์๋ผ์ธ์ ๋๋ค. |
hourHeight | number | 72 | ์๊ฐ ๊ทธ๋ฆฌ๋์์ ๊ฐ ์๊ฐ ํ์ ๋์ด(ํฝ์ )์ ๋๋ค. |
import {
useCalendarApp,
DayFlowCalendar,
createDayView,
ViewType,
} from '@dayflow/react';
function MyCalendar() {
const calendar = useCalendarApp({
views: [createDayView()],
defaultView: ViewType.DAY,
initialDate: new Date(),
});
return <DayFlowCalendar calendar={calendar} />;
}<template>
<DayFlowCalendar :calendar="calendar" />
</template>
<script setup>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/vue';
import { createDayView, ViewType } from '@dayflow/core';
const calendar = useCalendarApp({
views: [createDayView()],
defaultView: ViewType.DAY,
initialDate: new Date(),
});
</script>import { Component } from '@angular/core';
import { createDayView, ViewType } from '@dayflow/core';
import { DayFlowCalendarModule } from '@dayflow/angular';
@Component({
selector: 'app-root',
standalone: true,
imports: [DayFlowCalendarModule],
template: `
<dayflow-calendar [calendar]="calendar"></dayflow-calendar>
`
})
export class AppComponent {
calendar = {
views: [createDayView()],
defaultView: ViewType.DAY,
initialDate: new Date(),
};
}<script>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/svelte';
import { createDayView, ViewType } from '@dayflow/core';
const calendar = useCalendarApp({
views: [createDayView()],
defaultView: ViewType.DAY,
initialDate: new Date(),
});
</script>
<DayFlowCalendar {calendar} />์ฃผ(Week) ๋ทฐ
์ฃผ ๋ทฐ๋ ์๊ฐ ์ฌ๋กฏ์ด ์๋ 7์ผ ๊ทธ๋ฆฌ๋๋ฅผ ๋ณด์ฌ ์ฃผ๋ฉฐ, ๊ฐ ์ด๋ฒคํธ์ ์ ํํ ์์ยท์ข ๋ฃ ์๊ฐ์ ํ์ํฉ๋๋ค.
์ค์
| ์์ฑ | ํ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|---|
showWeekends | boolean | true | ํ ์์ผ๊ณผ ์ผ์์ผ์ ํ์ํ ์ง ์ฌ๋ถ์ ๋๋ค. |
showAllDay | boolean | true | ์ข ์ผ ์ด๋ฒคํธ ํ์ ํ์ํ ์ง ์ฌ๋ถ์ ๋๋ค. |
startOfWeek | number | 1 | ํ ์ฃผ์ ์์ ์์ผ์ ๋๋ค(0 = ์ผ์์ผ, 1 = ์์์ผ ๋ฑ). |
scrollToCurrentTime | boolean | true | ์ฒ์ ๋ก๋ํ ๋ ํ์ฌ ์๊ฐ์ผ๋ก ์คํฌ๋กคํ ์ง ์ฌ๋ถ์ ๋๋ค. |
timeFormat | '12h' | '24h' | '24h' | ์๊ฐ ์ถ์ ์ฌ์ฉํ ์๊ฐ ํ์์ ๋๋ค. |
secondaryTimeZone | string | undefined | ์ฃผ ๋ทฐ์์๋ง ํ์๋๋ ๋ณด์กฐ ๊ธฐ์ค ํ์๋ผ์ธ์ ๋๋ค. |
gridDateClick | 'day-view' | 'none' | function | undefined | ๋ ์ง ์ ์ ํด๋ฆญํ์ ๋์ ๋์์ ๋๋ค. |
gridDateDoubleClick | 'create-event' | 'day-view' | 'none' | function | 'create-event' | ๋ ์ง ์
์ ๋๋ธ ํด๋ฆญํ์ ๋์ ๋์์
๋๋ค. 'create-event'(๊ธฐ๋ณธ๊ฐ)๋ ํด๋ฆญํ ์์น(์๊ฐ)์ 1์๊ฐ์ง๋ฆฌ ์ด๋ฒคํธ๋ฅผ ๋ง๋ญ๋๋ค. |
hourHeight | number | 72 | ์๊ฐ ๊ทธ๋ฆฌ๋์์ ๊ฐ ์๊ฐ ํ์ ๋์ด(ํฝ์ )์ ๋๋ค. |
import {
useCalendarApp,
DayFlowCalendar,
createWeekView,
ViewType,
} from '@dayflow/react';
function MyCalendar() {
const calendar = useCalendarApp({
views: [createWeekView()],
defaultView: ViewType.WEEK,
initialDate: new Date(),
});
return <DayFlowCalendar calendar={calendar} />;
}<template>
<DayFlowCalendar :calendar="calendar" />
</template>
<script setup>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/vue';
import { createWeekView, ViewType } from '@dayflow/core';
const calendar = useCalendarApp({
views: [createWeekView()],
defaultView: ViewType.WEEK,
initialDate: new Date(),
});
</script>import { Component } from '@angular/core';
import { createWeekView, ViewType } from '@dayflow/core';
import { DayFlowCalendarModule } from '@dayflow/angular';
@Component({
selector: 'app-root',
standalone: true,
imports: [DayFlowCalendarModule],
template: `
<dayflow-calendar [calendar]="calendar"></dayflow-calendar>
`
})
export class AppComponent {
calendar = {
views: [createWeekView()],
defaultView: ViewType.WEEK,
initialDate: new Date(),
};
}<script>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/svelte';
import { createWeekView, ViewType } from '@dayflow/core';
const calendar = useCalendarApp({
views: [createWeekView()],
defaultView: ViewType.WEEK,
initialDate: new Date(),
});
</script>
<DayFlowCalendar {calendar} />์(Month) ๋ทฐ
์ ๋ทฐ๋ ํ ๋ฌ์ ๋ชจ๋ ๋ ์ง๋ฅผ ๋ณด์ฌ ์ฃผ๋ ์ ํต์ ์ธ ์บ๋ฆฐ๋ ๊ทธ๋ฆฌ๋์ ๋๋ค.
์ค์
| ์์ฑ | ํ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|---|
showWeekNumbers | boolean | false | ์ฃผ ๋ฒํธ๋ฅผ ํ์ํ ์ง ์ฌ๋ถ์ ๋๋ค. |
showMonthIndicator | boolean | true | ์คํฌ๋กคํ ๋ ์ ํ์ ์ ๋ชฉ์ ๋ณด์ฌ ์ค์ง ์ฌ๋ถ์ ๋๋ค. |
startOfWeek | number | 1 | ํ ์ฃผ์ ์์ ์์ผ์ ๋๋ค(0 = ์ผ์์ผ, 1 = ์์์ผ ๋ฑ). |
snapToMonth | boolean | false | ํ์ฑํํ๋ฉด ์คํฌ๋กค์ ๋ฉ์ท์ ๋ ๊ฐ์ฅ ๋ง์ด ๋ณด์ด๋ ๋ฌ์ ์์์ผ๋ก ๋ง์ถฐ์ง๋๋ค. |
gridDateClick | 'week-view' | 'day-view' | 'none' | function | undefined | ๋ ์ง ์ ์ ํด๋ฆญํ์ ๋์ ๋์์ ๋๋ค. |
gridDateDoubleClick | 'create-event' | 'week-view' | 'day-view' | 'none' | function | 'create-event' | ๋ ์ง ์
์ ๋๋ธ ํด๋ฆญํ์ ๋์ ๋์์
๋๋ค. 'create-event'(๊ธฐ๋ณธ๊ฐ)๋ ํด๋ฆญํ ๋ ์ง์ 9:00~10:00 ์ด๋ฒคํธ๋ฅผ ๋ง๋ญ๋๋ค. |
eventHeight | number | 16 | ์ ๊ทธ๋ฆฌ๋์์ ๊ฐ ์ด๋ฒคํธ ํ์ ๋์ด(ํฝ์ )์ ๋๋ค. |
scroll | MonthScrollConfig | โ | ์คํฌ๋กค ์ ๊ธ๊ณผ ์ ์ ํ ์ ๋๋ฉ์ด์ ์ ์ ์ดํฉ๋๋ค. ์๋๋ฅผ ์ฐธ๊ณ ํ์ธ์. |
MonthScrollConfig
| ์์ฑ | ํ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|---|
disabled | boolean | false | ์ฐ์ ์คํฌ๋กค์ ๋นํ์ฑํํฉ๋๋ค. ์ด์ / ๋ค์ ๋ด๋น๊ฒ์ด์ ๋ฒํผ์ผ๋ก๋ง ๋ฌ์ ๋ฐ๊ฟ ์ ์์ต๋๋ค. |
transition | 'fade' | undefined | undefined | ๋ฌ์ ์ ํํ ๋์ ์ ๋๋ฉ์ด์
์
๋๋ค(disabled: true์ผ ๋๋ง ์ ์ฉ). 'fade'๋ ํ์ฌ ๋ฌ์ ๊ฐ๋ก๋ก ๋ฐ๋ฉด์ ์์ํ ์ฌ๋ผ์ง๊ฒ ํ๊ณ ๋ค์ ๋ฌ์ ์์ํ ๋ํ๋๊ฒ ํฉ๋๋ค. ์๋ตํ๋ฉด ๊ธฐ์กด์ ๋ถ๋๋ฌ์ด ์คํฌ๋กค ์ ๋๋ฉ์ด์
์ด ์ ์ง๋ฉ๋๋ค. |
createMonthView({
scroll: {
disabled: true, // lock to one month at a time, Prev/Next only
transition: 'fade', // optional fade animation (omit to keep smooth scroll)
},
});import {
useCalendarApp,
DayFlowCalendar,
createMonthView,
ViewType,
} from '@dayflow/react';
function MyCalendar() {
const calendar = useCalendarApp({
views: [createMonthView()],
defaultView: ViewType.MONTH,
initialDate: new Date(),
});
return <DayFlowCalendar calendar={calendar} />;
}<template>
<DayFlowCalendar :calendar="calendar" />
</template>
<script setup>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/vue';
import { createMonthView, ViewType } from '@dayflow/core';
const calendar = useCalendarApp({
views: [createMonthView()],
defaultView: ViewType.MONTH,
initialDate: new Date(),
});
</script>import { Component } from '@angular/core';
import { createMonthView, ViewType } from '@dayflow/core';
import { DayFlowCalendarModule } from '@dayflow/angular';
@Component({
selector: 'app-root',
standalone: true,
imports: [DayFlowCalendarModule],
template: `
<dayflow-calendar [calendar]="calendar"></dayflow-calendar>
`
})
export class AppComponent {
calendar = {
views: [createMonthView()],
defaultView: ViewType.MONTH,
initialDate: new Date(),
};
}<script>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/svelte';
import { createMonthView, ViewType } from '@dayflow/core';
const calendar = useCalendarApp({
views: [createMonthView()],
defaultView: ViewType.MONTH,
initialDate: new Date(),
});
</script>
<DayFlowCalendar {calendar} />์์ ๋ค(Agenda) ๋ทฐ
์์ ๋ค ๋ทฐ๋ ์ด๋ฒคํธ๋ฅผ ๋ ์ง๋ณ๋ก ๋ฌถ์ด ์๊ฐ์ ๋ชฉ๋ก์ผ๋ก ๋ณด์ฌ ์ค๋๋ค. ๋ชจ๋ฐ์ผ ๋ ์ด์์, ์ฅ๊ธฐ ๊ณํ, ๊ทธ๋ฆฌ๊ณ ๋ค๊ฐ์ฌ ์ผ์ ์ ๋น ๋ฅด๊ฒ ํ์ด๋ณด๋ ํผ๋ ํํ์ ํนํ ์ ๋ง์ต๋๋ค.
์ค์
| ์์ฑ | ํ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|---|
daysToShow | number | 14 | ์์ ๋ค ๋ชฉ๋ก์ ํ์ํ ์ฐ์ ๋ ์ง ์์ ๋๋ค. |
showEmptyDays | boolean | true | ์ด๋ฒคํธ๊ฐ ์๋ ๋ ์ง๋ ๋ชฉ๋ก์ ๊ณ์ ํ์ํ ์ง ์ฌ๋ถ์ ๋๋ค. |
timeFormat | '12h' | '24h' | '24h' | ์๊ฐ์ด ์ง์ ๋ ์ด๋ฒคํธ ํ์ ์ฌ์ฉํ ์๊ฐ ํ์์ ๋๋ค. |
gridDateClick | 'day-view' | 'none' | function | undefined | ๋ ์ง ๊ตฌํ์ ํด๋ฆญํ์ ๋์ ๋์์ ๋๋ค. |
gridDateDoubleClick | 'day-view' | 'none' | function | 'day-view' | ๋ ์ง ๊ตฌํ์ ๋๋ธ ํด๋ฆญํ์ ๋์ ๋์์ ๋๋ค. |
import {
useCalendarApp,
DayFlowCalendar,
createAgendaView,
ViewType,
} from '@dayflow/react';
function MyCalendar() {
const calendar = useCalendarApp({
views: [
createAgendaView({
daysToShow: 14,
timeFormat: '12h',
gridDateDoubleClick: 'day-view',
}),
],
defaultView: ViewType.AGENDA,
initialDate: new Date(),
});
return <DayFlowCalendar calendar={calendar} />;
}<template>
<DayFlowCalendar :calendar="calendar" />
</template>
<script setup>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/vue';
import { createAgendaView, ViewType } from '@dayflow/core';
const calendar = useCalendarApp({
views: [
createAgendaView({
daysToShow: 14,
timeFormat: '12h',
gridDateDoubleClick: 'day-view',
}),
],
defaultView: ViewType.AGENDA,
initialDate: new Date(),
});
</script>import { Component } from '@angular/core';
import { createAgendaView, ViewType } from '@dayflow/core';
import { DayFlowCalendarModule } from '@dayflow/angular';
@Component({
selector: 'app-root',
standalone: true,
imports: [DayFlowCalendarModule],
template: `
<dayflow-calendar [calendar]="calendar"></dayflow-calendar>
`
})
export class AppComponent {
calendar = {
views: [
createAgendaView({
daysToShow: 14,
timeFormat: '12h',
gridDateDoubleClick: 'day-view',
}),
],
defaultView: ViewType.AGENDA,
initialDate: new Date(),
};
}<script>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/svelte';
import { createAgendaView, ViewType } from '@dayflow/core';
const calendar = useCalendarApp({
views: [
createAgendaView({
daysToShow: 14,
timeFormat: '12h',
gridDateDoubleClick: 'day-view',
}),
],
defaultView: ViewType.AGENDA,
initialDate: new Date(),
});
</script>
<DayFlowCalendar {calendar} />์ฐ๊ฐ(Year) ๋ทฐ
์ฐ๊ฐ ๋ทฐ๋ ํ ํด ์ ์ฒด๋ฅผ ํ๋์ ๋ณด์ฌ ์ค๋๋ค. DayFlow์ ์ฐ๊ฐ ๋ทฐ๋ year-canvas(์ฐ์ ๊ทธ๋ฆฌ๋), fixed-week(52์ฃผ ๊ณ ์ ์ด), grid(ํํธ๋งต์ ์ ํฉํ 4ร3 ์ ๊ทธ๋ฆฌ๋) ์ธ ๊ฐ์ง ๋ชจ๋๋ฅผ ์ง์ํฉ๋๋ค.
์ค์
| ์์ฑ | ํ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|---|
mode | 'year-canvas' | 'fixed-week' | 'grid' | 'year-canvas' | ์ฐ๊ฐ ๋ทฐ์ ํ์ ๋ชจ๋์ ๋๋ค. |
startOfWeek | number | 1 | ํ ์ฃผ์ ์์ ์์ผ์
๋๋ค(0 = ์ผ์์ผ, 1 = ์์์ผ ๋ฑ). fixed-week์ grid ๋ชจ๋์์ ์ฌ์ฉ๋ฉ๋๋ค. |
showTimedEventsInYearView | boolean | false | ์ฐ๊ฐ ๋ทฐ์ ์๊ฐ์ด ์ง์ ๋ ์ด๋ฒคํธ๋ฅผ ํ์ํ ์ง ์ฌ๋ถ์ ๋๋ค(์ , ํ์์, ๋๋). |
gridDateClick | 'popup' | 'day-view' | 'none' | function | 'popup' | (grid ๋ชจ๋) ๋ ์ง ์ ์ ํด๋ฆญํ์ ๋์ ๋์์ ๋๋ค. |
gridDateDoubleClick | 'create-event' | 'day-view' | 'none' | function | 'create-event' | (grid ๋ชจ๋) ๋ ์ง ์
์ ๋๋ธ ํด๋ฆญํ์ ๋์ ๋์์
๋๋ค. 'create-event'(๊ธฐ๋ณธ๊ฐ)๋ 9:00~10:00 ์ด๋ฒคํธ๋ฅผ ๋ง๋ญ๋๋ค. |
gridHeatmapLevels | number | 5 | (grid ๋ชจ๋) ํํธ๋งต ๋๋ ๋จ๊ณ ์์ ๋๋ค. |
ํํธ๋งต ์ปค์คํฐ๋ง์ด์ง (grid ๋ชจ๋)
mode: 'grid'์ ์ฌ์ฉํ๋ฉด ์บ๋ฆฐ๋๊ฐ ํํธ๋งต์ฒ๋ผ ๋์ํ์ฌ, ๊ฐ ๋ ์ง์ ๋๋(์์)๊ฐ ์ด๋ฒคํธ ์์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ์ ์ญ CSS์์ ๋ค์ CSS ๋ณ์๋ฅผ ์ฌ์ ์ํด ์์์ ๋ฐ๊ฟ ์ ์์ต๋๋ค:
/* Light Mode Heatmap */
.df-year-grid-month {
--heat-1: #ebf5ff;
--heat-2: #cfe8ff;
--heat-3: #91d5ff;
--heat-4: #60a5fa;
--heat-5: #3b82f6;
}
/* Dark Mode Heatmap */
.dark .df-year-grid-month {
--heat-1: #1e3a5f;
--heat-2: #2563eb;
--heat-3: #1e40af;
--heat-4: #3b82f6;
--heat-5: #93c5fd;
}gridHeatmapLevels๋ฅผ ๋ค๋ฅธ ๊ฐ(์: 3)์ผ๋ก ๋ฐ๊พผ๋ค๋ฉด, ๊ทธ ์์ ๋ง์ถฐ ๋ณ์๋ ํจ๊ป ์ ์ํด์ผ ํฉ๋๋ค(์: --heat-1๋ถํฐ --heat-3๊น์ง).
import {
useCalendarApp,
DayFlowCalendar,
createYearView,
ViewType,
} from '@dayflow/react';
function MyCalendar() {
const calendar = useCalendarApp({
views: [
createYearView({
mode: 'grid',
showTimedEventsInYearView: true,
gridHeatmapLevels: 5,
}),
],
defaultView: ViewType.YEAR,
});
return <DayFlowCalendar calendar={calendar} />;
}<template>
<DayFlowCalendar :calendar="calendar" />
</template>
<script setup>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/vue';
import { createYearView, ViewType } from '@dayflow/core';
const calendar = useCalendarApp({
views: [
createYearView({
mode: 'grid',
showTimedEventsInYearView: true,
gridHeatmapLevels: 5,
}),
],
defaultView: ViewType.YEAR,
});
</script>import { Component } from '@angular/core';
import { createYearView, ViewType } from '@dayflow/core';
import { DayFlowCalendarModule } from '@dayflow/angular';
@Component({
selector: 'app-root',
standalone: true,
imports: [DayFlowCalendarModule],
template: `
<dayflow-calendar [calendar]="calendar"></dayflow-calendar>
`
})
export class AppComponent {
calendar = {
views: [
createYearView({
mode: 'grid',
showTimedEventsInYearView: true,
gridHeatmapLevels: 5,
}),
],
defaultView: ViewType.YEAR,
};
}<script>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/svelte';
import { createYearView, ViewType } from '@dayflow/core';
const calendar = useCalendarApp({
views: [
createYearView({
mode: 'grid',
showTimedEventsInYearView: true,
gridHeatmapLevels: 5,
}),
],
defaultView: ViewType.YEAR,
});
</script>
<DayFlowCalendar {calendar} />์ฌ๋ฌ ๋ทฐ ํจ๊ป ์ฌ์ฉํ๊ธฐ
์ฌ๋ฌ ๋ทฐ๋ฅผ ๋ฑ๋กํด ์ฌ์ฉ์๊ฐ ์๋ก ์ ํํ ์ ์๊ฒ ํ ์ ์์ต๋๋ค:
import {
useCalendarApp,
DayFlowCalendar,
createAgendaView,
createDayView,
createWeekView,
createMonthView,
createYearView,
ViewType,
} from '@dayflow/react';
function MultiViewCalendar() {
const calendar = useCalendarApp({
views: [
createAgendaView({ daysToShow: 10 }),
createDayView(),
createWeekView(),
createMonthView(),
createYearView(),
],
defaultView: ViewType.MONTH,
initialDate: new Date(),
callbacks: {
onViewChange: view => {
console.log('View changed to:', view);
},
},
});
return (
<div className='h-screen'>
<DayFlowCalendar calendar={calendar} />
</div>
);
}<template>
<div class="h-screen">
<DayFlowCalendar :calendar="calendar" />
</div>
</template>
<script setup>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/vue';
import {
createAgendaView,
createDayView,
createWeekView,
createMonthView,
createYearView,
ViewType,
} from '@dayflow/core';
const calendar = useCalendarApp({
views: [
createAgendaView({ daysToShow: 10 }),
createDayView(),
createWeekView(),
createMonthView(),
createYearView(),
],
defaultView: ViewType.MONTH,
initialDate: new Date(),
callbacks: {
onViewChange: (view) => {
console.log('View changed to:', view);
},
},
});
</script>import { Component } from '@angular/core';
import {
createAgendaView,
createDayView,
createWeekView,
createMonthView,
createYearView,
ViewType,
} from '@dayflow/core';
import { DayFlowCalendarModule } from '@dayflow/angular';
@Component({
selector: 'app-root',
standalone: true,
imports: [DayFlowCalendarModule],
template: `
<div class="h-screen">
<dayflow-calendar [calendar]="calendar"></dayflow-calendar>
</div>
`
})
export class AppComponent {
calendar = {
views: [
createAgendaView({ daysToShow: 10 }),
createDayView(),
createWeekView(),
createMonthView(),
createYearView(),
],
defaultView: ViewType.MONTH,
initialDate: new Date(),
callbacks: {
onViewChange: (view: any) => {
console.log('View changed to:', view);
},
},
};
}<script>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/svelte';
import {
createAgendaView,
createDayView,
createWeekView,
createMonthView,
createYearView,
ViewType,
} from '@dayflow/core';
const calendar = useCalendarApp({
views: [
createAgendaView({ daysToShow: 10 }),
createDayView(),
createWeekView(),
createMonthView(),
createYearView(),
],
defaultView: ViewType.MONTH,
initialDate: new Date(),
callbacks: {
onViewChange: (view) => {
console.log('View changed to:', view);
},
},
});
</script>
<div class="h-screen">
<DayFlowCalendar {calendar} />
</div>์ฝ๋๋ก ๋ทฐ ์ ์ดํ๊ธฐ
๋ทฐ ์ ํ
// Change to a specific view
calendar.changeView(ViewType.WEEK);
// Get current view
const currentView = calendar.app.getCurrentView();
console.log(currentView.type); // 'week'ํ์
๋ชจ๋ ๋ทฐ๊ฐ ๋์ผํ ํ์ ๋ฉ์๋๋ฅผ ์ง์ํฉ๋๋ค:
// Go to today
calendar.goToToday();
// Go to previous period (day/week/month/agenda/year depending on current view)
calendar.goToPrevious();
// Go to next period
calendar.goToNext();
// Go to a specific date
calendar.selectDate(new Date(2024, 9, 15));ViewType ์ด๊ฑฐํ
enum ViewType {
DAY = 'day',
WEEK = 'week',
MONTH = 'month',
AGENDA = 'agenda',
YEAR = 'year',
}