Skip to content

feat: add resizable month view with customizable display modes#548

Open
kavantrivedi wants to merge 1 commit into
masterfrom
feature/month_view_customization
Open

feat: add resizable month view with customizable display modes#548
kavantrivedi wants to merge 1 commit into
masterfrom
feature/month_view_customization

Conversation

@kavantrivedi

Copy link
Copy Markdown
Contributor

Description

This pull request introduces a new "Resizable Month View" feature to the calendar example app, allowing users to view and interact with the month view in multiple display modes (full, compact, minimal). It includes updates to the UI, theming, localization, and core enumeration to support and showcase this new view. Below are the most important changes grouped by theme:

Feature: Resizable Month View Integration

  • Added a new CalendarView.resizableMonth enum value to support the new view mode.
  • Implemented ResizableMonthViewWidget and its demo page, showcasing all display modes, custom theming, and event interactions. [1] [2]
  • Integrated the resizable month view into the main calendar UI and navigation, including the home page and calendar view switcher. [1] [2] [3] [4] [5]

Theming and Style Support

  • Added ResizableMonthViewThemeData and related theme settings to both light and dark themes, and ensured they are included in the app's theme extensions. [1] [2] [3] [4]
  • Exposed theme and style classes for the resizable month view in the main library export.

Localization

  • Added localized strings for "Resizable Month View" in English, Arabic, and Spanish. [1] [2] [3]

Core Library Enhancements

  • Introduced the ResizableMonthViewMode enum to define the display modes for the new view.
  • Extended BuildContext to provide access to ResizableMonthViewThemeData.

Code Quality and Consistency

  • Updated the CalendarView extension to use a switch statement for the name property, ensuring new enum values are handled explicitly.

These changes collectively enable a flexible, themed, and localized resizable month view within the calendar package

Checklist

  • The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
  • I have followed the Contributor Guide when preparing my PR.
  • I have updated/added tests for ALL new/updated/fixed functionality.
  • I have updated/added relevant documentation in docs and added dartdoc comments with ///.
  • I have updated/added relevant examples in examples or docs.

Breaking Change?

  • Yes, this PR is a breaking change.
  • No, this PR is not a breaking change.

Related Issues

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new ResizableMonthView to the package (and wires it into the example app) to support three month display modes (full/compact/minimal) with a built-in event list, plus new theme data and localization strings to showcase the feature.

Changes:

  • Added the new ResizableMonthView widget family (style/theme settings/builders/internal header/page/event list) and exported it from the package.
  • Added ResizableMonthViewThemeData and integrated it into CalendarThemeData, BuildContext theme access, and the example app themes.
  • Added/updated tests and example navigation/localization to demonstrate the new view.

Reviewed changes

Copilot reviewed 27 out of 27 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
test/event_arranger_test/merge_event_arranger_multiday_test.dart Adds coverage for multi-day + midnight edge cases in merge arranging.
README.md Documents Resizable Month View as an available view option.
lib/src/theme/resizable_month_view_theme_data.dart Introduces a theme extension for ResizableMonthView UI colors.
lib/src/theme/calendar_theme_data.dart Extends CalendarThemeData to include resizable month theme configuration.
lib/src/resizable_month_view/resizable_month_view.dart Implements the main ResizableMonthView widget/state and navigation/mode logic.
lib/src/resizable_month_view/resizable_month_view_theme_settings.dart Adds theme settings (MonthViewThemeSettings-like) for ResizableMonthView.
lib/src/resizable_month_view/resizable_month_view_style.dart Adds style configuration including mode-toggle and animation settings.
lib/src/resizable_month_view/resizable_month_view_builders.dart Adds builders/callbacks including mode-change and event list customization.
lib/src/resizable_month_view/_resizable_month_page.dart Implements the internal grid page for full/compact/minimal date sets.
lib/src/resizable_month_view/_resizable_month_header.dart Implements the header (title/arrows/mode toggle).
lib/src/resizable_month_view/_event_list_panel.dart Implements the event list sliver panel shown below the grid.
lib/src/extensions.dart Adds resizableMonthViewColors theme accessor on BuildContext.
lib/src/enumerations.dart Adds ResizableMonthViewMode enum.
lib/calendar_view.dart Exports the new ResizableMonthView APIs and theme data.
example/lib/widgets/resizable_month_view_widget.dart Adds the example widget showcasing ResizableMonthView behavior and styling.
example/lib/widgets/calendar_views.dart Adds the new CalendarView switch case for ResizableMonthView in the example.
example/lib/widgets/calendar_configs.dart Adds localized view name mapping for the new example view.
example/lib/theme/app_theme.dart Registers ResizableMonthViewThemeData in example light/dark ThemeData extensions.
example/lib/pages/resizable_month_view_page.dart Adds a dedicated demo page for the ResizableMonthView in the example.
example/lib/pages/mobile/mobile_home_page.dart Adds a navigation entry to the ResizableMonthView demo page.
example/lib/main.dart Wires resizableMonthViewTheme into CalendarThemeProvider in the example.
example/lib/l10n/app_es.arb Adds Spanish string for “Resizable Month View”.
example/lib/l10n/app_en.arb Adds English string for “Resizable Month View”.
example/lib/l10n/app_ar.arb Adds Arabic string for “Resizable Month View”.
example/lib/extension.dart Updates CalendarView.name mapping to a switch for the new example enum value.
example/lib/enumerations.dart Adds resizableMonth to the example app’s CalendarView enum.
CHANGELOG.md Notes the addition of ResizableMonthView and related theming.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread lib/src/resizable_month_view/resizable_month_view.dart
Comment thread lib/src/resizable_month_view/resizable_month_view.dart Outdated
Comment thread lib/src/resizable_month_view/resizable_month_view.dart
Comment thread lib/src/resizable_month_view/_event_list_panel.dart
Comment thread lib/src/resizable_month_view/_event_list_panel.dart
Comment thread lib/src/resizable_month_view/_event_list_panel.dart
Comment thread lib/src/resizable_month_view/_resizable_month_header.dart Outdated
@kavantrivedi kavantrivedi force-pushed the feature/month_view_customization branch 2 times, most recently from 9faaddb to 7e7e7f6 Compare June 10, 2026 12:22
@kavantrivedi kavantrivedi changed the title feat: add resizable month view with customizable display modes and th… feat: add resizable month view with customizable display modes Jun 10, 2026
@kavantrivedi kavantrivedi marked this pull request as ready for review June 10, 2026 12:27
Comment thread example/lib/extension.dart Outdated
@kavantrivedi kavantrivedi force-pushed the feature/month_view_customization branch 4 times, most recently from 5d1487d to fce5b53 Compare June 18, 2026 11:31
@kavantrivedi kavantrivedi force-pushed the feature/month_view_customization branch from fce5b53 to 04a3044 Compare June 18, 2026 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants