ビュー

Day Flow は 4 つの異なるビュータイプをサポートしており、それぞれが異なるユースケースやユーザーのニーズに合わせて最適化されています。プログラムでビューを切り替えたり、ユーザーがビューを切り替えるための UI を提供したりすることができます。

利用可能なビュー

日ビュー

日ビューは単一の日に焦点を当て、詳細な時間枠を表示します。毎日のスケジュールの管理に最適です。

設定

プロパティデフォルト説明
showAllDaybooleantrue終日イベント行を表示するかどうか。
scrollToCurrentTimebooleantrue初回ロード時に現在時刻までスクロールするかどうか。
timeFormat'12h' | '24h''24h'時間軸の時間形式。
secondaryTimeZonestringundefined日ビューだけに表示される補助タイムライン。
import {
  useCalendarApp,
  DayFlowCalendar,
  createDayView,
  ViewType,
} from '@dayflow/react'; // or '@dayflow/vue', '@dayflow/svelte', '@dayflow/angular'

function MyCalendar() {
  const calendar = useCalendarApp({
    views: [createDayView()],
    defaultView: ViewType.DAY,
    initialDate: new Date(),
  });

  return <DayFlowCalendar calendar={calendar} />;
}

週ビュー

週ビューは、時間枠を持つ 7 日間のグリッドを表示し、イベントを正確な開始時間と終了時間で表示します。

設定

プロパティデフォルト説明
showWeekendsbooleantrue土日を表示するかどうか。
showAllDaybooleantrue終日イベント行を表示するかどうか。
startOfWeeknumber1週の開始日(0 は日曜日、1 は月曜日など)。
scrollToCurrentTimebooleantrue初回ロード時に現在時刻までスクロールするかどうか。
timeFormat'12h' | '24h''24h'時間軸の時間形式。
secondaryTimeZonestringundefined週ビューだけに表示される補助タイムライン。
import {
  useCalendarApp,
  DayFlowCalendar,
  createWeekView,
  ViewType,
} from '@dayflow/react'; // or '@dayflow/vue', '@dayflow/svelte', '@dayflow/angular'

function MyCalendar() {
  const calendar = useCalendarApp({
    views: [createWeekView()],
    defaultView: ViewType.WEEK,
    initialDate: new Date(),
  });

  return <DayFlowCalendar calendar={calendar} />;
}

月ビュー

月ビューは、1 か月のすべての金を表示する伝統的なカレンダーグリッドを表示します。

設定

プロパティデフォルト説明
showWeekNumbersbooleanfalse週番号を表示するかどうか。
showMonthIndicatorbooleantrueスクロール時に月を示すタイトルを表示するかどうか。
startOfWeeknumber1週の開始曜日(0 は日曜日、1 は月曜日など)。
snapToMonthbooleanfalse有効にすると、スクロールが止まった後、表示中のメイン月の先頭に自動的にスナップします。
scrollMonthScrollConfigスクロールのロックと月切替アニメーションを制御します。以下を参照してください。

MonthScrollConfig

プロパティデフォルト説明
disabledbooleanfalse連続スクロールを無効化します。月の切替は Prev / Next ボタンのみで行えます。
transition'fade' | undefinedundefined月切替時のアニメーション(disabled: true の場合のみ適用)。'fade' を指定すると、現在の月がフェードアウトしながら横にスライドし、次の月がフェードインします。省略すると元のスムーズスクロールアニメーションが維持されます。
createMonthView({
  scroll: {
    disabled: true, // 1ヶ月単位に固定、Prev/Next ボタンのみ
    transition: 'fade', // フェードアニメーション(省略するとスムーズスクロール)
  },
});
import {
  useCalendarApp,
  DayFlowCalendar,
  createMonthView,
  ViewType,
} from '@dayflow/react'; // or '@dayflow/vue', '@dayflow/svelte', '@dayflow/angular'

function MyCalendar() {
  const calendar = useCalendarApp({
    views: [createMonthView()],
    defaultView: ViewType.MONTH,
    initialDate: new Date(),
  });

  return <DayFlowCalendar calendar={calendar} />;
}

年ビュー

年ビューは、包括的な年間概要を提供します。DayFlow の年ビューは、year-canvas(連続グリッド)、fixed-week(固定 52 週間の列)、および grid(ヒートマップに最適な 4x3 の月間グリッド)の 3 つのモードをサポートしています。

設定

プロパティデフォルト説明
mode'year-canvas' | 'fixed-week' | 'grid''year-canvas'年ビューの表示モード。
startOfWeeknumber1週の開始曜日(0 は日曜日、1 は月曜日など)。fixed-week および grid モードで使用されます。
showTimedEventsInYearViewbooleanfalse年ビューに時間指定イベント(ドット/インジケーター/ヒートマップ強度)を表示するかどうか。
gridDateClick'popup' | 'day-view' | 'none' | function'popup'(Grid モード) 日付セルをクリックした際のアクション。
gridDateDoubleClick'day-view' | 'none' | function'day-view'(Grid モード) 日付セルをダブルクリックした際のアクション。
gridPopupContentfunctionundefined(Grid モード) 日付ポップアップコンテンツのカスタムレンダラー。
gridHeatmapLevelsnumber5(Grid モード) 使用するヒートマップの強度の段階数。

ヒートマップのカスタマイズ (Grid モード)

mode: 'grid' を使用する場合、カレンダーはイベントの数によって各日の強度(色)が決定されるヒートマップとして機能します。グローバル CSS で以下の CSS 変数を上書きすることで、色をカスタマイズできます。

/* ライトモードのヒートマップ */
.df-year-grid-month {
  --heat-1: #ebf5ff;
  --heat-2: #cfe8ff;
  --heat-3: #91d5ff;
  --heat-4: #60a5fa;
  --heat-5: #3b82f6;
}

/* ダークモードのヒートマップ */
.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} />;
}

複数ビューの使用

複数のビューを登録して、ユーザーがそれらを切り替えられるようにすることができます。

import {
  useCalendarApp,
  DayFlowCalendar,
  createDayView,
  createWeekView,
  createMonthView,
  createYearView,
  ViewType,
} from '@dayflow/react'; // or '@dayflow/vue', '@dayflow/svelte', '@dayflow/angular'

function MultiViewCalendar() {
  const calendar = useCalendarApp({
    views: [
      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>
  );
}

API によるビュー制御

ビューの変更

// 特定のビューに変更
calendar.changeView(ViewType.WEEK);

// 現在のビューを取得
const currentView = calendar.app.getCurrentView();
console.log(currentView.type); // 'week'

ナビゲーション

すべてのビューは同じナビゲーションメソッドをサポートしています。

// 今日へ移動
calendar.goToToday();

// 前の期間へ移動(現在のビューに応じて日/週/月/年)
calendar.goToPrevious();

// 次の期間へ移動
calendar.goToNext();

// 特定の日付を選択
calendar.selectDate(new Date(2024, 9, 15));

ViewType 列挙体

enum ViewType {
  DAY = 'day',
  WEEK = 'week',
  MONTH = 'month',
  YEAR = 'year',
}

On this page