Skip to content

Releases: AsmitNepali/fila-calendar

v0.5.0

Choose a tag to compare

@AsmitNepali AsmitNepali released this 30 Jul 09:27

Added

  • --fi-fila-calendar-range-pending-ring CSS variable for theming the ring on a range's pending start day.

Changed

  • The fallback palette, used only when the calendar renders outside a Filament panel and has no --primary-* to read, is amber instead of teal, matching Filament's default primary color.

Fixed

  • Selected days, ranges, and the today ring were drawn in the package's own teal regardless of the host panel, so a calendar in an amber or rose panel showed a blue-green ring around the day it was told to select. Every colored state now resolves through the panel's --primary-* palette. Themes that already set the --fi-fila-calendar-* variables are unaffected, and those overrides no longer have to exist just to undo the teal.
  • The ring on the day awaiting a range's second click was a fixed teal on top of the range fill, which read as a stray blue border on any other palette. It now uses the day's own text color.

Full changelog: v0.4.1...v0.5.0

v0.4.1

Choose a tag to compare

@AsmitNepali AsmitNepali released this 30 Jul 06:35

Changed

  • reservedDates() is UI-only again. Server-side reserved-day validation was removed from CalendarInput; host apps that need to reject reserved days on save should enforce that themselves.

Fixed

  • A blocked day that starts or ends a range now keeps the range color instead of falling back to the blocked background, so a range ending on an unavailable or weekend day still reads as selected.

Full changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@AsmitNepali AsmitNepali released this 30 Jul 05:40

Changed

  • A range drawn across reserved days now splits around them instead of covering them. Dragging from the 11th to the 19th over bookings on the 12th, 13th and 17th yields three ranges — 11th, 14th–16th and 18th–19th — so an already-booked day is never selected again, and the hover preview shows the same gaps while dragging.
  • In range mode, where a single range cannot hold a gap, the selection stops at the booking and keeps the run of free days touching the day it started from.
  • unavailableDates() and weekEndDays() are still spanned: those describe rules about the calendar rather than days someone else already holds.

The server-side guard added in 0.3.0 stays as a backstop, so a crafted payload still cannot double-book, and rows saved before this rule are still caught at submit.

Full changelog: v0.3.1...v0.4.0

v0.3.1

Choose a tag to compare

@AsmitNepali AsmitNepali released this 30 Jul 05:33

Fixed

  • Past days inside a range rendered at full range color instead of the faded version added in 0.2.0. Two later rules in the stylesheet re-declared --disabled.--in-range and --disabled.--range-end without the fade, so only a range's start day read as past — a range ending before minDate looked live. Start, end and middle now each fade their own color variable, and the duplicate rules are gone.

Full changelog: v0.3.0...v0.3.1

v0.3.0

Choose a tag to compare

@AsmitNepali AsmitNepali released this 30 Jul 05:25

Added

  • reservedDates() marks days that are already taken rather than closed. They block selection like unavailable dates, but keep the day's own background and carry a corner icon, a hairline ring in the primary color, and a Reserved tooltip — so "booked by someone else" no longer looks identical to "closed by a rule".
  • reservedIcon() sets the marker icon. Accepts a Filament ScalableIcon — every Heroicon enum case is one — or a plain icon name. Defaults to Heroicon::Bookmark.
  • reservedTooltip() overrides the tooltip text on reserved days, which also feeds the icon's aria-label. Pass an empty string to drop the tooltip and keep the icon.
  • calendarColumns() accepts a column count per breakpoint, e.g. ['sm' => 2, 'lg' => 3, 'xl' => 4]. Keys are default, sm, md, lg, xl and 2xl (xxl and xs work as aliases), matching Tailwind's widths. Each value holds until a wider breakpoint overrides it, and counts are still clamped to months().
  • --fi-fila-calendar-reserved-color CSS variable for theming the reserved ring and marker.
  • Server-side validation on CalendarInput rejecting a submission that lands on a reserved day, including one covered by a range, so a crafted Livewire payload cannot double-book. unavailableDates() and weekEndDays() stay UI-only, so records already sitting on those dates keep saving.

Fixed

  • disabledDates() and unavailableDates() silently produced no blocked days when given Carbon instances or datetime strings, such as a date column plucked off a model. Values are now normalized to Y-m-d on both the PHP and JavaScript sides, and unparseable entries are dropped instead of reaching the browser as NaN.

Changed

  • The title tooltip removed in 0.2.0 returns for reserved days only.

Full changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@AsmitNepali AsmitNepali released this 29 Jul 12:03

Changed

  • Ranges span blocked days instead of splitting around them. A blocked day still cannot start or end a range, but a range drawn across unavailable, weekend, or out-of-bounds days stays one range.
  • Blocked days inside a range keep the range highlight, with their strike-through, instead of dropping to the blocked style.
  • Blocked days render as disabled buttons, so they take no hover, focus, or click styling.
  • Shift-clicking a range keeps the blocked days inside it selected instead of clearing them with the rest.
  • Today is marked with a dot instead of a recolored number, so it stays readable on top of any range color.
  • Past days inside a range keep a faded version of the range color.

Removed

  • Title tooltip on calendar days.

Full changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@AsmitNepali AsmitNepali released this 29 Jul 11:20

Added

  • Shift-click a day of a range in multi-range mode to clear the whole range.
  • CSS variables for range start, end, and middle day colors.

Fixed

  • Deselecting a day in multi-range mode took two clicks when ranges overlapped. Ranges are now merged whenever state is read and written.

Changed

  • Clicking the start or end day of a range now shrinks it by that day instead of clearing the range.

Full changelog: v0.0.2...v0.1.0

v0.0.2

Choose a tag to compare

@AsmitNepali AsmitNepali released this 28 Jul 05:46

Dependency constraints

Loosens the framework constraints so the package installs cleanly on newer Laravel releases, and fixes a Carbon constraint that could resolve to a broken install.

Fixed

  • Carbon now requires ^3.0. The package uses the Carbon\Month and Carbon\WeekDay enums, which do not exist in Carbon 2. The previous ^2.72|^3.0 constraint allowed Composer to resolve Carbon 2, which fataled on load.

Changed

  • Removed the explicit illuminate/support requirement. The supported Laravel range now follows whatever the installed Filament release allows, so the package no longer needs a new tag for every Laravel major. Verified: filament/forms v5 resolves Laravel 13, which the old ^11.0|^12.0 cap blocked.

Requirements

  • PHP 8.2+
  • Laravel 11+ (whichever versions your Filament release supports)
  • Filament 4 or 5

Install

composer require asmit/fila-calendar
php artisan filament:assets

Full changelog: v0.0.1...v0.0.2

Documentation

v0.0.0

Choose a tag to compare

@AsmitNepali AsmitNepali released this 23 Jul 16:40

Initial release

A polished inline calendar field for Filament forms and infolists.

Highlights

  • Single, multiple, range, and multi-range selection modes
  • CalendarInput form field and CalendarEntry infolist component
  • Multi-month grid with responsive columns and date constraints
  • Range hover preview and smart range editing
  • Locale support via ->locale()
  • Self-contained Alpine.js UI — no external calendar library required

Requirements

  • PHP 8.2+
  • Laravel 11 or 12
  • Filament 4 or 5

Install

composer require asmit/fila-calendar
php artisan filament:assets

Documentation