• Primary
    Surface
    PresetsAuraMaterialLaraNora
    Ripple
    RTL
    1. Philosophy
    2. Installation
    3. Configuration
    4. Playground
    1. Styled Mode
    2. Unstyled Mode
    3. Colors
    4. Tailwind CSS
    1. What's New
      1. Scheduler
      2. Text Editor
    2. Form
      1. AutoComplete
      2. CascadeSelect
      3. Checkbox
      4. ColorPicker
      5. DatePicker
      6. Editor
      7. FloatLabel
      8. IconField
      9. IftaLabel
      10. InputGroup
      11. InputMask
      12. InputNumber
      13. InputOtp
      14. InputText
      15. KeyFilter
      16. Knob
      17. Listbox
      18. MultiSelect
      19. Password
      20. RadioButton
      21. Rating
      22. Select
      23. SelectButton
      24. Slider
      25. Textarea
      26. ToggleButton
      27. ToggleSwitch
      28. TreeSelect
    3. Button
      1. Button
      2. SpeedDial
      3. SplitButton
    4. Data
      1. DataView
      2. OrderList
      3. OrgChart
      4. Paginator
      5. PickList
      6. Table
      7. Timeline
      8. Tree
      9. TreeTable
      10. VirtualScroller
    5. Panel
      1. Accordion
      2. Card
      3. Divider
      4. Fieldset
      5. Panel
      6. ScrollPanel
      7. Splitter
      8. Stepper
      9. Tabs
      10. Toolbar
    6. Overlay
      1. ConfirmDialog
      2. ConfirmPopup
      3. Dialog
      4. Drawer
      5. DynamicDialog
      6. Popover
      7. Tooltip
    7. File
      1. Upload
    8. Menu
      1. Breadcrumb
      2. ContextMenu
      3. Dock
      4. Menu
      5. Menubar
      6. MegaMenu
      7. PanelMenu
      8. TieredMenu
    9. Chart
      1. Chart.js
    10. Messages
      1. Message
      2. Toast
    11. Media
      1. Carousel
      2. Galleria
      3. Image
      4. ImageCompare
    12. Misc
      1. AnimateOnScroll
      2. AutoFocus
      3. Avatar
      4. Badge
      5. Bind
      6. BlockUI
      7. Chip
      8. ClassNames
      9. DragDrop
      10. Fluid
      11. FocusTrap
      12. Inplace
      13. MeterGroup
      14. ProgressBar
      15. ProgressSpinner
      16. Ripple
      17. ScrollTop
      18. Skeleton
      19. StyleClass
      20. Tag
      21. Terminal
    13. Utilities
      1. FilterService
      2. Overlay API
    1. Accessibility
    2. Animations
    3. PrimeFlex
    4. RTL
    1. bdSpark Icons
    2. Custom Icons
    1. Update SparkNG
  1. GitHub
  2. Discussions
  3. Primary
    Surface
    PresetsAuraMaterialLaraNora
    Ripple
    RTL

Scheduler

Scheduler provides enterprise event planning, responsive multi-view calendar grids, resource timelines, recurrence handling, and appointment booking.

Import #

Scheduler is available under the @bdspark/sparkng/scheduler entry point. You can import SchedulerModule for all scheduler components or import individual standalone components like SchedulerRoot, SchedulerHeader, and view scopes.

import { Component } from '@angular/core';
import { SchedulerModule } from '@bdspark/sparkng/scheduler';

@Component({
    standalone: true,
    imports: [SchedulerModule],
    template: `
        <p-scheduler-root [events]="events">
            <p-scheduler-header>
                <p-scheduler-navigation></p-scheduler-navigation>
                <p-scheduler-title></p-scheduler-title>
                <p-scheduler-view-selector></p-scheduler-view-selector>
            </p-scheduler-header>
            <p-scheduler-content>
                <p-scheduler-month></p-scheduler-month>
            </p-scheduler-content>
        </p-scheduler-root>
    `
})
export class MySchedulerComponent {
    events = [
        { id: 1, title: 'Sprint Review', start: new Date(), allDay: true }
    ];
}

