From 1c1ec9b828fee70d65fd1c2a6ff3954129816fe3 Mon Sep 17 00:00:00 2001 From: Yuvaraj Date: Tue, 24 Jun 2025 16:53:51 +0530 Subject: [PATCH] FLUT-964937-[others][flutter]: Done the required modifications for the Calendar UG improvements --- Flutter/DateRangePicker/headers.md | 2 +- Flutter/calendar/accessibility.md | 8 +- Flutter/calendar/appointment-resizing.md | 2 +- Flutter/calendar/appointments.md | 57 +++++++------- Flutter/calendar/builders.md | 34 ++++---- Flutter/calendar/callbacks.md | 73 +++++++++--------- Flutter/calendar/date-navigations.md | 18 ++--- Flutter/calendar/drag-drop.md | 2 +- Flutter/calendar/getting-started.md | 8 +- Flutter/calendar/headers.md | 16 ++-- .../monthview/show_leading_trailing_dates.png | Bin 25661 -> 47016 bytes Flutter/calendar/load-more.md | 8 +- Flutter/calendar/month-view.md | 34 ++++---- Flutter/calendar/overview.md | 2 +- Flutter/calendar/resource-view.md | 6 +- Flutter/calendar/right-to-left.md | 4 +- Flutter/calendar/schedule-view.md | 14 ++-- Flutter/calendar/timeslot-views.md | 40 +++++----- Flutter/calendar/timezone.md | 6 +- 19 files changed, 168 insertions(+), 166 deletions(-) diff --git a/Flutter/DateRangePicker/headers.md b/Flutter/DateRangePicker/headers.md index 9ba90115f..903d7aab7 100644 --- a/Flutter/DateRangePicker/headers.md +++ b/Flutter/DateRangePicker/headers.md @@ -49,7 +49,7 @@ Widget build(BuildContext context) { fontStyle: FontStyle.normal, fontSize: 25, letterSpacing: 5, - color: Color(0xFFff5eaea), + color: Color(0xFFffeaea), )), ), ); diff --git a/Flutter/calendar/accessibility.md b/Flutter/calendar/accessibility.md index 6239cebab..b5abc3747 100644 --- a/Flutter/calendar/accessibility.md +++ b/Flutter/calendar/accessibility.md @@ -11,7 +11,7 @@ documentation: ug ## Screen reader support -The `SfCalendar` can easily be accessed by screen readers. Please find the following table to get spoken feedback about the inner element contents of the screen. +The [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). can easily be accessed by screen readers. Please find the following table to get spoken feedback about the inner element contents of the screen. ### Month view @@ -54,7 +54,7 @@ The `SfCalendar` can easily be accessed by screen readers. Please find the follo ## Sufficient contrast -The `SfCalendar` [theming](https://help.syncfusion.com/flutter/themes) support offers a consistent and standardized look, as well as the ability to set the colors for all UI elements. +The [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). [theming](https://help.syncfusion.com/flutter/themes) support offers a consistent and standardized look, as well as the ability to set the colors for all UI elements. The following APIs allow you to customize the colors of the following elements. * [todayHighlightColor](https://help.syncfusion.com/flutter/calendar/getting-started#today-highlight-color) @@ -70,7 +70,7 @@ The following APIs allow you to customize the colors of the following elements. ## Large fonts -The `SfCalendar` font size can be adjusted automatically based on device settings and the font size scaled based on the `MediaQueryData.textScaleFactor`. And also it allows to change the font size of all UI elements in the calendar. +The [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). font size can be adjusted automatically based on device settings and the font size scaled based on the `MediaQueryData.textScaleFactor`. And also it allows to change the font size of all UI elements in the calendar. * [appointmentTextStyle](https://help.syncfusion.com/flutter/calendar/appointments#appearance-customization) * [timeTextStyle](https://help.syncfusion.com/flutter/calendar/timeslot-views#time-text-appearance) * [dateTextStyle](https://help.syncfusion.com/flutter/calendar/schedule-view#day-header-customization) @@ -79,7 +79,7 @@ The `SfCalendar` font size can be adjusted automatically based on device setting ## Keyboard navigation -The following keyboard interactions are supported by the `SfCalendar`. +The following keyboard interactions are supported by the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). | Key | Description | diff --git a/Flutter/calendar/appointment-resizing.md b/Flutter/calendar/appointment-resizing.md index b1d432a5b..c3ce6602f 100644 --- a/Flutter/calendar/appointment-resizing.md +++ b/Flutter/calendar/appointment-resizing.md @@ -42,7 +42,7 @@ Widget build(BuildContext context) { ## onAppointmentResizeStart -[onAppointmentResizeStart](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/onAppointmentResizeStart.html) callback is called whenever the appointment starts to resizing in SfCalendar. The [AppointmentResizeStartDetails]() arguments contains the resizing appointment, and resource details. +[onAppointmentResizeStart](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/onAppointmentResizeStart.html) callback is called whenever the appointment starts to resizing in SfCalendar. The [AppointmentResizeStartDetails](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AppointmentResizeStartDetails-class.html) arguments contains the resizing appointment, and resource details. * [appointment](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AppointmentResizeStartDetails/appointment.html) - Get the resizing appointment details. * [resource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AppointmentResizeStartDetails/resource.html) - Get the resource details. diff --git a/Flutter/calendar/appointments.md b/Flutter/calendar/appointments.md index 763fceb95..be2613018 100644 --- a/Flutter/calendar/appointments.md +++ b/Flutter/calendar/appointments.md @@ -53,21 +53,21 @@ class _AppointmentDataSource extends CalendarDataSource { ## Calendar data source and mapping -`CalendarDataSource` is an abstract class used to set the appointment datasource for calendar and has properties to map the custom appointments to the calendar `Appointment`. Calendar supports full data binding to any type of List source. Specify the corresponding property override method to map the properties in the underlying data source to the calendar appointments in `CalendarDataSource`. +[CalendarDataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource-class.html) is an abstract class used to set the appointment datasource for calendar and has properties to map the custom appointments to the calendar `Appointment`. Calendar supports full data binding to any type of List source. Specify the corresponding property override method to map the properties in the underlying data source to the calendar appointments in [CalendarDataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource-class.html). | Property Name | Description | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| -| [getStartTime](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getStartTime.html) | Maps the property name of custom class, which is equivalent for `startTime` of `Appointment`. | -| [getEndTime](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getEndTime.html) | Maps the property name of custom class, which is equivalent for `endTime` of `Appointment`. | -| [getStartTimeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getStartTimeZone.html) | Maps the property name of custom class, which is equivalent for `startTimeZone` of `Appointment`. | -| [getEndTimeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getEndTimeZone.html) | Maps the property name of custom class, which is equivalent for `endTimeZone` of `Appointment`. | -| [getSubject](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getSubject.html) | Maps the property name of custom class, which is equivalent for `subject` of `Appointment`. | -| [getColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getColor.html) | Maps the property name of custom class, which is equivalent for `color` of `Appointment`. | -| [isAllDay](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/isAllDay.html) | Maps the property name of custom class, which is equivalent for `isAllDay` of `Appointment`. | -| [getRecurrenceRule](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getRecurrenceRule.html) | Maps the property name of custom class, which is equivalent for `recurrenceRule` of `Appointment`. | -| [getNotes](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getNotes.html) | Maps the property name of custom class which is equivalent for `notes` of `Appointment`. | +| [getStartTime](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getStartTime.html) | Maps the property name of custom class, which is equivalent for [startTime](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/startTime.html) of `Appointment`. | +| [getEndTime](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getEndTime.html) | Maps the property name of custom class, which is equivalent for [endTime](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/endTime.html) of `Appointment`. | +| [getStartTimeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getStartTimeZone.html) | Maps the property name of custom class, which is equivalent for [startTimeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/startTimeZone.html) of `Appointment`. | +| [getEndTimeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getEndTimeZone.html) | Maps the property name of custom class, which is equivalent for [endTimeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/endTimeZone.html) of `Appointment`. | +| [getSubject](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getSubject.html) | Maps the property name of custom class, which is equivalent for [subject](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/subject.html) of `Appointment`. | +| [getColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getColor.html) | Maps the property name of custom class, which is equivalent for [color](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/color.html) of `Appointment`. | +| [isAllDay](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/isAllDay.html) | Maps the property name of custom class, which is equivalent for [isAllDay](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/isAllDay.html) of `Appointment`. | +| [getRecurrenceRule](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getRecurrenceRule.html) | Maps the property name of custom class, which is equivalent for [recurrenceRule](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceRule.html) of `Appointment`. | +| [getNotes](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getNotes.html) | Maps the property name of custom class which is equivalent for [notes](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/notes.html)` of `Appointment`. | | [getLocation](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getLocation.html) | Maps the property name of custom class, which is equivalent for `location` of `Appointment`. | -| [getRecurrenceExceptionDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getRecurrenceExceptionDates.html) | Maps the property name of custom class, which is equivalent for `recurrenceExceptionDates` of `Appointment`. | +| [getRecurrenceExceptionDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getRecurrenceExceptionDates.html) | Maps the property name of custom class, which is equivalent for [recurrenceExceptionDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceExceptionDates.html) of `Appointment`. | >**NOTE** * Custom appointment class should contain two date time fields as mandatory. @@ -119,7 +119,7 @@ class MeetingDataSource extends CalendarDataSource { {% endhighlight %} {% endtabs %} -You must call the notifier of the `CalendarDataSource` when the datasource collection is modified to reflect the changes on UI that is an appointment added to the datasource or removed from the datasource. +You must call the notifier of the [CalendarDataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource-class.html) when the datasource collection is modified to reflect the changes on UI that is an appointment added to the datasource or removed from the datasource. {% tabs %} {% highlight Dart %} @@ -273,7 +273,7 @@ class Meeting { {% endhighlight %} {% endtabs %} -You can map those properties of `Meeting` class with our calendar widget by using the `CalendarDataSource` override methods properties. +You can map those properties of `Meeting` class with our calendar widget by using the [CalendarDataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource-class.html) override methods properties. {% tabs %} {% highlight dart hl_lines="1 2 3 4 6 7 8 9 11 12 13 14 16 17 18 19 21 22 23 24 26 27 28 29 31 32 33 34 36 37 38 39 40" %} @@ -322,7 +322,7 @@ class MeetingDataSource extends CalendarDataSource { {% endhighlight %} {% endtabs %} -You can schedule meetings for a day by setting `From` and `To` of Meeting class. Create meetings of type `List` and assign those appointments collection Meetings to the [appointments](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/appointments.html) property of `CalendarDataSource`. +You can schedule meetings for a day by setting `From` and `To` of Meeting class. Create meetings of type `List` and assign those appointments collection Meetings to the [appointments](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/appointments.html) property of [CalendarDataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource-class.html). {% tabs %} {% highlight dart hl_lines="8 15 16 17 18 19 20 21 22 24 25" %} @@ -358,7 +358,7 @@ MeetingDataSource _getCalendarDataSource() { ## Get the business object data -The event data can be achieved in the custom business object type by overriding the [convertAppointmentToObject()](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/convertAppointmentToObject.html) method from the `CalendarDataSource`. +The event data can be achieved in the custom business object type by overriding the [convertAppointmentToObject()](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/convertAppointmentToObject.html) method from the [CalendarDataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource-class.html). {% tabs %} {% highlight dart hl_lines=" 26 27 28 29 30 31 32 33 34 35" %} @@ -473,7 +473,7 @@ Recurring appointment on a daily, weekly, monthly, or yearly interval. Recurring #### Recurrence rule -The `recurrenceRule` is a string value (RRULE) that contains the details of the recurrence appointments such as repeat type - daily/weekly/monthly/yearly, how many times it needs to be repeated, the interval duration, also the time period to render the appointment, and more. The `recurrenceRule` has the following properties and based on this property value, the recurrence appointments are rendered in the SfCalendar widget with its respective time period. +The [recurrenceRule](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceRule.html) is a string value (RRULE) that contains the details of the recurrence appointments such as repeat type - daily/weekly/monthly/yearly, how many times it needs to be repeated, the interval duration, also the time period to render the appointment, and more. The [recurrenceRule](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceRule.html) has the following properties and based on this property value, the recurrence appointments are rendered in the SfCalendar widget with its respective time period. | PropertyName | Purpose | |--------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| @@ -488,7 +488,7 @@ The `recurrenceRule` is a string value (RRULE) that contains the details of the #### Adding recurrence appointment -Calendar appointment recurrenceRule is used to populate the required recurring appointment collection in a specific pattern. RRULE can be directly set to the `recurrenceRule` property of `Appointment`. +Calendar appointment recurrenceRule is used to populate the required recurring appointment collection in a specific pattern. RRULE can be directly set to the [recurrenceRule](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceRule.html) property of [Appointment](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment-class.html). {% tabs %} {% highlight dart hl_lines="23" %} @@ -548,7 +548,6 @@ To create recurring appointments on the last day of the month, use BYMONTHDAY=-1 appointmentDisplayMode: MonthAppointmentDisplayMode.appointment), )); } -} DataSource _getCalendarDataSource() { final List appointments = []; @@ -574,7 +573,7 @@ class DataSource extends CalendarDataSource { #### Creating custom recurrence appointment -For creating custom recurrence appointment, you need to create a custom class `Meeting` with mandatory fields `from`, `to`, and `recurrenceRule`. +For creating custom recurrence appointment, you need to create a custom class `Meeting` with mandatory fields `from`, `to`, and [recurrenceRule](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceRule.html). {% tabs %} {% highlight dart hl_lines="8 15" %} @@ -599,7 +598,7 @@ class Meeting { {% endhighlight %} {% endtabs %} -You can map those properties of `Meeting` class with our calendar widget by using `CalendarDataSource`. +You can map those properties of `Meeting` class with our calendar widget by using [CalendarDataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource-class.html). {% tabs %} {% highlight dart hl_lines="31 32 33 34" %} @@ -643,7 +642,7 @@ class MeetingDataSource extends CalendarDataSource { {% endhighlight %} {% endtabs %} -You can schedule recurring meetings for daily, weekly, monthly, or yearly interval by setting `recurrenceRule` of `Meeting` class. Create meetings of type List and assign those appointments collection Meetings to the `appointments` property of `CalendarDataSource`. +You can schedule recurring meetings for daily, weekly, monthly, or yearly interval by setting [recurrenceRule](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceRule.html) of `Meeting` class. Create meetings of type List and assign those appointments collection Meetings to the [appointments](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/appointments.html) property of [CalendarDataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource-class.html). {% tabs %} {% highlight Dart %} @@ -672,7 +671,7 @@ MeetingDataSource _getCalendarDataSource() { isAllDay: false, recurrenceRule: 'FREQ=WEEKLY;BYDAY=MO,WE,FR;INTERVAL=1;COUNT=10')); return MeetingDataSource(meetings); -}} +} class MeetingDataSource extends CalendarDataSource { MeetingDataSource(List source){ @@ -766,7 +765,7 @@ List dateCollection = SfCalendar.getRecurrenceDateTimeCollection( The following occurrence dates can be retrieved from the given RRULE: var date0 = 3/15/2019; var date1 = 3/16/2019; -var date2 = 3/16/2019; +var date2 = 3/17/2019; ## Recurrence pattern exceptions @@ -778,7 +777,7 @@ You can delete any occurrence appointment, which exception from the recurrence p #### Recurrence exception appointment -You can also change any occurrence appointment, which exception from recurrence pattern appointment by adding the recurrence exception appointment to the calendar `dataSource`. +You can also change any occurrence appointment, which exception from recurrence pattern appointment by adding the recurrence exception appointment to the calendar [dataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/dataSource.html). #### Create recurrence exceptions for calendar appointment @@ -786,7 +785,7 @@ You can add the recurrence exception appointments and recurrence exception dates #### Delete occurrence from recurrence pattern appointment or adding exception dates to recurrence pattern appointment -You can delete any of occurrence, which is an exception from the recurrence pattern appointment by using the `recurrenceExceptionDates` property of `Appointment`. The deleted occurrence date will be considered as recurrence exception dates. +You can delete any of occurrence, which is an exception from the recurrence pattern appointment by using the [recurrenceExceptionDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceExceptionDates.html) property of `Appointment`. The deleted occurrence date will be considered as recurrence exception dates. {% tabs %} {% highlight dart hl_lines="25" %} @@ -836,12 +835,12 @@ class _AppointmentDataSource extends CalendarDataSource { #### Create recurrence exceptions for custom appointment -You can add the recurrence exception appointments and recurrence exception dates to the CustomAppointment or remove them from CustomAppointment, you can create a custom class `Meeting` with mandatory field `RecurrenceExceptionDates`. +You can add the recurrence exception appointments and recurrence exception dates to the CustomAppointment or remove them from CustomAppointment, you can create a custom class `Meeting` with mandatory field [recurrenceExceptionDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceExceptionDates.html). #### Delete occurrence from custom recurrence pattern appointment or adding exception dates to custom recurrence pattern appointment -You can delete any occurrence, which is an exception from the recurrence pattern appointment by using the `getRecurrenceExceptionDates` override method of `CalendarDataSource`, which is used to map the exception dates to the calendar recurrence appointment. The deleted occurrence date will be considered as recurrence exception dates. -To add the exception dates in the recurrence series of custom appointment, add the `recurrenceExceptionDates` property to custom class Meeting. +You can delete any occurrence, which is an exception from the recurrence pattern appointment by using the [getRecurrenceExceptionDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/getRecurrenceExceptionDates.html) override method of [CalendarDataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource-class.html), which is used to map the exception dates to the calendar recurrence appointment. The deleted occurrence date will be considered as recurrence exception dates. +To add the exception dates in the recurrence series of custom appointment, add the [recurrenceExceptionDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceExceptionDates.html) property to custom class Meeting. {% tabs %} {% highlight dart hl_lines="18 26 66 67 68 69" %} @@ -944,7 +943,7 @@ class Meeting { #### Add exception appointment to the recurrence series -Add an exception appointment that is changed or modified occurrence of the recurrence pattern appointment to the `dateSource` of the `SfCalendar`. To add a changed occurrence, ensure to set the [RecurrenceId](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceId.html) of that occurrence, and add the date of that occurrence to the [RecurrenceExceptionDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceExceptionDates.html) of recurrence pattern appointment. The `RecurrenceId` of the changed occurrence should hold the exact recurrence pattern appointment [Id](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/id.html). We can get the type of appointment from the [appointmentType](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/appointmentType.html) property. +Add an exception appointment that is changed or modified occurrence of the recurrence pattern appointment to the [dateSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/dataSource.html) of the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). To add a changed occurrence, ensure to set the [RecurrenceId](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceId.html) of that occurrence, and add the date of that occurrence to the [RecurrenceExceptionDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/recurrenceExceptionDates.html) of recurrence pattern appointment. The `RecurrenceId` of the changed occurrence should hold the exact recurrence pattern appointment [Id](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/id.html). We can get the type of appointment from the [appointmentType](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/appointmentType.html) property. {% tabs %} {% highlight dart hl_lines="16 25 27 29 30 31 32 33 34 35 37" %} diff --git a/Flutter/calendar/builders.md b/Flutter/calendar/builders.md index 5e7de19b7..3b77c23aa 100644 --- a/Flutter/calendar/builders.md +++ b/Flutter/calendar/builders.md @@ -19,10 +19,10 @@ The [MonthCellBuilder](https://pub.dev/documentation/syncfusion_flutter_calendar [MonthCellDetails](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellDetails-class.html) - returns the details of the month cell. -* `date` - returns the month cell date. -* `appointments` - returns the month cell appointments. -* `visibleDates` - returns the current view visible dates. -* `bounds` - returns the month cell bounds. +* [date](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellDetails/date.html) - returns the month cell date. +* [appointments](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellDetails/appointments.html) - returns the month cell appointments. +* [visibleDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellDetails/visibleDates.html) - returns the current view visible dates. +* [bounds](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellDetails/bounds.html) - returns the month cell bounds. {% tabs %} @@ -69,12 +69,12 @@ Widget build(BuildContext context) { ## Schedule view month header builder -You can design your custom view and assign this view to the month header of a schedule view in the calendar by returning an appropriate widget using the [scheduleViewMonthHeaderBuilder](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/scheduleViewMonthHeaderBuilder.html) in the `SfCalendar`. +You can design your custom view and assign this view to the month header of a schedule view in the calendar by returning an appropriate widget using the [scheduleViewMonthHeaderBuilder](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/scheduleViewMonthHeaderBuilder.html) in the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). [ScheduleViewMonthHeaderDetails](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewMonthHeaderDetails-class.html) - returns the required details of the schedule view month header. -* `date` - returns the header date. -* `bounds` - returns the header bounds. +* [date](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewMonthHeaderDetails/date.html) - returns the header date. +* [bounds](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewMonthHeaderDetails/bounds.html) - returns the header bounds. {% tabs %} {% highlight dart hl_lines="8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30" %} @@ -120,15 +120,15 @@ Widget build(BuildContext context) { ![Schedule view header builder](images/builder/schedule_view_month_header_builder.png) ## Appointment builder -The [CalendarAppointmentBuilder](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarAppointmentBuilder.html) allows you to design your custom view and assign the view to the appointment UI of the calendar by returning an appropriate widget in the [appointmentBuilder](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/appointmentBuilder.html) of `SfCalendar`. +The [CalendarAppointmentBuilder](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarAppointmentBuilder.html) allows you to design your custom view and assign the view to the appointment UI of the calendar by returning an appropriate widget in the [appointmentBuilder](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/appointmentBuilder.html) of [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). [CalendarAppointmentDetails](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarAppointmentDetails-class.html): Returns the details of the appointment view. -* `date`: The date associate with the appointment view. -* `appointments`: List of appointments associated with the appointment view. -*`bound`: Returns the appointment view bounds. -* `isMoreAppointmentRegion`: Determines whether the widget replaces the more appointment region. +* [date](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarAppointmentDetails/date.html): The date associate with the appointment view. +* [appointments](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarAppointmentDetails/appointments.html): List of appointments associated with the appointment view. +* [bounds](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarAppointmentDetails/bounds.html): Returns the appointment view bounds. +* [isMoreAppointmentRegion](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarAppointmentDetails/isMoreAppointmentRegion.html): Determines whether the widget replaces the more appointment region. {% tabs %} {% highlight dart hl_lines="11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106" %} @@ -258,9 +258,9 @@ The [TimeRegionBuilder](https://pub.dev/documentation/syncfusion_flutter_calenda [TimeRegionDetails](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegionDetails-class.html): Returns the details of the time region view. -* `date`: The date associate with the time region view. -* `bound`: Returns the time region view bounds. -* `region`: The Region detail associated with the time region view. +* [date](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegionDetails/date.html): The date associate with the time region view. +* [bounds](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegionDetails/bounds.html): Returns the time region view bounds. +* [region](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegionDetails/region.html): The Region detail associated with the time region view. {% tabs %} {% highlight dart hl_lines="22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44" %} @@ -323,8 +323,8 @@ The [ResourceViewHeaderBuilder](https://pub.dev/documentation/syncfusion_flutter [ResourceViewHeaderDetails](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ResourceViewHeaderDetails-class.html) - returns the required details of the resource view header builder. -* `bound`: returns the resource view header bound. -* `resource`: returns the display name, color, id and image. +* [bounds](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ResourceViewHeaderDetails/bounds.html): returns the resource view header bounds. +* [resource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ResourceViewHeaderDetails/resource.html): returns the display name, color, id and image. {% tabs %} diff --git a/Flutter/calendar/callbacks.md b/Flutter/calendar/callbacks.md index 76945d11b..a682abb7f 100644 --- a/Flutter/calendar/callbacks.md +++ b/Flutter/calendar/callbacks.md @@ -14,7 +14,7 @@ Calendar supports the [ViewChangedCallback](https://pub.dev/documentation/syncfu The [onViewChanged](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/onViewChanged.html) callback triggers when the current view of calendar changed, that is view swiped to previous/next view, calendar view switched to another calendar view. -* `visibleDates` - returns the current view visible dates collection. +* [visibleDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ViewChangedDetails/visibleDates.html) - returns the current view visible dates collection. {% tabs %} {% highlight dart hl_lines="8 9 10" %} @@ -45,9 +45,10 @@ Widget build(BuildContext context) { The [onTap](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/onTap.html) callback triggers whenever the calendar is tapped. -* `date` - returns the selected date. -* `appointments` - returns the selected appointments. -* `targetElement` - returns the element tapped. +* [date](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/date.html) - returns the selected date. +* [appointments](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/appointments.html) - returns the selected appointments. +* [targetElement](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/targetElement.html) - returns the element tapped. +* [resource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/resource.html) - returns the tapped resource. {% tabs %} {% highlight dart hl_lines="8 9 10 11 12" %} @@ -75,56 +76,58 @@ Widget build(BuildContext context) { >**NOTE** * For recurrence appointment, the tap details will always return as `Appointment`, even for the custom business object. -* The `onTap` and `onLongPress` callbacks are not applicable for pop-ups like allowedViews and date picker in the calendar header. +* The [onTap](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/onTap.html) and [onLongPress](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/onLongPress.html) callbacks are not applicable for pop-ups like allowedViews and date picker in the calendar header. ## Calendar details callback Return calendar details based on the given offset passed through argument by using the [getCalendarDetailsAtOffset](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController/getCalendarDetailsAtOffset.html) method. -* `date` - returns the date based on the given offset. -* `appointments` - returns the appointments based on the given offset. -* `targetElement` - returns the calendar element based on the given offset. -* `resource` - returns the resource based on the given offset. +* [date](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/date.html) - returns the date based on the given offset. +* [appointments](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/appointments.html) - returns the appointments based on the given offset. +* [targetElement](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/targetElement.html) - returns the calendar element based on the given offset. +* [resource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/resource.html) - returns the resource based on the given offset. {% tabs %} {% highlight dart hl_lines="6 7 8 9 10 11 12 13 14 15 16" %} @override - Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: MouseRegion( - onHover: (PointerHoverEvent event) { - CalendarDetails? details = _calendarController - .getCalendarDetailsAtOffset!(event.localPosition); - if (details!.targetElement == CalendarElement.appointment) { - dynamic appointments = details.appointments; - final String subject = - details.appointments![0].subject.toString(); - final dynamic startTime = details.appointments![0].startTime; - final dynamic endTime = details.appointments![0].endTime; - } - }, - child: SfCalendar( - view: CalendarView.month, - controller: _calendarController, - dataSource: _getCalendarDataSource(), - ))), - ); - } +Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + body: MouseRegion( + onHover: (PointerHoverEvent event) { + CalendarDetails? details = _calendarController + .getCalendarDetailsAtOffset!(event.localPosition); + if (details!.targetElement == CalendarElement.appointment) { + dynamic appointments = details.appointments; + final String subject = + details.appointments![0].subject.toString(); + final dynamic startTime = details.appointments![0].startTime; + final dynamic endTime = details.appointments![0].endTime; + } + }, + child: SfCalendar( + view: CalendarView.month, + controller: _calendarController, + dataSource: _getCalendarDataSource(), + ), + ), + ), + ); } {% endhighlight %} {% endtabs %} ## Long press callback -The [onLongPress](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/onLongPress.html) callback is called, whenever the `SfCalendar` elements are long pressed on view. +The [onLongPress](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/onLongPress.html) callback is called, whenever the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). elements are long pressed on view. The long-pressed date, appointments, and element details when the long-press action performed on element available in the [CalendarLongPressDetails](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarLongPressDetails-class.html). -* `date` - returns the long-pressed date. -* `appointments` - returns the long-pressed appointments. -* `targetElement` - returns the long-pressed calendar element. +* [date](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/date.html) - returns the long-pressed date. +* [appointments](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/appointments.html) - returns the long-pressed appointments. +* [targetElement](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/targetElement.html) - returns the long-pressed calendar element. +* [resource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarTouchDetails/resource.html) - returns the long-pressed calendar resource. {% tabs %} {% highlight dart hl_lines="8 9 10 11 12" %} diff --git a/Flutter/calendar/date-navigations.md b/Flutter/calendar/date-navigations.md index 7ec84bd99..b36d1b7f2 100644 --- a/Flutter/calendar/date-navigations.md +++ b/Flutter/calendar/date-navigations.md @@ -10,10 +10,10 @@ documentation: ug # Date Navigations in Flutter Event Calendar (SfCalendar) ## Range for visible dates -Visible dates can be restricted between certain range of dates, using [minDate](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/minDate.html) and [maxDate](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/maxDate.html) properties in `SfCalendar`. It is applicable in all the schedule views. +Visible dates can be restricted between certain range of dates, using [minDate](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/minDate.html) and [maxDate](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/maxDate.html) properties in [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). It is applicable in all the schedule views. ### Minimum display date -`minDate` will restrict date navigations features of backward, also cannot swipe the control using touch gesture beyond the min date range. +[minDate](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/minDate.html) will restrict date navigations features of backward, also cannot swipe the control using touch gesture beyond the min date range. {% tabs %} {% highlight dart hl_lines="6" %} @@ -32,7 +32,7 @@ Widget build(BuildContext context) { {% endtabs %} ### Maximum display date -`maxDate` will restrict date navigations features of forward, and also cannot swipe the control using touch gesture beyond the max date range. +[maxDate](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/maxDate.html) will restrict date navigations features of forward, and also cannot swipe the control using touch gesture beyond the max date range. {% tabs %} {% highlight dart hl_lines="6" %} @@ -90,7 +90,7 @@ class MyAppState extends State { {% endtabs %} ## Programmatic date selection -You can programmatically select the dates in calendar widget by [selectedDate](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController/selectedDate.html) property of `CalendarController`. +You can programmatically select the dates in calendar widget by [selectedDate](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController/selectedDate.html) property of [CalendarController](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController-class.html). {% tabs %} {% highlight dart hl_lines="2 6 16" %} @@ -121,10 +121,10 @@ class MyAppState extends State { {% endtabs %} ## Programmatically change to adjacent dates -By default, the date can be navigated to next and previous views using touch gesture, by swiping the control from right to left and left to right direction. The view can be also changed programmatically using the [forward](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController/forward.html) and [backward](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController/backward.html) methods available in `CalendarController`. +By default, the date can be navigated to next and previous views using touch gesture, by swiping the control from right to left and left to right direction. The view can be also changed programmatically using the [forward](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController/forward.html) and [backward](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController/backward.html) methods available in [CalendarController](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController-class.html). ### Forward -You can use the `forward` method of `CalendarController` for viewing the next immediate visible dates in the `SfCalendar`. It will move to next month if the calendar view is month, similarly it will move to next week for week view and next day for day view. +You can use the [forward](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController/forward.html) method of [CalendarController](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController-class.html) for viewing the next immediate visible dates in the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). It will move to next month if the calendar view is month, similarly it will move to next week for week view and next day for day view. {% tabs %} {% highlight dart hl_lines="2 13 20" %} @@ -159,7 +159,7 @@ class MyAppState extends State { {% endtabs %} ### Backward -You can use the `backward` method of `controller` for viewing the previous immediate visible dates in the `SfCalendar`. It will move to previous month if the calendar view is month, similarly it will move to previous week for week view and previous day for day view. +You can use the [backward](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarController/backward.html) method of `controller` for viewing the previous immediate visible dates in the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). It will move to previous month if the calendar view is month, similarly it will move to previous week for week view and previous day for day view. {% tabs %} {% highlight dart hl_lines="2 14 21" %} @@ -219,7 +219,7 @@ To know more about how to customize the Date Picker's appearance in the Flutter ## Show today button -You can enable the today button by using the [showTodayButton] property in the calendar, which displays the today button in the header view. It allows you to quickly navigate from the current view to the today's view. +You can enable the today button by using the [showTodayButton](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/showTodayButton.html) property in the calendar, which displays the today button in the header view. It allows you to quickly navigate from the current view to the today's view. {% tabs %} {% highlight dart hl_lines="5" %} @@ -256,7 +256,7 @@ Widget build(BuildContext context) { ![Allow view navigation](images/date-navigation/allow_view_navigation.gif) ## Allowed views -You can quickly navigate to the different calendar views by using the [allowedViews](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/allowedViews.html) property in the `SfCalendar`. The views set to this property will display as a view button in the calendar header view. This UI will be responsive as showing more icons in the mobile view and will be updated based on the browser size change. +You can quickly navigate to the different calendar views by using the [allowedViews](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/allowedViews.html) property in the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). The views set to this property will display as a view button in the calendar header view. This UI will be responsive as showing more icons in the mobile view and will be updated based on the browser size change. {% tabs %} {% highlight dart hl_lines="5 6 7 8 9 10 11 12" %} diff --git a/Flutter/calendar/drag-drop.md b/Flutter/calendar/drag-drop.md index d22d1b913..89c2c0f60 100644 --- a/Flutter/calendar/drag-drop.md +++ b/Flutter/calendar/drag-drop.md @@ -155,7 +155,7 @@ void dragEnd(AppointmentDragEndDetails appointmentDragEndDetails) { ## Disabling navigation when dragging appointment -You can restrict the navigation to the next/previous view when the dragging appointment reaches the start/end point of the current view in calendar by using the [allowNavigation](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DragAndDropSettings/allowNavigation.html) property of `DragAndDropSettings`. Default value of `allowNavigation` property is true. +You can restrict the navigation to the next/previous view when the dragging appointment reaches the start/end point of the current view in calendar by using the [allowNavigation](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DragAndDropSettings/allowNavigation.html) property of [DragAndDropSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DragAndDropSettings-class.html). Default value of [allowNavigation](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DragAndDropSettings/allowNavigation.html) property is true. {% tabs %} {% highlight dart hl_lines="10" %} diff --git a/Flutter/calendar/getting-started.md b/Flutter/calendar/getting-started.md index cabd80782..1f8ba99e0 100644 --- a/Flutter/calendar/getting-started.md +++ b/Flutter/calendar/getting-started.md @@ -78,7 +78,7 @@ Widget build(BuildContext context) { ## Change different calendar views -The SfCalendar widget provides seven different types of views to display dates. It can be assigned to the widget constructor by using the [view](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/view.html) property. By default, the widget is assigned day view. The current date will be displayed initially for all the calendar views. +The SfCalendar widget provides nine different types of views to display dates. It can be assigned to the widget constructor by using the [view](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/view.html) property. By default, the widget is assigned day view. The current date will be displayed initially for all the calendar views. {% tabs %} {% highlight dart hl_lines="5" %} @@ -356,7 +356,7 @@ Widget build(BuildContext context) { ![Background color](images/getting-started/calendar-background-color.png) ## Navigation arrow -Using the [showNavigationArrow](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/showNavigationArrow.html) property of the `SfCalendar`, you can navigate to the next or previous views of the calendar without swiping. +Using the [showNavigationArrow](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/showNavigationArrow.html) property of the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html), you can navigate to the next or previous views of the calendar without swiping. {% tabs %} {% highlight dart hl_lines="6" %} @@ -378,7 +378,7 @@ Widget build(BuildContext context) { >**NOTE** -* The `showNavigationArrow` property is not applicable when the `view` is set to `CalendarView.schedule`. +* The [showNavigationArrow](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/showNavigationArrow.html) property is not applicable when the [view](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/view.html) is set to [CalendarView.schedule](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarView.html). ## Cell end padding You can customize the padding of appointment view end to make touch position for timeslot and month cell by using the [cellEndPadding](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/cellEndPadding.html) property in the calendar, which allows you to tap the calendar cell when the cell has appointments. @@ -430,7 +430,7 @@ Widget build(BuildContext context) { ## Week number -Display the Week number of the year in all views except schedule view of the `SfCalendar` by setting the [showWeekNumber](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/showWeekNumber.html) property as true and by default it is false. Week numbers will be displayed based on the ISO standard. +Display the Week number of the year in all views except schedule view of the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). by setting the [showWeekNumber](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/showWeekNumber.html) property as true and by default it is false. Week numbers will be displayed based on the ISO standard. {% tabs %} {% highlight dart hl_lines="7" %} diff --git a/Flutter/calendar/headers.md b/Flutter/calendar/headers.md index 3aa91a2f7..eeae69ad6 100644 --- a/Flutter/calendar/headers.md +++ b/Flutter/calendar/headers.md @@ -17,7 +17,7 @@ You can customize the header of the calendar using the [headerStyle](https://pub ### Customize header height in calendar -You can customize the height for header in calendar using the `headerHeight` property in calendar. +You can customize the height for header in calendar using the [headerHeight](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/headerHeight.html) property in calendar. {% tabs %} {% highlight dart hl_lines="6" %} @@ -38,7 +38,7 @@ Widget build(BuildContext context) { ![Customize header height in calendar](images/headers/header-height.png) ### Header appearance -You can style the header using the [calendarHeaderStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarHeaderStyle-class.html) in calendar. You can change the background color, textStyle, and textAlignement using the properties such as [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarHeaderStyle/backgroundColor.html), [textStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarHeaderStyle/textStyle.html), and [textAlign](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarHeaderStyle/textAlign.html) of header using the `headerStyle` property in calendar. +You can style the header using the [calendarHeaderStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarHeaderStyle-class.html) in calendar. You can change the background color, textStyle, and textAlignement using the properties such as [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarHeaderStyle/backgroundColor.html), [textStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarHeaderStyle/textStyle.html), and [textAlign](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarHeaderStyle/textAlign.html) of header using the [headerStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/headerStyle.html) property in calendar. {% tabs %} {% highlight dart hl_lines="6 7 8 9 10 11 12 13 14" %} @@ -55,7 +55,7 @@ Widget build(BuildContext context) { fontSize: 25, fontStyle: FontStyle.normal, letterSpacing: 5, - color: Color(0xFFff5eaea), + color: Color(0xFFffeaea), fontWeight: FontWeight.w500)), ), ); @@ -68,7 +68,7 @@ Widget build(BuildContext context) { ### Header date format -You can customize the header date format by using the [headerDateFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/headerDateFormat.html) property of the `SfCalendar`. The `headerDateFormat` can be specified with a pattern string. +You can customize the header date format by using the [headerDateFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/headerDateFormat.html) property of the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). The [headerDateFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/headerDateFormat.html) can be specified with a pattern string. {% tabs %} {% highlight dart hl_lines="7" %} @@ -96,7 +96,7 @@ You can customize the view header of the calendar using the [viewHeaderStyle](ht ### Customize view header height in calendar. -You can customize the height for view header in calendar using the `viewHeaderHeight` property in calendar. +You can customize the height for view header in calendar using the [viewHeaderHeight](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/viewHeaderHeight.html) property in calendar. {% tabs %} {% highlight dart hl_lines="6" %} @@ -118,7 +118,7 @@ Widget build(BuildContext context) { ### View header appearance -You can style the header using the [viewHeaderStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ViewHeaderStyle-class.html) properties in calendar. You can change the background color, dayTextStyle, and dateTextStyle using properties such as [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ViewHeaderStyle/backgroundColor.html), [dayTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ViewHeaderStyle/dayTextStyle.html) and [dateTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ViewHeaderStyle/dateTextStyle.html) of view header using the `viewHeaderStyle` property in calendar. +You can style the header using the [viewHeaderStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ViewHeaderStyle-class.html) properties in calendar. You can change the background color, dayTextStyle, and dateTextStyle using properties such as [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ViewHeaderStyle/backgroundColor.html), [dayTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ViewHeaderStyle/dayTextStyle.html) and [dateTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ViewHeaderStyle/dateTextStyle.html) of view header using the [viewHeaderStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/viewHeaderStyle.html) property in calendar. {% tabs %} {% highlight dart hl_lines="6 7 8 9 10 11 12 13 14 15 16" %} @@ -132,11 +132,11 @@ Widget build(BuildContext context) { backgroundColor: Colors.grey, dayTextStyle: TextStyle( fontSize: 18, - color: Color(0xFFff5eaea), + color: Color(0xFFffeaea), fontWeight: FontWeight.w500), dateTextStyle: TextStyle( fontSize: 22, - color: Color(0xFFff5eaea), + color: Color(0xFFffeaea), letterSpacing: 2, fontWeight: FontWeight.w500)), ), diff --git a/Flutter/calendar/images/monthview/show_leading_trailing_dates.png b/Flutter/calendar/images/monthview/show_leading_trailing_dates.png index 8cb4362ad2ea91d031e0e6fa3e8f7f842f20030e..863665ce2a61349aeacc0bf5557c6583a3003135 100644 GIT binary patch literal 47016 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

