Repository navigation
Releases: XtremeCRM/Xtreme.Components
Releases · XtremeCRM/Xtreme.Components
Release list
v0.1.0-preview.4
Added
Xtreme.Components.Cards:SectionCard.HeaderFit. Set it toSectionCardHeaderFit.Abbreviate
and the tab headers shorten as the card narrows, down to icon only, before any tab moves into
the overflow menu. The fit is measured (each header at the strip's real font against the strip's
real width), not a breakpoint table, and a shortened tab shows its full header as a tooltip. The
default,Overflow, keeps today's behavior.Xtreme.Components.Cards:LabelAbbreviation, the shortening rule behind it (first N letters
plus ".."; zero letters means icon only), public so hosts can shorten their own labels the same way.- Gallery: the Cards page has a header-fitting demo, a width slider over an
Abbreviatecard and
anOverflowcard.
Changed
Xtreme.Components.Cards:SectionCard's tab strip no longer reserves NavigationView's empty
48pxPaneCustomContentcolumn, so more tabs fit before the overflow menu appears.
v0.1.0-preview.3
Added
Xtreme.Components.Primitives:MultiMonthDateNavigator.OneMonthHeight, the height the
navigator needs to show one whole month, for hosts that size it.
Fixed
Xtreme.Components.Scheduler: the toolbar's date-range picker opens fully inside the window. A
remembered size bigger than the window (saved on a larger screen, or by another instance sharing
the settings) is shrunk to fit for that opening, without overwriting the remembered size; before,
the panel opened with its top, and the months, off screen.Xtreme.Components.Scheduler: resizing the date-range picker grows and shrinks it from a fixed
top-left corner; the panel no longer jumps around while the grip is dragged. The grip stops at
the window edge, and the panel always stays tall enough to show one whole month.
v0.1.0-preview.2
Changed
Xtreme.Components.Docking: the docking guides are redrawn. Each button is a small window
picture with the landing part filled in, the buttons of a compass share one raised cross-shaped
plate, the document compass shows the document at its center, and the inner and outer buttons
picture the difference between the two bands. Colors come from the new optional
XcDockGuide<Role>Brushtokens; the landing wash is a lighter tint that stays visible over a
blue pane.Xtreme.Components.Docking: floating windows are placed. A first float opens over the pane at
its docked size (capped at 80% of the monitor), a drag float opens under the pointer with the
grab point kept, a pane that floated before reopens at its last size (and, from the menu, its
last position), and every new window is fitted onto a connected monitor. A docked pane's last
floating bounds are saved in the layout. On Windows the screen mapping uses the real client area
instead of an estimated title bar.
Fixed
Xtreme.Components.Docking: a canceled pointer or a lost pointer capture no longer commits the
drag (it could float or move the pane); it cancels. Escape cancels an in-host drag.Xtreme.Components.Docking: a drop whose placement throws, a window that fails to construct, the
host unloading mid-drag, or a floating pane closing during its drag-back no longer leaves guides
on screen, a pane stranded with no window, or a drag armed that blocks every later drag.Win32DockPlatformServices: a throwing drag callback no longer silences the tracker, a dead
window stops its tracker, and a disposed tracker forgets an in-progress carry so a pooled window
can't inherit it.
v0.1.0-preview.1
First release from the public repository. The code was extracted from
XtremeCRM.Uno ClientApps/Xtreme.Components
(itself the former standalone Uno.Scheduler 0.1.0 package) and split into one package per
family on a shared version.
Added
Xtreme.Components.Core:ComponentTheme, theActualTheme-driven surface and outline
brushes shared by Docking and Cards, with high-contrast overrides read from the
XcHighContrastsentinel key.Xtreme.Components.Primitives:MaskedTextBox+InputMask,TypeableTimeBox,
CompactCalendarDatePicker,MonthYearPicker,MultiMonthDateNavigator(moved out of the
Scheduler, which now depends on Primitives),PagingControl,ColumnFlowPanel,WrapPanel,
ExpanderClipFix,ToastControl,EditorActionBar,CopyButton,DateTimePicker
(wasXtremeDateTimePicker),CriteriaPanel,ChipPickerControl+ChipPickerDialog
(items areChipItem, wasChipVM),OverlayGlyphIcon. Font sizes and field styles read
theXcFontSizeBody/XcFontSizeCaption/XcFontSizeTitle/XcFieldLabelStyle/
XcListViewItemStyle/XcListSectionHeaderTextStyleresources.Xtreme.Components.Core:ComponentHostwith the optionalCurrentThemeand
ResolveGeometryhooks,TryGetBrushandPrepareDialog.Xtreme.Components.TableView:RowFlagDecorator+RowFlagforWinUI.TableViewrows,
with aBrushResolverseam (default: the row'sActualThemethroughComponentHost).- Theming: Core ships
Themes/Generic.xamlwith theXc*font and style tokens; the Scheduler
and calendar palettes resolveXcScheduler<Role>Brush/XcCalendar<Role>Brushtokens before
their built-in values;ComponentHost.NotifyResourcesChanged()drops the cached lookups.
Seedocs/theming.md. samples/Xtreme.Components.Gallery: desktop + WebAssembly gallery with one page per family,
published to GitHub Pages frommain;--selfteston desktop opens every page.Xtreme.Components.Docking:Win32DockPlatformServices, the Windows implementation of
IDockPlatformServices(window pool, owned float windows, drag tracking, drag translucency),
ported from the XtremeCRM app.HostWindowis a property, diagnostics go to an optionalLog
hook, and the floating window's HWND comes from Uno'sWindowHelper.GetNativeWindowwith the
foreground-window heuristic as fallback.- Public API baseline: every package carries
PublicAPI.Shipped.txt/PublicAPI.Unshipped.txt
underMicrosoft.CodeAnalysis.PublicApiAnalyzers, so an API change is a visible diff. Xtreme.Components.Scheduler:SchedulerControlwith Day, Week, Month, Agenda and
multi-resource Planner views; drag-to-move, resize and click-to-create reported as events;
external drag-drop viaISchedulerDroppable; per-resource IANA time zones; recurring-event
indicators; templatable appointments.Xtreme.Components.Docking:DockHost,DockItem,DockSplitter;
tab groups and side-by-side layers; auto-hide rails with slide-in flyouts; float to an OS
window and drag back to re-dock throughIDockPlatformServices; layout document v5 through
IDockPersistence.Xtreme.Components.Cards:CardDockerControl(drag cards into panels across a column grid)
andSectionCard/SectionCardTab(card frame with a top-pane tab strip).Xtreme.Components: meta-package depending on every family.
Changed
Xtreme.Components.CardDockingnamespace renamed toXtreme.Components.Cardsto match the
package id.SectionCardmoved fromXtreme.Shell.ControlsintoXtreme.Components.Cards.- High-contrast surface keys renamed from
XtremeDockSurfaceBrush/
XtremeDockSurfaceOutlineBrush(sentinelXtremeHcCardColor) toXcSurfaceBrush/
XcSurfaceOutlineBrush(sentinelXcHighContrast).
Since extraction: guides and API completeness
Every package has a full guide under docs/. Writing them surfaced API gaps, closed before
this first release (XU-898..902). Changes below are relative to the extracted code.
Added
- Scheduler:
AppointmentModel.Clone(),EmptySlotSelectedArgs.IsAllDay. The Planner gains
click and Ctrl multi-select, double-click edit and create,EmptySlotSelected, hover cards,
context menus (also read-only),HideIdleResourcesandGroupMode.ByDayinteraction. Month
and Agenda raise select, edit and context events; Month double-click creates an all-day item.
Tiles honorPosition,Alignment, offsets,Glyph, colors andTooltip; the adornment
toolbar group honorsIsToggle,IsChecked,CommandandMenuItems. - Docking:
DockItemCloseRequestedEventArgs(cancelable, also raised by a floating window's
close button),DockHost.PersistencePropertyandEdgePriorityProperty. Layout document v6
persists floating state and bounds, the selected tab per group and in-layer column ratios
(v1 to v5 still read). Panes hidden byDockNarrowBehavior.Hideare listed in the restore menu. - Primitives:
InputMaskletter (A), alphanumeric (*) and escape (\) slots plus
ExtractSlots;MaskedTextBox.CharacterCasing;PagingControl.CurrentPageChanged,
PageSizeChanged,LayoutMode,ShownLayoutandPagingLayoutMode;
MonthYearPicker.SelectedDateChanged;CriteriaPanel.FieldValueChanged;
MultiMonthDateNavigator.FirstDayOfWeekand keyboard navigation;XcExcludedBrush,
XcChipBackgroundBrushandXcChipForegroundBrush. - Cards:
SectionCard.SelectedIndex,SelectedTab,SelectionChanged;SectionCardTab.Icon;
CardDockerPanel.PreferredColumn;CardDockerControltext and brush properties; panel drag
and keyboard moves (Ctrl+arrows, Delete). - Core:
ComponentHost.PrepareDialog(ContentDialog, XamlRoot?). - TableView:
RowFlagOptions,RowFlagDecorator.DetachandIsAttached.
Changed
- Scheduler: the Planner's zoned lanes report the host's original appointment; a single click
on an empty Planner lane selects instead of creating.TimeIncrementdefaults per control.
The time contract is documented: wall-clock, except Planner lanes with aTimeZoneId(UTC). - Docking: every
IsOpenchange persists;DockItem.CloseRequestedcarries
DockItemCloseRequestedEventArgs; floating windows are Windows-only;DockSplitterfollows
live theme changes; diagnostics go through theLoghook. - Primitives:
TypeableTimeBoxparses930,4and4p(the bare-hour format threw
before);ChipPicker.SaveAsyncalways receives the whole list;DateTimePicker.Headeris
objectandValueChangedfires on code changes;MonthYearPickervalues are always the
1st of the month; inert members (FrontSizeRatio,ChipMaxWidth,ShowTitle,CanRemove,
DefaultPageSize) now work. - Cards:
SectionCardfollows later changes to tabs, title and headers; the
CardDockerControl.Layoutgetter returns a copy;LayoutChangedno longer fires for no-op
drops; lowering then raisingColumnCountrestores panels. - Core:
TryGetBrushsearches merged theme dictionaries for the requested theme and only
swallows lookup failures; surface brushes are cached per theme. - TableView: the row flag frame is an overlay, so rows keep their own border and height.
- US English spelling throughout the docs and comments.
Removed
- Scheduler: public
TimeGridView,PlannerView,MonthView,AgendaView,DayColumnPanel,
TimelineLanePanel,AllDayBannerandResizeGrip(now internal;SchedulerControlis the
entry point) and the unimplemented default-editor fallback. - Primitives: public
ChipPickerControl.WorkingItems.