Basic #

Scheduler receives events with the [events] property as a collection of SchedulerEvent objects. The compound component architecture provides modular headers, responsive view selectors, and rich date navigation in a balanced single-line toolbar.

October 2026

Sun
Mon
Tue
Wed
Thu
Fri
Sat
27Off
28
29
30
1
2
3Off
4Off
5
6
7
8
9
10Off
11Off
9:30 AMQ4 Product Roadmap Review
12
13
1:00 PMDesign System Workshop
14
10:00 AMTeam Sync & Retrospective
15
16
2:00 PMCustomer Advisory Board
17Off
All DayAll-Hands Company Meeting
18Off
19
20
21
22
23
24Off
25Off
26
27
28
29
30
31Off
import { Component, signal } from '@angular/core';
import { SchedulerModule } from '@bdspark/sparkng/scheduler';
import type { SchedulerEvent } from '@bdspark/sparkng/types/scheduler';

@Component({
    standalone: true,
    imports: [SchedulerModule],
    template: `
        <p-scheduler-root [events]="events()" [view]="'month'" [height]="650">
            <p-scheduler-header>
                <p-scheduler-navigation></p-scheduler-navigation>
                <p-scheduler-title></p-scheduler-title>
                <p-scheduler-view-selector></p-scheduler-view-selector>
            </p-scheduler-header>
            <p-scheduler-content>
                <p-scheduler-month></p-scheduler-month>
                <p-scheduler-week></p-scheduler-week>
                <p-scheduler-day></p-scheduler-day>
                <p-scheduler-agenda></p-scheduler-agenda>
                <p-scheduler-timeline></p-scheduler-timeline>
            </p-scheduler-content>
            <p-scheduler-quick-info></p-scheduler-quick-info>
            <p-scheduler-more-popover></p-scheduler-more-popover>
        </p-scheduler-root>
    `
})
export class BasicSchedulerDemo {
    events = signal<SchedulerEvent[]>([
        { id: 1, title: 'Q4 Product Roadmap', start: new Date(), end: new Date() }
    ]);
}

Views #

Scheduler supports standard view modes: Month, Week, Day, Agenda, and Timeline. Switch views in real time using the right-hand view switcher buttons in the single-line header toolbar or programmatically with [(view)].

Oct 11 – 17, 2026

Sun 11
Mon 12
Tue 13
Wed 14
Thu 15
Fri 16
Sat 17
00:00
01:00
02:00
03:00
04:00
05:00
06:00
07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00
Design Critique
10:00 AM – 11:30 AM
Infrastructure Deployment
2:00 PM – 4:00 PM
Security Compliance Audit
9:00 AM – 12:00 PM
import { Component, signal } from '@angular/core';
import { SchedulerModule } from '@bdspark/sparkng/scheduler';
import type { SchedulerResource, SchedulerEvent, SchedulerViewType } from '@bdspark/sparkng/types/scheduler';

@Component({
    standalone: true,
    imports: [SchedulerModule],
    template: `
        <p-scheduler-root [events]="events()" [resources]="resources()" [(view)]="activeView" [height]="650">
            <p-scheduler-header>
                <p-scheduler-navigation></p-scheduler-navigation>
                <p-scheduler-title></p-scheduler-title>
                <p-scheduler-view-selector></p-scheduler-view-selector>
            </p-scheduler-header>
            <p-scheduler-content>
                <p-scheduler-month></p-scheduler-month>
                <p-scheduler-week></p-scheduler-week>
                <p-scheduler-day></p-scheduler-day>
                <p-scheduler-agenda></p-scheduler-agenda>
                <p-scheduler-timeline></p-scheduler-timeline>
            </p-scheduler-content>
            <p-scheduler-quick-info></p-scheduler-quick-info>
            <p-scheduler-more-popover></p-scheduler-more-popover>
        </p-scheduler-root>
    `
})
export class ViewsSchedulerDemo {
    activeView = signal<SchedulerViewType>('week');
    resources = signal<SchedulerResource[]>([
        { id: '1', title: 'Frontend Team', eventColor: '#3b82f6' }
    ]);
    events = signal<SchedulerEvent[]>([
        { id: 101, title: 'Design Critique', start: new Date(), end: new Date() }
    ]);
}

Grouping #

Scheduler offers multi-dimensional grouping modes: Resources (hierarchical tree swimlanes and columns), Horizontal Resources, Date Grouping (dates as primary columns with resource sub-lanes), and Adaptive Grouping (automatically switching to a compact dropdown switcher when screen width drops below the [adaptiveBreakpoint]).

Tuesday, October 13, 2026

Alex Rivers (Frontend)
Elena Rostova (Backend)
Marcus Chen (DevOps)
00:00
01:00
02:00
03:00
04:00
05:00
06:00
07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00
UI Kit Accessibility Audit
9:30 AM – 11:30 AM
GraphQL Gateway Optimization
1:00 PM – 3:00 PM
Kubernetes Cluster Rolling Upgrade
11:00 AM – 1:30 PM
import { Component, signal } from '@angular/core';
import { SchedulerModule } from '@bdspark/sparkng/scheduler';
import type { SchedulerResource, SchedulerEvent, SchedulerViewType } from '@bdspark/sparkng/types/scheduler';

@Component({
    standalone: true,
    imports: [SchedulerModule],
    template: `
        <p-scheduler-root [resources]="resources()" [events]="events()" [(view)]="activeView" [adaptiveBreakpoint]="768">
            <p-scheduler-header>
                <p-scheduler-navigation></p-scheduler-navigation>
                <p-scheduler-title></p-scheduler-title>
            </p-scheduler-header>
            <p-scheduler-content>
                <p-scheduler-resource-day></p-scheduler-resource-day>
                <p-scheduler-resource-timeline></p-scheduler-resource-timeline>
                <p-scheduler-date-day></p-scheduler-date-day>
            </p-scheduler-content>
        </p-scheduler-root>
    `
})
export class GroupingSchedulerDemo {
    activeView = signal<SchedulerViewType>('resourceDay');
    resources = signal<SchedulerResource[]>([
        { id: 'dev-1', title: 'Alex Rivers', eventColor: '#3b82f6' },
        { id: 'dev-2', title: 'Elena Rostova', eventColor: '#10b981' }
    ]);
}

Scheduling #

Scheduling features include Date Selection (click-and-drag cell selection emitting (dateSelect)), Add & Edit Events (fast event generation and updating), and Controlled State with two-way binding on [(date)] and [(view)] alongside programmatic methods like next(), prev(), and today().

Selected Range: Click or drag on any slot

Oct 11 – 17, 2026

Sun 11
Mon 12
Tue 13
Wed 14
Thu 15
Fri 16
Sat 17
00:00
01:00
02:00
03:00
04:00
05:00
06:00
07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00
Executive Sync
10:00 AM – 11:00 AM
Release Deployment Window
2:00 PM – 4:00 PM
import { Component, signal } from '@angular/core';
import { SchedulerModule } from '@bdspark/sparkng/scheduler';
import type { DateClickPayload, DateSelectPayload, SchedulerEvent } from '@bdspark/sparkng/types/scheduler';

