Skip to content

CalendarEmbedded ​

CalendarEmbedded는 사이드바나 필터 패널처럼 화면 안에 항상 노출되는 단일 날짜 선택 캘린더입니다. 팝업·모달 없이 고정된 위치에 렌더링되며, Calendar의 single 모드와 날짜 선택 동작을 공유합니다.

Basic ​

mode는 single만 지원하며 생략할 수 있습니다. 날짜를 선택하면 v-model:date가 millisecond timestamp로 갱신됩니다.

월화수목금토일
vue
<script setup lang="ts">
import { ref } from 'vue';
import { CalendarEmbedded } from '@jennifersoft/vue-components-v2';

const selectedDate = ref<number>();
</script>

<template>
    <calendar-embedded v-model:date="selectedDate" />
</template>

Slot — 조회 기간 선택 ​

기본 슬롯은 캘린더 위에 부가 컨트롤을 배치할 때 사용합니다. 슬롯이 있으면 컴포넌트가 JENNIFER Design Kit의 필터 패널 형태로 확장되고, 슬롯과 캘린더 사이에는 8px 간격이 적용됩니다.

아래 예시는 Dropdown으로 조회 기간을 1일부터 7일까지 선택할 수 있도록 구성한 예시입니다. 선택한 값을 last-n-days에 전달하므로 조회 기간을 바꾸면 캘린더의 선택 범위도 즉시 갱신됩니다. 예를 들어 17일을 선택하고 조회 기간을 3일로 설정하면 15일부터 17일까지 표시됩니다.

조회 기간
3일
월화수목금토일
vue
<script setup lang="ts">
import { ref } from 'vue';
import {
    CalendarEmbedded,
    Dropdown,
} from '@jennifersoft/vue-components-v2';

const selectedDate = ref<number>();
const selectedPeriod = ref(3);

const periodItems = Array.from({ length: 7 }, (_, index) => ({
    label: `${index + 1}일`,
    value: index + 1,
}));
</script>

<template>
    <calendar-embedded
        v-model:date="selectedDate"
        :last-n-days="selectedPeriod"
    >
        <div class="calendar-embedded-period">
            <span class="calendar-embedded-period-label">조회 기간</span>
            <dropdown
                v-model="selectedPeriod"
                class="calendar-embedded-period-dropdown"
                :items="periodItems"
                size="small"
            />
        </div>
    </calendar-embedded>
</template>

<style scoped>
.calendar-embedded-period {
    display: flex;
    width: 224px;
    height: 24px;
}

.calendar-embedded-period-label {
    box-sizing: border-box;
    display: inline-flex;
    flex: 0 0 61px;
    min-width: 0;
    align-items: center;
    justify-content: center;
    height: 24px;
    padding: 4px 8px;
    border: 1px solid var(--gray-300);
    border-radius: 4px 0 0 4px;
    color: var(--gray-900);
    font-size: 12px;
    line-height: 18px;
    white-space: nowrap;
}

.calendar-embedded-period-dropdown {
    flex: 1;
    min-width: 0;
    margin-left: -1px;
    border-radius: 0 4px 4px 0;
}
</style>

Props ​

Prop타입기본값설명
mode'single''single'단일 날짜 선택만 지원
messagesCalendarMessages브라우저 locale 자동 (KO/JA/EN)요일·월 및 캘린더 라벨
datenumber (ms timestamp)-선택한 날짜의 v-model 값
lastNDaysnumber1선택한 날짜를 종료일로 표시할 최근 N일 범위
timeZoneOffsetnumber (ms)9 * 60 * 60 * 1000표시·계산 기준 타임존 offset

Slots ​

Slot설명
default캘린더 상단에 조회 기간 선택 등 부가 컨트롤을 배치

Emits ​

EventPayload발생 시점
update:datenumber날짜 선택 시 v-model:date 갱신
apply{ date: number }날짜 선택이 즉시 확정될 때 발생

키보드 ​

Calendar와 동일한 키보드 조작을 지원합니다.

키동작
← / → / ↑ / ↓날짜 focus cursor 이동 (±1일 / ±7일)
Enterfocus된 날짜 선택
PageUp / PageDown이전/다음 달 이동