Skip to main content

ferroui_controls/
lib.rs

1//! FerroUI controls library: the control base classes, panels, templating
2//! and the windowing platform contracts.
3
4pub mod animation;
5pub mod application_lifetimes;
6pub mod automation;
7pub mod chrome;
8pub mod diagnostics;
9pub mod embedding;
10pub mod converters;
11pub mod metadata;
12pub mod notifications;
13pub mod platform;
14pub mod presentation_source;
15pub mod presenters;
16pub mod primitives;
17pub mod remote;
18pub mod shapes;
19pub mod templates;
20pub mod utils;
21
22mod acrylic_platform_compensation_levels;
23mod border;
24mod canvas;
25mod column_definition;
26mod column_definitions;
27mod content_control;
28mod control;
29mod control_extensions;
30mod controls;
31mod decorator;
32mod definition_base;
33mod definition_list;
34mod dock_panel;
35mod grid;
36mod grid_length;
37mod i_global_data_templates;
38mod layout_transform_control;
39mod markup_types;
40mod panel;
41mod pixel_point_event_args;
42mod placement_mode;
43mod platform_inhibition_type;
44mod register_types;
45#[doc(hidden)]
46pub use markup_types::{AddChildOf, FerroListOf};
47mod rust_paths;
48mod relative_panel;
49mod request_bring_into_view_event_args;
50mod row_definition;
51mod row_definitions;
52mod size_changed_event_args;
53mod size_to_content;
54mod screens;
55mod top_level;
56mod top_level_host;
57mod top_level_host_decorations;
58mod top_level_host_peers;
59mod window_base;
60mod stack_panel;
61mod viewbox;
62mod window_closing_event_args;
63mod window_decorations;
64mod window_edge;
65mod window_resized_event_args;
66mod window_startup_location;
67mod window_state;
68mod window_transparency_level;
69mod wrap_panel;
70
71pub use acrylic_platform_compensation_levels::AcrylicPlatformCompensationLevels;
72pub use border::Border;
73pub use canvas::{Canvas, CanvasImpl, CanvasImplExt, CanvasVTable};
74pub use column_definition::ColumnDefinition;
75pub use column_definitions::ColumnDefinitions;
76pub use content_control::{ContentControl, ContentControlImpl, ContentControlImplExt, ContentControlVTable};
77pub use control::{Control, ControlImpl, ControlImplExt, ControlVTable};
78pub use controls::Controls;
79pub use decorator::Decorator;
80pub use definition_base::{DefinitionBase, DefinitionBaseImpl, DefinitionBaseImplExt, DefinitionBaseVTable};
81pub use definition_list::DefinitionList;
82pub use dock_panel::{Dock, DockPanel};
83pub use grid::Grid;
84pub use grid_length::{GridLength, GridUnitType};
85pub use i_global_data_templates::IGlobalDataTemplates;
86pub use layout_transform_control::LayoutTransformControl;
87pub use notifications::ReversibleStackPanel;
88pub use panel::{Panel, PanelImpl, PanelImplExt, PanelVTable};
89pub use pixel_point_event_args::PixelPointEventArgs;
90pub use placement_mode::PlacementMode;
91pub use platform_inhibition_type::PlatformInhibitionType;
92pub use platform::{FeedbackAction, FeedbackType, IPlatformFeedback, PlatformFeedback, PlatformFeedbackExtensions};
93pub use relative_panel::RelativePanel;
94pub use request_bring_into_view_event_args::RequestBringIntoViewEventArgs;
95pub use row_definition::RowDefinition;
96pub use row_definitions::RowDefinitions;
97pub use size_changed_event_args::SizeChangedEventArgs;
98pub use size_to_content::SizeToContent;
99pub use screens::Screens;
100pub use top_level::{TopLevel, TopLevelImpl, TopLevelImplExt, TopLevelVTable};
101pub use window_base::{IgnoreVisibilityChangesGuard, WindowBase, WindowBaseImpl, WindowBaseImplExt, WindowBaseVTable};
102pub use stack_panel::{StackPanel, StackPanelImpl, StackPanelImplExt, StackPanelVTable};
103pub use templates::ITemplateOf;
104pub use viewbox::Viewbox;
105pub use window_closing_event_args::{WindowCloseReason, WindowClosingEventArgs};
106pub use window_decorations::WindowDecorations;
107pub use window_edge::WindowEdge;
108pub use window_resized_event_args::{WindowResizeReason, WindowResizedEventArgs};
109pub use window_startup_location::WindowStartupLocation;
110pub use window_state::WindowState;
111pub use window_transparency_level::{WindowTransparencyLevel, WindowTransparencyLevelCollection};
112pub use wrap_panel::{WrapPanel, WrapPanelItemsAlignment};
113
114mod button;
115mod button_spinner;
116mod spinner;
117mod split_button;
118mod hotkey_manager;
119pub mod mixins;
120mod i_clickable_control;
121mod i_command_source;
122mod check_box;
123mod context_menu;
124mod drop_down_button;
125mod hyperlink_button;
126mod i_menu;
127mod i_menu_element;
128mod i_menu_item;
129mod menu;
130mod menu_base;
131mod menu_item;
132mod menu_item_access_key_handler;
133mod menu_item_toggle_type;
134mod i_native_menu_exporter_events_impl_bridge;
135mod i_native_menu_item_exporter_events_impl_bridge;
136mod native_dock;
137mod native_menu;
138mod native_menu_bar;
139mod native_menu_bar_presenter;
140mod native_menu_export;
141mod native_menu_item;
142mod native_menu_item_base;
143mod native_menu_item_separator;
144#[cfg(test)]
145mod native_menu_item_tests;
146#[cfg(test)]
147mod native_menu_tests;
148mod tray_icon;
149#[cfg(test)]
150mod tray_icon_tests;
151mod radio_button;
152mod radio_button_group_manager;
153mod repeat_button;
154pub use button::{Button, ButtonImpl, ButtonImplExt, ButtonVTable, ClickMode};
155pub use hotkey_manager::HotKeyManager;
156pub use i_clickable_control::{as_clickable_control, register_clickable_control};
157pub use i_command_source::{as_command_source, register_command_source};
158pub use button_spinner::{ButtonSpinner, ButtonSpinnerImpl, ButtonSpinnerImplExt, ButtonSpinnerVTable, Location};
159pub use check_box::CheckBox;
160pub use drop_down_button::DropDownButton;
161pub use hyperlink_button::HyperlinkButton;
162pub use split_button::{
163    SplitButton, SplitButtonImpl, SplitButtonImplExt, SplitButtonVTable, ToggleSplitButton, ToggleSplitButtonImpl,
164    ToggleSplitButtonImplExt, ToggleSplitButtonVTable,
165};
166pub use spinner::{
167    SpinDirection, SpinEventArgs, Spinner, SpinnerImpl, SpinnerImplExt, SpinnerVTable, ValidSpinDirections,
168};
169pub use context_menu::ContextMenu;
170pub use menu::Menu;
171pub use menu_base::{MenuBase, MenuBaseImpl, MenuBaseImplExt, MenuBaseVTable};
172pub use menu_item::{MenuItem, MenuItemImpl, MenuItemImplExt, MenuItemVTable};
173pub use menu_item_toggle_type::MenuItemToggleType;
174pub use i_native_menu_exporter_events_impl_bridge::INativeMenuExporterEventsImplBridge;
175pub use i_native_menu_item_exporter_events_impl_bridge::INativeMenuItemExporterEventsImplBridge;
176pub use native_dock::NativeDock;
177pub use native_menu::NativeMenu;
178pub use native_menu_bar::NativeMenuBar;
179#[doc(hidden)]
180pub use native_menu_bar_presenter::create_container_for_native_item;
181pub use native_menu_item::NativeMenuItem;
182pub use native_menu_item_base::NativeMenuItemBase;
183pub use native_menu_item_separator::NativeMenuItemSeparator;
184pub use tray_icon::{TrayIcon, TrayIcons};
185pub use platform::MacOSProperties;
186pub use radio_button::RadioButton;
187pub use repeat_button::RepeatButton;
188#[cfg(test)]
189mod button_tests;
190#[cfg(test)]
191mod control_focus_adorner_tests;
192#[cfg(test)]
193mod hotkey_manager_tests;
194#[cfg(test)]
195mod radio_button_tests;
196#[cfg(test)]
197pub(crate) mod mouse_test_helper;
198#[cfg(test)]
199pub(crate) mod test_command;
200#[cfg(test)]
201pub(crate) mod test_support_buttons;
202
203mod expander;
204mod grid_splitter;
205mod group_box;
206mod progress_bar;
207mod separator;
208mod slider;
209pub use expander::{ExpandDirection, Expander, ExpanderImpl, ExpanderImplExt, ExpanderVTable};
210pub use grid_splitter::{
211    GridResizeBehavior, GridResizeDirection, GridSplitter, GridSplitterImpl, GridSplitterImplExt, GridSplitterVTable,
212};
213pub use group_box::GroupBox;
214mod user_control;
215pub use user_control::UserControl;
216pub use progress_bar::{ProgressBar, ProgressBarTemplateSettings};
217pub use separator::Separator;
218pub use slider::{Slider, SliderImpl, SliderImplExt, SliderVTable, TickPlacement};
219mod tick_bar;
220pub use tick_bar::{TickBar, TickBarPlacement, TickList};
221#[cfg(test)]
222mod grid_splitter_tests;
223#[cfg(test)]
224mod slider_tests;
225#[cfg(test)]
226mod expander_tests;
227#[cfg(test)]
228mod progress_bar_tests;
229#[cfg(test)]
230mod tick_bar_tests;
231
232mod i_scroll_anchor_provider;
233mod scroll_changed_event_args;
234mod scroll_viewer;
235pub use i_scroll_anchor_provider::{as_scroll_anchor_provider, register_scroll_anchor_provider, IScrollAnchorProvider};
236pub use scroll_changed_event_args::ScrollChangedEventArgs;
237pub use scroll_viewer::{ScrollViewer, ScrollViewerImpl, ScrollViewerImplExt, ScrollViewerVTable};
238#[cfg(test)]
239pub(crate) mod test_support_scrolling;
240#[cfg(test)]
241mod bring_into_view_tests;
242#[cfg(test)]
243mod scroll_viewer_tests;
244#[cfg(test)]
245mod scroll_viewer_tests_i_logical_scrollable;
246
247mod experimental_acrylic_border;
248#[cfg(test)]
249mod experimental_acrylic_border_tests;
250mod icon_element;
251mod image;
252mod label;
253mod i_tool_tip_service;
254mod tool_tip;
255mod tool_tip_service;
256pub use i_tool_tip_service::IToolTipService;
257pub use tool_tip::ToolTip;
258pub use tool_tip_service::ToolTipService;
259#[cfg(test)]
260mod tool_tip_tests;
261#[cfg(test)]
262mod context_menu_tests;
263#[cfg(test)]
264mod menu_item_tests;
265mod path_icon;
266pub use experimental_acrylic_border::ExperimentalAcrylicBorder;
267pub use icon_element::IconElement;
268pub use image::Image;
269pub use label::Label;
270pub use path_icon::PathIcon;
271#[cfg(test)]
272mod image_tests;
273#[cfg(test)]
274mod label_tests;
275#[cfg(test)]
276pub(crate) mod test_support_shapes;
277#[cfg(test)]
278mod arrange_tests;
279#[cfg(test)]
280mod layout_manager_tests;
281#[cfg(test)]
282pub(crate) mod layout_test_control;
283#[cfg(test)]
284mod layoutable_tests;
285#[cfg(test)]
286mod layoutable_tests_effective_viewport_changed;
287#[cfg(test)]
288mod layoutable_tests_layout_rounding;
289#[cfg(test)]
290mod measure_tests;
291#[cfg(test)]
292mod render_tests_culling;
293#[cfg(test)]
294mod visual_extensions_get_transformed_bounds_tests;
295#[cfg(test)]
296mod visual_extensions_get_visuals_at_tests;
297#[cfg(test)]
298mod visual_extensions_tests;
299#[cfg(test)]
300mod visual_tests;
301#[cfg(test)]
302mod styled_element_tests;
303#[cfg(test)]
304mod input_element_focus_tests;
305#[cfg(test)]
306mod drawing_image_propagation_tests;
307#[cfg(test)]
308mod gestures_tests;
309#[cfg(test)]
310mod keyboard_navigation_tests_tab;
311#[cfg(test)]
312mod keyboard_navigation_tests_xy;
313#[cfg(test)]
314mod logging_tests;
315#[cfg(test)]
316mod mouse_device_tests;
317#[cfg(test)]
318mod pointer_over_tests;
319#[cfg(test)]
320mod pointer_tests_base;
321#[cfg(test)]
322mod routed_event_registry_tests;
323#[cfg(test)]
324mod setter_tests;
325#[cfg(test)]
326mod input_element_gesture_tests;
327#[cfg(test)]
328mod styled_element_tests_theming;
329#[cfg(test)]
330mod styled_element_tests_resources;
331
332#[cfg(test)]
333pub(crate) mod test_support;
334
335#[cfg(test)]
336mod border_tests;
337#[cfg(test)]
338mod canvas_tests;
339#[cfg(test)]
340mod classes_tests;
341#[cfg(test)]
342mod content_control_tests;
343#[cfg(test)]
344mod user_control_tests;
345#[cfg(test)]
346mod decorator_tests;
347#[cfg(test)]
348mod dock_panel_tests;
349#[cfg(test)]
350mod grid_length_tests;
351#[cfg(test)]
352pub(crate) mod grid_mocks;
353#[cfg(test)]
354mod grid_tests;
355#[cfg(test)]
356mod layout_transform_control_tests;
357#[cfg(test)]
358mod loaded_tests;
359#[cfg(test)]
360mod panel_tests;
361#[cfg(test)]
362mod relative_panel_tests;
363#[cfg(test)]
364mod stack_panel_tests;
365#[cfg(test)]
366mod viewbox_tests;
367#[cfg(test)]
368mod wrap_panel_tests;
369#[cfg(test)]
370mod name_scope_tests;
371#[cfg(test)]
372mod navigation_tests;
373
374mod app_builder;
375mod application;
376mod design;
377mod desktop_application_extensions;
378mod logging_extensions;
379mod shutdown_mode;
380pub use app_builder::AppBuilder;
381pub use application::{
382    Application, ApplicationImpl, ApplicationImplExt, ApplicationVTable, NewApplication,
383};
384pub use design::{Design, PreviewTemplate, DesignStyleValue};
385pub use design::PreviewTarget;
386pub use shutdown_mode::ShutdownMode;
387#[cfg(any(test, feature = "testing"))]
388pub mod testing;
389#[cfg(test)]
390mod app_builder_tests;
391#[cfg(test)]
392pub(crate) mod compositor_hit_testing_tests;
393#[cfg(test)]
394mod application_tests;
395#[cfg(test)]
396mod design_tests;
397#[cfg(test)]
398mod element_ref_tests;
399#[cfg(test)]
400mod platform_feedback_items_tests;
401#[cfg(test)]
402mod top_level_tests;
403#[cfg(test)]
404mod top_level_tests_platform_features;
405
406mod window;
407mod window_icon;
408pub use window::{Window, WindowClosingBehavior, WindowImpl, WindowImplExt, WindowVTable};
409pub use window_icon::WindowIcon;
410#[cfg(test)]
411mod window_base_tests;
412#[cfg(test)]
413mod window_tests;
414#[cfg(test)]
415mod window_decorations_tests;
416
417// --- text controls ---
418pub mod documents;
419
420mod pasting_from_clipboard_event_args;
421mod selectable_text_block;
422mod text_block;
423mod text_changed_event_args;
424mod text_changing_event_args;
425mod text_layout_rounding_placement;
426
427pub use pasting_from_clipboard_event_args::PastingFromClipboardEventArgs;
428pub use selectable_text_block::SelectableTextBlock;
429pub use text_block::{InlinesTextSource, SimpleTextSource, TextBlock, TextBlockImpl, TextBlockImplExt, TextBlockVTable};
430pub use text_changed_event_args::TextChangedEventArgs;
431pub use text_changing_event_args::TextChangingEventArgs;
432pub use text_layout_rounding_placement::TextLayoutRoundingPlacement;
433
434#[cfg(test)]
435mod selectable_text_block_tests;
436#[cfg(test)]
437mod text_block_tests;
438#[cfg(test)]
439mod text_layout_rounding_placement_tests;
440#[cfg(test)]
441mod label_text_tests;
442#[cfg(test)]
443mod button_text_tests;
444
445// --- flyouts ---
446mod flyouts;
447pub use flyouts::{Flyout, FlyoutPresenter, FlyoutShowMode, MenuFlyout, MenuFlyoutPresenter};
448#[cfg(test)]
449mod button_flyout_tests;
450
451mod text_box;
452mod text_box_text_input_method_client;
453pub use text_box::*;
454pub use text_box_text_input_method_client::TextBoxTextInputMethodClient;
455#[cfg(test)]
456mod text_box_tests;
457
458mod masked_text_box;
459pub use masked_text_box::MaskedTextBox;
460#[cfg(test)]
461mod masked_text_box_tests;
462#[cfg(test)]
463mod text_box_tests_input;
464#[cfg(test)]
465mod text_box_selection_notification_tests;
466mod data_validation_errors;
467pub use data_validation_errors::{DataValidationErrors, ErrorConverter};
468#[cfg(test)]
469mod text_box_tests_data_validation;
470
471
472pub mod generators;
473pub mod selection;
474
475mod assigned_binding;
476mod combo_box;
477mod combo_box_item;
478mod container_clearing_event_args;
479mod container_index_changed_event_args;
480mod container_prepared_event_args;
481mod i_selectable;
482mod item_collection;
483mod items_control;
484mod items_source;
485mod items_source_view;
486mod list_box;
487mod list_box_item;
488mod navigable_containers;
489mod selection_changed_event_args;
490mod selection_mode;
491mod tab_control;
492mod tab_item;
493mod tree_view;
494mod tree_view_item;
495mod virtualizing_panel;
496mod virtualizing_stack_panel;
497
498pub use assigned_binding::{AssignedBinding};
499pub use combo_box::{ComboBox};
500pub use combo_box_item::{ComboBoxItem};
501pub use container_clearing_event_args::{ContainerClearingEventArgs};
502pub use container_index_changed_event_args::{ContainerIndexChangedEventArgs};
503pub use container_prepared_event_args::{ContainerPreparedEventArgs};
504pub use i_selectable::{ISelectable, register_selectable, as_selectable};
505pub use item_collection::{ItemCollection};
506pub use items_control::{ItemsControl, ItemsControlImpl, ItemsControlImplExt, ItemsControlVTable};
507pub use items_source::{
508    ItemsChangedEventArgs, ItemsChangedHandler, items_equal, reference_equals, boxed_reference_equals, box_item, unbox_item, IItemsList, ItemsSource,
509};
510pub use items_source_view::{ItemsSourceView, ItemsSourceViewOf};
511pub use list_box::{ListBox};
512pub use list_box_item::{ListBoxItem};
513pub use navigable_containers::{register_navigable_container, as_navigable_container};
514pub use selection_changed_event_args::{SelectionChangedEventArgs};
515pub use selection_mode::SelectionMode;
516pub use tab_control::{TabControl, TabControlImpl, TabControlImplExt, TabControlVTable};
517pub use tab_item::{TabItem};
518pub use tree_view::{TreeView, TreeViewImpl, TreeViewImplExt, TreeViewVTable};
519pub use tree_view_item::{TreeViewItem, TreeViewItemImpl, TreeViewItemImplExt, TreeViewItemVTable};
520pub use virtualizing_panel::{
521    VirtualizingPanel, VirtualizingPanelImpl, VirtualizingPanelImplExt, VirtualizingPanelVTable,
522};
523pub use virtualizing_stack_panel::{VirtualizingStackPanel};
524
525#[cfg(test)]
526mod combo_box_tests;
527#[cfg(test)]
528mod items_control_tests;
529#[cfg(test)]
530mod items_source_view_tests;
531#[cfg(test)]
532mod tab_control_tests;
533#[cfg(test)]
534mod tree_view_tests;
535#[cfg(test)]
536mod virtualizing_stack_panel_tests;
537
538mod carousel;
539mod virtualizing_carousel_panel;
540
541pub use carousel::{Carousel};
542pub use virtualizing_carousel_panel::{VirtualizingCarouselPanel};
543#[cfg(test)]
544mod tree_view_bring_into_view_tests;
545
546
547
548#[cfg(test)]
549mod carousel_tests;
550#[cfg(test)]
551mod list_box_tests;
552#[cfg(test)]
553mod virtualizing_carousel_panel_tests;
554#[cfg(test)]
555mod list_box_tests_single;
556#[cfg(test)]
557mod list_box_tests_multiple;
558#[cfg(test)]
559mod list_box_virtualization_issue_tests;
560pub use items_source::{ItemsView, ItemsViewIter, TypedItems};
561#[cfg(test)]
562mod data_validation_errors_tests;
563#[cfg(test)]
564mod reference_semantics_tests;
565
566pub use register_types::register_types;
567
568// --- numeric ---
569pub mod numeric_up_down;
570pub use numeric_up_down::{
571    NumericUpDown, NumericUpDownImpl, NumericUpDownImplExt, NumericUpDownVTable, NumericUpDownValueChangedEventArgs,
572};
573
574// --- splitview ---
575mod split_view;
576pub use split_view::{
577    SplitView, SplitViewDisplayMode, SplitViewImpl, SplitViewImplExt, SplitViewPanePlacement, SplitViewVTable,
578};
579
580// --- misc-controls ---
581mod input_pane_aware_behavior;
582mod input_pane_aware_decorator;
583mod theme_variant_scope;
584mod toggle_switch;
585mod transition_completed_event_args;
586mod transitioning_content_control;
587pub use input_pane_aware_behavior::InputPaneAwareBehavior;
588pub use input_pane_aware_decorator::InputPaneAwareDecorator;
589pub use theme_variant_scope::ThemeVariantScope;
590pub use toggle_switch::ToggleSwitch;
591pub use transition_completed_event_args::TransitionCompletedEventArgs;
592pub use transitioning_content_control::TransitioningContentControl;
593#[cfg(test)]
594mod theme_variant_tests;
595#[cfg(test)]
596mod toggle_switch_tests;
597#[cfg(test)]
598mod transitioning_content_control_tests;
599
600// --- commandbar ---
601pub mod command_bar;
602pub use command_bar::{
603    CommandBar, CommandBarButton, CommandBarDefaultLabelPosition, CommandBarElementCollection, CommandBarElementList,
604    CommandBarOverflowButtonVisibility, CommandBarSeparator, CommandBarToggleButton, ICommandBarElement,
605};
606
607// --- autocomplete ---
608mod auto_complete_box;
609pub use auto_complete_box::{
610    AutoCompleteAsyncPopulator, AutoCompleteBox, AutoCompleteBoxImpl, AutoCompleteBoxImplExt, AutoCompleteBoxVTable,
611    AutoCompleteFilterMode, AutoCompleteFilterPredicate, AutoCompletePopulation, AutoCompleteSelector,
612    PopulatedEventArgs, PopulatingEventArgs,
613};
614
615// --- storage-misc ---
616mod border_visual;
617mod i_content_control;
618mod i_headered;
619mod native_control_host;
620mod system_font_app_builder_extension;
621mod url_opened_event_args;
622pub use i_content_control::{as_content_control, register_content_control, IContentControl};
623pub use i_headered::{as_headered, register_headered, IHeadered};
624pub use native_control_host::{
625    NativeControlHost, NativeControlHostImpl, NativeControlHostImplExt, NativeControlHostVTable,
626};
627pub use platform::X11Properties;
628pub use platform::WaylandProperties;
629pub use platform::Win32Properties;
630pub use url_opened_event_args::UrlOpenedEventArgs;
631#[cfg(test)]
632mod native_control_host_tests;
633#[cfg(test)]
634mod popup_moving_target_tests;
635#[cfg(test)]
636pub(crate) mod storage_misc_tests;
637
638// --- flexpanel ---
639pub mod flex_panel;
640pub use flex_panel::{
641    Flex, FlexAlignContent, FlexAlignItems, FlexBasis, FlexBasisKind, FlexDirection, FlexJustifyContent, FlexPanel,
642    FlexWrap,
643};
644
645// --- notifications ---
646pub use notifications::{
647    IManagedNotificationManager, INotification, INotificationManager, Notification, NotificationCard,
648    NotificationOverrides, NotificationPosition, NotificationType, WindowNotificationManager,
649};
650
651// --- pulltorefresh ---
652pub mod pull_to_refresh;
653pub use pull_to_refresh::{
654    RefreshCompletionDeferral, RefreshContainer, RefreshRequestedEventArgs, RefreshVisualizer,
655    RefreshVisualizerOrientation, RefreshVisualizerState,
656};
657
658// --- calendar ---
659mod calendar;
660mod calendar_date_picker;
661pub use calendar::{
662    Calendar, CalendarDateChangedEventArgs, CalendarDateRange, CalendarMode, CalendarModeChangedEventArgs,
663    CalendarSelectionMode,
664};
665pub use calendar_date_picker::{
666    CalendarDatePicker, CalendarDatePickerDateValidationErrorEventArgs, CalendarDatePickerFormat,
667    CalendarDatePickerImpl, CalendarDatePickerImplExt, CalendarDatePickerVTable,
668};
669
670// --- datetimepickers ---
671pub mod date_time_pickers;
672pub use date_time_pickers::{
673    DatePicker, DatePickerImpl, DatePickerImplExt, DatePickerPresenter, DatePickerSelectedValueChangedEventArgs,
674    TimePicker, TimePickerImpl, TimePickerImplExt, TimePickerPresenter, TimePickerSelectedValueChangedEventArgs,
675};
676
677// --- page-core ---
678pub mod page;
679pub use page::{
680    BarLayoutBehavior, ContentPage, INavigation, ModalPoppedEventArgs, ModalPushedEventArgs, NavigatedFromEventArgs,
681    NavigatedToEventArgs, NavigatingFromEventArgs, NavigatingTask, NavigationEventArgs, NavigationPage,
682    NavigationType, Page,
683    PageImpl, PageImplExt, PageInsertedEventArgs, PageNavigationExtensions, PageNavigationHost,
684    PageRemovedEventArgs, PageVTable,
685};
686
687// --- page-multi ---
688pub use page::{
689    CarouselPage, MultiPage, MultiPageImpl, MultiPageImplExt, MultiPageVTable, PageList, PageSelectionChangedEventArgs,
690    PagesChangedHandler, SelectingMultiPage, SelectingMultiPageImpl, SelectingMultiPageImplExt,
691    SelectingMultiPageVTable, TabPlacement, TabbedPage,
692};
693
694// --- page-drawer ---
695pub use page::{DrawerBehavior, DrawerClosingEventArgs, DrawerLayoutBehavior, DrawerPage, DrawerPlacement};
696
697// --- pipspager ---
698mod pips_pager;
699pub use pips_pager::{PipsPager, PipsPagerSelectedIndexChangedEventArgs, PipsPagerTemplateSettings};
700
701// --- connected-animation ---
702
703// --- tableview ---
704mod table_view;
705mod table_view_cell;
706mod table_view_column;
707mod table_view_column_header;
708mod table_view_row;
709pub use table_view::TableView;
710pub use table_view_cell::TableViewCell;
711pub use table_view_column::TableViewColumn;
712pub use table_view_column_header::TableViewColumnHeader;
713pub use table_view_row::TableViewRow;
714#[cfg(test)]
715mod table_view_column_header_tests;
716#[cfg(test)]
717mod table_view_tests;
718
719// --- textselection ---
720
721// --- leftovers ---
722