311 Commits
Author SHA1 Message Date
chinboy 12ba9b92ef chore(Release): add build and packaging for AtomUI language packs 2026-08-09 13:05:32 +08:00
chinboy 92d54fe28a refactor(Localization)!: use enum keys as catalog unit identity 2026-08-07 13:27:02 +08:00
chinboy 54c6b52069 fix(NavMenu): ignore stale selected nodes after item replacement 2026-08-07 09:16:23 +08:00
chinboy ef393a1c89 test(Localization): validate official catalog delivery 2026-08-06 18:40:35 +08:00
chinboy 248546ac9f refactor(Localization): remove legacy language architecture 2026-08-06 18:22:39 +08:00
chinboy 26f2826692 feat(Desktop): migrate localization catalogs 2026-08-06 09:51:01 +08:00
chinboy de27803df8 feat(Controls): migrate common localization catalog 2026-08-06 09:12:07 +08:00
chinboy f8f239a037 feat(FileUpload): improve upload progress handling and prevent updates after terminal status 2026-08-05 19:34:01 +08:00
chinboy 447e3805ff feat(NavMenu): implement collapsible sidebar navigation with header action 2026-08-05 18:36:43 +08:00
chinboy 470446d10b feat(NavMenu): enhance inline collapsed behavior and visual representation 2026-08-05 15:21:54 +08:00
chinboy 7ed32b1e4a feat(NavMenu): add hierarchical entry composition 2026-08-05 13:07:35 +08:00
chinboy 6d5e8f8a60 fix(Upload): unify picker and drop multiple selection behavior 2026-08-05 07:19:51 +08:00
chinboy 52d9912536 test(Upload): verify behavior instead of private implementation 2026-08-04 21:06:41 +08:00
chinboy 3cbe73f695 refactor(Upload): make replacement commit ownership atomic 2026-08-04 21:03:47 +08:00
chinboy 63aa82f284 fix(Upload): report drop snapshot failures 2026-08-04 20:13:58 +08:00
chinboy a132486c8f refactor(Upload): define input task terminal semantics 2026-08-04 19:56:24 +08:00
chinboy 053da26210 refactor(Upload): enforce typed input ownership 2026-08-04 19:22:48 +08:00
chinboy 22686a5454 refactor(Upload): replace input result contracts 2026-08-04 19:05:25 +08:00
chinboy 2d3db0def5 refactor(Upload)!: rebuild drag-and-drop input pipeline 2026-08-04 15:54:05 +08:00
chinboy f214c3b148 feat(Calendar): enhance header customization with new converters and ShowWeek functionality 2026-08-04 07:18:07 +08:00
chinboy 0bc3f08e66 feat: add LunarCalendar support and iOS development guide 2026-08-03 22:21:27 +08:00
chinboy 306c315638 feat(OverflowTip): implement internal text viewport metrics for TextBox and TextArea to enhance tooltip visibility handling 2026-08-03 15:59:49 +08:00
chinboy 2705ae051b feat(Splash): update theme documentation and structure for Effective Global Token and Own Token usage 2026-08-03 15:26:05 +08:00
chinboy aa2ffe28e1 feat(Steps): add nullable ItemHeaderForeground, ItemSubHeaderForeground, and ItemRailBackground properties for semantic styling 2026-08-03 14:11:54 +08:00
chinboy c8391999da feat(Button): add IconWidth and IconHeight properties for user and loading icons 2026-08-03 12:58:30 +08:00
chinboy fcfdbf714d feat(Themes): introduce ColorSliderTrackButton and ComboBoxTextBox with associated themes 2026-08-03 10:47:13 +08:00
chinboy 9d26f10fa0 feat(InfoPicker): introduce InfoPickerTextBox and NumericUpDownSpinner controls with associated themes 2026-08-03 10:29:33 +08:00
chinboy 2624382f0f refactor(Theme): migrate theme algorithms to use enum values instead of strings 2026-08-02 21:11:36 +08:00
chinboy 09d6f4d49d fix(Input): align composite input states with control tokens 2026-08-02 19:35:05 +08:00
chinboy 77b02d6a41 refactor(Theme)!: implement compiled theme architecture 2026-08-02 09:32:11 +08:00
chinboy 809e77e44c style: remove unused using directives 2026-07-31 23:45:25 +08:00
chinboy a343c8c246 refactor(Calendar): clean up code formatting and improve documentation 2026-07-31 17:00:28 +08:00
chinboy c8432aa042 feat(Calendar): wire roving focus to real input focus
CalendarView and CalendarViewCell are focusable; entering the panel focuses the
selected (or first available) cell, arrow keys move OS focus to the target cell,
and disabled cells are non-focusable. Adds focus-entry and arrow-key end-to-end tests.
2026-07-30 21:56:57 +08:00
chinboy 837ffae5a0 feat(Calendar): implement Fullscreen/Mini visual density
CalendarView carries fullscreen/mini/date/month/show-week pseudo-classes; the
view theme consumes FullPanelBg (fullscreen panel bg) and MiniContentHeight
(mini content cap). All six tokens now consumed. Adds a pseudo-class toggle test.
2026-07-30 21:53:17 +08:00
chinboy 7921999553 fix(Calendar): push ViewMode imperatively and feed header context to custom template
Mode changes now swap the panel grid (ViewMode was a non-notifying CLR property so
the XAML binding never refreshed) and custom HeaderTemplate receives a
CalendarHeaderContext as DataContext so its commands can commit Value/Mode.
Adds an end-to-end runtime mode-switch test (42->12->42).
2026-07-30 21:49:37 +08:00
chinboy 39934fe134 test(Calendar): assert bounded container pool and default visual baseline 2026-07-30 20:57:47 +08:00
chinboy ee03ec17aa feat(Calendar): handle template lifecycle and culture changes
Calendar unbinds old CalendarView/header handlers on template reapply, subscribes
to language-variant changes on attach and unsubscribes on detach, and pushes the
resolved culture to CalendarView/header (rebuilds month names, weekday titles,
week rules). RTL affects layout only, not date math. 17 render/view tests pass.
2026-07-30 20:38:30 +08:00
chinboy 36d4879719 feat(Calendar): add roving focus, keyboard navigation, and automation peers
CalendarView computes focus targets (date +/-1 day / +/-1 week, month +/-1 / +/-4),
skips non-focusable cells, stays within the realized grid, and activates on
Enter/Space. Adds Table/GridItem+SelectionItem automation peers. 107 Calendar
tests pass.
2026-07-30 20:31:37 +08:00
chinboy 226d6eae06 feat(Calendar): add default CalendarHeader with year/month select and mode switch
CalendarHeader computes year/month options per spec (20-year window, ValidRange
boundary trimming, month clamping), drives ComboBox dropdowns and a Segmented mode
switch, and reports Year/Month/Mode intents. Calendar hosts it as PART_DefaultHeader,
hidden when a custom HeaderTemplate is set. 7 option-logic + 6 render tests pass.
2026-07-30 20:26:45 +08:00
chinboy 7082fc8843 feat(Calendar): add control themes and verify end-to-end rendering
Add CalendarTheme/CalendarViewTheme/CalendarViewCellTheme (ControlTheme axaml +
codebehind) with stable template parts (PART_Root/PART_HeaderPresenter/
PART_CalendarView/PART_Body/PART_WeekHeader/PART_CellHost/PART_Item/PART_CellInner/
PART_Value/PART_ItemContent) and pseudo-classes. Calendar now renders month/year/
show-week grids end-to-end (4 render tests pass).
2026-07-30 20:15:59 +08:00
chinboy 3a11db988e feat(Calendar): add CalendarView panel logic with bounded cell-model rebuild
CalendarView owns input state, RebuildCells (date/week/month via builder),
bounded _cellModels list, FocusedValue, and CellSelected intent event.
Rebuild triggers only on model-invalidating properties.
2026-07-30 19:52:11 +08:00
chinboy f1bf14da2f feat(Calendar): add typed header context with change-value/mode commands
CalendarHeaderContext exposes Value/Mode plus ICommands. ChangeValueCommand
commits as Customize source; both commands validate parameter type in
CanExecute. Adds internal CalendarRelayCommand helper.
2026-07-30 19:48:12 +08:00
chinboy 4bb61f60f3 feat(Calendar): implement control state transitions with fixed event ordering
Nine StyledProperties per spec, CLR events (ValueChanged/Selected/PanelChanged),
CommitUserSelection with PanelChanged->ValueChanged->Selected ordering, and
CommitModeChange. Programmatic Value/Mode changes do not raise user events.
2026-07-30 19:44:51 +08:00
chinboy 0051d2d757 feat(Calendar): add public value types, enums, and event args
New public CalendarDateRange (end<start throws), CalendarMode {Month,Year},
CalendarSelectSource, CalendarCellType, CalendarCellContext, and the three
event args live in the top-level AtomUI.Desktop.Controls namespace. Rename
DatePicker test aliases to Picker* to avoid collision with these new types.
2026-07-30 19:41:45 +08:00
chinboy 5d5c5f9234 refactor(DatePicker): isolate CalendarView types into AtomUI.Desktop.Controls.CalendarView namespace
Move DateTimeHelper, CalendarExtensions, HeadTextButton, CalendarDateRange,
CalendarMode, CalendarSelectionMode, and calendar event args out of the top-level
AtomUI.Desktop.Controls namespace so the new Calendar can own it. Add xmlns
mappings and update DatePicker test usings. DatePicker behavior unchanged.
2026-07-30 19:37:20 +08:00
chinboy 6565762c6a Revert "feat(Calendar): add public value types, enums, and event args"
This reverts commit 8fb07c83541428d1bf3b546a05a3d9497a2abaa1.
2026-07-30 19:27:38 +08:00
chinboy ac2954d537 feat(Calendar): add public value types, enums, and event args 2026-07-30 19:25:58 +08:00
chinboy bb86b72368 test(Calendar): cover cross-year grid, null range, and disabled-date exception propagation 2026-07-30 19:21:19 +08:00
chinboy aba87abd8b feat(Calendar): implement 12-cell month grid builder with day truncation 2026-07-30 19:17:33 +08:00
chinboy 8180a4d665 feat(Calendar): add week-number cell builder 2026-07-30 19:10:11 +08:00