@Component({
    standalone: true,
    imports: [SchedulerModule],
    template: `
        <p-scheduler-root
            #scheduler="pScheduler"
            [events]="events()"
            [(view)]="activeView"
            [(date)]="activeDate"
            (dateClick)="onDateClick($event)"
            (dateSelect)="onDateSelect($event)"
        >
            <p-scheduler-header>
                <p-scheduler-navigation></p-scheduler-navigation>
                <p-scheduler-title></p-scheduler-title>
                <p-scheduler-view-selector></p-scheduler-view-selector>
            </p-scheduler-header>
            <p-scheduler-content>
                <p-scheduler-month></p-scheduler-month>
                <p-scheduler-week></p-scheduler-week>
                <p-scheduler-day></p-scheduler-day>
            </p-scheduler-content>
            <p-scheduler-quick-info></p-scheduler-quick-info>
        </p-scheduler-root>
    `
})
export class SchedulingSchedulerDemo {
    activeView = signal('week');
    activeDate = signal(new Date());
    events = signal<SchedulerEvent[]>([]);

    onDateClick(e: DateClickPayload): void {}
    onDateSelect(e: DateSelectPayload): void {}
}

Availability #

Manage schedule constraints with availability rules: Business Hours (highlighting operational windows), Working Days (dimming weekends or days off with hatched patterns), Blocked Intervals (locking out reservations with lock badges), and Appointment Slots (interactive bookable slots with capacity indicators).

Oct 11 – 17, 2026

Sun 11
Mon 12
Tue 13
Wed 14
Thu 15
Fri 16
Sat 17
00:00
01:00
02:00
03:00
04:00
05:00
06:00
07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00
🔒Lunch Break & Maintenance
Free Strategy Call$Free
Consultation Session
10:00 AM – 11:00 AM
🔒Facility Sanitization
1-on-1 Architecture Review$150
import { Component, signal } from '@angular/core';
import { SchedulerModule } from '@bdspark/sparkng/scheduler';
import type { AppointmentSlot, BlockedInterval, SlotBookPayload } from '@bdspark/sparkng/types/scheduler';

@Component({
    standalone: true,
    imports: [SchedulerModule],
    template: `
        <p-scheduler-root
            [businessHours]="businessHours"
            [workingDays]="workingDays"
            [blockedIntervals]="blockedIntervals()"
            [appointmentSlots]="appointmentSlots()"
            [view]="'week'"
            (slotBook)="onSlotBook($event)"
        >
            <p-scheduler-header>
                <p-scheduler-navigation></p-scheduler-navigation>
                <p-scheduler-title></p-scheduler-title>
                <p-scheduler-view-selector></p-scheduler-view-selector>
            </p-scheduler-header>
            <p-scheduler-content>
                <p-scheduler-week></p-scheduler-week>
                <p-scheduler-day></p-scheduler-day>
            </p-scheduler-content>
        </p-scheduler-root>
    `
})
export class AvailabilitySchedulerDemo {
    businessHours = { daysOfWeek: [1,2,3,4,5], startTime: '09:00', endTime: '17:00' };
    workingDays = [1, 2, 3, 4, 5];

    blockedIntervals = signal<BlockedInterval[]>([
        { start: new Date(...), end: new Date(...), title: 'Lunch Break' }
    ]);

    appointmentSlots = signal<AppointmentSlot[]>([
        { id: '1', start: new Date(...), end: new Date(...), status: 'available', title: 'Consultation', price: 150 }
    ]);

    onSlotBook(e: SlotBookPayload): void {}
}

Events & Recurrence #

Configure rich event planning capabilities: Metadata & Categories, All-Day & Multi-Day Spanning Events, Recurring Events (using RFC 5545 RRULE syntax), Custom Styling & Color Badges, Quick Info dialogs, and More Popover overlays for high-density dates.

October 2026

