Skip to content

Releases: XtremeCRM/Xtreme.Components

v0.1.0-preview.4

v0.1.0-preview.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Oct 12:08

Added

  • Xtreme.Components.Cards: SectionCard.HeaderFit. Set it to SectionCardHeaderFit.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 Abbreviate card and
    an Overflow card.

Changed

  • Xtreme.Components.Cards: SectionCard's tab strip no longer reserves NavigationView's empty
    48px PaneCustomContent column, so more tabs fit before the overflow menu appears.

v0.1.0-preview.3

v0.1.0-preview.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 22:11

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

v0.1.0-preview.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 14:56

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>Brush tokens; 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

v0.1.0-preview.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 13:12

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, the ActualTheme-driven surface and outline
    brushes shared by Docking and Cards, with high-contrast overrides read from the
    XcHighContrast sentinel 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
    (was XtremeDateTimePicker), CriteriaPanel, ChipPickerControl + ChipPickerDialog
    (items are ChipItem, was ChipVM), OverlayGlyphIcon. Font sizes and field styles read
    the XcFontSizeBody / XcFontSizeCaption / XcFontSizeTitle / XcFieldLabelStyle /
    XcListViewItemStyle / XcListSectionHeaderTextStyle resources.
  • Xtreme.Components.Core: ComponentHost with the optional CurrentTheme and
    ResolveGeometry hooks, TryGetBrush and PrepareDialog.
  • Xtreme.Components.TableView: RowFlagDecorator + RowFlag for WinUI.TableView rows,
    with a BrushResolver seam (default: the row's ActualTheme through ComponentHost).
  • Theming: Core ships Themes/Generic.xaml with the Xc* font and style tokens; the Scheduler
    and calendar palettes resolve XcScheduler<Role>Brush / XcCalendar<Role>Brush tokens before
    their built-in values; ComponentHost.NotifyResourcesChanged() drops the cached lookups.
    See docs/theming.md.
  • samples/Xtreme.Components.Gallery: desktop + WebAssembly gallery with one page per family,
    published to GitHub Pages from main; --selftest on 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. HostWindow is a property, diagnostics go to an optional Log
    hook, and the floating window's HWND comes from Uno's WindowHelper.GetNativeWindow with the
    foreground-window heuristic as fallback.
  • Public API baseline: every package carries PublicAPI.Shipped.txt / PublicAPI.Unshipped.txt
    under Microsoft.CodeAnalysis.PublicApiAnalyzers, so an API change is a visible diff.
  • Xtreme.Components.Scheduler: SchedulerControl with Day, Week, Month, Agenda and
    multi-resource Planner views; drag-to-move, resize and click-to-create reported as events;
    external drag-drop via ISchedulerDroppable; 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 through IDockPlatformServices; layout document v5 through
    IDockPersistence.
  • Xtreme.Components.Cards: CardDockerControl (drag cards into panels across a column grid)
    and SectionCard / SectionCardTab (card frame with a top-pane tab strip).
  • Xtreme.Components: meta-package depending on every family.

Changed

  • Xtreme.Components.CardDocking namespace renamed to Xtreme.Components.Cards to match the
    package id.
  • SectionCard moved from Xtreme.Shell.Controls into Xtreme.Components.Cards.
  • High-contrast surface keys renamed from XtremeDockSurfaceBrush /
    XtremeDockSurfaceOutlineBrush (sentinel XtremeHcCardColor) to XcSurfaceBrush /
    XcSurfaceOutlineBrush (sentinel XcHighContrast).

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), HideIdleResources and GroupMode.ByDay interaction. Month
    and Agenda raise select, edit and context events; Month double-click creates an all-day item.
    Tiles honor Position, Alignment, offsets, Glyph, colors and Tooltip; the adornment
    toolbar group honors IsToggle, IsChecked, Command and MenuItems.
  • Docking: DockItemCloseRequestedEventArgs (cancelable, also raised by a floating window's
    close button), DockHost.PersistenceProperty and EdgePriorityProperty. 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 by DockNarrowBehavior.Hide are listed in the restore menu.
  • Primitives: InputMask letter (A), alphanumeric (*) and escape (\) slots plus
    ExtractSlots; MaskedTextBox.CharacterCasing; PagingControl.CurrentPageChanged,
    PageSizeChanged, LayoutMode, ShownLayout and PagingLayoutMode;
    MonthYearPicker.SelectedDateChanged; CriteriaPanel.FieldValueChanged;
    MultiMonthDateNavigator.FirstDayOfWeek and keyboard navigation; XcExcludedBrush,
    XcChipBackgroundBrush and XcChipForegroundBrush.
  • Cards: SectionCard.SelectedIndex, SelectedTab, SelectionChanged; SectionCardTab.Icon;
    CardDockerPanel.PreferredColumn; CardDockerControl text and brush properties; panel drag
    and keyboard moves (Ctrl+arrows, Delete).
  • Core: ComponentHost.PrepareDialog(ContentDialog, XamlRoot?).
  • TableView: RowFlagOptions, RowFlagDecorator.Detach and IsAttached.

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. TimeIncrement defaults per control.
    The time contract is documented: wall-clock, except Planner lanes with a TimeZoneId (UTC).
  • Docking: every IsOpen change persists; DockItem.CloseRequested carries
    DockItemCloseRequestedEventArgs; floating windows are Windows-only; DockSplitter follows
    live theme changes; diagnostics go through the Log hook.
  • Primitives: TypeableTimeBox parses 930, 4 and 4p (the bare-hour format threw
    before); ChipPicker.SaveAsync always receives the whole list; DateTimePicker.Header is
    object and ValueChanged fires on code changes; MonthYearPicker values are always the
    1st of the month; inert members (FrontSizeRatio, ChipMaxWidth, ShowTitle, CanRemove,
    DefaultPageSize) now work.
  • Cards: SectionCard follows later changes to tabs, title and headers; the
    CardDockerControl.Layout getter returns a copy; LayoutChanged no longer fires for no-op
    drops; lowering then raising ColumnCount restores panels.
  • Core: TryGetBrush searches 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, AllDayBanner and ResizeGrip (now internal; SchedulerControl is the
    entry point) and the unimplemented default-editor fallback.
  • Primitives: public ChipPickerControl.WorkingItems.