By Bartschi Creative
Slate and UMG compatible widgets for all of your date input needs!
Beautiful and functional out of the box — customize and extend to your heart’s content.
Also contains a convenient UE5 Editor customization for native date properties (FDateTime).
Plugin: BCModernDateWidgets
Modules: BCModernDateWidgets BCModernDateWidgetsEditor
For those working in pure blueprints/UMG, you should primarily need section 1. For those working in Slate/C++, you can dive into the other sections as needed.

The widgets can be found in the UMG Palette under the Modern Date Widgets category.
UBCModernCalendarA configurable calendar widget that can be used to select a date, month, or year. For out-of-the-box functionality, see Modern Date Picker or Modern Combo Date Picker


By default, the calendar does not contain any date selection logic. The calendar is designed to be used within another widget that controls the selected date state and binds to OnGetCellStyleName and OnCellClicked delegates in order to update the date cells. If the other widgets do not meet your needs, you can build a custom widget blueprint using this.
Most of the calendar properties seen in the details panel come from the base class, UBCModernCalendarView. All of the other widgets also inherit from this class, so the properties are shared.
The calendar style can be defined inline, or by creating a calendar style asset blueprint and assigning that to the calendar style asset property. The most unique part of the style is the “Additional Cell Styles” property, which maps custom names to button styles. This map is used internally along with OnGetCellStyleName to customize the styling based on selected dates. The default styles include the “Selected”, “FirstInRange”, “InRange”, and “LastInRange” additional cell styles. If some dependency to OnGetCellStyleName is updated, call InvalidateCellStyles() to update the widget.