Token导航 LogoToken导航TokenDH.com
待分类需要联网github未标认证来源可访问许可证需确认审计通过

syncfusion-angular-calendarsyncfusion Angular 日历

Agent Skill

syncfusion-angular-calendar 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

672

周安装

28

GitHub Stars

公开资料未说明

下载量

224
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:syncfusion-angular-calendar(syncfusion Angular 日历)
来源仓库:https://github.com/syncfusion/angular-ui-components-skills
仓库路径:skills/syncfusion-angular-calendar
安装命令:
npx skills add https://github.com/syncfusion/angular-ui-components-skills --skill syncfusion-angular-calendar
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/syncfusion/angular-ui-components-skills --skill syncfusion-angular-calendar

简介

创建日历组件,支持日期选择、事件标记与日程管理。syncfusion-angular-calendar 属于待分类类 Skill,可作为该场景下的辅助能力补充。

  • 适用于项目管理、预约系统等需要时间维度操作的界面。
  • 通过 GitHub 仓库安装,使用 npx 命令添加技能并指定路径。
  • 需处理时区转换与本地化显示,适配多地区用户需求。
  • 高并发场景下应考虑渲染性能优化,避免卡顿影响体验。

SKILL.md

Implementing Syncfusion Angular Calendar

A comprehensive guide for implementing the Syncfusion Essential JS 2 Calendar component in Angular applications. Learn to create date pickers, manage calendar views, handle events, and customize styling.

Calendar Overview

The Syncfusion Angular Calendar component is a date selection widget that provides:

  • Multiple calendar views: Month (default), Year, and Decade views with smooth navigation
  • Date selection modes: Single date or multiple dates with isMultiSelection property
  • Navigation control: navigateTo() method for programmatic view switching
  • Date manipulation methods: addDate() and removeDate() for multi-selection management
  • Comprehensive event system: change, created, navigated, renderDayCell, destroyed events
  • Localization support: Locale-specific formatting, day header formats, first day of week
  • Accessibility: Full WCAG 2.2 compliance, keyboard navigation, RTL support
  • Rich customization: CSS classes, custom rendering, day cell customization
  • Persistence: Optional state persistence across page reloads

Package: @syncfusion/ej2-angular-calendars

Documentation Navigation

Read the following references based on your specific needs:

Getting Started

📄 Read: references/getting-started.md

  • Package installation and module setup
  • CSS theme imports and dependencies
  • Basic calendar implementation
  • Component initialization in Angular
  • Running and testing setup

Calendar Views

📄 Read: references/calendar-views.md

  • Month view (default display)
  • Year view implementation
  • Decade view implementation
  • View navigation and transitions
  • start property usage
  • depth property for restricting views

Date Selection

📄 Read: references/date-selection.md

  • Single date selection
  • Multiple date selection (isMultiSelection)
  • value property for single dates
  • values array for multiple dates
  • Min/max date constraints
  • Date range validation

Events & Methods

📄 Read: references/events-and-methods.md

  • Event handlers (change, created, navigated, renderDayCell, destroyed)
  • addDate() method for multi-selection
  • removeDate() method for multi-selection
  • navigateTo() for programmatic navigation
  • currentView() to get active view
  • getPersistData() to retrieve persistence data
  • destroy() to destroy the calendar widget
  • RenderDayCell for custom day styling

Calendar Navigation

📄 Read: references/calendar-navigation.md

  • Month navigation controls
  • Year and Decade view switching
  • Today button (showTodayButton)
  • firstDayOfWeek property
  • Week number display (weekNumber)
  • Keyboard shortcuts and navigation

Accessibility & Globalization

📄 Read: references/accessibility-and-globalization.md

  • WCAG 2.2 and Section 508 compliance
  • WAI-ARIA attributes and roles
  • Keyboard navigation (arrows, enter, spacebar)
  • Screen reader compatibility
  • Localization (locale property)
  • Day header formats (Short, Narrow, Abbreviated, Wide)
  • RTL (Right-to-Left) support

Styling & Customization

📄 Read: references/styling-and-customization.md

  • CSS class customization (.e-calendar,.e-day-cell,.e-selected)
  • Theme selection (Material, Bootstrap, Tailwind, Fabric)
  • Dark mode implementation
  • Custom day cell styling via renderDayCell
  • Disabled dates styling
  • Hover and focus states

API Reference

📄 Read: references/api-reference.md

  • Complete property reference (value, values, isMultiSelection, min, max, start, depth, showTodayButton, locale, dayHeaderFormat, weekNumber, weekRule, firstDayOfWeek, cssClass, enableRtl, enabled, calendarMode, keyConfigs, enablePersistence, serverTimezoneOffset)
  • All method signatures with examples (addDate, removeDate, navigateTo, currentView, getPersistData, destroy)
  • Event argument types (ChangedEventArgs, NavigatedEventArgs, RenderDayCellEventArgs)
  • Key configurations for keyboard shortcuts
  • Calendar modes (Gregorian, Islamic)
  • Return types and descriptions

