feat(ui): tasks island with rows, chips, add-task, selection
TaskRowView with status chip (EqStatus converter + parameter), StrikeIfTrue, NotNullToBool converters. TasksIslandView with header, add-task TextBox (Enter=AddCommand), ItemsControl + flat Button for selection. Converters registered in App.axaml. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
57
src/ClaudeDo.Ui/Views/Islands/TaskRowView.axaml
Normal file
57
src/ClaudeDo.Ui/Views/Islands/TaskRowView.axaml
Normal file
@@ -0,0 +1,57 @@
|
||||
<UserControl xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:vm="using:ClaudeDo.Ui.ViewModels.Islands"
|
||||
x:Class="ClaudeDo.Ui.Views.Islands.TaskRowView"
|
||||
x:DataType="vm:TaskRowViewModel">
|
||||
<Border Classes="task-row" Classes.selected="{Binding IsSelected}">
|
||||
<Grid ColumnDefinitions="36,*,32" Margin="10,10">
|
||||
<!-- Done toggle -->
|
||||
<Button Grid.Column="0" Classes="check-btn" VerticalAlignment="Center"
|
||||
Command="{Binding $parent[ItemsControl].((vm:TasksIslandViewModel)DataContext).ToggleDoneCommand}"
|
||||
CommandParameter="{Binding}">
|
||||
<Ellipse Width="18" Height="18" Classes="task-check"
|
||||
Classes.done="{Binding Done}"/>
|
||||
</Button>
|
||||
|
||||
<!-- Title + chip row + live tail -->
|
||||
<StackPanel Grid.Column="1" Spacing="6" VerticalAlignment="Center">
|
||||
<TextBlock Text="{Binding Title}" FontSize="14"
|
||||
Foreground="{DynamicResource TextBrush}"
|
||||
TextDecorations="{Binding Done, Converter={StaticResource StrikeIfTrue}}"/>
|
||||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||
<Border Classes="chip"
|
||||
Classes.running="{Binding Status, Converter={StaticResource EqStatus}, ConverterParameter=Running}"
|
||||
Classes.review="{Binding Status, Converter={StaticResource EqStatus}, ConverterParameter=Done}"
|
||||
Classes.error="{Binding Status, Converter={StaticResource EqStatus}, ConverterParameter=Failed}"
|
||||
Classes.queued="{Binding Status, Converter={StaticResource EqStatus}, ConverterParameter=Queued}">
|
||||
<TextBlock Text="{Binding Status}" FontSize="10"
|
||||
FontFamily="{DynamicResource MonoFamily}" Margin="6,2"/>
|
||||
</Border>
|
||||
<Border Classes="chip">
|
||||
<TextBlock Text="{Binding ListName}" FontSize="10" Margin="6,2"
|
||||
Foreground="{DynamicResource TextDimBrush}"/>
|
||||
</Border>
|
||||
<Border Classes="chip" IsVisible="{Binding Branch, Converter={StaticResource NotNullToBool}}">
|
||||
<TextBlock Text="{Binding Branch}" FontFamily="{DynamicResource MonoFamily}"
|
||||
FontSize="10" Margin="6,2"/>
|
||||
</Border>
|
||||
<Border Classes="chip" IsVisible="{Binding DiffStat, Converter={StaticResource NotNullToBool}}">
|
||||
<TextBlock Text="{Binding DiffStat}" FontFamily="{DynamicResource MonoFamily}"
|
||||
FontSize="10" Margin="6,2"/>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
<TextBlock Text="{Binding LiveTail}" FontFamily="{DynamicResource MonoFamily}"
|
||||
FontSize="11" Foreground="{DynamicResource TextMuteBrush}"
|
||||
TextTrimming="CharacterEllipsis" MaxLines="1"
|
||||
IsVisible="{Binding LiveTail, Converter={StaticResource NotNullToBool}}"/>
|
||||
</StackPanel>
|
||||
|
||||
<!-- Star toggle -->
|
||||
<Button Grid.Column="2" Classes="icon-btn" VerticalAlignment="Center"
|
||||
Command="{Binding $parent[ItemsControl].((vm:TasksIslandViewModel)DataContext).ToggleStarCommand}"
|
||||
CommandParameter="{Binding}">
|
||||
<PathIcon Width="14" Height="14"/>
|
||||
</Button>
|
||||
</Grid>
|
||||
</Border>
|
||||
</UserControl>
|
||||
Reference in New Issue
Block a user