diff --git a/docs/maui-coverage.md b/docs/maui-coverage.md index a1b3a919..24d3799e 100644 --- a/docs/maui-coverage.md +++ b/docs/maui-coverage.md @@ -1,6 +1,6 @@ # .NET MAUI ⇄ Microsoft.AndroidX.Compose.Maui backend coverage -Generated by `scripts/maui-coverage.cs` on 2026-06-12 22:25 UTC. +Generated by `scripts/maui-coverage.cs` on 2026-06-12 22:58 UTC. Pinned MAUI version: **10.0.20** (from `Directory.Build.targets`). @@ -15,15 +15,15 @@ collected transitively across base mappers (`ViewHandler.ViewMapper`, - **Stock MAUI handlers in scope**: 43 - **Handlers we override**: 24 (**55.8%**) -- **Property-mapper keys covered**: 830 / 1224 (**67.8%**) +- **Property-mapper keys covered**: 883 / 1224 (**72.1%**) ### Per-category coverage | Category | Handlers | Keys | | --- | --- | --- | -| **Pages / Navigation** | 1/4 (25%) | 32/130 (25%) | -| **Containers** | 5/5 (100%) | 162/174 (93%) | -| **Leaves** | 18/18 (100%) | 636/695 (92%) | +| **Pages / Navigation** | 1/4 (25%) | 33/130 (25%) | +| **Containers** | 5/5 (100%) | 166/174 (95%) | +| **Leaves** | 18/18 (100%) | 684/695 (98%) | | **Menus / Toolbar** | 0/7 (0%) | 0/1 (0%) | | **Shapes** | 0/1 (0%) | 0/41 (0%) | | **App / Window** | 0/2 (0%) | 0/8 (0%) | @@ -37,31 +37,31 @@ Sorted by category. ✅ = fully covered (100%), 🟡 = partial, ❌ = not implem | --- | --- | --- | --- | --- | --- | | ❌ | `FlyoutViewHandler` | Pages / Navigation | `FlyoutPage` | — | 0 / 35 (0%) | | ❌ | `NavigationViewHandler` | Pages / Navigation | `NavigationPage` | — | 0 / 31 (0%) | -| 🟡 | `PageHandler` | Pages / Navigation | `Page` | `PageHandler` | 32 / 33 (97%) | +| ✅ | `PageHandler` | Pages / Navigation | `Page` | `PageHandler` | 33 / 33 (100%) | | ❌ | `TabbedViewHandler` | Pages / Navigation | `TabbedPage` | — | 0 / 31 (0%) | -| 🟡 | `BorderHandler` | Containers | `Border` | `BorderHandler` | 34 / 40 (85%) | +| 🟡 | `BorderHandler` | Containers | `Border` | `BorderHandler` | 35 / 40 (88%) | | ✅ | `ContentViewHandler` | Containers | `ContentView`, `IContentView` | `ContentViewHandler` | 32 / 32 (100%) | -| 🟡 | `LayoutHandler` | Containers | `Layout` | `LayoutHandler` | 31 / 32 (97%) | -| 🟡 | `RefreshViewHandler` | Containers | `RefreshView` | `RefreshViewHandler` | 33 / 35 (94%) | -| 🟡 | `ScrollViewHandler` | Containers | `ScrollView` | `ScrollViewHandler` | 32 / 35 (91%) | +| ✅ | `LayoutHandler` | Containers | `Layout` | `LayoutHandler` | 32 / 32 (100%) | +| 🟡 | `RefreshViewHandler` | Containers | `RefreshView` | `RefreshViewHandler` | 34 / 35 (97%) | +| 🟡 | `ScrollViewHandler` | Containers | `ScrollView` | `ScrollViewHandler` | 33 / 35 (94%) | | ✅ | `ActivityIndicatorHandler` | Leaves | `ActivityIndicator` | `ActivityIndicatorHandler` | 33 / 33 (100%) | -| 🟡 | `ButtonHandler` | Leaves | `Button` | `ButtonHandler` | 33 / 40 (82%) | +| ✅ | `ButtonHandler` | Leaves | `Button` | `ButtonHandler` | 40 / 40 (100%) | | ✅ | `CheckBoxHandler` | Leaves | `CheckBox` | `CheckBoxHandler` | 33 / 33 (100%) | -| 🟡 | `DatePickerHandler` | Leaves | `DatePicker` | `DatePickerHandler` | 37 / 39 (95%) | -| 🟡 | `EditorHandler` | Leaves | `Editor` | `EditorHandler` | 38 / 46 (83%) | -| 🟡 | `EntryHandler` | Leaves | `Entry` | `EntryHandler` | 38 / 49 (78%) | +| ✅ | `DatePickerHandler` | Leaves | `DatePicker` | `DatePickerHandler` | 39 / 39 (100%) | +| 🟡 | `EditorHandler` | Leaves | `Editor` | `EditorHandler` | 45 / 46 (98%) | +| 🟡 | `EntryHandler` | Leaves | `Entry` | `EntryHandler` | 48 / 49 (98%) | | 🟡 | `ImageButtonHandler` | Leaves | `ImageButton` | `ImageButtonHandler` | 37 / 38 (97%) | | 🟡 | `ImageHandler` | Leaves | `Image` | `ImageHandler` | 33 / 34 (97%) | -| 🟡 | `IndicatorViewHandler` | Leaves | `IndicatorView` | `IndicatorViewHandler` | 37 / 39 (95%) | -| 🟡 | `LabelHandler` | Leaves | `Label` | `LabelHandler` | 35 / 40 (88%) | -| 🟡 | `PickerHandler` | Leaves | `Picker` | `PickerHandler` | 36 / 41 (88%) | +| ✅ | `IndicatorViewHandler` | Leaves | `IndicatorView` | `IndicatorViewHandler` | 39 / 39 (100%) | +| 🟡 | `LabelHandler` | Leaves | `Label` | `LabelHandler` | 39 / 40 (98%) | +| 🟡 | `PickerHandler` | Leaves | `Picker` | `PickerHandler` | 40 / 41 (98%) | | ✅ | `ProgressBarHandler` | Leaves | `ProgressBar` | `ProgressBarHandler` | 33 / 33 (100%) | -| 🟡 | `RadioButtonHandler` | Leaves | `RadioButton` | `RadioButtonHandler` | 35 / 39 (90%) | -| 🟡 | `SearchBarHandler` | Leaves | `SearchBar` | `SearchBarHandler` | 37 / 47 (79%) | +| 🟡 | `RadioButtonHandler` | Leaves | `RadioButton` | `RadioButtonHandler` | 36 / 39 (92%) | +| 🟡 | `SearchBarHandler` | Leaves | `SearchBar` | `SearchBarHandler` | 46 / 47 (98%) | | 🟡 | `SliderHandler` | Leaves | `Slider` | `SliderHandler` | 37 / 38 (97%) | | ✅ | `StepperHandler` | Leaves | `Stepper` | `StepperHandler` | 35 / 35 (100%) | | ✅ | `SwitchHandler` | Leaves | `Switch` | `SwitchHandler` | 34 / 34 (100%) | -| 🟡 | `TimePickerHandler` | Leaves | `TimePicker` | `TimePickerHandler` | 35 / 37 (95%) | +| ✅ | `TimePickerHandler` | Leaves | `TimePicker` | `TimePickerHandler` | 37 / 37 (100%) | | ❌ | `MenuBarHandler` | Menus / Toolbar | `MenuBar` | — | n/a | | ❌ | `MenuBarItemHandler` | Menus / Toolbar | `MenuBarItem` | — | n/a | | ❌ | `MenuFlyoutHandler` | Menus / Toolbar | `MenuFlyout` | — | n/a | @@ -112,24 +112,18 @@ Most often this is a non-trivial property we haven't wired up yet (`CharacterSpacing`, `Font`, `Padding` on `Button`; `CornerRadius`, dashed stroke patterns on `Border`). -- **`EntryHandler`** (78%) — missing: `CharacterSpacing`, `ClearButtonVisibility`, `CursorPosition`, `HorizontalTextAlignment`, `IsSpellCheckEnabled`, `IsTextPredictionEnabled`, `MaxLength`, `PlaceholderColor`, `ReturnType`, `SelectionLength`, `VerticalTextAlignment` -- **`SearchBarHandler`** (79%) — missing: `CancelButtonColor`, `CharacterSpacing`, `HorizontalTextAlignment`, `IsSpellCheckEnabled`, `IsTextPredictionEnabled`, `MaxLength`, `PlaceholderColor`, `ReturnType`, `SearchIconColor`, `VerticalTextAlignment` -- **`ButtonHandler`** (82%) — missing: `CharacterSpacing`, `CornerRadius`, `Font`, `Padding`, `Source`, `StrokeColor`, `StrokeThickness` -- **`EditorHandler`** (83%) — missing: `CharacterSpacing`, `CursorPosition`, `HorizontalTextAlignment`, `IsSpellCheckEnabled`, `IsTextPredictionEnabled`, `PlaceholderColor`, `SelectionLength`, `VerticalTextAlignment` -- **`BorderHandler`** (85%) — missing: `Shape`, `StrokeDashOffset`, `StrokeDashPattern`, `StrokeLineCap`, `StrokeLineJoin`, `StrokeMiterLimit` -- **`LabelHandler`** (88%) — missing: `CharacterSpacing`, `LineHeight`, `Padding`, `TextDecorations`, `VerticalTextAlignment` -- **`PickerHandler`** (88%) — missing: `CharacterSpacing`, `HorizontalTextAlignment`, `IsOpen`, `Items`, `VerticalTextAlignment` -- **`RadioButtonHandler`** (90%) — missing: `CharacterSpacing`, `CornerRadius`, `StrokeColor`, `StrokeThickness` -- **`ScrollViewHandler`** (91%) — missing: `Content`, `HorizontalScrollBarVisibility`, `VerticalScrollBarVisibility` -- **`RefreshViewHandler`** (94%) — missing: `IsRefreshEnabled`, `RefreshColor` -- **`TimePickerHandler`** (95%) — missing: `CharacterSpacing`, `IsOpen` -- **`DatePickerHandler`** (95%) — missing: `CharacterSpacing`, `IsOpen` -- **`IndicatorViewHandler`** (95%) — missing: `HideSingle`, `MaximumVisible` -- **`LayoutHandler`** (97%) — missing: `ClipsToBounds` -- **`PageHandler`** (97%) — missing: `Title` +- **`BorderHandler`** (88%) — missing: `StrokeDashOffset`, `StrokeDashPattern`, `StrokeLineCap`, `StrokeLineJoin`, `StrokeMiterLimit` +- **`RadioButtonHandler`** (92%) — missing: `CornerRadius`, `StrokeColor`, `StrokeThickness` +- **`ScrollViewHandler`** (94%) — missing: `HorizontalScrollBarVisibility`, `VerticalScrollBarVisibility` - **`ImageHandler`** (97%) — missing: `IsAnimationPlaying` +- **`RefreshViewHandler`** (97%) — missing: `RefreshColor` - **`ImageButtonHandler`** (97%) — missing: `IsAnimationPlaying` - **`SliderHandler`** (97%) — missing: `ThumbImageSource` +- **`LabelHandler`** (98%) — missing: `VerticalTextAlignment` +- **`PickerHandler`** (98%) — missing: `VerticalTextAlignment` +- **`EditorHandler`** (98%) — missing: `VerticalTextAlignment` +- **`SearchBarHandler`** (98%) — missing: `VerticalTextAlignment` +- **`EntryHandler`** (98%) — missing: `VerticalTextAlignment` ## Per-handler property detail @@ -223,13 +217,9 @@ _No Compose backend handler. Stock MAUI handler keeps the AppCompat backend._ -### 🟡 `PageHandler` — `Page` +### ✅ `PageHandler` — `Page` -Backed by `PageHandler`. **32 / 33 keys (97%)**. - -Missing keys: - -- [ ] `Title` +Backed by `PageHandler`. **33 / 33 keys (100%)**.
All stock keys @@ -259,7 +249,7 @@ Missing keys: - [x] `ScaleY` - [x] `Semantics` - [x] `Shadow` -- [ ] `Title` +- [x] `Title` - [x] `ToolTip` - [x] `Toolbar` - [x] `TranslationX` @@ -311,11 +301,10 @@ _No Compose backend handler. Stock MAUI handler keeps the AppCompat backend._ ### 🟡 `BorderHandler` — `Border` -Backed by `BorderHandler`. **34 / 40 keys (85%)**. +Backed by `BorderHandler`. **35 / 40 keys (88%)**. Missing keys: -- [ ] `Shape` - [ ] `StrokeDashOffset` - [ ] `StrokeDashPattern` - [ ] `StrokeLineCap` @@ -355,7 +344,7 @@ Extra keys we map (no stock counterpart): - [x] `ScaleY` - [x] `Semantics` - [x] `Shadow` -- [ ] `Shape` +- [x] `Shape` - [x] `Stroke` - [ ] `StrokeDashOffset` - [ ] `StrokeDashPattern` @@ -418,13 +407,9 @@ Extra keys we map (no stock counterpart):
-### 🟡 `LayoutHandler` — `Layout` +### ✅ `LayoutHandler` — `Layout` -Backed by `LayoutHandler`. **31 / 32 keys (97%)**. - -Missing keys: - -- [ ] `ClipsToBounds` +Backed by `LayoutHandler`. **32 / 32 keys (100%)**. Extra keys we map (no stock counterpart): @@ -440,7 +425,7 @@ Extra keys we map (no stock counterpart): - [x] `Background` - [x] `Border` - [x] `Clip` -- [ ] `ClipsToBounds` +- [x] `ClipsToBounds` - [x] `ContainerView` - [x] `FlowDirection` - [x] `Height` @@ -471,11 +456,10 @@ Extra keys we map (no stock counterpart): ### 🟡 `RefreshViewHandler` — `RefreshView` -Backed by `RefreshViewHandler`. **33 / 35 keys (94%)**. +Backed by `RefreshViewHandler`. **34 / 35 keys (97%)**. Missing keys: -- [ ] `IsRefreshEnabled` - [ ] `RefreshColor`
All stock keys @@ -492,7 +476,7 @@ Missing keys: - [x] `Height` - [x] `InputTransparent` - [x] `IsEnabled` -- [ ] `IsRefreshEnabled` +- [x] `IsRefreshEnabled` - [x] `IsRefreshing` - [x] `MaximumHeight` - [x] `MaximumWidth` @@ -520,11 +504,10 @@ Missing keys: ### 🟡 `ScrollViewHandler` — `ScrollView` -Backed by `ScrollViewHandler`. **32 / 35 keys (91%)**. +Backed by `ScrollViewHandler`. **33 / 35 keys (94%)**. Missing keys: -- [ ] `Content` - [ ] `HorizontalScrollBarVisibility` - [ ] `VerticalScrollBarVisibility` @@ -537,7 +520,7 @@ Missing keys: - [x] `Border` - [x] `Clip` - [x] `ContainerView` -- [ ] `Content` +- [x] `Content` - [x] `FlowDirection` - [x] `Height` - [ ] `HorizontalScrollBarVisibility` @@ -610,19 +593,9 @@ Backed by `ActivityIndicatorHandler`. **33 / 33 keys (100%)**.
-### 🟡 `ButtonHandler` — `Button` - -Backed by `ButtonHandler`. **33 / 40 keys (82%)**. - -Missing keys: +### ✅ `ButtonHandler` — `Button` -- [ ] `CharacterSpacing` -- [ ] `CornerRadius` -- [ ] `Font` -- [ ] `Padding` -- [ ] `Source` -- [ ] `StrokeColor` -- [ ] `StrokeThickness` +Backed by `ButtonHandler`. **40 / 40 keys (100%)**. Extra keys we map (no stock counterpart): @@ -635,12 +608,12 @@ Extra keys we map (no stock counterpart): - [x] `AutomationId` - [x] `Background` - [x] `Border` -- [ ] `CharacterSpacing` +- [x] `CharacterSpacing` - [x] `Clip` - [x] `ContainerView` -- [ ] `CornerRadius` +- [x] `CornerRadius` - [x] `FlowDirection` -- [ ] `Font` +- [x] `Font` - [x] `Height` - [x] `InputTransparent` - [x] `IsEnabled` @@ -649,7 +622,7 @@ Extra keys we map (no stock counterpart): - [x] `MinimumHeight` - [x] `MinimumWidth` - [x] `Opacity` -- [ ] `Padding` +- [x] `Padding` - [x] `Rotation` - [x] `RotationX` - [x] `RotationY` @@ -659,9 +632,9 @@ Extra keys we map (no stock counterpart): - [x] `ScaleY` - [x] `Semantics` - [x] `Shadow` -- [ ] `Source` -- [ ] `StrokeColor` -- [ ] `StrokeThickness` +- [x] `Source` +- [x] `StrokeColor` +- [x] `StrokeThickness` - [x] `Text` - [x] `TextColor` - [x] `ToolTip` @@ -715,14 +688,9 @@ Backed by `CheckBoxHandler`. **33 / 33 keys (100%)**. -### 🟡 `DatePickerHandler` — `DatePicker` - -Backed by `DatePickerHandler`. **37 / 39 keys (95%)**. +### ✅ `DatePickerHandler` — `DatePicker` -Missing keys: - -- [ ] `CharacterSpacing` -- [ ] `IsOpen` +Backed by `DatePickerHandler`. **39 / 39 keys (100%)**. Extra keys we map (no stock counterpart): @@ -735,7 +703,7 @@ Extra keys we map (no stock counterpart): - [x] `AutomationId` - [x] `Background` - [x] `Border` -- [ ] `CharacterSpacing` +- [x] `CharacterSpacing` - [x] `Clip` - [x] `ContainerView` - [x] `Date` @@ -745,7 +713,7 @@ Extra keys we map (no stock counterpart): - [x] `Height` - [x] `InputTransparent` - [x] `IsEnabled` -- [ ] `IsOpen` +- [x] `IsOpen` - [x] `MaximumDate` - [x] `MaximumHeight` - [x] `MaximumWidth` @@ -774,17 +742,10 @@ Extra keys we map (no stock counterpart): ### 🟡 `EditorHandler` — `Editor` -Backed by `EditorHandler`. **38 / 46 keys (83%)**. +Backed by `EditorHandler`. **45 / 46 keys (98%)**. Missing keys: -- [ ] `CharacterSpacing` -- [ ] `CursorPosition` -- [ ] `HorizontalTextAlignment` -- [ ] `IsSpellCheckEnabled` -- [ ] `IsTextPredictionEnabled` -- [ ] `PlaceholderColor` -- [ ] `SelectionLength` - [ ] `VerticalTextAlignment` Extra keys we map (no stock counterpart): @@ -798,19 +759,19 @@ Extra keys we map (no stock counterpart): - [x] `AutomationId` - [x] `Background` - [x] `Border` -- [ ] `CharacterSpacing` +- [x] `CharacterSpacing` - [x] `Clip` - [x] `ContainerView` -- [ ] `CursorPosition` +- [x] `CursorPosition` - [x] `FlowDirection` - [x] `Font` - [x] `Height` -- [ ] `HorizontalTextAlignment` +- [x] `HorizontalTextAlignment` - [x] `InputTransparent` - [x] `IsEnabled` - [x] `IsReadOnly` -- [ ] `IsSpellCheckEnabled` -- [ ] `IsTextPredictionEnabled` +- [x] `IsSpellCheckEnabled` +- [x] `IsTextPredictionEnabled` - [x] `Keyboard` - [x] `MaxLength` - [x] `MaximumHeight` @@ -819,7 +780,7 @@ Extra keys we map (no stock counterpart): - [x] `MinimumWidth` - [x] `Opacity` - [x] `Placeholder` -- [ ] `PlaceholderColor` +- [x] `PlaceholderColor` - [x] `Rotation` - [x] `RotationX` - [x] `RotationY` @@ -827,7 +788,7 @@ Extra keys we map (no stock counterpart): - [x] `Scale` - [x] `ScaleX` - [x] `ScaleY` -- [ ] `SelectionLength` +- [x] `SelectionLength` - [x] `Semantics` - [x] `Shadow` - [x] `Text` @@ -844,20 +805,10 @@ Extra keys we map (no stock counterpart): ### 🟡 `EntryHandler` — `Entry` -Backed by `EntryHandler`. **38 / 49 keys (78%)**. +Backed by `EntryHandler`. **48 / 49 keys (98%)**. Missing keys: -- [ ] `CharacterSpacing` -- [ ] `ClearButtonVisibility` -- [ ] `CursorPosition` -- [ ] `HorizontalTextAlignment` -- [ ] `IsSpellCheckEnabled` -- [ ] `IsTextPredictionEnabled` -- [ ] `MaxLength` -- [ ] `PlaceholderColor` -- [ ] `ReturnType` -- [ ] `SelectionLength` - [ ] `VerticalTextAlignment` Extra keys we map (no stock counterpart): @@ -871,31 +822,31 @@ Extra keys we map (no stock counterpart): - [x] `AutomationId` - [x] `Background` - [x] `Border` -- [ ] `CharacterSpacing` -- [ ] `ClearButtonVisibility` +- [x] `CharacterSpacing` +- [x] `ClearButtonVisibility` - [x] `Clip` - [x] `ContainerView` -- [ ] `CursorPosition` +- [x] `CursorPosition` - [x] `FlowDirection` - [x] `Font` - [x] `Height` -- [ ] `HorizontalTextAlignment` +- [x] `HorizontalTextAlignment` - [x] `InputTransparent` - [x] `IsEnabled` - [x] `IsPassword` - [x] `IsReadOnly` -- [ ] `IsSpellCheckEnabled` -- [ ] `IsTextPredictionEnabled` +- [x] `IsSpellCheckEnabled` +- [x] `IsTextPredictionEnabled` - [x] `Keyboard` -- [ ] `MaxLength` +- [x] `MaxLength` - [x] `MaximumHeight` - [x] `MaximumWidth` - [x] `MinimumHeight` - [x] `MinimumWidth` - [x] `Opacity` - [x] `Placeholder` -- [ ] `PlaceholderColor` -- [ ] `ReturnType` +- [x] `PlaceholderColor` +- [x] `ReturnType` - [x] `Rotation` - [x] `RotationX` - [x] `RotationY` @@ -903,7 +854,7 @@ Extra keys we map (no stock counterpart): - [x] `Scale` - [x] `ScaleX` - [x] `ScaleY` -- [ ] `SelectionLength` +- [x] `SelectionLength` - [x] `Semantics` - [x] `Shadow` - [x] `Text` @@ -1016,14 +967,9 @@ Missing keys: -### 🟡 `IndicatorViewHandler` — `IndicatorView` +### ✅ `IndicatorViewHandler` — `IndicatorView` -Backed by `IndicatorViewHandler`. **37 / 39 keys (95%)**. - -Missing keys: - -- [ ] `HideSingle` -- [ ] `MaximumVisible` +Backed by `IndicatorViewHandler`. **39 / 39 keys (100%)**.
All stock keys @@ -1037,14 +983,14 @@ Missing keys: - [x] `Count` - [x] `FlowDirection` - [x] `Height` -- [ ] `HideSingle` +- [x] `HideSingle` - [x] `IndicatorColor` - [x] `IndicatorSize` - [x] `IndicatorsShape` - [x] `InputTransparent` - [x] `IsEnabled` - [x] `MaximumHeight` -- [ ] `MaximumVisible` +- [x] `MaximumVisible` - [x] `MaximumWidth` - [x] `MinimumHeight` - [x] `MinimumWidth` @@ -1071,14 +1017,10 @@ Missing keys: ### 🟡 `LabelHandler` — `Label` -Backed by `LabelHandler`. **35 / 40 keys (88%)**. +Backed by `LabelHandler`. **39 / 40 keys (98%)**. Missing keys: -- [ ] `CharacterSpacing` -- [ ] `LineHeight` -- [ ] `Padding` -- [ ] `TextDecorations` - [ ] `VerticalTextAlignment` Extra keys we map (no stock counterpart): @@ -1092,7 +1034,7 @@ Extra keys we map (no stock counterpart): - [x] `AutomationId` - [x] `Background` - [x] `Border` -- [ ] `CharacterSpacing` +- [x] `CharacterSpacing` - [x] `Clip` - [x] `ContainerView` - [x] `FlowDirection` @@ -1101,13 +1043,13 @@ Extra keys we map (no stock counterpart): - [x] `HorizontalTextAlignment` - [x] `InputTransparent` - [x] `IsEnabled` -- [ ] `LineHeight` +- [x] `LineHeight` - [x] `MaximumHeight` - [x] `MaximumWidth` - [x] `MinimumHeight` - [x] `MinimumWidth` - [x] `Opacity` -- [ ] `Padding` +- [x] `Padding` - [x] `Rotation` - [x] `RotationX` - [x] `RotationY` @@ -1119,7 +1061,7 @@ Extra keys we map (no stock counterpart): - [x] `Shadow` - [x] `Text` - [x] `TextColor` -- [ ] `TextDecorations` +- [x] `TextDecorations` - [x] `ToolTip` - [x] `Toolbar` - [x] `TranslationX` @@ -1132,14 +1074,10 @@ Extra keys we map (no stock counterpart): ### 🟡 `PickerHandler` — `Picker` -Backed by `PickerHandler`. **36 / 41 keys (88%)**. +Backed by `PickerHandler`. **40 / 41 keys (98%)**. Missing keys: -- [ ] `CharacterSpacing` -- [ ] `HorizontalTextAlignment` -- [ ] `IsOpen` -- [ ] `Items` - [ ] `VerticalTextAlignment` Extra keys we map (no stock counterpart): @@ -1154,17 +1092,17 @@ Extra keys we map (no stock counterpart): - [x] `AutomationId` - [x] `Background` - [x] `Border` -- [ ] `CharacterSpacing` +- [x] `CharacterSpacing` - [x] `Clip` - [x] `ContainerView` - [x] `FlowDirection` - [x] `Font` - [x] `Height` -- [ ] `HorizontalTextAlignment` +- [x] `HorizontalTextAlignment` - [x] `InputTransparent` - [x] `IsEnabled` -- [ ] `IsOpen` -- [ ] `Items` +- [x] `IsOpen` +- [x] `Items` - [x] `MaximumHeight` - [x] `MaximumWidth` - [x] `MinimumHeight` @@ -1237,11 +1175,10 @@ Backed by `ProgressBarHandler`. **33 / 33 keys (100%)**. ### 🟡 `RadioButtonHandler` — `RadioButton` -Backed by `RadioButtonHandler`. **35 / 39 keys (90%)**. +Backed by `RadioButtonHandler`. **36 / 39 keys (92%)**. Missing keys: -- [ ] `CharacterSpacing` - [ ] `CornerRadius` - [ ] `StrokeColor` - [ ] `StrokeThickness` @@ -1253,7 +1190,7 @@ Missing keys: - [x] `AutomationId` - [x] `Background` - [x] `Border` -- [ ] `CharacterSpacing` +- [x] `CharacterSpacing` - [x] `Clip` - [x] `ContainerView` - [x] `Content` @@ -1292,24 +1229,17 @@ Missing keys: ### 🟡 `SearchBarHandler` — `SearchBar` -Backed by `SearchBarHandler`. **37 / 47 keys (79%)**. +Backed by `SearchBarHandler`. **46 / 47 keys (98%)**. Missing keys: -- [ ] `CancelButtonColor` -- [ ] `CharacterSpacing` -- [ ] `HorizontalTextAlignment` -- [ ] `IsSpellCheckEnabled` -- [ ] `IsTextPredictionEnabled` -- [ ] `MaxLength` -- [ ] `PlaceholderColor` -- [ ] `ReturnType` -- [ ] `SearchIconColor` - [ ] `VerticalTextAlignment` Extra keys we map (no stock counterpart): +- `CursorPosition` - `HorizontalLayoutAlignment` +- `SelectionLength`
All stock keys @@ -1318,29 +1248,29 @@ Extra keys we map (no stock counterpart): - [x] `AutomationId` - [x] `Background` - [x] `Border` -- [ ] `CancelButtonColor` -- [ ] `CharacterSpacing` +- [x] `CancelButtonColor` +- [x] `CharacterSpacing` - [x] `Clip` - [x] `ContainerView` - [x] `FlowDirection` - [x] `Font` - [x] `Height` -- [ ] `HorizontalTextAlignment` +- [x] `HorizontalTextAlignment` - [x] `InputTransparent` - [x] `IsEnabled` - [x] `IsReadOnly` -- [ ] `IsSpellCheckEnabled` -- [ ] `IsTextPredictionEnabled` +- [x] `IsSpellCheckEnabled` +- [x] `IsTextPredictionEnabled` - [x] `Keyboard` -- [ ] `MaxLength` +- [x] `MaxLength` - [x] `MaximumHeight` - [x] `MaximumWidth` - [x] `MinimumHeight` - [x] `MinimumWidth` - [x] `Opacity` - [x] `Placeholder` -- [ ] `PlaceholderColor` -- [ ] `ReturnType` +- [x] `PlaceholderColor` +- [x] `ReturnType` - [x] `Rotation` - [x] `RotationX` - [x] `RotationY` @@ -1348,7 +1278,7 @@ Extra keys we map (no stock counterpart): - [x] `Scale` - [x] `ScaleX` - [x] `ScaleY` -- [ ] `SearchIconColor` +- [x] `SearchIconColor` - [x] `Semantics` - [x] `Shadow` - [x] `Text` @@ -1501,14 +1431,9 @@ Backed by `SwitchHandler`. **34 / 34 keys (100%)**.
-### 🟡 `TimePickerHandler` — `TimePicker` - -Backed by `TimePickerHandler`. **35 / 37 keys (95%)**. +### ✅ `TimePickerHandler` — `TimePicker` -Missing keys: - -- [ ] `CharacterSpacing` -- [ ] `IsOpen` +Backed by `TimePickerHandler`. **37 / 37 keys (100%)**. Extra keys we map (no stock counterpart): @@ -1521,7 +1446,7 @@ Extra keys we map (no stock counterpart): - [x] `AutomationId` - [x] `Background` - [x] `Border` -- [ ] `CharacterSpacing` +- [x] `CharacterSpacing` - [x] `Clip` - [x] `ContainerView` - [x] `FlowDirection` @@ -1530,7 +1455,7 @@ Extra keys we map (no stock counterpart): - [x] `Height` - [x] `InputTransparent` - [x] `IsEnabled` -- [ ] `IsOpen` +- [x] `IsOpen` - [x] `MaximumHeight` - [x] `MaximumWidth` - [x] `MinimumHeight` diff --git a/src/Microsoft.AndroidX.Compose.Maui.Sample/Pages/ButtonsPage.xaml b/src/Microsoft.AndroidX.Compose.Maui.Sample/Pages/ButtonsPage.xaml index 8c0811ae..eca77173 100644 --- a/src/Microsoft.AndroidX.Compose.Maui.Sample/Pages/ButtonsPage.xaml +++ b/src/Microsoft.AndroidX.Compose.Maui.Sample/Pages/ButtonsPage.xaml @@ -64,6 +64,75 @@ x:Name="ClickCountLabel" Text="No clicks yet" /> + +