<template>
<div class="component-card-demo-wrap">
<TsCalendar :extensions="holidayData" />
</div>
</template>
<script setup lang="ts">
import { TsCalendar } from 'tui';
import type { ExternalDay, Month } from 'tui/components/core/calendar/types';
type CalendarOriginDay = ExternalDay & {
id: number;
year: string;
month: string;
day: string;
};
interface CalendarOriginMap {
[year: string]: {
[month in Month]?: CalendarOriginDay[];
};
}
const holidayData: CalendarOriginMap = {
'2026': {
'01': [
{
id: 170,
year: '2026',
month: '01',
day: '08',
date: '2026-01-08',
name: '三九天',
lunarName: null,
type: 'normal',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 171,
year: '2026',
month: '01',
day: '17',
date: '2026-01-17',
name: '四九天',
lunarName: null,
type: 'weekend',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 172,
year: '2026',
month: '01',
day: '26',
date: '2026-01-26',
name: '腊八节',
lunarName: null,
type: 'normal',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 174,
year: '2026',
month: '01',
day: '01',
date: '2026-01-01',
name: '元旦节',
lunarName: null,
type: 'holiday',
badgeText: '',
tooltip: true,
tooltipText: '元旦节快乐',
},
{
id: 175,
year: '2026',
month: '01',
day: '02',
date: '2026-01-02',
name: '',
lunarName: '',
type: 'holiday',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 176,
year: '2026',
month: '01',
day: '03',
date: '2026-01-03',
name: '',
lunarName: '',
type: 'holiday',
badgeText: '',
tooltip: false,
tooltipText: '',
},
],
'02': [
{
id: 173,
year: '2026',
month: '02',
day: '02',
date: '2026-02-02',
name: '湿地日',
lunarName: null,
type: 'normal',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 177,
year: '2026',
month: '02',
day: '14',
date: '2026-02-14',
name: '情人节',
lunarName: '',
type: 'workday',
badgeText: '班',
tooltip: false,
tooltipText: '',
},
{
id: 178,
year: '2026',
month: '02',
day: '15',
date: '2026-02-15',
name: '',
lunarName: '',
type: 'holiday',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 179,
year: '2026',
month: '02',
day: '16',
date: '2026-02-16',
name: '除夕',
lunarName: '',
type: 'holiday',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 180,
year: '2026',
month: '02',
day: '17',
date: '2026-02-17',
name: '',
lunarName: '',
type: 'holiday',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 181,
year: '2026',
month: '02',
day: '18',
date: '2026-02-18',
name: '',
lunarName: '',
type: 'holiday',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 182,
year: '2026',
month: '02',
day: '19',
date: '2026-02-19',
name: '',
lunarName: '',
type: 'holiday',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 183,
year: '2026',
month: '02',
day: '20',
date: '2026-02-20',
name: '',
lunarName: '',
type: 'holiday',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 184,
year: '2026',
month: '02',
day: '21',
date: '2026-02-21',
name: '',
lunarName: '',
type: 'holiday',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 185,
year: '2026',
month: '02',
day: '22',
date: '2026-02-22',
name: '',
lunarName: '',
type: 'holiday',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 186,
year: '2026',
month: '02',
day: '23',
date: '2026-02-23',
name: '',
lunarName: '',
type: 'holiday',
badgeText: '',
tooltip: false,
tooltipText: '',
},
{
id: 187,
year: '2026',
month: '02',
day: '28',
date: '2026-02-28',
name: '',
lunarName: '',
type: 'workday',
badgeText: '班',
tooltip: false,
tooltipText: '',
},
],
},
};
</script>