Sun
Mon
Tue
Wed
Thu
Fri
Sat
27Off
28
29
30
1
9:00 AMDaily Core Standup
2
9:00 AMDaily Core Standup
3Off
9:00 AMDaily Core Standup
4Off
9:00 AMDaily Core Standup
5
9:00 AMDaily Core Standup
6
9:00 AMDaily Core Standup
7
9:00 AMDaily Core Standup
8
9:00 AMDaily Core Standup
9
9:00 AMDaily Core Standup
10Off
9:00 AMDaily Core Standup
11Off
9:00 AMDaily Core Standup
12
All DayAnnual Developer Summit (Spanning 4 Days)
9:00 AMDaily Core Standup
13
9:00 AMDaily Core Standup
2:00 PMDesign System Typography Refresh
14
9:00 AMDaily Core Standup
15
9:00 AMDaily Core Standup
16
9:00 AMDaily Core Standup
17Off
9:00 AMDaily Core Standup
18Off
9:00 AMDaily Core Standup
19
9:00 AMDaily Core Standup
20
9:00 AMDaily Core Standup
21
9:00 AMDaily Core Standup
22
9:00 AMDaily Core Standup
23
9:00 AMDaily Core Standup
24Off
9:00 AMDaily Core Standup
25Off
9:00 AMDaily Core Standup
26
9:00 AMDaily Core Standup
27
9:00 AMDaily Core Standup
28
9:00 AMDaily Core Standup
29
9:00 AMDaily Core Standup
30
9:00 AMDaily Core Standup
31Off
9:00 AMDaily Core Standup
import { Component, signal } from '@angular/core';
import { SchedulerModule } from '@bdspark/sparkng/scheduler';
import type { EventCategory, SchedulerEvent } from '@bdspark/sparkng/types/scheduler';

@Component({
    standalone: true,
    imports: [SchedulerModule],
    template: `
        <p-scheduler-root
            [events]="events()"
            [categories]="categories()"
            [(activeCategoryIds)]="activeCategoryIds"
            [view]="'month'"
            [maxEventsVisible]="2"
        >
            <p-scheduler-header>
                <p-scheduler-navigation></p-scheduler-navigation>
                <p-scheduler-title></p-scheduler-title>
                <p-scheduler-view-selector></p-scheduler-view-selector>
            </p-scheduler-header>
            <p-scheduler-category-legend></p-scheduler-category-legend>
            <p-scheduler-content>
                <p-scheduler-month></p-scheduler-month>
                <p-scheduler-week></p-scheduler-week>
                <p-scheduler-agenda></p-scheduler-agenda>
            </p-scheduler-content>
            <p-scheduler-quick-info></p-scheduler-quick-info>
            <p-scheduler-more-popover></p-scheduler-more-popover>
        </p-scheduler-root>
    `
})
export class EventsSchedulerDemo {
    categories = signal<EventCategory[]>([
        { id: 'cat-eng', name: 'Engineering', color: '#3b82f6' },
        { id: 'cat-des', name: 'Design & UX', color: '#ec4899' }
    ]);
    activeCategoryIds = signal<(string | number)[]>([]);
    events = signal<SchedulerEvent[]>([
        { id: 1, title: 'Multi-Day Summit', start: new Date(), end: new Date(), allDay: true },
        { id: 2, title: 'Daily Standup', start: new Date(), rrule: 'FREQ=DAILY;INTERVAL=1' }
    ]);
}

Interaction & Shortcuts #

Experience interactive desktop & touch workflows: Drag and Drop (relocate events between time slots or days), Event Resizing (drag top/bottom handles to adjust duration), Multi-Event Selection (hold Ctrl/Cmd to select multiple items), Keyboard Navigation, and Context Menu (right-click on events or open slots for quick operations).

Oct 11 – 17, 2026

Sun 11
Mon 12
Tue 13
Wed 14
Thu 15
Fri 16
Sat 17
00:00
01:00
02:00
03:00
04:00
05:00
06:00
07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00
Drag me to another slot or day!
9:00 AM – 10:30 AM
Resize me with top/bottom handles!
11:00 AM – 1:00 PM
Ctrl + Click me to select multiple!
2:00 PM – 4:00 PM
import { Component, signal } from '@angular/core';
import { SchedulerModule } from '@bdspark/sparkng/scheduler';
import type { EventDropPayload, EventResizePayload, SchedulerEvent } from '@bdspark/sparkng/types/scheduler';

@Component({
    standalone: true,
    imports: [SchedulerModule],
    template: `
        <p-scheduler-root
            [events]="events()"
            [editable]="true"
            [eventDurationEditable]="true"
            [view]="'week'"
            (eventDrop)="onEventDrop($event)"
            (eventResize)="onEventResize($event)"
        >
            <p-scheduler-header>
                <p-scheduler-navigation></p-scheduler-navigation>
                <p-scheduler-title></p-scheduler-title>
                <p-scheduler-view-selector></p-scheduler-view-selector>
            </p-scheduler-header>
            <p-scheduler-selection-toolbar></p-scheduler-selection-toolbar>
            <p-scheduler-content>
                <p-scheduler-week></p-scheduler-week>
                <p-scheduler-day></p-scheduler-day>
            </p-scheduler-content>
            <p-scheduler-quick-info></p-scheduler-quick-info>
            <p-scheduler-context-menu></p-scheduler-context-menu>
        </p-scheduler-root>
    `
})
export class InteractionSchedulerDemo {
    events = signal<SchedulerEvent[]>([
        { id: 1, title: 'Draggable Event', start: new Date(), end: new Date() }
    ]);

    onEventDrop(e: EventDropPayload): void {}
    onEventResize(e: EventResizePayload): void {}
}

Import / Export #

Scheduler comes with built-in data interchange facilities: export your event schedule directly to industry-standard iCalendar (.ics) files (compatible with Google Calendar, Apple Calendar, and Outlook) or to JSON format.

October 2026

Sun
Mon
Tue
Wed
Thu
Fri
Sat
27Off
28
29
30
1
2
3Off
4Off
5
6
7
8
9
10Off
11Off
12
13
10:00 AMGlobal Tech Keynote
14
2:00 PMCloud Security Roundtable
15
16
17Off
18Off
19
20
21
22
23
24Off
25Off
26
27
28
29
30
31Off
import { Component, signal, ViewChild } from '@angular/core';
import { SchedulerModule, SchedulerRoot } from '@bdspark/sparkng/scheduler';
import type { SchedulerEvent } from '@bdspark/sparkng/types/scheduler';

@Component({
    standalone: true,
    imports: [SchedulerModule],
    template: `
        <button (click)="exportIcs()">Download .ics</button>
        <button (click)="exportJson()">Export JSON</button>

        <p-scheduler-root #scheduler="pScheduler" [events]="events()" [view]="'month'">
            <p-scheduler-header>
                <p-scheduler-navigation></p-scheduler-navigation>
                <p-scheduler-title></p-scheduler-title>
            </p-scheduler-header>
            <p-scheduler-content>
                <p-scheduler-month></p-scheduler-month>
            </p-scheduler-content>
        </p-scheduler-root>
    `
})
export class ImportExportSchedulerDemo {
    @ViewChild('scheduler') scheduler!: SchedulerRoot;
    events = signal<SchedulerEvent[]>([]);

    exportIcs(): void {
        const ics = this.scheduler.exportToIcs();
        // Trigger browser file download
    }

    exportJson(): void {
        const json = this.scheduler.exportToJson();
    }
}

Resource Timeline #

Manage appointments, rooms, and personnel assignments simultaneously by binding [resources] alongside [events]. In timeline and resource views, events are partitioned automatically into individual resource lanes.

October 2026

Resource / Task
Sun11
Mon12
Tue13
Wed14
Thu15
Fri16
Sat17
Sun18
Mon19
Tue20
Wed21
Thu22
Fri23
Sat24
Conference Room A
Q4 Budget Review
Innovation Lab
AI Hackathon
Auditorium
Town Hall Livestream
Executive Boardroom
import { Component, signal } from '@angular/core';
import { SchedulerModule } from '@bdspark/sparkng/scheduler';
import type { SchedulerEvent, SchedulerResource } from '@bdspark/sparkng/types/scheduler';

@Component({
    standalone: true,
    imports: [SchedulerModule],
    template: `
        <p-scheduler-root [resources]="resources()" [events]="events()" [view]="'timeline'">
            <p-scheduler-header>
                <p-scheduler-navigation></p-scheduler-navigation>
                <p-scheduler-title></p-scheduler-title>
                <p-scheduler-view-selector></p-scheduler-view-selector>
            </p-scheduler-header>
            <p-scheduler-content>
                <p-scheduler-timeline></p-scheduler-timeline>
            </p-scheduler-content>
        </p-scheduler-root>
    `
})
export class ResourceSchedulerDemo {
    resources = signal<SchedulerResource[]>([
        { id: 'conf-a', title: 'Conference Room A', color: '#3b82f6' },
        { id: 'conf-b', title: 'Innovation Lab', color: '#10b981' }
    ]);
    events = signal<SchedulerEvent[]>([
        { id: 1, title: 'Budget Review', start: new Date(), end: new Date(), resourceId: 'conf-a' }
    ]);
}

Quick Info #

The <p-scheduler-quick-info> component renders an accessible overlay dialog when an event is clicked. It presents details including date intervals, descriptions, and action triggers, allowing quick edits and inspections without full-page navigation.

October 2026

Sun
Mon
Tue
Wed
Thu
Fri
Sat
27Off
28
29
30
1
2
3Off
4Off
5
6
7
8
9
10Off
11Off
12
13
11:00 AMClient Onboarding Kickoff
14
3:00 PMProduct Strategy Sync
15
16
17Off
18Off
19
20
21
22
23
24Off
25Off
26
27
28
29
30
31Off
import { Component, signal } from '@angular/core';
import { SchedulerModule } from '@bdspark/sparkng/scheduler';
import type { SchedulerEvent } from '@bdspark/sparkng/types/scheduler';

@Component({
    standalone: true,
    imports: [SchedulerModule],
    template: `
        <p-scheduler-root [events]="events()" [view]="'month'">
            <p-scheduler-header>
                <p-scheduler-navigation></p-scheduler-navigation>
                <p-scheduler-title></p-scheduler-title>
                <p-scheduler-view-selector></p-scheduler-view-selector>
            </p-scheduler-header>
            <p-scheduler-content>
                <p-scheduler-month></p-scheduler-month>
            </p-scheduler-content>
            <p-scheduler-quick-info></p-scheduler-quick-info>
        </p-scheduler-root>
    `
})
export class QuickInfoSchedulerDemo {
    events = signal<SchedulerEvent[]>([
        {
            id: 1,
            title: 'Client Onboarding',
            start: new Date(),
            end: new Date(),
            description: 'Discuss project requirements and deliverables.'
        }
    ]);
}

Accessibility #

Screen Reader

Scheduler incorporates the role="application" ARIA pattern with accessible landmark titles and labels. Day headers, calendar cells, and event cards are annotated with aria-label providing spoken date intervals and event titles for screen readers.

Keyboard Support

KeyFunction
TabMoves focus through navigation controls, view switcher buttons, date cells, and scheduled event items.
Arrow KeysNavigates between adjacent calendar days and time slots in active view grids.
Enter / SpaceSelects the focused date cell or opens the quick info dialog for the focused event card.
EscapeDismisses open popovers, context menus, and quick info modals.

API Reference #

Generated reference for Angular Scheduler inputs, outputs, methods, definitions, and types as specified in the PrimeUI Pro / SparkNG API specifications.

Import

Inputs (0)

Defines the input properties and configurations of the Scheduler component.

NameTypeDefaultDescription

Outputs (0)

Defines event emitters and callback payloads of the Scheduler component.

NameParametersDescription

Methods (0)

Defines public methods callable on the Scheduler component reference.

NameParametersReturnDescription

Interfaces (0)

Defines custom interfaces and data models used by the Scheduler module.

InterfaceDescription

Types (0)

Defines custom union and alias types used by the Scheduler module.

TypeValueDescription
SparkNG 22.0.5 by bdSparkPhilosophyFAQContributeGitHubDiscussionsMIT License