|
54 | 54 | <!-- The desktop FeedView's populated state: the materialized feed value in a ListView. The item |
55 | 55 | container style is in Styles.xaml with the rest of the named styles. --> |
56 | 56 | <DataTemplate x:Key="DesktopContactListTemplate"> |
57 | | - <Grid> |
58 | | - <ContentControl ContentTemplate="{StaticResource ContactListLoadingTemplate}" |
59 | | - HorizontalAlignment="Stretch" |
60 | | - HorizontalContentAlignment="Stretch" |
61 | | - IsTabStop="False" |
62 | | - AutomationProperties.AccessibilityView="Raw" |
63 | | - Visibility="{Binding Data.Count, Converter={StaticResource EmptyToVisibility}}" /> |
64 | | - <ListView ItemsSource="{Binding Data}" |
65 | | - BorderThickness="0" |
66 | | - Background="Transparent" |
67 | | - SelectionMode="None" |
68 | | - ItemContainerStyle="{StaticResource ContactListItemStyle}" |
69 | | - ItemTemplate="{StaticResource DesktopContactCardTemplate}" /> |
70 | | - </Grid> |
| 57 | + <ListView ItemsSource="{Binding Data}" |
| 58 | + BorderThickness="0" |
| 59 | + Background="Transparent" |
| 60 | + SelectionMode="None" |
| 61 | + ItemContainerStyle="{StaticResource ContactListItemStyle}" |
| 62 | + ItemTemplate="{StaticResource DesktopContactCardTemplate}" /> |
71 | 63 | </DataTemplate> |
72 | 64 |
|
73 | 65 | <!-- The desktop FeedView's None state (a list feed emits None when it has no items). --> |
|
102 | 94 | scroll and the whole page scrolls as one — a nested ListView scroll would trap the gesture |
103 | 95 | and never move the page offset. --> |
104 | 96 | <DataTemplate x:Key="MobileContactListTemplate"> |
105 | | - <Grid> |
106 | | - <ContentControl ContentTemplate="{StaticResource ContactListLoadingTemplate}" |
107 | | - HorizontalAlignment="Stretch" |
108 | | - HorizontalContentAlignment="Stretch" |
109 | | - IsTabStop="False" |
110 | | - AutomationProperties.AccessibilityView="Raw" |
111 | | - Visibility="{Binding Data.Count, Converter={StaticResource EmptyToVisibility}}" /> |
112 | | - <ItemsControl ItemsSource="{Binding Data}" |
113 | | - ItemTemplate="{StaticResource MobileContactCardTemplate}" /> |
114 | | - </Grid> |
| 97 | + <ItemsControl ItemsSource="{Binding Data}" |
| 98 | + ItemTemplate="{StaticResource MobileContactCardTemplate}" /> |
115 | 99 | </DataTemplate> |
116 | 100 |
|
117 | 101 | <!-- The mobile FeedView's None state. --> |
|
631 | 615 | <!-- Recent activity, in the desktop and mobile treatments. Both render the SAME Activities feed, |
632 | 616 | so the two arrangements stay in step by construction. --> |
633 | 617 | <DataTemplate x:Key="DesktopActivityListTemplate"> |
634 | | - <!-- The loading shape sits under the rows and hides as soon as there are any. A value state whose |
635 | | - collection is still empty is not an empty result — an empty result reports "none" and picks the |
636 | | - empty-state template — so it can only be a collection that has not filled yet, and the honest |
637 | | - thing to show is the shape of what is coming. Without this the card has no content and |
638 | | - collapses to its own padding. --> |
639 | | - <Grid Background="{ThemeResource DashboardSurfaceBrush}"> |
640 | | - <ContentControl ContentTemplate="{StaticResource ActivityLoadingTemplate}" |
641 | | - HorizontalAlignment="Stretch" |
642 | | - HorizontalContentAlignment="Stretch" |
643 | | - IsTabStop="False" |
644 | | - AutomationProperties.AccessibilityView="Raw" |
645 | | - Visibility="{Binding Data.Count, Converter={StaticResource EmptyToVisibility}}" /> |
646 | | - <ItemsControl ItemsSource="{Binding Data}" |
647 | | - ItemTemplate="{StaticResource DesktopActivityTemplate}" /> |
648 | | - </Grid> |
| 618 | + <ItemsControl ItemsSource="{Binding Data}" |
| 619 | + ItemTemplate="{StaticResource DesktopActivityTemplate}" /> |
649 | 620 | </DataTemplate> |
650 | 621 |
|
651 | 622 | <DataTemplate x:Key="MobileActivityListTemplate"> |
652 | | - <!-- The loading shape sits under the rows and hides as soon as there are any. A value state whose |
653 | | - collection is still empty is not an empty result — an empty result reports "none" and picks the |
654 | | - empty-state template — so it can only be a collection that has not filled yet, and the honest |
655 | | - thing to show is the shape of what is coming. Without this the card has no content and |
656 | | - collapses to its own padding. --> |
657 | | - <Grid Background="{ThemeResource DashboardSurfaceBrush}"> |
658 | | - <ContentControl ContentTemplate="{StaticResource ActivityLoadingTemplate}" |
659 | | - HorizontalAlignment="Stretch" |
660 | | - HorizontalContentAlignment="Stretch" |
661 | | - IsTabStop="False" |
662 | | - AutomationProperties.AccessibilityView="Raw" |
663 | | - Visibility="{Binding Data.Count, Converter={StaticResource EmptyToVisibility}}" /> |
664 | | - <ItemsControl ItemsSource="{Binding Data}" |
665 | | - ItemTemplate="{StaticResource MobileActivityTemplate}" /> |
666 | | - </Grid> |
| 623 | + <ItemsControl ItemsSource="{Binding Data}" |
| 624 | + ItemTemplate="{StaticResource MobileActivityTemplate}" /> |
667 | 625 | </DataTemplate> |
668 | 626 |
|
669 | 627 | <!-- The activity feed with nothing in it. A ghosted row of the real thing — a title bar over a |
670 | 628 | detail bar with a timestamp opposite — then what would fill it. Same device as the pipeline's |
671 | 629 | empty state, so the app answers "nothing here" the same way everywhere. --> |
672 | 630 | <DataTemplate x:Key="NoActivityTemplate"> |
673 | 631 | <StackPanel Spacing="14" Margin="16,18,16,18"> |
674 | | - Background="{ThemeResource DashboardSurfaceBrush}" |
675 | 632 | <Grid ColumnSpacing="14" Opacity="0.4"> |
676 | 633 | <Grid.ColumnDefinitions> |
677 | 634 | <ColumnDefinition Width="*" /> |
|
698 | 655 | </StackPanel> |
699 | 656 | </DataTemplate> |
700 | 657 |
|
701 | | - <!-- The activity feed before its request has answered. The page's own rows, ghosted three deep, so |
702 | | - the panel has the shape and height of the thing it is about to show instead of collapsing to |
703 | | - nothing and shoving the layout when the rows land. Three, because that is what fits without |
704 | | - claiming to know how many are coming. |
705 | | -
|
706 | | - The rest of the app declares no loading template — every other request either resolves into a |
707 | | - surface that reads fine empty, or has a designed empty state. This panel has neither: it is a |
708 | | - full-width card whose content is the only thing in it. --> |
709 | | - <DataTemplate x:Key="ActivityLoadingTemplate"> |
710 | | - <StackPanel Opacity="0.35"> |
711 | | - <Grid ColumnSpacing="14" Padding="16,18"> |
712 | | - <Grid.ColumnDefinitions> |
713 | | - <ColumnDefinition Width="*" /> |
714 | | - <ColumnDefinition Width="Auto" /> |
715 | | - </Grid.ColumnDefinitions> |
716 | | - <StackPanel Spacing="7" VerticalAlignment="Center"> |
717 | | - <Border Height="9" Width="176" CornerRadius="4" HorizontalAlignment="Left" |
718 | | - Background="{ThemeResource DashboardMutedTextBrush}" /> |
719 | | - <Border Height="7" Width="104" CornerRadius="3" HorizontalAlignment="Left" |
720 | | - Background="{ThemeResource DashboardBorderBrush}" /> |
721 | | - </StackPanel> |
722 | | - <Border Grid.Column="1" Height="7" Width="34" CornerRadius="3" VerticalAlignment="Center" |
723 | | - Background="{ThemeResource DashboardBorderBrush}" /> |
724 | | - </Grid> |
725 | | - <Grid ColumnSpacing="14" Padding="16,18"> |
726 | | - <Grid.ColumnDefinitions> |
727 | | - <ColumnDefinition Width="*" /> |
728 | | - <ColumnDefinition Width="Auto" /> |
729 | | - </Grid.ColumnDefinitions> |
730 | | - <StackPanel Spacing="7" VerticalAlignment="Center"> |
731 | | - <Border Height="9" Width="138" CornerRadius="4" HorizontalAlignment="Left" |
732 | | - Background="{ThemeResource DashboardMutedTextBrush}" /> |
733 | | - <Border Height="7" Width="126" CornerRadius="3" HorizontalAlignment="Left" |
734 | | - Background="{ThemeResource DashboardBorderBrush}" /> |
735 | | - </StackPanel> |
736 | | - <Border Grid.Column="1" Height="7" Width="34" CornerRadius="3" VerticalAlignment="Center" |
737 | | - Background="{ThemeResource DashboardBorderBrush}" /> |
738 | | - </Grid> |
739 | | - <Grid ColumnSpacing="14" Padding="16,18"> |
740 | | - <Grid.ColumnDefinitions> |
741 | | - <ColumnDefinition Width="*" /> |
742 | | - <ColumnDefinition Width="Auto" /> |
743 | | - </Grid.ColumnDefinitions> |
744 | | - <StackPanel Spacing="7" VerticalAlignment="Center"> |
745 | | - <Border Height="9" Width="160" CornerRadius="4" HorizontalAlignment="Left" |
746 | | - Background="{ThemeResource DashboardMutedTextBrush}" /> |
747 | | - <Border Height="7" Width="88" CornerRadius="3" HorizontalAlignment="Left" |
748 | | - Background="{ThemeResource DashboardBorderBrush}" /> |
749 | | - </StackPanel> |
750 | | - <Border Grid.Column="1" Height="7" Width="34" CornerRadius="3" VerticalAlignment="Center" |
751 | | - Background="{ThemeResource DashboardBorderBrush}" /> |
752 | | - </Grid> |
753 | | - </StackPanel> |
754 | | - </DataTemplate> |
755 | | - |
756 | 658 | <!-- The mobile pipeline board's stage list. --> |
757 | 659 | <DataTemplate x:Key="MobileStageListTemplate"> |
758 | | - <Grid Background="{ThemeResource DashboardPageBackgroundBrush}"> |
759 | | - <ContentControl ContentTemplate="{StaticResource StageListLoadingTemplate}" |
760 | | - HorizontalAlignment="Stretch" |
761 | | - HorizontalContentAlignment="Stretch" |
762 | | - IsTabStop="False" |
763 | | - AutomationProperties.AccessibilityView="Raw" |
764 | | - Visibility="{Binding Data.Count, Converter={StaticResource EmptyToVisibility}}" /> |
765 | | - <ItemsControl ItemsSource="{Binding Data}" |
766 | | - ItemTemplate="{StaticResource MobileStageTemplate}" |
767 | | - ItemsPanel="{StaticResource StageStackPanel}" /> |
768 | | - </Grid> |
| 660 | + <ItemsControl ItemsSource="{Binding Data}" |
| 661 | + ItemTemplate="{StaticResource MobileStageTemplate}" |
| 662 | + ItemsPanel="{StaticResource StageStackPanel}" /> |
769 | 663 | </DataTemplate> |
770 | 664 |
|
771 | 665 | <!-- The board's empty state. It owns a whole page region rather than a slot inside a card, so it |
|
780 | 674 | same button twice. --> |
781 | 675 | <DataTemplate x:Key="NoStagesTemplate"> |
782 | 676 | <StackPanel HorizontalAlignment="Center" |
783 | | - Background="{ThemeResource DashboardPageBackgroundBrush}" |
784 | 677 | MaxWidth="300" |
785 | 678 | Spacing="16" |
786 | 679 | Margin="0,48,0,32"> |
|
822 | 715 |
|
823 | 716 | <!-- The Leads page's top-open-leads list (desktop rail). --> |
824 | 717 | <DataTemplate x:Key="TopLeadListTemplate"> |
825 | | - <Grid> |
826 | | - <ContentControl ContentTemplate="{StaticResource TopLeadLoadingTemplate}" |
827 | | - HorizontalAlignment="Stretch" |
828 | | - HorizontalContentAlignment="Stretch" |
829 | | - IsTabStop="False" |
830 | | - AutomationProperties.AccessibilityView="Raw" |
831 | | - Visibility="{Binding Data.Count, Converter={StaticResource EmptyToVisibility}}" /> |
832 | | - <ItemsControl ItemsSource="{Binding Data}" |
833 | | - ItemTemplate="{StaticResource TopLeadTemplate}" /> |
834 | | - </Grid> |
| 718 | + <ItemsControl ItemsSource="{Binding Data}" |
| 719 | + ItemTemplate="{StaticResource TopLeadTemplate}" /> |
835 | 720 | </DataTemplate> |
836 | 721 |
|
837 | 722 | <DataTemplate x:Key="NoOpenLeadsTemplate"> |
|
946 | 831 | </Grid> |
947 | 832 | </DataTemplate> |
948 | 833 |
|
949 | | - <!-- The shape of each list while its collection is still filling. Each mirrors its own row so the |
950 | | - panel holds the height and rhythm of what is coming, rather than collapsing and then shoving the |
951 | | - layout when the real rows land. --> |
952 | | - <DataTemplate x:Key="StageListLoadingTemplate"> |
953 | | - <StackPanel Spacing="18" Opacity="0.35"> |
954 | | - <StackPanel Spacing="10"> |
955 | | - <StackPanel Orientation="Horizontal" Spacing="8"> |
956 | | - <Ellipse Width="10" Height="10" VerticalAlignment="Center" |
957 | | - Fill="{ThemeResource DashboardMutedTextBrush}" /> |
958 | | - <Border Width="96" Style="{StaticResource GhostBarStyle}" Height="8" /> |
959 | | - </StackPanel> |
960 | | - <Border Height="52" CornerRadius="{StaticResource RadiusMd}" BorderThickness="1" |
961 | | - BorderBrush="{ThemeResource DashboardBorderBrush}" /> |
962 | | - <Border Height="52" CornerRadius="{StaticResource RadiusMd}" BorderThickness="1" |
963 | | - BorderBrush="{ThemeResource DashboardBorderBrush}" /> |
964 | | - </StackPanel> |
965 | | - <StackPanel Spacing="10"> |
966 | | - <StackPanel Orientation="Horizontal" Spacing="8"> |
967 | | - <Ellipse Width="10" Height="10" VerticalAlignment="Center" |
968 | | - Fill="{ThemeResource DashboardMutedTextBrush}" /> |
969 | | - <Border Width="76" Style="{StaticResource GhostBarStyle}" Height="8" /> |
970 | | - </StackPanel> |
971 | | - <Border Height="52" CornerRadius="{StaticResource RadiusMd}" BorderThickness="1" |
972 | | - BorderBrush="{ThemeResource DashboardBorderBrush}" /> |
973 | | - <Border Height="52" CornerRadius="{StaticResource RadiusMd}" BorderThickness="1" |
974 | | - BorderBrush="{ThemeResource DashboardBorderBrush}" /> |
975 | | - </StackPanel> |
976 | | - </StackPanel> |
977 | | - </DataTemplate> |
978 | | - |
979 | | - <DataTemplate x:Key="TopLeadLoadingTemplate"> |
980 | | - <StackPanel Opacity="0.35"> |
981 | | - <Grid Padding="0,0,0,10" Margin="0,0,0,10"> |
982 | | - <Grid.ColumnDefinitions> |
983 | | - <ColumnDefinition Width="*" /> |
984 | | - <ColumnDefinition Width="Auto" /> |
985 | | - </Grid.ColumnDefinitions> |
986 | | - <Border Width="132" Style="{StaticResource GhostBarStyle}" /> |
987 | | - <Border Grid.Column="1" Width="62" Style="{StaticResource GhostBarFaintStyle}" /> |
988 | | - </Grid> |
989 | | - <Grid Padding="0,0,0,10" Margin="0,0,0,10"> |
990 | | - <Grid.ColumnDefinitions> |
991 | | - <ColumnDefinition Width="*" /> |
992 | | - <ColumnDefinition Width="Auto" /> |
993 | | - </Grid.ColumnDefinitions> |
994 | | - <Border Width="108" Style="{StaticResource GhostBarStyle}" /> |
995 | | - <Border Grid.Column="1" Width="56" Style="{StaticResource GhostBarFaintStyle}" /> |
996 | | - </Grid> |
997 | | - <Grid Padding="0,0,0,10" Margin="0,0,0,10"> |
998 | | - <Grid.ColumnDefinitions> |
999 | | - <ColumnDefinition Width="*" /> |
1000 | | - <ColumnDefinition Width="Auto" /> |
1001 | | - </Grid.ColumnDefinitions> |
1002 | | - <Border Width="146" Style="{StaticResource GhostBarStyle}" /> |
1003 | | - <Border Grid.Column="1" Width="66" Style="{StaticResource GhostBarFaintStyle}" /> |
1004 | | - </Grid> |
1005 | | - </StackPanel> |
1006 | | - </DataTemplate> |
1007 | | - |
1008 | | - <DataTemplate x:Key="ContactListLoadingTemplate"> |
1009 | | - <StackPanel Opacity="0.35"> |
1010 | | - <Border Style="{StaticResource DashboardKanbanCardStyle}" Margin="0,0,0,10"> |
1011 | | - <StackPanel Spacing="9"> |
1012 | | - <Border Width="126" Style="{StaticResource GhostBarStyle}" /> |
1013 | | - <Border Width="96" Style="{StaticResource GhostBarFaintStyle}" /> |
1014 | | - <Grid> |
1015 | | - <Grid.ColumnDefinitions> |
1016 | | - <ColumnDefinition Width="*" /> |
1017 | | - <ColumnDefinition Width="Auto" /> |
1018 | | - </Grid.ColumnDefinitions> |
1019 | | - <Border Width="74" Style="{StaticResource GhostBarFaintStyle}" /> |
1020 | | - <Border Grid.Column="1" Width="44" Style="{StaticResource GhostBarFaintStyle}" /> |
1021 | | - </Grid> |
1022 | | - </StackPanel> |
1023 | | - </Border> |
1024 | | - <Border Style="{StaticResource DashboardKanbanCardStyle}" Margin="0,0,0,10"> |
1025 | | - <StackPanel Spacing="9"> |
1026 | | - <Border Width="104" Style="{StaticResource GhostBarStyle}" /> |
1027 | | - <Border Width="118" Style="{StaticResource GhostBarFaintStyle}" /> |
1028 | | - <Grid> |
1029 | | - <Grid.ColumnDefinitions> |
1030 | | - <ColumnDefinition Width="*" /> |
1031 | | - <ColumnDefinition Width="Auto" /> |
1032 | | - </Grid.ColumnDefinitions> |
1033 | | - <Border Width="66" Style="{StaticResource GhostBarFaintStyle}" /> |
1034 | | - <Border Grid.Column="1" Width="44" Style="{StaticResource GhostBarFaintStyle}" /> |
1035 | | - </Grid> |
1036 | | - </StackPanel> |
1037 | | - </Border> |
1038 | | - <Border Style="{StaticResource DashboardKanbanCardStyle}" Margin="0,0,0,10"> |
1039 | | - <StackPanel Spacing="9"> |
1040 | | - <Border Width="140" Style="{StaticResource GhostBarStyle}" /> |
1041 | | - <Border Width="88" Style="{StaticResource GhostBarFaintStyle}" /> |
1042 | | - <Grid> |
1043 | | - <Grid.ColumnDefinitions> |
1044 | | - <ColumnDefinition Width="*" /> |
1045 | | - <ColumnDefinition Width="Auto" /> |
1046 | | - </Grid.ColumnDefinitions> |
1047 | | - <Border Width="82" Style="{StaticResource GhostBarFaintStyle}" /> |
1048 | | - <Border Grid.Column="1" Width="44" Style="{StaticResource GhostBarFaintStyle}" /> |
1049 | | - </Grid> |
1050 | | - </StackPanel> |
1051 | | - </Border> |
1052 | | - </StackPanel> |
1053 | | - </DataTemplate> |
1054 | | - |
1055 | 834 | </ResourceDictionary> |
0 commit comments