Quick Start Example

// app.component.ts
import { Component } from '@angular/core';
import { ChangedEventArgs } from '@syncfusion/ej2-calendars';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  // Single date selection
  selectedDate: Date = new Date();

  // Multiple date selection
  selectedDates: Date[] = [
    new Date(2026, 2, 15),
    new Date(2026, 2, 20),
    new Date(2026, 2, 25)
  ];

  // Calendar configuration
  minDate: Date = new Date(2020, 0, 1);
  maxDate: Date = new Date(2030, 11, 31);

  // Event handler
  onCalendarChange(args: ChangedEventArgs): void {
    console.log('Selected date:', args.value);
  }
}
<!-- app.component.html -->
<div style="padding: 20px; font-family: Arial, sans-serif;">
  <h2>Single Date Selection</h2>
  <ejs-calendar
    [(ngModel)]="selectedDate"
    [min]="minDate"
    [max]="maxDate"
    (change)="onCalendarChange($event)">
  </ejs-calendar>
  <p>Selected: {{ selectedDate | date:'medium' }}</p>

  <h2>Multiple Date Selection</h2>
  <ejs-calendar
    [(ngModel)]="selectedDates"
    [isMultiSelection]="true"
    [showTodayButton]="true">
  </ejs-calendar>
  <p>Selected dates: {{ selectedDates.length }} dates</p>
</div>
/* app.component.css */
@import '../node_modules/@syncfusion/ej2-base/styles/material3.css';
@import '../node_modules/@syncfusion/ej2-calendars/styles/material3.css';

:host ::ng-deep .e-calendar {
  margin: 20px 0;
}

:host ::ng-deep .e-selected {
  background-color: #3f51b5;
  color: white;
}

Common Patterns

Pattern 1: Custom Date Range (Two Calendar Instances)

The Calendar component does not have built-in range selection. Use two separate Calendar instances with min/max constraints and the change event to implement a custom date range picker:

export class AppComponent {
  startDate: Date = new Date();
  endDate: Date = new Date();

  onStartDateChange(args: ChangedEventArgs): void {
    this.startDate = args.value;
    // Ensure end date is not before start date
    if (this.endDate < this.startDate) {
      this.endDate = this.startDate;
    }
  }

  onEndDateChange(args: ChangedEventArgs): void {
    this.endDate = args.value;
  }

  getDaysInRange(): number {
    const timeDiff = this.endDate.getTime() - this.startDate.getTime();
    return Math.ceil(timeDiff / (1000 * 3600 * 24)) + 1;
  }
}
<!-- Two separate Calendar instances for range selection -->
<ejs-calendar [(ngModel)]="startDate" (change)="onStartDateChange($event)"></ejs-calendar>
<ejs-calendar [(ngModel)]="endDate" [min]="startDate" (change)="onEndDateChange($event)"></ejs-calendar>
Note: For a built-in range picker, use the DateRangePicker component instead.

Pattern 2: Calendar with Disabled Dates

Disable specific dates (weekends, holidays) using renderDayCell event:

export class AppComponent {
  holidays: Date[] = [
    new Date(2026, 11, 25), // Christmas
    new Date(2026, 0, 1),   // New Year
  ];

  onRenderDayCell(args: RenderDayCellEventArgs): void {
    // Disable weekends
    if (args.date.getDay() === 0 || args.date.getDay() === 6) {
      args.isDisabled = true;
    }

    // Disable holidays
    if (this.isHoliday(args.date)) {
      args.isDisabled = true;
    }
  }

  private isHoliday(date: Date): boolean {
    return this.holidays.some(holiday =>
      holiday.toDateString() === date.toDateString()
    );
  }
}

Pattern 3: Multi-Selection with Add/Remove

Manage multiple selected dates programmatically:

export class AppComponent {
  @ViewChild('calendar') calendarRef!: CalendarComponent;
  selectedDates: Date[] = [];

  addDateToSelection(date: Date): void {
    // Check if already selected
    if (!this.selectedDates.some(d =>
        d.toDateString() === date.toDateString())) {
      this.calendarRef.addDate(date);
    }
  }

  removeDateFromSelection(date: Date): void {
    this.calendarRef.removeDate(date);
  }

  clearAllDates(): void {
    if (this.selectedDates.length > 0) {
      this.calendarRef.removeDate(this.selectedDates);
    }
  }
}

Pattern 4: Year/Decade View Navigation

Implement navigation to different calendar views:

export class AppComponent {
  @ViewChild('calendar') calendarRef!: CalendarComponent;