!WCL!Fq$c8+>iW#I;XA+k1>2yr^^-ml=&z?v`UC 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 -* This callback will be called after the `onViewChanged` callback. -* The widget returned from this builder will be removed from the SfCalendar when the `CalendarDataSource.notifyListeners` is called. +* This callback will be called after the [onViewChanged](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/onViewChanged.html) callback. +* The widget returned from this builder will be removed from the SfCalendar when the [CalendarDataSource.notifyListeners](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSourceChangeNotifier/notifyListeners.html) is called. You can get the complete load more sample from this [link](https://github.com/SyncfusionExamples/lazily-loading-events-flutter-calendar). ## Load appointments -Update the appointments on-demand, when the loading indicator is displaying in the calendar by using the [handleLoadMore](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/handleLoadMore.html) method in the `CalendarDataSource,` which allows adding the appointments to the data source, update the data source, and notify the listener to update the appointment on view. +Update the appointments on-demand, when the loading indicator is displaying in the calendar by using the [handleLoadMore](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource/handleLoadMore.html) method in the [CalendarDataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource-class.html), which allows adding the appointments to the data source, update the data source, and notify the listener to update the appointment on view. {% tabs %} {% highlight dart hl_lines="7 8 9 19 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32" %} diff --git a/Flutter/calendar/month-view.md b/Flutter/calendar/month-view.md index 886429498..caaa5c832 100644 --- a/Flutter/calendar/month-view.md +++ b/Flutter/calendar/month-view.md @@ -38,11 +38,11 @@ Widget build(BuildContext context) { ## Month appointment display mode -You can handle the calendar month view appointment display by using the [appointmentDisplayMode](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/appointmentDisplayMode.html) property of `MonthViewSettings`. By default, `appointmentDisplayMode` is set to Indicator, using the `appointmentDisplayMode` you can set the month view appointments display as follows. +You can handle the calendar month view appointment display by using the [appointmentDisplayMode](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/appointmentDisplayMode.html) property of [MonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings-class.html). By default, `appointmentDisplayMode` is set to Indicator, using the `appointmentDisplayMode` you can set the month view appointments display as follows. -* `indicator` - appointment will be denoted as the circle. -* `appointment` - appointment subject will be displayed in month cell. -* `none` - appointment will not be displayed. +* [indicator](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthAppointmentDisplayMode.html) - appointment will be denoted as the circle. +* [appointment](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthAppointmentDisplayMode.html) - appointment subject will be displayed in month cell. +* [none](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthAppointmentDisplayMode.html) - appointment will not be displayed. {% tabs %} {% highlight dart hl_lines="8 9" %} @@ -69,7 +69,7 @@ Widget build(BuildContext context) { ## Agenda view height -You can customize the month agenda view height from calendar by using the [agendaViewHeight](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/agendaViewHeight.html) property of `MonthViewSettings`. By default, the agenda view will occupy the 30% height of the calendar height. +You can customize the month agenda view height from calendar by using the [agendaViewHeight](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/agendaViewHeight.html) property of [MonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings-class.html). By default, the agenda view will occupy the 30% height of the calendar height. {% tabs %} {% highlight dart hl_lines="10" %} @@ -98,7 +98,7 @@ Widget build(BuildContext context) { ## Agenda item height -You can customize the height of an appointment in agenda view by using the [agendaItemHeight](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/agendaItemHeight.html) property of `MonthViewSettings`. +You can customize the height of an appointment in agenda view by using the [agendaItemHeight](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/agendaItemHeight.html) property of [MonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings-class.html). {% tabs %} {% highlight dart hl_lines="10" %} @@ -127,7 +127,7 @@ Widget build(BuildContext context) { ## Appointment display count -You can customize the number of appointments displayed in month cell using the [appointmentDisplayCount](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/appointmentDisplayCount.html) property of `MonthViewSettings` in SfCalendar, by default Appointment display count is 4. +You can customize the number of appointments displayed in month cell using the [appointmentDisplayCount](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/appointmentDisplayCount.html) property of [MonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings-class.html) in SfCalendar, by default Appointment display count is 3. {% tabs %} {% highlight dart hl_lines="8" %} @@ -152,13 +152,13 @@ Widget build(BuildContext context) { ![Appointment display count](images/monthview/appointment-indicator-count.png) >**NOTE** -* If appointments count is lesser than the `appointmentDisplayCount` value in the particular day, then according to the number of appointments available, appointment will be displayed in the month cell. +* If appointments count is lesser than the [appointmentDisplayCount](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/appointmentDisplayCount.html) value in the particular day, then according to the number of appointments available, appointment will be displayed in the month cell. * Appointment indicator will be shown on the basis of date meetings, usable month cell size and indicator count. For eg, if the month cell size is less (available for only 4 dots) and the indicator count is 10, then 4 indicators will be shown. ## Month navigation direction -MonthView of calendar can be navigated in both horizontal and vertical direction. You can change the direction of navigation using the [navigationDirection](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/navigationDirection.html) property of `MonthViewSettings`, by default Month navigation direction is Horizontal. +MonthView of calendar can be navigated in both horizontal and vertical direction. You can change the direction of navigation using the [navigationDirection](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/navigationDirection.html) property of [MonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings-class.html), by default Month navigation direction is Horizontal. {% tabs %} {% highlight dart hl_lines="8 9" %} @@ -183,7 +183,7 @@ Widget build(BuildContext context) { ## Blackout dates -You can disable the interaction for a certain date in the month view and timeline month view by using the [blackoutDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/blackoutDates.html) property of `SfCalendar`. Using this, you can restrict user interaction for specific dates. +You can disable the interaction for a certain date in the month view and timeline month view by using the [blackoutDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/blackoutDates.html) property of [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). Using this, you can restrict user interaction for specific dates. You can customize the text style of blackout dates by using the [blackoutDatesTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/blackoutDatesTextStyle.html) property from the `SfCalendar.` {% tabs %} @@ -213,7 +213,7 @@ Widget build(BuildContext context) { ![Blackout dates](images/monthview/blackout-dates.png) ## Hide leading and trailing dates -You can hide the previous and next month dates of a calendar month view by using the [showTrailingAndLeadingDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/showTrailingAndLeadingDates.html) property in the `MonthViewSettings` of the calendar. +You can hide the previous and next month dates of a calendar month view by using the [showTrailingAndLeadingDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/showTrailingAndLeadingDates.html) property in the [MonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings-class.html) of the calendar. {% tabs %} {% highlight dart hl_lines="6" %} @@ -235,7 +235,7 @@ Widget build(BuildContext context) { ## Customize number of month rows -The number of weeks in the month view can be changed by setting the [numberOfWeeksInView](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/numberOfWeeksInView.html) property in `MonthViewSettings`. By default, `numberOfWeeksInView` starts from current week, and this can be modified using the `initialDisplayDate` property of calendar, the two weeks calendar can be achieved by setting the `numberOfWeeksInView` property with the value 2. +The number of weeks in the month view can be changed by setting the [numberOfWeeksInView](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/numberOfWeeksInView.html) property in [MonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings-class.html). By default, `numberOfWeeksInView` starts from current week, and this can be modified using the [initialDisplayDate](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/initialDisplayDate.html) property of calendar, the two weeks calendar can be achieved by setting the `numberOfWeeksInView` property with the value 2. {% tabs %} {% highlight dart hl_lines="8" %} @@ -260,12 +260,12 @@ Widget build(BuildContext context) { ![Customize number of month rows](images/monthview/number-of-month-rows.png) >**NOTE** -* Week number ranges from 1 to 6. If lesser or greater than these range is considered, `numberOfWeeksInView` will be displayed as 6. -* Dynamically changing `numberOfWeeksInView` shows the first row of month view dates. It can be handled using the `initialDisplayDate` property of calendar. +* Week number ranges from 1 to 6. If lesser or greater than these range is considered, [numberOfWeeksInView](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/numberOfWeeksInView.html) will be displayed as 6. +* Dynamically changing [numberOfWeeksInView](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/numberOfWeeksInView.html) shows the first row of month view dates. It can be handled using the [initialDisplayDate](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/initialDisplayDate.html) property of calendar. ## View header DayFormat -You can customize the day format of SfCalendar ViewHeader by using the [dayFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/dayFormat.html) property of `MonthViewSettings`. +You can customize the day format of SfCalendar ViewHeader by using the [dayFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/dayFormat.html) property of [MonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings-class.html). {% tabs %} {% highlight dart hl_lines="8" %} @@ -291,7 +291,7 @@ Widget build(BuildContext context) { ## Agenda view appearance -You can customize the agenda view appointment and the selected date text style by using the [agendaStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/agendaStyle.html) property of `MonthViewSettings`. Agenda view [appointmentTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AgendaStyle/appointmentTextStyle.html), [dayTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AgendaStyle/dayTextStyle.html), [dateTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AgendaStyle/dateTextStyle.html), and [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AgendaStyle/backgroundColor.html) can be customized using [AgendaStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AgendaStyle-class.html) properties. +You can customize the agenda view appointment and the selected date text style by using the [agendaStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/agendaStyle.html) property of [MonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings-class.html). Agenda view [appointmentTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AgendaStyle/appointmentTextStyle.html), [dayTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AgendaStyle/dayTextStyle.html), [dateTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AgendaStyle/dateTextStyle.html), and [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AgendaStyle/backgroundColor.html) can be customized using [AgendaStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/AgendaStyle-class.html) properties. {% tabs %} {% highlight dart hl_lines="11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27" %} @@ -336,7 +336,7 @@ Widget build(BuildContext context) { ## Month cell appearance -By using the [monthCellStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/monthCellStyle.html) property of `MonthViewSettings`, you can customize the month properties such as [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/backgroundColor.html), [todayBackgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/todayBackgroundColor.html), [trailingDatesBackgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/trailingDatesBackgroundColor.html), [leadingDatesBackgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/leadingDatesBackgroundColor.html), [textStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/textStyle.html), [todayTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/todayTextStyle.html), [trailingDatesTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/trailingDatesTextStyle.html), and [leadingDatesTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/leadingDatesTextStyle.html) from [MonthCellStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle-class.html). +By using the [monthCellStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings/monthCellStyle.html) property of [MonthViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthViewSettings-class.html), you can customize the month properties such as [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/backgroundColor.html), [todayBackgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/todayBackgroundColor.html), [trailingDatesBackgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/trailingDatesBackgroundColor.html), [leadingDatesBackgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/leadingDatesBackgroundColor.html), [textStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/textStyle.html), [todayTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/todayTextStyle.html), [trailingDatesTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/trailingDatesTextStyle.html), and [leadingDatesTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle/leadingDatesTextStyle.html) from [MonthCellStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthCellStyle-class.html). {% tabs %} {% highlight dart hl_lines="9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28" %} diff --git a/Flutter/calendar/overview.md b/Flutter/calendar/overview.md index 336a79e54..18964ea34 100644 --- a/Flutter/calendar/overview.md +++ b/Flutter/calendar/overview.md @@ -15,7 +15,7 @@ The Syncfusion® Flutter Calendar library is written natively in D ## Key features -* **Multiple calendar views**: A wide range of built-in view modes are available: day, week, workweek, month, schedule, timeline day, timeline week, timeline workweek. The control allows you to conveniently customize every view with unique, view-specific options. +* **Multiple calendar views**: A wide range of built-in view modes are available: day, week, workweek, month, schedule, timeline day, timeline week, timeline workweek and timeline month. The control allows you to conveniently customize every view with unique, view-specific options. ![Multiple calendar views](images/overview/multiple_calendar_views.png) * **Appointments**: Appointments contain information on events scheduled at specific times. In addition to default appointments, users can use their own collections to connect a business entity to an appointment by mapping their fields, such as start time, end time, subject, notes, and recurrence. diff --git a/Flutter/calendar/resource-view.md b/Flutter/calendar/resource-view.md index 5c46e7110..c4503555d 100644 --- a/Flutter/calendar/resource-view.md +++ b/Flutter/calendar/resource-view.md @@ -106,7 +106,7 @@ List _specialTimeRegions = []; {% endtabs %} ## Visible resource count -You can customize the number of visible resources in the current view using the [visibleResourceCount](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ResourceViewSettings/visibleResourceCount.html) property of [resourceViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/resourceViewSettings.html) in the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). By default, the value of this property is set to ‘-1.’ +You can customize the number of visible resources in the current view using the [visibleResourceCount](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ResourceViewSettings/visibleResourceCount.html) property of [ResourceViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/resourceViewSettings.html) in the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). By default, the value of this property is set to ‘-1.’ {% tabs %} {% highlight dart hl_lines="8" %} @@ -153,7 +153,7 @@ Widget build(BuildContext context) { ![Show avatar](images/resourceview/show_avatar.png) ### Display name text style -The display name text style for the resource view can be customized by setting an appropriate text style to the [displayNameTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ResourceViewSettings/displayNameTextStyle.html) property available in the `ResourceViewSettings`. +The display name text style for the resource view can be customized by setting an appropriate text style to the [displayNameTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ResourceViewSettings/displayNameTextStyle.html) property available in the [ResourceViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/resourceViewSettings.html). {% tabs %} {% highlight dart hl_lines="8 9 10 11" %} @@ -178,7 +178,7 @@ Widget build(BuildContext context) { ![Display name text style](images/resourceview/display_name_text_style.png) ### Resource panel size -You can customize the size of the panel that displays the resource views in the calendar by setting an appropriate value to the [size](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ResourceViewSettings/size.html) property available in the `ResourceViewSettings`. +You can customize the size of the panel that displays the resource views in the calendar by setting an appropriate value to the [size](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ResourceViewSettings/size.html) property available in the [ResourceViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/resourceViewSettings.html). {% tabs %} {% highlight dart hl_lines="7" %} diff --git a/Flutter/calendar/right-to-left.md b/Flutter/calendar/right-to-left.md index 56c3f830a..94cceb2a2 100644 --- a/Flutter/calendar/right-to-left.md +++ b/Flutter/calendar/right-to-left.md @@ -14,7 +14,7 @@ Event calendar supports Right to Left rendering and all the calendar elements re Right to Left rendering can be switched in the following ways: ### Wrapping the SfCalendar with Directionality widget -`SfCalendar` supports changing the layout direction of the widget in the right-to-left direction by using the `Directionality` widget and set the `textDirection` property as [TextDirection.rtl](https://api.flutter.dev/flutter/dart-ui/TextDirection.html). +[SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). supports changing the layout direction of the widget in the right-to-left direction by using the `Directionality` widget and set the `textDirection` property as [TextDirection.rtl](https://api.flutter.dev/flutter/dart-ui/TextDirection.html). {% tabs %} {% highlight dart hl_lines="7 8" %} @@ -69,7 +69,7 @@ return MaterialApp( ## RTL supported calendar element -Right to Left rendering is supported for all the elements in the `SfCalendar`. +Right to Left rendering is supported for all the elements in the [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). {% tabs %} diff --git a/Flutter/calendar/schedule-view.md b/Flutter/calendar/schedule-view.md index 4f2bbfd9c..571a45396 100644 --- a/Flutter/calendar/schedule-view.md +++ b/Flutter/calendar/schedule-view.md @@ -9,7 +9,7 @@ documentation: ug # Schedule view in Flutter Event Calendar (SfCalendar) -The `schedule` view of SfCalendar shows a list of scheduled appointments grouped by week, between min and max dates, by default displaying the appointments from the current date. If the `DataSource` property of `SfCalendar` is null then the schedule view will display the month, week, and date headers alone in the view. +The `schedule` view of SfCalendar shows a list of scheduled appointments grouped by week, between min and max dates, by default displaying the appointments from the current date. If the [dataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/dataSource.html) property of [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html) is null then the schedule view will display the month, week, and date headers alone in the view. The schedule view display two different UI for mobile and web, for mobile it will display the month header, week header, and date header but for the web, it will display the appointments alone in the view. @@ -42,7 +42,7 @@ You can customize the height of an appointment in a schedule view by using the [ ![Schedule view appointment height customization](images/scheduleview/Schedule_view_appointment_height.png) ## Hide empty weeks -You can hide the weeks that do not have an appointment on it in schedule view, by using the [hideEmptyScheduleWeek](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings/hideEmptyScheduleWeek.html) property of `scheduleViewSettings`. +You can hide the weeks that do not have an appointment on it in schedule view, by using the [hideEmptyScheduleWeek](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings/hideEmptyScheduleWeek.html) property of [ScheduleViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings-class.html). {% tabs %} {% highlight dart hl_lines="7" %} @@ -65,7 +65,7 @@ You can hide the weeks that do not have an appointment on it in schedule view, b ![Schedule view hide empty agenda weeks](images/scheduleview/Schedule_view_hide-empty_week.png) ## Appointment text customization -The appointment text style of schedule view can be customized by using the [appointmentTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings/appointmentTextStyle.html) property of `scheduleViewSettings`. +The appointment text style of schedule view can be customized by using the [appointmentTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings/appointmentTextStyle.html) property of [ScheduleViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings-class.html). {% tabs %} {% highlight dart hl_lines="7 8" %} @@ -88,9 +88,9 @@ The appointment text style of schedule view can be customized by using the [appo ![Schedule view appointment customization](images/scheduleview/Schedule_view_appointment.png) ## Day header customization -The day header can be customized by using the [dayHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings/dayHeaderSettings.html) property of `scheduleViewSettings`. +The day header can be customized by using the [dayHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings/dayHeaderSettings.html) property of [ScheduleViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings-class.html). -The [DayHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DayHeaderSettings-class.html) contains the properties to customize the day format, width, day text style, and date text style of the day header by using the [dayFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DayHeaderSettings/dayFormat.html), [width](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DayHeaderSettings/width.html), [dayTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DayHeaderSettings/dayTextStyle.html), and [dateTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DayHeaderSettings/dateTextStyle.html) of `DayHeaderSettings`. +The [DayHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DayHeaderSettings-class.html) contains the properties to customize the day format, width, day text style, and date text style of the day header by using the [dayFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DayHeaderSettings/dayFormat.html), [width](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DayHeaderSettings/width.html), [dayTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DayHeaderSettings/dayTextStyle.html), and [dateTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DayHeaderSettings/dateTextStyle.html) of [DayHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/DayHeaderSettings-class.html). {% tabs %} {% highlight dart hl_lines=" 7 8 9 10 11 12 13 14 15 16 17 18 19" %} @@ -124,7 +124,7 @@ The [DayHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calenda ![Schedule view day header customization](images/scheduleview/Schedule_view_day_header.png) ## Week header customization -The week header can be customized by using the [weekHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings/weekHeaderSettings.html) property of `scheduleViewSettings`. +The week header can be customized by using the [weekHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings/weekHeaderSettings.html) property of [ScheduleViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings-class.html). The [WeekHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/WeekHeaderSettings-class.html) contains the properties to customize the start and end date format, height, Text alignment, background color, and week text style of the week header by using the [startDateFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/WeekHeaderSettings/startDateFormat.html), [endDateFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/WeekHeaderSettings/endDateFormat.html), [height](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/WeekHeaderSettings/height.html), [textAlign](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/WeekHeaderSettings/textAlign.html), [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/WeekHeaderSettings/backgroundColor.html), and [weekTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/WeekHeaderSettings/weekTextStyle.html) of `WeekHeaderSettings`. @@ -159,7 +159,7 @@ The [WeekHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calend ![Schedule view week header customization](images/scheduleview/Schedule_view_week_header.png) ## Month header customization -The month header can be customized by using the [monthHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings/monthHeaderSettings.html) property of `scheduleViewSettings`. +The month header can be customized by using the [monthHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings/monthHeaderSettings.html) property of [ScheduleViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/ScheduleViewSettings-class.html). The [MonthHeaderSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthHeaderSettings-class.html) contains the properties to customize the month format, height, text alignment, background color, and month text style of the month header by using the [monthFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthHeaderSettings/monthFormat.html), [height](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthHeaderSettings/height.html), [textAlign](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthHeaderSettings/textAlign.html), [backgroundColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthHeaderSettings/backgroundColor.html), and [monthTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/MonthHeaderSettings/monthTextStyle.html) of `MonthHeaderSettings`. diff --git a/Flutter/calendar/timeslot-views.md b/Flutter/calendar/timeslot-views.md index fa989bf02..5810485ae 100644 --- a/Flutter/calendar/timeslot-views.md +++ b/Flutter/calendar/timeslot-views.md @@ -46,7 +46,7 @@ Widget build(BuildContext context) { ## Change time interval height -You can customize the time interval height of the day, week, and workweek view by using the [timeIntervalHeight](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeIntervalHeight.html) property of `TimeSlotViewSettings`. +You can customize the time interval height of the day, week, and workweek view by using the [timeIntervalHeight](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeIntervalHeight.html) property of [TimeSlotViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings-class.html/). {% tabs %} {% highlight dart hl_lines="7" %} @@ -70,7 +70,7 @@ Widget build(BuildContext context) { ## Change time interval width -You can customize the time interval width of the timeline day, timeline week, timeline work week, and timeline month view by using the [timeIntervalWidth](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeIntervalWidth.html) property of `TimeSlotViewSettings`. +You can customize the time interval width of the timeline day, timeline week, timeline work week, and timeline month view by using the [timeIntervalWidth](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeIntervalWidth.html) property of [TimeSlotViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings-class.html/). {% tabs %} {% highlight dart hl_lines="7" %} @@ -94,9 +94,9 @@ Widget build(BuildContext context) { ## Flexible working days and working hours -The default values for [startHour](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/startHour.html) and [endHour](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/endHour.html) are 0 and 24 to show all the time slots in time slot views. You can set the `startHour` and `endHour` properties of `timeSlotViewSettings` to show only the required time duration for users. You can set `startHour` and `endHour` in time duration to show the required time duration in minutes. +The default values for [startHour](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/startHour.html) and [endHour](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/endHour.html) are 0 and 24 to show all the time slots in time slot views. You can set the `startHour` and `endHour` properties of [TimeSlotViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings-class.html/) to show only the required time duration for users. You can set `startHour` and `endHour` in time duration to show the required time duration in minutes. -You can also customize the nonworking days of a week by using the [nonWorkingDays](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/nonWorkingDays.html) property of `timeSlotViewSettings` to show only the required days for the users. +You can also customize the nonworking days of a week by using the [nonWorkingDays](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/nonWorkingDays.html) property of [TimeSlotViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings-class.html/) to show only the required days for the users. {% tabs %} {% highlight dart hl_lines="6 7 8 9" %} @@ -119,7 +119,7 @@ Widget build(BuildContext context) { ![Flexible working days and working hours](images/timeslot-views/starthour-endhour.png) >**NOTE** -* The `nonWorkingDays` property is applicable only for `workWeek` and `timelineWorkWeek` views only, and not applicable for the remaining views. +* The [nonWorkingDay](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/nonWorkingDays.html) property is applicable only for `workWeek` and `timelineWorkWeek` views only, and not applicable for the remaining views. * Calendar Appointments UI, which does not fall within the `startHour` and `endHour` will not be visible and if it falls partially, it will be clipped. * No need to specify the decimal point values for `startHour` and `endHour`, if you don’t want to set the minutes. * The number of time slots will be calculated based on total minutes of a day and time interval (total minutes of a day ((start hour - end hour) * 60) / time interval). @@ -127,7 +127,7 @@ Widget build(BuildContext context) { * If the custom `startHour` and `endHour` are given, then the number of time slots calculated based on given `startHour` and `endHour` should result in integer value, otherwise next immediate `timeInterval` will be considered until the result is integer value. For example, if `startHour` is 9 (09:00AM), `endHour` is 18.25 (06:15 PM), `timeInterval` is 30 minutes, and total minutes = 555 ((18.25-9)*60), then the timeInterval will be changed to ’37 minutes’ (555%37=0) by considering (total minutes % timeInterval = 0). it will return integer value for time slots rendering. ## Number of days in view -You can customize the days count by setting the [numberOfDaysInView](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/numberOfDaysInView.html) property of `timeSlotViewSettings` in the calendar. +You can customize the days count by setting the [numberOfDaysInView](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/numberOfDaysInView.html) property of [TimeSlotViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings-class.html/) in the calendar. {% tabs %} {% highlight dart hl_lines="7" %} @@ -152,7 +152,7 @@ You can customize the days count by setting the [numberOfDaysInView](https://pub * It is applicable for day, week, workweek, timeline day, timeline week, and timeline workweek views. ## Special time regions -You can restrict the user interaction such as selection and highlights specific regions of time in the timeslot views by adding the [specialRegions](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/specialRegions.html) property of `SfCalendar`. You need to set the [startTime](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/startTime.html) and [endTime](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/endTime.html) properties of [TimeRegion](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion-class.html) to create a `specialTimeRegion`, you can use the [timeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/timeZone.html) property to set the specific timezone for start and end time of `specialTimeRegion`. The `specialTimeRegion` will display the text or icon on it that set to the [text](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/text.html) or [iconData](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/iconData.html) property of `TimeRegion`. +You can restrict the user interaction such as selection and highlights specific regions of time in the timeslot views by adding the [specialRegions](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/specialRegions.html) property of [SfCalendar](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar-class.html). You need to set the [startTime](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/startTime.html) and [endTime](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/endTime.html) properties of [TimeRegion](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion-class.html) to create a `specialTimeRegion`, you can use the [timeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/timeZone.html) property to set the specific timezone for start and end time of `specialTimeRegion`. The `specialTimeRegion` will display the text or icon on it that set to the [text](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/text.html) or [iconData](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/iconData.html) property of [TimeRegion](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion-class.html). ![Special time region in Flutter event calendar](images/timeslot-views/Special_region.png) @@ -161,7 +161,7 @@ You can restrict the user interaction such as selection and highlights specific * The `TimeRegion` is not applicable, when the calendar view is set to `timelineMonth`. ### Selection restriction in timeslots -You can enable or disable the touch interaction of `TimeRegion` using the [enablePointerInteraction](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/enablePointerInteraction.html) property of `TimeRegion`. By default, its value is true. +You can enable or disable the touch interaction of [TimeRegion](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion-class.html) using the [enablePointerInteraction](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/enablePointerInteraction.html) property of [TimeRegion](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion-class.html). By default, its value is true. {% tabs %} {% highlight dart hl_lines="6 11 12 13 14 15 16 17 18 20 21" %} @@ -197,7 +197,7 @@ You can enable or disable the touch interaction of `TimeRegion` using the [enabl This property only restricts the interaction on region and it does not restrict the following: * Programmatic selection (if the user updates the selected date value dynamically) * Does not clear the selection when the user selects the region and dynamically change -the `enablePointerInteraction` property to false +the [enablePointerInteraction](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/enablePointerInteraction.html) property to false * It does not restrict appointment interaction when the appointment placed in the region * It does not restrict the appointment rendering on a region, when appointments are loaded from data services or adding programmatically. @@ -205,7 +205,7 @@ in the region ### Recurring time region -The recurring time region on a daily, weekly, monthly, or yearly interval. The recurring special time regions can be created by setting the [recurrenceRule](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/recurrenceRule.html) property in `TimeRegion`. +The recurring time region on a daily, weekly, monthly, or yearly interval. The recurring special time regions can be created by setting the [recurrenceRule](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/recurrenceRule.html) property in [TimeRegion](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion-class.html). {% tabs %} {% highlight dart hl_lines="17" %} @@ -242,7 +242,7 @@ The recurring time region on a daily, weekly, monthly, or yearly interval. The r You can refer to [here](https://help.syncfusion.com/flutter/calendar/appointments#recurrence-rule) to know more about the recurrence rule. ### Recurrence exception dates -You can delete any occurrence that is an exception from the recurrence pattern time region by using the [recurrenceExceptionDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/recurrenceExceptionDates.html) property of `TimeRegion`. The deleted occurrence date will be considered as a recurrence exception date. +You can delete any occurrence that is an exception from the recurrence pattern time region by using the [recurrenceExceptionDates](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/recurrenceExceptionDates.html) property of [TimeRegion](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion-class.html). The deleted occurrence date will be considered as a recurrence exception date. {% tabs %} {% highlight dart hl_lines="20" %} @@ -278,7 +278,7 @@ You can delete any occurrence that is an exception from the recurrence pattern t ![Special time region recurrence exception](images/timeslot-views/Special_region_recurrence_exception.png) ### Special time region customization -The `specialTimeRegion` background color can be customized by using the [color](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/color.html) and [textStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/textStyle.html) properties of `TimeRegion` that is used to customize the text style for the `text` and `iconData` of the `specialTimeRegion`. +The `specialTimeRegion` background color can be customized by using the [color](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/color.html) and [textStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/textStyle.html) properties of [TimeRegion](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion-class.html) that is used to customize the text style for the [text](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/text.html) and [iconData](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeRegion/iconData.html) of the `specialTimeRegion`. {% tabs %} {% highlight dart hl_lines="17 18 19" %} @@ -314,7 +314,7 @@ The `specialTimeRegion` background color can be customized by using the [color]( ## Full screen calendar -The calendar time interval height and width can be adjusted based on the screen height by changing the value of the `timeIntervalHeight` and `timeIntervalWidth` property to -1. It will auto fit the screen height and width. +The calendar time interval height and width can be adjusted based on the screen height by changing the value of the [timeIntervalHeight](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeIntervalHeight.html) and [timeIntervalWidth](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeIntervalWidth.html) property to -1. It will auto fit the screen height and width. {% tabs %} {% highlight dart hl_lines="7" %} @@ -338,7 +338,7 @@ Widget build(BuildContext context) { ## Change time ruler size -You can customize the size of the time ruler view where the labels mentioning the time are placed by using the [timeRulerSize](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeRulerSize.html) property of `TimeSlotViewSettings`. +You can customize the size of the time ruler view where the labels mentioning the time are placed by using the [timeRulerSize](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeRulerSize.html) property of [TimeSlotViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings-class.html/). {% tabs %} {% highlight dart hl_lines="8" %} @@ -411,7 +411,7 @@ class _AppointmentDataSource extends CalendarDataSource { ![Minimum appointment duration](images/timeslot-views/minimum-appointment-height.png) >**NOTE** -* `minimumAppointmentDuration` value will be set, when an appointment duration value is lesser than `minimumAppointmentDuration`. +* [minimumAppointmentDuration](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/minimumAppointmentDuration.html) value will be set, when an appointment duration value is lesser than `minimumAppointmentDuration`. * Appointment duration value will be set, when the appointment duration value is greater than `minimumAppointmentDuration`. * `timeInterval` value will be set, when `minimumAppointmentDuration` greater than `timeInterval` with lesser appointment duration. * All day Appointment does not support `minimumAppointmentDuration`. @@ -419,7 +419,7 @@ class _AppointmentDataSource extends CalendarDataSource { ## Timeline appointment height -You can customize the height of appointment in timeline views using the [timelineAppointmentHeight](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timelineAppointmentHeight.html) property of `TimeSlotViewSettings`. +You can customize the height of appointment in timeline views using the [timelineAppointmentHeight](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timelineAppointmentHeight.html) property of [TimeSlotViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings-class.html). {% tabs %} {% highlight dart hl_lines="9" %} @@ -446,7 +446,7 @@ Widget build(BuildContext context) { ## View header text formatting -You can customize the date and day format of SfCalendar ViewHeader by using the [dateFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/dateFormat.html) and [dayFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/dayFormat.html) properties of `TimeSlotViewSettings`. +You can customize the date and day format of SfCalendar ViewHeader by using the [dateFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/dateFormat.html) and [dayFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/dayFormat.html) properties of [TimeSlotViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings-class.html). {% tabs %} {% highlight dart hl_lines="9" %} @@ -472,7 +472,7 @@ Widget build(BuildContext context) { ![View header text formatting](images/timeslot-views/viewheader-text-format.png) ## Time text formatting -You can customize the format for the labels mentioning the time, by setting the [timeFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeFormat.html) property of `timeSlotViewSettings` in calendar. +You can customize the format for the labels mentioning the time, by setting the [timeFormat](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeFormat.html) property of [TimeSlotViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings-class.html) in calendar. {% tabs %} {% highlight dart hl_lines="9" %} @@ -499,7 +499,7 @@ Widget build(BuildContext context) { ## Time text appearance -You can customize the text style for the labels mentioning the time, by setting the [timeTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeTextStyle.html) property of `timeSlotViewSettings` in calendar. +You can customize the text style for the labels mentioning the time, by setting the [timeTextStyle](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/timeTextStyle.html) property of [TimeSlotViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings-class.html) in calendar. {% tabs %} {% highlight dart hl_lines="9 10 11 12 13 14" %} @@ -530,7 +530,7 @@ Widget build(BuildContext context) { ![Time text appearance](images/timeslot-views/time-text-appearance.png) ## All day panel background color -All day panel background color can be customized by using the [allDayPanelColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/allDayPanelColor.html) property of `timeSlotViewSettings` in the calendar. +All day panel background color can be customized by using the [allDayPanelColor](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings/allDayPanelColor.html) property of [TimeSlotViewSettings](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/TimeSlotViewSettings-class.html) in the calendar. {% tabs %} {% highlight dart hl_lines="9 " %} diff --git a/Flutter/calendar/timezone.md b/Flutter/calendar/timezone.md index 73d0a7840..fa39b37d9 100644 --- a/Flutter/calendar/timezone.md +++ b/Flutter/calendar/timezone.md @@ -1185,7 +1185,7 @@ appointments.add(Appointment( * If you create an all-day appointment, its start time and end time will be set to 12 A.M. and 12 A.M. by default, so time zone is not applicable for all-day appointments. * Calendar supports daylight saving time. * The time zone support is applicable for custom appointments too, so you need to map the corresponding property. -* You can use TimeZone for custom appointments by mapping the `startTimeZoneMapper` and `endTimeZoneMapper` custom properties of `CalendarDataSource`. +* You can use TimeZone for custom appointments by mapping the `startTimeZoneMapper` and `endTimeZoneMapper` custom properties of [CalendarDataSource](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/CalendarDataSource-class.html). ## Display appointment based on client’s time zone @@ -1193,7 +1193,7 @@ You can display the appointments based on the client’s local time zone in cale ## Display appointments based on calendar time zone -You can set specific time zone to calendar using the [timeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/timeZone.html) property of calendar. On this scenario, the appointments will be displayed in UTC time when the `startTimeZone` and `endTimeZone` properties of `Appointment` are set to null. The appointments will be displayed in UTC time based on the given calendar time zone. +You can set specific time zone to calendar using the [timeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/SfCalendar/timeZone.html) property of calendar. On this scenario, the appointments will be displayed in UTC time when the [startTimeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/startTimeZone.html) and [endTimeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/endTimeZone.html) properties of `Appointment` are set to null. The appointments will be displayed in UTC time based on the given calendar time zone. {% tabs %} {% highlight dart hl_lines="8" %} @@ -1217,4 +1217,4 @@ Widget build(BuildContext context) { ## Display appointments at same time everywhere regardless of client’s time zone -You can display appointments at the same time everywhere without considering the time zone when you set the `timeZone` property of calendar, the `startTimeZone` and `endTimeZone` properties of `Appointment` to null. The appointments will be displayed based on the given `startTime` and `endTime` of appointment everywhere without considering the time zone. +You can display appointments at the same time everywhere without considering the time zone when you set the `timeZone` property of calendar, the [startTimeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/startTimeZone.html) and [endTimeZone](https://pub.dev/documentation/syncfusion_flutter_calendar/latest/calendar/Appointment/endTimeZone.html) properties of `Appointment` to null. The appointments will be displayed based on the given `startTime` and `endTime` of appointment everywhere without considering the time zone.