  navigateToYear(year: number): void {
    const dateInYear = new Date(year, 0, 1);
    this.calendarRef.navigateTo('Year', dateInYear);
  }

  navigateToDecade(startYear: number): void {
    const dateInDecade = new Date(startYear, 0, 1);
    this.calendarRef.navigateTo('Decade', dateInDecade);
  }

  getCurrentView(): string {
    return this.calendarRef.currentView();
  }
}

Pattern 5: Reactive Form Integration

Integrate Calendar with Angular Reactive Forms:

export class AppComponent implements OnInit {
  dateForm: FormGroup;

  constructor(private fb: FormBuilder) {
    this.dateForm = this.fb.group({
      eventDate: [new Date(), Validators.required],
      eventName: ['', Validators.required]
    });
  }

  ngOnInit(): void {
    // Subscribe to date changes
    this.dateForm.get('eventDate')?.valueChanges.subscribe(date => {
      console.log('Event date changed:', date);
    });
  }

  submitForm(): void {
    if (this.dateForm.valid) {
      console.log('Form values:', this.dateForm.value);
    }
  }
}
<form [formGroup]="dateForm" (ngSubmit)="submitForm()">
  <div>
    <label for="eventDate">Event Date:</label>
    <ejs-calendar
      id="eventDate"
      formControlName="eventDate">
    </ejs-calendar>
  </div>

  <div>
    <label for="eventName">Event Name:</label>
    <input
      id="eventName"
      type="text"
      formControlName="eventName">
  </div>

  <button type="submit" [disabled]="!dateForm.valid">Submit</button>
</form>

Key Props Reference

PropTypeDescriptionExample
valueDateSingle selected date[value]="selectedDate"
valuesDate[]Multiple selected dates[values]="selectedDates"
isMultiSelectionbooleanEnable multiple date selection[isMultiSelection]="true"
minDateMinimum selectable date[min]="minDate"
maxDateMaximum selectable date[max]="maxDate"
startCalendarViewInitial view (Month/Year/Decade)start="Month"
depthCalendarViewMaximum view leveldepth="Month"
showTodayButtonbooleanDisplay today button[showTodayButton]="true"
localestringCulture/language codelocale="fr-FR"
dayHeaderFormatDayHeaderFormatsDay format (Short/Narrow/Abbreviated/Wide)dayHeaderFormat="Abbreviated"
weekNumberbooleanShow week numbers[weekNumber]="true"
weekRuleWeekRuleRule for first week of year (FirstDay/FirstFullWeek/FirstFourDayWeek)weekRule="FirstFourDayWeek"
firstDayOfWeeknumberFirst day (0=Sunday, 1=Monday)[firstDayOfWeek]="1"
cssClassstringCustom CSS classescssClass="custom-calendar"
enableRtlbooleanEnable RTL layout[enableRtl]="true"
enabledbooleanEnable/disable component[enabled]="true"
calendarModeCalendarTypeCalendar mode (Gregorian/Islamic)calendarMode="Islamic"
keyConfigs{[key: string]: string}Custom keyboard shortcuts[keyConfigs]="keyConfigs"
enablePersistencebooleanPersist state across page reloads[enablePersistence]="true"
serverTimezoneOffset`number \null`Server timezone offset for initial date processing[serverTimezoneOffset]="330"

Common Use Cases

Use Case 1: Event Booking System

  • User selects start and end dates for event
  • Disable past dates and weekends
  • Solution: Combine min/max dates with renderDayCell for disable logic
  • Reference: Calendar Views + Events & Methods

Use Case 2: Conference Schedule

  • Display multiple highlighted dates (conference days)
  • Allow year/decade navigation for planning
  • Solution: Use isMultiSelection, highlight dates, navigate between views
  • Reference: Date Selection + Calendar Navigation

Use Case 3: Accessible Booking Form

  • Calendar integrated in form with keyboard navigation
  • Screen reader compatible, WCAG 2.2 compliant
  • Solution: Use Reactive Forms + Calendar events
  • Reference: Accessibility & Globalization

Use Case 4: International Date Picker

  • Support multiple languages and date formats
  • Show RTL for Arabic, Hebrew
  • Solution: Use locale property and localization
  • Reference: Accessibility & Globalization

Use Case 5: Dynamic Date Constraints

  • Disable dates based on business logic (availability, holidays)
  • Update constraints based on user selections
  • Solution: Use renderDayCell with dynamic logic
  • Reference: Events & Methods + Calendar Views

Related Skills


Next Steps: Choose a reference guide above based on your specific needs, or explore the common patterns section for your use case.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.46%
按下载量换算77

Claude

30.23%
按下载量换算68

Cursor

16.64%
按下载量换算37

Gemini CLI

9.54%
按下载量换算21

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills